Siemens
Digital Industries, Motion Control, Machine Tool Systems
8839
Follower:innenVariable erstellen, Variable zum hochzählen erstellen
16.06.2020, 06:35 Uhr
Hallo,
ich versuche eine Variable zu erstellen, die über eine FOR-Schleife hochgezählt wird.
Leider funktioniert das nicht wie gwünscht.
Im Moment sieht mein Programm so aus:
N140 _TOOL1="T_000219"
N150 _TOOL2="T_000221"
N160 _TOOL3="T_000222"
N170 _TOOL4="T_000351"
N240 FOR ZAEHL1=1 TO 4
N250 _WZ ="_TOOL"<<ZAEHL1
N260 IF $TC_TP2[ZAEHL] == _WZ
WRITE.....
ELSE
WRITE....
ENDIF
ENDFOR
mein Problem ist, dass die Variable _TOOL1 oder _TOOL2 usw heissen soll.
das funktioniert soweit, , aber ich will, dass in den Parameter _WZ der Wert aus _TOOL1 eingetragen wird, den ich am PRG-Anfang definiert habe und nicht der "Text" _TOOL1 drin steht
Wer kann mir da einen Tipp geben, geht das überhaupt?
Gruß und im voraus vielen Dank
ich versuche eine Variable zu erstellen, die über eine FOR-Schleife hochgezählt wird.
Leider funktioniert das nicht wie gwünscht.
Im Moment sieht mein Programm so aus:
N140 _TOOL1="T_000219"
N150 _TOOL2="T_000221"
N160 _TOOL3="T_000222"
N170 _TOOL4="T_000351"
N240 FOR ZAEHL1=1 TO 4
N250 _WZ ="_TOOL"<<ZAEHL1
N260 IF $TC_TP2[ZAEHL] == _WZ
WRITE.....
ELSE
WRITE....
ENDIF
ENDFOR
mein Problem ist, dass die Variable _TOOL1 oder _TOOL2 usw heissen soll.
das funktioniert soweit, , aber ich will, dass in den Parameter _WZ der Wert aus _TOOL1 eingetragen wird, den ich am PRG-Anfang definiert habe und nicht der "Text" _TOOL1 drin steht
Wer kann mir da einen Tipp geben, geht das überhaupt?
Gruß und im voraus vielen Dank
16.06.2020, 10:07 Uhr
Ich würde die Namen in ein Feld von Strings packen:
Dann kannst du mit deiner Zählvariable auf den entsprechenden Namen zugreifen.
Ich habe das Feld 5 Einträge lang gemacht, weil die Zählung bei Feldern ja bei Null beginnt, und du in deiner Schleife mit 1 anfängst, d.h. der Eintrag mit dem Index 0 ist dummy.
CODE
DEF STRING[10] _TOOL[5]= SET("","T_000219","T_000221", "T_000222", "T_000351")
Dann kannst du mit deiner Zählvariable auf den entsprechenden Namen zugreifen.
Ich habe das Feld 5 Einträge lang gemacht, weil die Zählung bei Feldern ja bei Null beginnt, und du in deiner Schleife mit 1 anfängst, d.h. der Eintrag mit dem Index 0 ist dummy.
16.06.2020, 14:35 Uhr
Ich würde die Namen in ein Feld von Strings packen:
Dann kannst du mit deiner Zählvariable auf den entsprechenden Namen zugreifen.
Ich habe das Feld 5 Einträge lang gemacht, weil die Zählung bei Feldern ja bei Null beginnt, und du in deiner Schleife mit 1 anfängst, d.h. der Eintrag mit dem Index 0 ist dummy.
CODE
DEF STRING[10] _TOOL[5]= SET("","T_000219","T_000221", "T_000222", "T_000351")
Dann kannst du mit deiner Zählvariable auf den entsprechenden Namen zugreifen.
Ich habe das Feld 5 Einträge lang gemacht, weil die Zählung bei Feldern ja bei Null beginnt, und du in deiner Schleife mit 1 anfängst, d.h. der Eintrag mit dem Index 0 ist dummy.
Herzlichen Dank, funktioniert hervorragend
17.06.2020, 09:02 Uhr
Hallo,
ich hätte noch eine Frage zu meinem obigen Problem:
kann ich die von CNCFr empfohlene String-Definition
DEF STRING[10] _TOOL[5]= SET("","T_000219","T_000221", "T_000222", "T_000351")
auch in die GUD-Liste eintragen als Globale Variable?
Wenn ja, wie befülle ich diese dann über ein Hauptprogramm?
Vielen Dank für eure Unterstützung
ich hätte noch eine Frage zu meinem obigen Problem:
kann ich die von CNCFr empfohlene String-Definition
DEF STRING[10] _TOOL[5]= SET("","T_000219","T_000221", "T_000222", "T_000351")
auch in die GUD-Liste eintragen als Globale Variable?
Wenn ja, wie befülle ich diese dann über ein Hauptprogramm?
Vielen Dank für eure Unterstützung
17.06.2020, 13:15 Uhr
Das Feld kann man auch in einer GUD definieren.
Das kann man dann zur Laufzeit einfach durch Zuweisungen initialisieren, also etwa so:
Das kann man dann zur Laufzeit einfach durch Zuweisungen initialisieren, also etwa so:
CODE
_TOOL[1]= "T_000219"
_TOOL[2] ="T_000221"
usw.
_TOOL[2] ="T_000221"
usw.
17.06.2020, 13:47 Uhr
Das Feld kann man auch in einer GUD definieren.
Das kann man dann zur Laufzeit einfach durch Zuweisungen initialisieren, also etwa so:
Das kann man dann zur Laufzeit einfach durch Zuweisungen initialisieren, also etwa so:
CODE
_TOOL[1]= "T_000219"
_TOOL[2] ="T_000221"
usw.
_TOOL[2] ="T_000221"
usw.
Hallo,
muss ddann die Anweisung so ausshen?
DEF STRING[10] _TOOL[5]
und die Zuweisung für jeden Zähler, wie von ihnen aufgelistet, einzeln?
18.06.2020, 07:45 Uhr
Die Definition sollte so aussehen:
wenn die Variable NCK-weit verfügbar sein soll. Falls sie nur im aktuellen Kanal gültig sein soll. muss das Attribut NCK durch CHAN ersetz werden.
Die Feldelemente kann man im Programmlauf einzeln beschreiben, oder ähnlich wie bei der Initialisierung schon bei der Definition auch mit dem SET-Befehl:
Der Index 0 bei der Variablen bedeutet, dass das Feld ab dem Index 0 mit den 5 Werten in der Klammer initialisiert werden soll.
Wenn man sich die Initialisierung der Variablen mit dem Index 0 sparen will, kann man auch
schreiben, d.h. man beginnt beim Index 1 und setzt dann nur noch 4 statt 5 Werte.
CODE
DEF NCK STRING[10] _TOOL[5]
wenn die Variable NCK-weit verfügbar sein soll. Falls sie nur im aktuellen Kanal gültig sein soll. muss das Attribut NCK durch CHAN ersetz werden.
Die Feldelemente kann man im Programmlauf einzeln beschreiben, oder ähnlich wie bei der Initialisierung schon bei der Definition auch mit dem SET-Befehl:
CODE
_TOOL[0] = SET("","T_000219","T_000221", "T_000222", "T_000351")
Der Index 0 bei der Variablen bedeutet, dass das Feld ab dem Index 0 mit den 5 Werten in der Klammer initialisiert werden soll.
Wenn man sich die Initialisierung der Variablen mit dem Index 0 sparen will, kann man auch
CODE
_TOOL[1] = SET("T_000219","T_000221", "T_000222", "T_000351")
schreiben, d.h. man beginnt beim Index 1 und setzt dann nur noch 4 statt 5 Werte.
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: