DB -> Name mit Array-Klammern?

Hawkster

Level-1
Beiträge
90
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo allesamt,

werde ich ab jetzt 2 Wochen lang um hilfe bitten, da ich ein Projekt anfertigen muss, und ich noch net soooo der Profi in SPS bin, aber man lernt ja ;)

Ich habe hier von der Firma einen Ausgedruckten Datenbaustein von Step7 vorliegen.
Da liegt zum Bleistilft auf der Adresse 16.0 in INT mit dem Namen "makro[1].nr"
Auf 28.0 auch ein INT mit dem Namen "makro[2].nr" und dann logischerweiße auf 40.0 "makro[3].nr" usw bis zu "makro[20].nr"

Das Problem ist nun, wenn ich versuche das so einzutippen, geht das net, angeblich sollen diese Eckigen Klammern (die sehr an ein Array erinnern) Unzulässige Symbole sein.

Wie mach ich das nun? Ich meine die haben das ja auch irgendwie reinbekommen, gibt es da nen Trick oder bin ich einfach blöd?

MFG
Hawkster
 
Er meint damit, dass deine Zeile so lauten müsste:
PC_AN_SPS.makro[1].nr
Speziell für diesen Beispiel kannst du dann aber auch ersatzweise db101.dbd16 schreiben.
 
Ihr denkst schon zu weit, ich will diesen DB erst mal erstellen, weil ich nur die PDF davon habe

Blos da gehen diese blöden [ und ] nicht rein.
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    53,1 KB · Aufrufe: 24
Zuviel Werbung?
-> Hier kostenlos registrieren
der Fehler den du machst ist folgeder: du versuchst die 20 Makros von Hand einzufügen:confused:
So wie in deinen ersten Beitrag schon selbst beantwortet handelt es sich um ein array also in der Spalte TYP
nicht INT eingeben sondern Array[1...20].
In deinen Speziellen Fall scheint es ein array of struct zu sein.
Wenn du dann dein array deklariert hast und deine Struktur geschrieben hast dann brauchst du nur von der Deklarationsansicht in die Datenansicht zu wechseln, die "Werte" 1-20 werden dann automatisch hinzugefügt.
 
Zuletzt bearbeitet:
So sieht dein makro - array aus:

So sieht dein makro - array aus:

Diese AWL-Quelle im S7Manager in einen DB wandeln (Als externe Quelle einfügen und übersetzen).
Es wird der DB2 erzeugt.
Dann den Struct in deinen DB einfügen.


Code:
DATA_BLOCK DB 2
TITLE =
VERSION : 0.1


  STRUCT 	
   makro : ARRAY  [1 .. 2 ] OF STRUCT 	
    nr : DINT ;	
    x_pos : DINT ;	
    y_pos : INT ;	
    z_pos : INT ;	
   END_STRUCT ;	
  END_STRUCT ;	
BEGIN
   makro[1].nr := L#0; 
   makro[1].x_pos := L#0; 
   makro[1].y_pos := 0; 
   makro[1].z_pos := 0; 
   makro[2].nr := L#0; 
   makro[2].x_pos := L#0; 
   makro[2].y_pos := 0; 
   makro[2].z_pos := 0; 
END_DATA_BLOCK
 
lege einen db vom typ udt3 an (linkes bild)
dann einen normalen db in dem du das udt benutzt. (rechtes bild)
 

Anhänge

  • udt3.gif
    udt3.gif
    4,7 KB · Aufrufe: 27
  • db3.gif
    db3.gif
    5 KB · Aufrufe: 27
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen dank an alle für die Hilfe. Letztendlich scheint es das mit dem "Array of Struct" gewesen zu sein, habe einfach den code vom "ungeistrieren_gast" genommen und übersetzen lassen, und siehe da, nur noch 1..2 in 1..20 angegeben und alles war drinnen, vielen vielen dank.

Muss jetzt aber selbst nochma rausfinden wie man das genau macht, weil das ja mal voll dir arbeit abnimmt :D

Dankedankedanke
 
wie du das machst habe ich doch geschrieben !
oder hast du dir die bilder nicht angesehen:confused:
 
habe einfach den code vom "ungeistrieren_gast" genommen und übersetzen lassen, und siehe da, nur noch 1..2 in 1..20 angegeben und alles war drinnen, vielen vielen dank.
Gern geschehen.
Das Eigenständige erstellen von arrays und structs (ein struct - end_struct ist eigendlich nichts anderes als ne "Klammer" für zeilen)
sollte ja kein Problem darstellen.

Einen UDT benötigts du nicht.
Der wäre nur sinnvoll, wenn du dein makro - array in verschiedenen DB immer wieder aufrufen willst.
 
Zuletzt bearbeitet:
Zurück
Oben