Bei der Nutzung von
Codesys mit WAGO sieht die Deklaration im Programm so aus:
Code:
PROGRAM Sieb_1
VAR
M1_Sieb1RL AT %Q*: BOOL;
M1_Sieb1LL AT %Q*: BOOL;
END_VAR
Und dann muss noch eine GVL hinzugefügt werden, in der dann alle Instanzpfade über einen Menüpunkt hinzugefügt werden können und bei denen dann die tatsächliche Hardwareadresse angegeben werden muss. Eine Verknüpfung mit einer Variablen muss/darf dann aber bei den I/Os nicht mehr erfolgen.
Das sieht dann so aus:
Code:
{attribute 'qualified_only'}
VAR_CONFIG
// Instanzpfad der Variablen an der unvollständigen Adresse erzeugt
Sieb_1.M1_SIEB1RL AT %QX0.0: BOOL;
// Instanzpfad der Variablen an der unvollständigen Adresse erzeugt
Sieb_1.M1_SIEB1LL AT %QX0.1: BOOL;
END_VAR
Hier fehlt mir jetzt aber ein wenig das Verständnis, was dieses Konstrukt bringen soll. Man muss an zwei Stellen die Variable angegeben und dann noch die passenden Adressen raussuchen um sie einzutragen. Da wäre es doch einfacher, man macht in der Hardware direkt die Verknüpfung.
Jetzt bin ich völlig verwirrt und verstehe gar nichts mehr. Was mich daran besonders ärgert ist, sollte das stimmen, dass ich falsche Informationen verbreitet habe.
Ich habe leider (noch) keine WAGO Steuerung und konnte das bisher nur in soweit testen, dass ich ein e!COCKPIT Programm übersetzt habe und dies auf Übersetzungsfehler prüfte.
Ich bin immer davon ausgegangen, dass es beim e!COCKPIT so läuft, wie bei Beckhoff TwinCAT. Man deklariert eine Variable mit "AT %Q*" oder "AT %I*" und kann diese erst dann in der I/O-Übersicht mappen. Weil das folgende beim Übersetzen keinen Fehler verursacht hat.
Das scheint aber ganz anders zu laufen.
Wenn man eine Variable in der I/O Übersicht mappen möchte muss diese nicht mit dem Schlüsselwort AT deklariert werden und kann einfach so gemappt werden. Das Schlüsselwort benötigt man nur, wenn man die Adresse des I/Os direkt bei der Deklaration angibt oder den Platzhalter "*" nutzt und eine GVL mit dem Schlüsselwort VAR_CONFIG statt VAR_GLOBAL erzeugt, in der dann alle Variablen mit komplettem Instanzpfad angegeben sind. In der VAR_CONFIG müssen dann die tatsächlichen I/O Adressen angegeben werden. In diesem Fall muss/darf kein Mapping in der I/O Übersicht erfolgen.
Liege ich hier soweit richtig?