Funktionsblock mehrmals aufrufen

berc

Level-1
Beiträge
35
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Für meine Diplomarbeit erstelle ich gerade ein Programm mit Codesys.

Nun scheine ich an etwas simplen zu scheitern. Einen kleinen Programmteil kann ich mehrmals für verschiedene Sachen benutzen, sprich Synergien Nutzen.
Angelegt habe ich den Programmcode als Funktionsbaustein (FB). Nun instanziere ich diesen 3 mal in 2 verschiedenen Programmen. PLC_PRG ruft dann nacheinander die zwei Programme auf.

Das Problem ist nun, das ich an allen Ausgängen immer das habe was beim letzten Aufruf des FB's in einem Zyklus geschieht. Eine Möglichkeit wäre ja, den Funktionsblock einfach 3 mal zu kopieren aber das ist wohl keine Elegante Lösung.

So sieht es in der Visu aus (Tasten):
Visu.jpg

Und so die instanzierung:
Aufruf.jpg

Wie man auf dem ersten Bild sieht, sind die Ausgänge (rot / grüne Balken) immer identisch. Egal welche Tasten gedrückt werden. Ich nehme an, das irgend etwas mit der Instanzierung falschgelaufen ist, finde aber nicht heraus was es ist.


Für ein Feedback bin ich Euch dankbar.

Gruss
 
So, mit der Lösung hat sich nun doch eine Neue Frage aufgetan:

Im Funktionsblock hatte ich als erstes die Eingangsvariablen mit R_TRIG ausgewertet. Nachdem ich das nicht mehr gemacht habe (Also keine R_TRIG im FB), funktioniert nun alles wie gewünscht.
Weiss jemand wiso? Oder ist es Grundsätzlich nicht möglich diesen Baustein in einem FB zu benutzen? Es scheint als wäre der R_TRIG nur einmal aber nicht für alle FB- Aufrufe separat instanziert worden

Gruss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du in dem FB eine Variable in VAR angelegt, die R_TRIG als Typ hat und dann diese Variable verwendet? Dann sollte das auch gehen.

My_TRIG : R_TRIG;

Und dann mit My_TRIG gearbeitet.

Mehr kann man leider nicht sehen, da der Code deines FB unbekannt ist.
 
Vielen Dank für die Antwort.
Habe den Code nochmal angeschaut und tatsächlich in der instanzierung einen Fehler gemacht. Habe ausversehen nicht einen Eingang auf den CLK vom RTRIG gesetzt sondern irgendwie auf eine Globale Variable verwiesen.
 
Zurück
Oben