Mein Programm hat verschiede nummern (1, 2 und 3) und je nach Zähler (0,1,2,3) muss ich andere Daten laden. Zeit[1],Zeit [2] Zeit [3]
Die Zeit[0] gibt es nicht. Wie mache ich dies am einfachsten?
und gnadenlos scheitern, bzw. dich wundern, warum immer zeit3 in xyz steht...
je nach umfang der daten würden 3 unterschiedliche datenbausteine mit gleicher struktur in frage kommen. die daten können dann mit einem unqualifizierten zugriff nach
Code:
*
AUF DB[#myDBNumber]
in die produktiv daten kopiert werden.
eine andere möglichkeit wäre das anlegen einer UDT die in einem datenbaustein drei mal hinterlegt wird und entsprechend mit daten gefüllt ist. das umkopieren erfolgt dann durch zugriff mithilfe indirekter adressierung nachdem du aus dem zählerwert deinen datenoffset errechnet hast.
L Z 10 // Zählernumer laden
SPL M000 // Sprung bei >3
SPA M000 // Sprung bei 0
SPA M001 // Sprung bei 1
SPA M002 // Sprung bei 2
SPA M003 // Sprung bei 3
M000: L S5T#0MS // Timerwert wenn Zählerwert 0 oder >3
SPA Ende
M001: L S5T#1S // Timerwert wenn Zählerwert 1
SPA Ende
M002: L S5T#2S // Timerwert wenn Zählerwert 2
SPA Ende
M003: L S5T#3S // Timerwert wenn Zählerwert 3
SPA Ende
Ende: U M 10.0 // Start Timer
SE T 10 // Start Timer als Einschaltverzögerung
Eine Beschreibung der "SPL Sprungleiste" findetst Du mit "F1" in der S7-Hilfe
nimm doch das Beispiel von Hoyt das ist sehr übersichtlich, änder es
so ab wenn du den wert "0" nicht hast.
Code:
L Z 10 // Zählernumer laden
SPL M001 // Sprung bei >3
SPA M001 // Sprung bei 0
SPA M001 // Sprung bei 1
SPA M002 // Sprung bei 2
SPA M003 // Sprung bei 3
M001: L S5T#1S // Timerwert wenn Zählerwert 1
SPA Ende
M002: L S5T#2S // Timerwert wenn Zählerwert 2
SPA Ende
M003: L S5T#3S // Timerwert wenn Zählerwert 3
SPA Ende
Ende: U M 10.0 // Start Timer
SE T 10 // Start Timer als Einschaltverzögerung
"schlaufe" als Variable kannst du in AWL so nicht verwenden. Entweder du machst das in SCL, dann kannst du Array's mittels Variablen indizieren oder du mußt die Datenpunkte mittels indirekter Adressierung ansprechen und die Adresse für den Ablagepunkt der Daten vorher selbst berechnen. Siehe dazu zuerst einmal in der FAQ des Forums, da gibt es seht ausführliche BEiträge zum Thema.