- Beiträge
- 9.189
- Reaktionspunkte
- 2.936
-> Hier kostenlos registrieren
Ich schaue mir gerade so an wie Step7 intern das Handlig mit UDTs vornimmt.
Lege ich in einem FB ein UDT in den IN_OUT-Bereich, so wird ja nur ein Zeiger auf die Struktur übergeben (6 Bytes).
Programmiere ich einen Baustein in AWL so unterscheidet sich der Code nicht, egal ob die die UDT nun als IN oder als IN_OUT anlege, also es steht dort immer z.B.:
Programmiere ich diesen Versuch in SCL und schaue mir den erzeugten AWL-Code an, so kann ich mir dort ansehen der Wert indirekt mittels der Adressregister geladen wird. Beispiel:
Also scheint es so, dass wenn ich in AWL mit UDTs programmiere, das Programm nochmal in irgendeiner Weise übersetzt werden muss. Weiss jemand wie das Step7-intern gehandhabt wird?
Oder kann ich mir irgendwie den "wirklichen" AWL-Code ansehen?
Interessant auch ein Vergleich der Bausteingrößen:
Programm mit UDT als IN-Parameter:
AWL: 46 Bytes
SCL: 56 Bytes
Programm mit UDT als IN_OUT-Parameter:
AWL: 84 Bytes
SCL: 78 Bytes
Gruß
Thomas
Lege ich in einem FB ein UDT in den IN_OUT-Bereich, so wird ja nur ein Zeiger auf die Struktur übergeben (6 Bytes).
Programmiere ich einen Baustein in AWL so unterscheidet sich der Code nicht, egal ob die die UDT nun als IN oder als IN_OUT anlege, also es steht dort immer z.B.:
Code:
L #udtTestIN.int_1
T #iValue
Code:
SET
SAVE
= L 0.1
L DIW [AR2,P#2.0]
T LW 2
TAK
AUF DB [LW 2]
L DID [AR2,P#4.0]
LAR1
TAK
L W [AR1,P#0.0]
T #iValue
SAVE
BE
Oder kann ich mir irgendwie den "wirklichen" AWL-Code ansehen?
Interessant auch ein Vergleich der Bausteingrößen:
Programm mit UDT als IN-Parameter:
AWL: 46 Bytes
SCL: 56 Bytes
Programm mit UDT als IN_OUT-Parameter:
AWL: 84 Bytes
SCL: 78 Bytes
Gruß
Thomas