Programm-Problem ereignisgesteuerten Tasks - StehAufmSchlauch

KingHelmer

Level-1
Beiträge
1.076
Reaktionspunkte
139
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zsuammen,

ich habe in meinem Programm (Codesys 2.3, WAGO 750-881) zwei Versionen eines Bausteines erstellt.
Zwischen diesen beiden Versionen möchte ich im laufenden Betrieb umschalten können.

Am einfachsten wäre es für mich, hier ereignisgesteuert mit dem Toggeln einer Variablen, umschalten zu können.
Das funktioniert auch, allerdings wird der Task nur mit einer steigenden Flanke ausgeführt.

Nun müsste ich mir einen Puls generieren, welcher dauerhafte Steigende Flanken erzeugt, um den Task zyklisch auszuführen.
Dieser darf aber nur in einem anderen Task ausgeführt werden und wäre dann an dessen Zykluszeit gebunden.

Also kurz:

Kann ich einen ereignisgesteuerten Task auch TOGGELN?
Oder gibts da vieleicht ne andere Möglichkeit?

Über IF ELSE kann ich nicht gehen, da sich die Variablen der beiden "Versionen" stark beißen. Das funktioniert nicht ganz.

Bin für jede Hilfe dankbar!

Grüße,
Flo
 
Hallo Flo,
warum ist das erforderlich?

Z.B. sind Mehrfachzugriffe auf Ausgänge sind nicht schön.

Der 881 ist Multitask fähig.
Kannst Du hierfür ein PLC_Task zyklisch, & zwei weitere PRG Ereignisgesteuert aus der PLC_Task aufrufen?
Hierzu ist eine globale Variable nötig.

MfG aus OWL
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiss nicht ob das hilfreich ist, weil ich das Problem noch nicht ganz verstanden habe:
aber: ich würde ereignisgesteuerte Tasks grundsätzlich immer so realisieren, dass das Ereignis in der Task selber wieder zurückgesetzt wird.
Also wenn eine Task t1 Taktgeber von t2 sein soll, dann setzt t1 das Event auf TRUE und t2 setzt das Event gleich als erstes wieder zurück.
Auf die Art sollte man keine Flanke verlieren.
 
Hallo zusammen,

danke für eure Antworten.

Das Problem ist, dass ich einen Programmteil habe, von welchem es eine alte und eine neue Version gibt.
In der alten version wird der Merker %MW70 von extern beschrieben und ich lese ihn nur.
In der neuen Version beschreibe ich genau den gleichen Merker und extern wird er gelesen.

Zwischen beiden Versionen möchte ich umschalten können, aber die Deklarationen im Code der Bausteine (z.B. als In-Variable oder als Out-Variable) möchte/kann/will ich nicht ändern.

Daher habe ich nun zwei Programme erstellt, welche mit einem Visualisieren Button "umgeschaltet" werden.
Dabei läuft im Hintergrund ein "Blinker", welcher immer wieder eine Flanke als Eregnis sendet.

Das funktioniert gerade genau so, wie es soll.

Beste Grüße,
Flo

PS: Ich teste mal eben, das Ereignis zurückzusetzen. Klingt vieleicht nach der besseren Lösung.
 
Zuletzt bearbeitet:
Zurück
Oben