-> Hier kostenlos registrieren
Hallo,
gibt es bei der Verwendung von Hardwareausgängen als lokale Variablen in Funktionsblöcken in TwinCAT 3.1 Probleme?
Der folgende Code funktioniert bei mir nicht korrekt:
Die beiden ObAktor sind jeweils mit einem Kanal auf einer EL2008 verknüpft. Wenn ich mir das Prozessabbild der PLC anschaue, schalten die Ausgänge auch wie erwartet mit bTest um, aber auf der EL2008 kommt nichts an. Von Hand die Ausgänge direkte an der EL2008 forcen funktioniert.
Wenn ich hingegen die ObAktor im FB_Beispiel als VAR_OUTPUT (ohne AT) definiere, die Ausgangsvariablen in der MAIN anlege und mit den Ausgängen der FBs versorge, kommen die Werte auch auf der EL2008 an:
Hat jemand so ein Verhalten schonmal beobachtet?
gibt es bei der Verwendung von Hardwareausgängen als lokale Variablen in Funktionsblöcken in TwinCAT 3.1 Probleme?
Der folgende Code funktioniert bei mir nicht korrekt:
Code:
FUNCTION_BLOCK FB_Beispiel
VAR INPUT[INDENT]bSchaltbedingung : BOOL;[/INDENT]
END_VAR
VAR[INDENT]ObAktor AT %Q* : BOOL;[/INDENT]
END_VAR
ObAktor := bSchaltbedingung;
PROGRAM MAIN
VAR[INDENT]bTest : BOOL;
aBeispiel : ARRAY [1..2] OF FB_Beispiel;[/INDENT]
END_VAR
aBeispiel[1](bSchaltbedingung:= bTest);
aBeispiel[2](bSchaltbedingung:= NOT bTest);
Die beiden ObAktor sind jeweils mit einem Kanal auf einer EL2008 verknüpft. Wenn ich mir das Prozessabbild der PLC anschaue, schalten die Ausgänge auch wie erwartet mit bTest um, aber auf der EL2008 kommt nichts an. Von Hand die Ausgänge direkte an der EL2008 forcen funktioniert.
Wenn ich hingegen die ObAktor im FB_Beispiel als VAR_OUTPUT (ohne AT) definiere, die Ausgangsvariablen in der MAIN anlege und mit den Ausgängen der FBs versorge, kommen die Werte auch auf der EL2008 an:
Code:
FUNCTION_BLOCK FB_Beispiel
VAR INPUT[INDENT]bSchaltbedingung : BOOL;[/INDENT]
END_VAR
VAR_OUTPUT[INDENT]bAktor : BOOL;[/INDENT]
END_VAR
bAktor := bSchaltbedingung;
PROGRAM MAIN
VAR[INDENT]bTest : BOOL;
aBeispiel : ARRAY [1..2] OF FB_Beispiel;
ObAktor1 AT %Q* : BOOL;
ObAktor2 AT %Q* : BOOL;[/INDENT]
END_VAR
aBeispiel[1](bSchaltbedingung:= bTest, bAktor=> ObAktor1);
aBeispiel[2](bSchaltbedingung:= NOT bTest, bAktor=> ObAktor2);
Hat jemand so ein Verhalten schonmal beobachtet?