# Kontrollstruktur in CoDeSys



## J4CK (30 August 2010)

Hallo,
kann mir einer sagen, wie ich ein Bit der Kontrollstruktur in CoDeSys setze? Ich bin Anfänger und hab ne Visu mit Galileo gebaut. Zur Aktualisierung der Anzeige von Fehlern (so die Hilfe) muss das 5.,6., oder 7. Bit des ersten Worts der Kontrollstruktur gesetzt werden.
Ich such schon länger nach einer Lösung, aber irgendwie finde ich nichts. Auch in der CoDeSys Hilfe steht nichts von Kontrollstruktur. Muss ich die selber anlegen oder wie geht das?
Falls das wichtig ist, es handelt sich um eine WAGO 750-841 SPS und ein micro innovation XV102 Display.
Vielen Dank für eure Hinweise,
Gruß J4CK


----------



## Thomas_v2.1 (30 August 2010)

Bits in einer Variable setzen kannst du über anhängen eines Punkts und des Bitindex an deine Variable.
Wenn du eine Integer Variable myInt hast und in dieser das 6. Bit setzen möchtest, geht das so:

```
myInt.6 := TRUE;
```
Deine "Kontrollstruktur" scheint ja was Visu spezifisches zu sein.


----------



## J4CK (30 August 2010)

Achso. Das würde erklären warum in der Hilfe das Wort nicht einmal auftaucht. Vielen dank schon mal dafür. Weißt du auch, wie man das in FUP macht?
Ich glaube das ist so ein Konstrukt, dass für abgesichte Übertragung zuständig ist und Visufunktionen startet. Die SPS setzt ein Bit in der Kontrollstruktur, wenn die Visu das erkannt hat, setzt sie das selbe Bit in der Status-Struktur. Darauf hin nimmt die SPS das Bit wieder weg und die Visu führt die Funktion aus. Ist sie fertig, nimmt sie das Bit aus der Status-Struktur zurück.  Wenn das in der CoDeSys Hilfe nicht drin steht, steht das doch eig. dafür, dass ich solche Strukturen selber anlegen muss oder? Gibt es vielleicht eine Bibliothek dafür? Ein anderer meinte, dass es in der S7 einen Datenbaustein dafür gibt.
Wie macht man das denn sonst mit Fehlern (bin für alternativen offen )?


----------



## J4CK (31 August 2010)

Vielen Dank Thomas, mit deinem kleinen Hinweis, wie ich Integer bitweise setze und etwas rumprobieren habe ich es hinbekommen. Werds in der Mittagspause mal posten.


----------



## J4CK (7 September 2010)

Falls es noch jemanden interessiert und weil ich es hasse, wenn ich ne Lösung zu nem Problem suche und im Forum dann nur steht "habs hinbekommen"...
Ich habe eine Strukturangelegt, die 2 Integerarrays, eins für Kontroll- und eins für Statusstruktur, beinhaltet (Systemstruktur). Diese Struktur muss mit in die Symboldatei und dann in Galileo importiert werden. Sie steht dann unter Strukturen -> Systemstruktur. Jetzt einfach die im Variablenmenü unter "System" stehende Kontrollstruktur öffnen und ihr die Adresse des Kontrollarrays zuweisen, in meinem Fall: Systemstruktur.controll[1] . Das selbe mit der Systemstruktur.
Nun braucht man nur noch in CoDeSys das bei gesetztem Bit5 des ersten Integers im Statusarrays das Bit5 des ersten Integers im Kontrollarray wegnehmen. Ein Netzwerk später setzt man dann bei steigender Flanke der Fehlervariable das Bit5 des ersten Integers der Kontrollstruktur. So wird das Bit5 bei jeder positiven Flanke der Fehlervariable einen Zyklus lang gesetzt und die Visu aktualisiert das Fehlerfenster.
Noch ein Hinweis: wenn ihr dem zweiten Integer der Kontrollstruktur eine Maskennr zuweist und dann das Bit12 des ersten Integers der Kontrollstruktur genau wie das Bit5 setzen lasst, wechselt die Visu bei jedem Fehler in die Maske mit der im zweiten Integer abgelegten Nummer.

Gruß J4CK


----------

