# CoDeSys Statusanzeige der Variablen



## visu90 (7 Januar 2012)

Hi!
Wenn ich mein CoDeSys-Programm teste steht oben in der Variablendeklaration normalerweise der Status der Variablen (z. B.TRUE bzw. FALSE). Bei mir stehen jetzt an dieser stelle drei Fragezeichen. Aber das Programm verarbeitet er korrekt ohne zu meckern.
Was haben die Fragezeichen für eine Bedeutung? Woran könnte das liegen, dass jetzt diese Fragezeichen auftauchen?


----------



## gloeru (7 Januar 2012)

Wird das Programm abgearbeitet? Läuft dis SPS, wird dieser Programmteil aufgerufen? Sonst mal mit der Ablaufkontrolle prüfen...


----------



## visu90 (7 Januar 2012)

visu90 schrieb:


> Aber das Programm verarbeitet er korrekt ohne zu meckern.


Also wie gesagt das Programm wird abgearbeitet, bloß ich hab jetzt halt keine SPS dranhängen sondern simuliere das nur. Freilich wird der Programmteil in der PLC_PRG aufgerufen.


----------



## gloeru (7 Januar 2012)

Hmm speziell, ich kenne das nur, wenn eine Variable nie benutzt wird, vgl hier: 
http://www.sps-forum.de/showthread.php?44168-Problem-mit-Animation-in-CodeSys

Mach doch mal eine Ablaufkontrolle in und schau, ob diejenige Zeile, wo dein Variable beschrieben wird, auch wirklich ausgeführt wird (nicht dass diese in einem IF ist)

Kannst du die Variable forcen?


----------



## StructuredTrash (7 Januar 2012)

visu90 schrieb:


> Freilich wird der Programmteil in der PLC_PRG aufgerufen.


Das klingt für mich danach, dass es sich um einen FB handelt. In diesem Fall musst Du das Editorfenster erneut öffnen. Dabei wirst Du dann aufgefordert, die zu beobachtende FB-Instanz auszuwählen.


----------



## visu90 (7 Januar 2012)

Danke für die Antworten. 
Es war ein ganz simpler Fehler von mir. Und zwar habe ich diesen FB Offline geöffnet und dann habe ich mich eingeloggt. Wenn ich das richtig verstehe, dann wird das einfach nicht im Zusammenhang mit PLC_PRG gesehen.
Wenn ich den Baustein erst öffne wenn ich Eingeloggt bin, dann fordert er mich auf die beobachtete FB-Instanz auszuwählen (wie von StructuredTrash beschrieben) und NUR dann wird mir der Variablenstatus wie gehabt angezeigt.


----------



## StructuredTrash (7 Januar 2012)

Die Auswahl ist notwendig, weil ja mehrere Instanzen des FB's existieren könnten. So intelligent, zu prüfen, ob nur eine Instanz existiert und die Online-Verknüpfung in dem Fall automatisch vorzunehmen, ist die Entwicklungsumgebung nicht. Aber wer will schon so viel Komfort-Schnickschnack? 
Allerdings erlaubt es CoDeSys, Programme nicht nur mit einer Task zu verknüpfen, sondern auch aus anderen Programmen heraus aufzurufen. Wenn Du von vornherein weisst, dass Du einen FB nur einmal benötigst, kannst Du stattdessen also ein PRG schreiben. Dann brauchst Du keine Instanz zur Beobachtung auswählen.


----------



## RobiHerb (8 Januar 2012)

StructuredTrash schrieb:


> Allerdings erlaubt es CoDeSys, Programme nicht nur mit einer Task zu verknüpfen, sondern auch aus anderen Programmen heraus aufzurufen. Wenn Du von vornherein weisst, dass Du einen FB nur einmal benötigst, kannst Du stattdessen also ein PRG schreiben. Dann brauchst Du keine Instanz zur Beobachtung auswählen.



Ich würde dieses "Feature" nicht ausnutzen, es ist eher eine Schwäche der IEC oder der Implementation. Ein FB ist ein früher Verwandter dessen, was in späteren Computer Sprachen Object genannt wird. Eine quasi Zusammenfassung von Methode mit Daten zu einer Einheit, die man instanziert. 

Hinzu kommt, dass FB Eingänge und Ausgänge haben, Programme aber erst einmal nicht. (Natürlich gibt auch ein Program in der Regel einen Wert zurück und kann mit Parametern gestartet werden aber das ist meist standardisiert (argc & argv, iRet) und wird zu anderen Zwecken benötigt.)


----------



## StructuredTrash (9 Januar 2012)

Ein Programm kann genauso INPUT-/OUTPUT-Variablen haben wie ein FB. Man kann es als FB ansehen, dass automatisch mit einer einzigen Instanz verknüpft wird. Für mich hat dieser FB-Typ in der von statischen Strukturen und einem hohen anwendungsspezifischen Funktionsanteil geprägten Automationswelt nach wie vor seine Berechtigung. Ich gebe Dir allerdings Recht, dass er bei zunehmendem Einsatz der OOP in CoDeSys/TwinCat 3 an Bedeutung verlieren wird.


----------

