Output-Variable mehrfach nutzen in FUP

Ulf S.

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

ich heiße Ulf, bin recht grün hinter den Ohren mit Codesys und habe eine echte Anfängerfrage, die mich aber jetzt schon Tage meiner Zeit gekostet hat.

Wenn ich einen Programmbaustein ablaufen lassen möchte ich ein einzelnes Signal generieren, dann eine kurze Pause und anschließend den gleichen Ausgang (zusammen mit einem weiteren) nochmals schalten. Hierbei scheint die "erste" Betätigung der Ausgangsvariable die weiter hinten zu blockieren. Daher in diesem Beispiel (...)out_eins schaltet initial, aber am Ende des Programmbausteins dann nicht mehr, dort bleibt es auf null.

Kann mir hier jemand weiterhelfen, wie ich das am besten löse? Selbst wenn ich die Betätigung am Schluss auslagere auf einen anderen Programmbaustein habe ich das gleiche Problem.

Vielen Dank euch schon einmal vorab und schöne Grüße aus Nordbayern

Ulf

48f1e019-bb1f-40a4-8449-9859733fb76d.jpg
 
Hallo Ulf
Mach dir 2 Zwischenvariablen und führe beide auf ein Oder mit deinem Ausgang.
Evtl. solltest du dich erstmal mit der Funktionsweise einer SPS vertraut machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ulf,
@holgermaik hat schon fast alles gesagt.
Wenn Du einen Ausgang von mehreren Stellen setzen möchtest ist die Sache mit dem Oder die passende Lösung.
Der Tipp mit dem vertraut machen ist auch nicht verkehrt, denn bei Deiner Idee übersiehst Du etwas, auch ein FUP-Programm wird Schritt für Schritt abgearbeitet. In Deinem Fall würde die Variable dOut_eins erst vom Baustein TOF_Init_down beschrieben und später vom letzten UND.
Hier beißen den letzten nicht die Hunde, sondern er gewinnt, sprich bestimmt was Sache ist.
Es wird ja, soweit keine IF oder CASE Anweisung existiert oder im Falle von FUP, ein Sprung, immer der ganze Code ausgeführt und innerhalb eines Netzwerkes in FUP (und auch KOP) ohnehin, und da die UND-Bedingung nicht erfüllt ist wird der Ausgang auf FALSE gesetzt und alles was an den Ausgang angeschlossen ist auch.
 
Erst mal vielen Dank für eure Antworten.
@holgermaik wie gesagt, das sind meine ersten Schritte, hast du eine Tipp, womit ich anfangen sollte?
@oliver.tonn so hatte ich das auch verstanden, aber anscheinend nicht sauber umgesetzt.
Das sequentielle Beschreiben der Variablen im Ablauf des Netzwerkes der FUP hatte ich in vielen Entwürfen versucht, hat nie funktioniert.

Ich würde gerne noch mal die Problemstellung erläutern, meine Lösung zeigen und euere Meinung dazu hören.
Mit den modbus dOuts schalte ich eine Eltako Rolladen Steuerrelais EGS12Z-UC . Dieses ist hat 3 Eingangspaare (up/down, zentral mit/ohne priorität und verschiedene Schaltverhalten). Ein Eingangspaar wird direkt vom Doppeltaster in der Wand bedient. Das zweite Paar soll jetzt die Wago SPS zu Automationszwecken ansteuern. Die Eltakos werden mit 24V geschaltet (Wandtaster und SPS), über eine Paar Koppelrelais dann die Raffstoremotore mit 220V.

Das Eingangspaar an der die SPS angeschlossen ist, hat folgende "Schaltlogik":
AUF fährt so lange auf wie Impuls
AB fährt so lange ab wie Impuls
AUF/AB Impuls simultan fährt so lange auf bis eingestellte Zeit abgelaufen. das ist im Eltako fest und könnte auch so mit den Doppeltastern so bedient werden (war es am Anfang auch, vor Wago SPS).

Jetzt wollte ich Endlagenfahrten ganz auf oder ganz ab mit SPS so gestalten, dass über eine relative kurze Steuerimpulssequenz (jeder Impuls muss nur 10-30 ms lang sein) angestoßen werden, die ich aber auch jederzeit wieder unterbrechen kann (und nicht im Hintergrund ein TOF 40-60s läuft).

Dazu als erst ein kurzer Impuls in Gegenrichtung (z.B. ab), kurz Pause und dann ein Doppelimpuls auf/ab, dann fährt der Eltako automatisch ganz hoch, eine weiterer Einzelimpuls stoppt. z.B. über Wandtaster oder Visualisierung als Notfallunterbrechung.

Soweit die Aufgabenstellung, so meine Lösung heute Nacht um 2, diese funktioniert auch soweit für beide Richtungen.
Geholfen hat mir das Set und Reset der Modbus-Variablen im Ablauf nacheinander im Netzwerk. Um es etwas übersichtlicher zu gestalten habe ich es in mehrere Netzwerke und ÜbergabeVariablen aufgeteilt. Das läuft so in weniger als 1s durch, könnte die Zeitvariablen sicher noch straffen.
Was meint Ihr dazu?
Danke schon mal im Voraus, lieben Gruß!2021-12-10 15_12_42-_Wago.png
 
Zuletzt bearbeitet:
Zurück
Oben