Kommunikation zwischen CFC- und ST-Programmen

Die einfachste Lösung wäre die Bool Variable in einer GVL zu deklarieren und diese von beiden Programmteilen bei der Erfüllung einer Bedingung einmalig beschreiben, also bei beiden Programmteilen eine Flankenauswertung für jede Bedingung hinzufügen. Das wäre aber ein NoGo, da man Variablen nie von mehreren Stellen beschreiben sollte, da dies zu Fehlern führt und außerdem das Debuggen erschwert.
Innerhalb einer If/Else oder If/Elsif/Else oder einer Case Anweisung darf eine Variable natürlich in den verschiedenen Zweigen auch beschrieben werden.
Besser du fügst bei beiden Programmteilen Hilfsvariablen als Ausgang hinzu und in einem weiteren Programmteill erstellst Du dann eine Logik mit Flankenauswertungen wo die Variable gesetzt wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine Antwort oliver.tonn, ist schon besser mit Hilfsvariablen zu arbeiten. Es geht darum aus einem ST-Programm einen Auftrag an ein CFC-Programm zu geben und dann die Erledigung wieder an das ST-Programm quittieren.
 
Dann könnte man das aber auch mit zwei globalen Variablen oder jeweils einer Eingangs- und Ausgangsvariablen je Baustein machen, als Handshakeverfahren.
Bei globalen Variablen gilt übrigens, "So viel wie nötig, so wenig wie möglich".
Die eine globale Variable heißt dann zum Beispiel irgendwas mit Request und wird vom ST-Programm auf TRUE gesetzt und vom CFC-Programm gelesen.
Dieses setzt dann wiederum eine globale Variable mit einem Namen mit zum Beispiel Running im Namen auf TRUE.
Nun setzt das ST-Programm die Request Variable auf FALSE und anschließend das CFC Programm die Running Variable auf FALSE.
Bei der Variante mit den Ein- und Ausgangsvariablen hat das ST-Programm eine Ausgangsvariable mit Request im Namen, deren Wert an eine Eingangsvariable des CFC Programms geht. Das CFC Programm hat wiederum eine Ausgangsvariable mit zum Beispiel Running im Namen, deren Wert wiederum an eine Eingangsvariablen vom ST-Programm geht.
Der Ablauf beim Zurücksetzen ist dann der Selbe wie bei den globalen Variablen.
 
Zuletzt bearbeitet:
Zurück
Oben