Merkeradressen und struct, wago controller

enra
2012-07-19
2012-07-21
  • enra - 2012-07-19

    Hallo,
    folgende Situation:

    Datentyp 1:
    TYPE status_steuer_2:
    STRUCT
    status_steuer:WORD;
    {bitaccess Raumregler_aktiv 0 ''}
    {bitaccess Heizung_heizt 1 ''}
    {bitaccess service 2 ''}
    {bitaccess Mo 3 ''}
    {bitaccess Di 4 '' }
    {bitaccess Mi 5 '' }
    {bitaccess Don 6 '' }
    {bitaccess Fr 7 '' }
    {bitaccess Tastsignal 8 '' }
    {bitaccess Status_Fenster_1 9 '' }
    {bitaccess Status_Fenster_2 10 '' }
    {bitaccess Status_Fenster_3 11 '' }
    {bitaccess Status_Fenster_4 12 '' }
    {bitaccess Status_Fenster_5 13 '' }
    {bitaccess Raum_ist_aktiv 14 '' }
    {bitaccess Handsteuerung_Heizung 15 '' }
    END_STRUCT
    END_TYPE

    Datentyp 2: unter Verwendung von Datentyp 1:
    TYPE Raumwerte:
    STRUCT
    Solltemperatur: INT:=20;
    Einschaltzeit: INT:=0615;
    Ausschaltzeit: INT:=1500;
    Status_Steuer: status_steuer_2;
    END_STRUCT
    END_TYPE

    Nun zu meinem Problem: Diese Struktur soll mehrmals im Merkerbereich abgelegt werden. Es werden 4 Wörter (8 Bytes) benötigt.
    Aber 'sizeof' besagt, dass 12 Bytes benötigt werden.
    Wenn ich für die Struktur als Anfangsadresse 1 "MW0" und als nächste Anfangsadresse 2 "MW4" eingebe überschneiden sich die Merkerbereiche.
    Wo ist mein Denkfehler???

    Wago 750-881 Controller.

    mfg
    Rayk

     
  • Schuero - 2012-07-21

    Hallo.

    Wenn du ein voll in einer Struktur verwendest, reserviert codesys automatisch ein Byte pro boolsche Variable.
    Dieses wird aus gründen der performace durchgeführt.
    Noch ein Hinweis, wenn du mit 32 Bit Typen arbeiten willst, rückt codesys auch die 32bit Variable auf ein volles DWORD auf

    Gruss schuero

     

Log in to post a comment.