Programmablauf PLC_PRG

alexander88

Level-2
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

ich habe in Codesys 3.5, zwei Funktionsbausteine erstellt, die ich in PLC_PRG aufrufe.
Gesteuert wird das ganze über die Codesys Webvisu.

Nun habe ich das Problem, das immer von meinem Baustein, im oberen Netzwerk die Ausgänge (Globale Variable) nicht gesetzt werden.

Weiß einer woran das liegen könnte ?

MfG
Alex
 
Im Moment ist das eine Glaskugelfrage und die ist im Moment noch ziemlich getrübt.
Eine Vermutung wäre, dass die zweite Funktion auch die Variablen beschreibt.
Zeig doch mal Dein Programm, dann wird vielleicht einiges klarer.
 
Also Die Ausgangsvariablen sind zum Teil gleich, es wird aber immer nur ein Baustein benutzt.
Und wie sorgst Du dafür? Das ist auf Deinen Bildern nämlich nicht zu erkennen.
Auch wenn ein FB nichts im Code tut setzt er beim Aufruf die an den Ausgängen verknüpften Variablen.
Nachtrag: Wie Matze nach mir schon richtig schrieb. Der zweite FB bestimmt welchen Wert die gemeinsam genutzten Variablen haben.
 
Zuletzt bearbeitet:
Naja die Antwort ist einfach.

Es wird nur einer Benutzt... und wie?

Beim ersten ist EN auf TRUE -> Somit wird er immer bearbeitet.
Der zweite hat kein EN -> Wird also auch immer bearbeitet.

Der letzte Schreibzugriff auf die Variable gewinnt -> Somit hat Baustein 2 immer recht.

Grüße

Marcel
 
Da es FUP ist könntest Du einen Sprung einfügen, aber eigentlich sollte man eine Variable nicht an mehreren Stellen beschreiben. In Deinem Fall solltest Du Zwischenvariablen nutzen und diese dann logisch verknüpfen und damit dann die globale Variable setzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Übrigens hat das nichts mit sich gegenseitig vertragen zu tun, sondern mit der grundlegenden Funktionsweise einer SPS. Ein FB speichert, unter anderem, den Zustand aller Variablen (auch der Ausgänge) auch über den Aufruf hinaus, während eine Funktion (außer mit Tricks) immer bei 0 anfängt. Auch wenn Du bei weiteren Aufrufen die Variablen nicht anrührst haben Sie noch die Werte aus dem vorherigen Durchlauf und somit auch die Ausgänge und diese Werte werden dann bei einem Aufruf immer an die verknüpften Variablen weitergegeben. Du könntest mal einen FB erzeugen der nur deklarierte Variablen, aber keinen Code hat. Setzt Du da die Ausgangsvariablen (über Wert Schreiben oder Forcen) wirst Du sehen, dass selbst dann Deine globalen Variablen beim nächsten Aufruf gesetzt werden, obwohl nichts zum Aufrufen da ist.
 
Zuletzt bearbeitet:
Zurück
Oben