A
Anonymous
Guest
-> Hier kostenlos registrieren
Hallo zusammen,
bei meiner S7 habe ich folgendes Problem:
Im Datenbaustein befinden sich diverse Parameter für verschiedene Funktionen. Es gibt 10 Devices, wesshalb für jedes Device ein Parametersatz im DB abgelegt ist, für mein Verständnis also ein Array von 10 Devices mit jeweils gleichen Elementen aber unterschiedlichen Werten. Obwohl in der Definition des DB niergendwo ARRAY steht sondern 10 mal hintereinander der gleiche UDT. (Nee was kompliziert ausgedrückt)
Beispiel
DB:
+-----1-----------
Zeit1 S5TIME
Zeit2 S5TIME
Anz INT
Flag BOOL
+-----2-----------
Zeit1 S5TIME
Zeit2 S5TIME
Anz INT
Flag BOOL
+-----3-----------
Zeit1 S5TIME
Zeit2 S5TIME
Anz INT
Flag BOOL
+-----4-----------
:
Jede Funktion ermittelt nun über zwei Parameter
Parameter 1: Daten Baustein Nummer
Parameter 2: Offset des Datenbereichs im Datenbaustein
wie folgt den zu verwendenden Datenbereich (sprich ARRAY Eintrag)
L #DB_Device
T #DB_Device_Temp
LAR1 P#0.0 // Zeiger mit Null in Adressregister laden
L #Offset_Device // Offset laden (Device Bereich)
SLD 3 // um 3 nach links schieben um Zeigerstruktur zu erzeugen
+AR1 // Zum Adressregister addieren
AUF DB [#DB_Device_Temp]
Dann werden die Werte wie folgt aus dem Datenbaustein entnommen:
L DBB [AR1,P#22.0]
Falls also jemand unter Euch ist der versteht was hier beschrieben ist, insbesondere SPS mäßig, wäre es nett wenn ihr mir sagen könntet wie ich statt der festgelegten Position P#22.0 direkt den Eintrag angeben könnte also z.B. Zeit2. Dann kann ich den UDT ändern und muß nicht durch alle Funktionen und die Positionen anpassen, da die Namen ja bleiben.
Ich hoffe nur, dass das einer verstanden hat... :->
Grüße
Neuling
PS: Vielleicht gibts ja auch ne bessere Methode ?
bei meiner S7 habe ich folgendes Problem:
Im Datenbaustein befinden sich diverse Parameter für verschiedene Funktionen. Es gibt 10 Devices, wesshalb für jedes Device ein Parametersatz im DB abgelegt ist, für mein Verständnis also ein Array von 10 Devices mit jeweils gleichen Elementen aber unterschiedlichen Werten. Obwohl in der Definition des DB niergendwo ARRAY steht sondern 10 mal hintereinander der gleiche UDT. (Nee was kompliziert ausgedrückt)
Beispiel
DB:
+-----1-----------
Zeit1 S5TIME
Zeit2 S5TIME
Anz INT
Flag BOOL
+-----2-----------
Zeit1 S5TIME
Zeit2 S5TIME
Anz INT
Flag BOOL
+-----3-----------
Zeit1 S5TIME
Zeit2 S5TIME
Anz INT
Flag BOOL
+-----4-----------
:
Jede Funktion ermittelt nun über zwei Parameter
Parameter 1: Daten Baustein Nummer
Parameter 2: Offset des Datenbereichs im Datenbaustein
wie folgt den zu verwendenden Datenbereich (sprich ARRAY Eintrag)
L #DB_Device
T #DB_Device_Temp
LAR1 P#0.0 // Zeiger mit Null in Adressregister laden
L #Offset_Device // Offset laden (Device Bereich)
SLD 3 // um 3 nach links schieben um Zeigerstruktur zu erzeugen
+AR1 // Zum Adressregister addieren
AUF DB [#DB_Device_Temp]
Dann werden die Werte wie folgt aus dem Datenbaustein entnommen:
L DBB [AR1,P#22.0]
Falls also jemand unter Euch ist der versteht was hier beschrieben ist, insbesondere SPS mäßig, wäre es nett wenn ihr mir sagen könntet wie ich statt der festgelegten Position P#22.0 direkt den Eintrag angeben könnte also z.B. Zeit2. Dann kann ich den UDT ändern und muß nicht durch alle Funktionen und die Positionen anpassen, da die Namen ja bleiben.
Ich hoffe nur, dass das einer verstanden hat... :->
Grüße
Neuling
PS: Vielleicht gibts ja auch ne bessere Methode ?