Mit ARRAY OF BOOL Ausgänge schalten?

spec

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Morgen,

ich hab hier ein Problem und zwar ich will mit Hilfe von ARRAY OF BOOL Ausgänge der Baugruppe schalten.

Globale_Variablen
Code:
VAR_GLOBAL
    xTaster1 AT %IX0.0 : BOOL;
    xTaster2 AT %IX0.1 : BOOL;

    xLampe AT %QB0 : ARRAY[0..1] OF BOOL := 2(FALSE);

END_VAR

PLC_PRG
Code:
xTaster1 := xLampe[0];

xTaster2 := xLampe[1];

Wenn ich xTaster1 drücke geht Variable xLampe[0] und Ausgang %QX0.0 an. Wenn ich aber xTaster2 drücke geht zwar Variable xLampe[1] an aber nicht ausgang %QX0.1. Wieso?


mfg
 
Weil ein BOOL nicht einzelnes Bit ist, sondern ein Byte, von dem nur das unterste Bit genutzt wird. xLampe[0] liegt auf QX0.0, xLampe[1] auf QX1.0.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also kann ich die restliche Ausgänge mit diese Schreibweise nicht benutzen? Gibt es eine andere Möglichkeit ohne, dass ich das so schreibe:

Code:
VAR_GLOBAL
    xTaster1 AT %IX0.0 : BOOL;
    xTaster2 AT %IX0.1 : BOOL;

    xLampe1 AT %QX0.0 : BOOL;
    xLampe2 AT %QX0.1 : BOOL;

END_VAR
 
Du könntest das Ausgangsbyte Q0 als Byte deklarieren:

xLampe AT %QB0 : Byte;

und dann mit

xLampe.0
xLampe.1
usw.
die einzelnen Bits ansteuern
 
Ein-/Ausgänge als Array oder Slice-Zugriffe darauf empfinde ich als unsauberen Programmierstil.

Bei Ein-/Ausgängen als Array verliert man die Möglichkeit, den einzelnen E/A unterschiedliche Symbole und unterschiedliche Kommentare zu geben. Das Programm wird undurchsichtig. Auch ein eventuell mal nötiges Umverdrahten gestaltet sich schwierig.

Ich betrachte die E/A-Zuordnung als Rangierfeld, wo ich wahlfrei jeden einzelnen Eintrag bearbeiten können will.

Harald
 
Ja. bei TwinCat sind das PLC-IO-Abbild und das Hardware-IO-Abbild voneinander getrennt, die Verknüpfung zwischen beiden wird im Systemmanager vorgenommen. Im PLC-Abbild würden Deine Array-Ausgänge ebenfalls auf QX0.0 und QX1.0 stehen, Du könntest sie aber mit zwei aufeinanderfolgenden Ausgängen einer Busklemme verknüpfen, z. B. mit QX0.0 und QX0.1 des Hardware-Abbildes.
 
Zurück
Oben