Timer mit Instanz als InOut Varíable

blubbi

Active member
Beiträge
37
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo!

ich habe ein Problem...

Ich verwende einen TOF Timer für meine Bewegungsmelder und habe ich mir für diesen Anwendungsfall einen FB geschrieben den ich mehrfach aufrufe.

Jetzt habe ich das Problem, dass wenn ein Bewegungsmelder anspringt, alle von diesem FB gesteuerten Lichter gleichzeitig angehen.

Hmmm, jetzt habe ich mir gedacht, ok, könnte der Timer sein, da die Instanz nennen wir sie mal "Timer_Licht_An" eventuell global anspringt und so alle Ausgänge gleichzeitig schaltet. Ich habe die Instanz nämlich einfach im FB unter VAR deklariert. Deshalb kam ich zum Schluss den Timer als IN_OUT Variable zu deklarieren, um dem Timer für jeden Baustein eine eigene Instanz zuweisen zu können. Doch wenn ich die Deklaration unter IN_OUT kopiere und die Bausteine extern belege kommt die Fehlermeldung:
Fehler 4052: Bewegung_Visu_Licht: 'Timer_Licht_An' muß eine deklarierte Instanz des Funktionsblock TOF sein.

Wär es doch??? nur eben jetzt als IN_OUT?!?

hat vielleicht wer von euch einen Lösungsweg?
Danke

greetz
Christian
 

Ralle

Supermoderator
Teammitglied
Beiträge
15.103
Punkte Reaktionen
3.820
Der Timer kann das nicht sein, wenn du ihn im Var-Abschnitt des FB definiert hast, dann wird mit jeder FB-Instanz ein eigener Timer erzeugt.

Wie hast du die FB-Instanzen deklariert?
Du mußt jede FB-Instanz extra in den Variablen des aufrufenden Programms oder als Globale Variable deklarieren.

Also

fbLicht1: MeinLicht_FB;
fbLicht2: MeinLicht_FB;
fbLicht3: MeinLicht_FB;
.
.
.

Dann jeweils im Programm aufrufen:

fbLicht1(
.
.
.
);

fbLicht2(
.
.
.
);

fbLicht3(
.
.
.
);

.
.
.
 
Zuletzt bearbeitet:
OP
B

blubbi

Active member
Beiträge
37
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
hmm, naja ich bin mit meinem Latein ziemlich am Ende, da der Timer der einzige ist, der von allen aufgrufen wird.

grundsätzlich wird der FB natürlich von einer eigenen Variable deklariert.

zB.:
fb_Bewegung_Licht_KG1_Vorraum:Bewegung_Visu_Licht;
fb_Bewegung_Licht_EG_Abgang_KG1:Bewegung_Visu_Licht;

Bewegung_Visu_Licht ist der FB der die Bewegungsmelder verarbeitet.
Ich habe mir nur gedacht, dass das mit dem Timer ähnlich wie in der Siemens-Welt ist. Dort weist man auch jedem Timer einen pysikalischen Timer zu, da sonst die selbe Instanz durchlaufen werden würde.

Aber ich habe zumindestens einen Lösungsweg gefunden die Timer extern zu deklarieren... Bei VAR_INPUT gibt Beckhoff zumindestens mal das OK ;)
testen wir mal, ob damit die Lichter einzeln geschaltet werden.
 
Oben