UDT in AWL und SCL

Beiträge
9.189
Reaktionspunkte
2.936
Zuviel Werbung?
-> 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.:
Code:
      L     #udtTestIN.int_1
      T     #iValue
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:
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
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
 
der SCL-Compiler übersetzt direkt in MC7-Code

es gab/gibt einen undokumentierten Trick den AWL-Editor so
umzustellen das der MC7-Code angezeigt.
Leider weiß ich nicht mehr wie
 
Zurück
Oben