Programmablauf TwinCat2 PLC - Deklarations-Parameter

Thomaso

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> 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
 
wenn es konstante sind dan werden die jedes mahl gefragt, wenn es normale variabelen sind wenn das block angerufen wird.
aber du kannst naturlich die variabelen in global andern. nicht im FB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die VolAB-Instanz wird nur einmal beim Programmstart erzeugt und ihre Variablen initialisiert. Das Main-Programm beschreibt beim Aufruf von "Volumenstrom" keine Input-Variablen. Diese behalten also die vom OPC-Server geschriebenen Werte, es sei denn, der FB selbst würde sie ändern.
 
Im Deklarationsteil sind die Parameter zwischen VAR und END_VAR eingetragen, es handelt sich also um lokale Variablen, über die laut Beckhoff nicht von außen zugegriffen werden kann? Es gibt außerdem noch Teile mit VAR_INPUT und VAR_OUTPUT.

Ausschnitt:
VAR
parCountToVolume = 500;
END_VAR

Über den OPC teile ich parCountToVolume = 100 mit. Also kann ich trotz der lokalen Deklaration scheinbar den Wert ändern. Ist der Wert beim nächsten Zyklus wieder 500, bis der OPC (niedrigere Frequenz) wieder einmal die 100 gesendet hat?
 
Die Variable "Volumenstrom" ist sozusagen die Datenbank zu dem FB, und besteht ja auch aus einem solchen Typ.
Wenn du nun "Volumenstrom()" aufrufst, wird der nur abgearbeitet. Wenn in den Klammern Werte übergeben werden, bsp. "Volumenstrom(Input:=Wert)", dann würdest du Werte übergeben und die im FB überschreiben. Da du das nicht tust, rufst du ihn nur jedes mal auf.
Die Werte muss nun vom FB selbst, oder von aussen geändert werden.
 
Zurück
Oben