-> Hier kostenlos registrieren
Hallo zusammen,
habe mich extra für Verständnisfragen hier angemeldet. Ich bin recht unerfahren, was SPS-Steuerungen angeht, daher entschuldigt die vielleicht etwas blöde Frage.
Ein Prüfstand zeichnet Messdaten auf. Das Setup besteht aus der National Instruments DIAdem Software, die über einen OPC-Server an eine Beckhoff-Steuerung angeschlossen ist sowie der Messtechnik, Hydraulik usw.
Vom Prüfstand werden einige Signale direkt von der SPS ausgewertet (Impulszählung pro Zeiteinheit), an eine Ausgangsklemme (EL4104) gesendet und von dort als Spannungssignal an eine USB-Eingangskarte in den PC geschickt. Dieses Spannungs-Signal geht auf dem Rückweg zum PC nicht mehr über den Bus/OPC, sondern direkt in die Karte. Auf dem "Hinweg" vom PC zur SPS werden Parameter aber zur Auswertung durch den OPC übertragen. Die USB-Karte wird von DIAdem ausgelesen.
Bei der Auswertung der Signale durch die SPS habe ich ein Verständnisproblem, wie das Programm abgearbeitet wird:
In TwinCat PLC gibt es einen Funktionsblock-Baustein "VolAB", der das Signal vom Volumenstromsensor auswertet. In den globalen Variablen in TwinCat PLC wird eine Variable "Volumenstrom: VolAB;" erzeugt. Der Funktionsblock VolAB besteht aus dem Deklarationsteil und dem Ablaufteil. Im Deklarationsteil sind einige Parameter definiert und mit Werten vorbelegt. Über den OPC-Server, der mit 10 Hz läuft, kann ich aber genau diese Parameter mit anderen Werten überschreiben. Die Parameter beeinflussen die Auswertung des Sensors.
Das SPS-Main-Programm läuft nun zyklisch mit 1ms (1000 Hz) ab und ruft dabei „Volumenstrom()“ auf. Jetzt zur Frage: Bedeutet dies, dass eine neue Instanz vom Funktionsblock „VolAB“ erstellt wird, also jedes Mal die im Deklarationsteil beschriebenen Werte neu gesetzt werden? Denn ich möchte natürlich immer nur die Werte der Parameter verwenden, die über den OPC gesendet werden. Dieser läuft außerdem nur mit 10 Hz statt 1000 Hz, wie das Main-Programm.
Oder ist es so, dass der Deklarationsteil nur ein einziges Mal beim Programmstart, bei den globalen Variablen, aufgerufen wird, und danach nur noch die vom OPC übergebenen Parameter gesetzt sind?
Die Frage dreht sich also darum, wie sich die im Deklarationsteil eines Funktionsblockes definierten Variablen verhalten, wenn sie über einen OPC-Server verändert werden, aber das Main-Programm diesen Funktionsblock jeden Zyklus neu aufruft (oder neu erstellt?).
Viele Grüße
Thomaso
habe mich extra für Verständnisfragen hier angemeldet. Ich bin recht unerfahren, was SPS-Steuerungen angeht, daher entschuldigt die vielleicht etwas blöde Frage.
Ein Prüfstand zeichnet Messdaten auf. Das Setup besteht aus der National Instruments DIAdem Software, die über einen OPC-Server an eine Beckhoff-Steuerung angeschlossen ist sowie der Messtechnik, Hydraulik usw.
Vom Prüfstand werden einige Signale direkt von der SPS ausgewertet (Impulszählung pro Zeiteinheit), an eine Ausgangsklemme (EL4104) gesendet und von dort als Spannungssignal an eine USB-Eingangskarte in den PC geschickt. Dieses Spannungs-Signal geht auf dem Rückweg zum PC nicht mehr über den Bus/OPC, sondern direkt in die Karte. Auf dem "Hinweg" vom PC zur SPS werden Parameter aber zur Auswertung durch den OPC übertragen. Die USB-Karte wird von DIAdem ausgelesen.
Bei der Auswertung der Signale durch die SPS habe ich ein Verständnisproblem, wie das Programm abgearbeitet wird:
In TwinCat PLC gibt es einen Funktionsblock-Baustein "VolAB", der das Signal vom Volumenstromsensor auswertet. In den globalen Variablen in TwinCat PLC wird eine Variable "Volumenstrom: VolAB;" erzeugt. Der Funktionsblock VolAB besteht aus dem Deklarationsteil und dem Ablaufteil. Im Deklarationsteil sind einige Parameter definiert und mit Werten vorbelegt. Über den OPC-Server, der mit 10 Hz läuft, kann ich aber genau diese Parameter mit anderen Werten überschreiben. Die Parameter beeinflussen die Auswertung des Sensors.
Das SPS-Main-Programm läuft nun zyklisch mit 1ms (1000 Hz) ab und ruft dabei „Volumenstrom()“ auf. Jetzt zur Frage: Bedeutet dies, dass eine neue Instanz vom Funktionsblock „VolAB“ erstellt wird, also jedes Mal die im Deklarationsteil beschriebenen Werte neu gesetzt werden? Denn ich möchte natürlich immer nur die Werte der Parameter verwenden, die über den OPC gesendet werden. Dieser läuft außerdem nur mit 10 Hz statt 1000 Hz, wie das Main-Programm.
Oder ist es so, dass der Deklarationsteil nur ein einziges Mal beim Programmstart, bei den globalen Variablen, aufgerufen wird, und danach nur noch die vom OPC übergebenen Parameter gesetzt sind?
Die Frage dreht sich also darum, wie sich die im Deklarationsteil eines Funktionsblockes definierten Variablen verhalten, wenn sie über einen OPC-Server verändert werden, aber das Main-Programm diesen Funktionsblock jeden Zyklus neu aufruft (oder neu erstellt?).
Viele Grüße
Thomaso