Ein-,Ausgänge an Strukturen zuweise.

JeBo
2011-06-10
2011-06-10
  • JeBo - 2011-06-10

    Hi,

    Ich habe mir eine Struct erstellt, die mehrere BOOL enthaelt. In der Globalen Variablenliste hab ich mir dann eine Variable davon erstellt, und möchte den Elementen jetzt Ein-, bzw. Ausgänge zuweisen, jedoch der Kompiler meckert "Erwarte ':' vor '.' ".
    Geht das überhaupt?
    Struktur:

    TYPE CompIO :
    STRUCT
       ErrorLP : BOOL; 
       ErrorHP : BOOL; 
    END_STRUCT
    END_TYPE
    

    Variablenliste:

       CompInOut : CompIO;
       CompInOut.ErrorLP AT %IX0.0.0 : BOOL;
    

    Danke

     
  • RolandWagner

    RolandWagner - 2011-06-10

    Hallo,

    ich sehe da zwei Möglichkeiten, die zwar nicht genau das machen, was Du wolltest, aber zumindest einen guten Workaround darstellen:

       CompInOut AT %IB0 :CompIO;
    

    Damit adressierst Du zwar die Bits nicht direkt einzeln, aber eben byte-weise ab der entsprechenden Anfangsadresse.

    Genau so kann man die so genannte VAR_CONFIG verwenden. Sprich Du deklarierst die Variable im eigentlichen Programmbaustein nur "ansatzweise", und definierst dann in der entsprechenden VAR_CONFIG-Deklarations, welchen Adressbereich Du damit nutzen möchtest:

       CompInOut AT %I* :CompIO;
    
    VAR_CONFIG
       PLC_PRG.CompInOut AT %IB0 : CompIO;
    END_VAR
    

    In beiden Fällen kannst Du die Verknüpfung zum Adressabbild aber erst einmal nur byte-weise vornehmen, die eigentlichen Bits sind aber wieder wie gehabt über %IX0.0 adressierbar. Allerdings kannst Du eben die Zuordnung nicht manuell verändern, d.h. Bit0 ist eben auf %IX0.0, Bit1 ist auf %IX0.1 uns so weiter.

    Die VAR_CONFIG-Methode bietet sich dann an, wenn der gleiche Code in einem FB durch verschiedene FB-Instanzen für unterschiedliche physikalische Adressen verwendet werden soll.

    Ich hoffe, das hilft Dir weiter!

     

Log in to post a comment.