Lauflicht unter Codesys 2.3 an bestimmter Adresse...

Booner

Level-1
Beiträge
54
Reaktionspunkte
3
Hallo Leute,

kann mir mal jemand nen kurzen Gedankenanstoß geben?
Ich habe vier digitale 16fach Ausgänge von Wago, deren erster Ausgng bei Adresse %QX86.12 beginnt.
Über diese Ausgänge möchte ich nun ein Lauflicht laufen lassen. Das Ganze möglichst geschickt.

Ich dachte daran, ein boolsches Array zu erstellen, das bei dieser Adresse beginnt und ein Bit durch dieses Array zu shiften.
Aber wie bekomme ich so ein Array an die Adresse?
Oder gibt es elegantere Lösungen?


Viele Grüße,

Tom
 
Die Idee ist nicht schlecht, aber Codesys wird Dir einen (oder besser 2) Striche durch die Rechnung machen.
Eine Bool-Variable ist in Codesys nur dann ein einzelnes Bit, wenn sie absolut adressiert wird, also mit AT%IX/QX/MX, und auch das gilt nur für einzelne Bool-Variablen. Ein Array of Bool ist dagegen grundsätzlich ein Array of Byte, wobei von jedem Byte nur das unterste Bit genutzt wird. Und so ein Array könnte auch nur an QBnn beginnen, also bei Bitadresse QXnn.0
Wenn Du nicht 64 einzelne Bit-Variablen anlegen willst, könntest Du mit 2 DWORDS arbeiten. Müsstest dann den Übertrag von DWORD0.31 nach DWORD1.0 selbst programmieren. Aber auch dafür müssten Deine Ausgänge an einer Bitadresse nn.0 beginnen.
 
Hei,

okay, dann lag ich ja gar nicht so falsch, dass es für dieses "Problem" keine einfache Lösung gibt. Gerade der Anfang eines Arrays, das auf nn.0 liegen muss.
Vielen Dank für Eure wertvollen Hinweise!


Viele Grüße,

Tom
 
Hallo,
ich habe sowas auch schon gemacht, und zwar so:
Code:
VAR_GLOBAL

Lauflicht := Array [ 0..31 ] of bool ;

LauflichtAusgang01 AT %QX68.12 ;
LauflichtAusgang02 AT %QX17.4 ;
etc...

END_VAR
In das "Lauflicht" kann man dann jedes hübsche Bitmuster laden und mit einer Laufvariablen "I" ganz einfach rotieren lassen.

Irgendwo im Zyklus steht dann noch:
Code:
LauflichtAusgang01 := Lauflicht [ 0 ] ;
LauflichtAusgang02 := Lauflicht [ 1 ] ;
etc...
So bleibt das ganze lesbar und mit der symbolischen Deklaration kann man praktisch irgendwelche Ausgänge beliebig zuordnen...
 
Zurück
Oben