ReadWriteTerminalReg
Der Funktionsbaustein "ReadWriteTerminalReg" ermöglicht einen komfortableren Zugriff auf die Register der Klemme über das Status-/Controlbyte des Klemmenkanals (Registerkommunikation). In der Standardbetriebsart werden die Daten Ein-/Ausgänge der intelligenten Klemmen (z.B. einer analogen Ausgangsklemme) für den Austausch der analogen Ausgangsdaten benutzt. Ein Handshake über das Status-/Controlbyte ermöglicht einen Registerzugriff, dabei werden die Daten Ein-/Ausgangsvariablen zum Übertragen der Registerwerte benutzt. Die Klemme muss als komplexe SPS-Klemme gemappt sein, damit das Status-/Controlbyte im Prozessabbild sichtbar wird. Es kann nicht auf die Register der Klemme zugegriffen werden, wenn die Klemme als kompakte SPS-Klemme oder als Feldbusklemme (Prozessabbild der Klemme nicht für den Bus-Controller sichtbar) gemappt wurde.
Über eine positive Flanke an dem READ- oder WRITE-Eingang wird das Register mit der Nummer REGNO gelesen bzw. in das Register geschrieben. Der Registerschreibschutz wird von dem Funktionsbaustein bei einem Schreibzugriff aufgehoben und anschließend neu gesetzt. Bei einem Schreibzugriff auf ein Register wird der neue Registerwert gelesen und steht an dem Ausgang CURRREGVALUE zur Verfügung. Um Änderungen der Registerwerte permanent zu speichern, muss die Spannungsversorgung des Kopplers unterbrochen oder ein Software-Reset des Kopplers durchgeführt werden.
VAR_INPUT
VAR_INPUT
STATE : BYTE;
DATAIN : WORD;
REGNO : BYTE;
READ : BOOL;
WRITE : BOOL;
TMOUT : TIME;
NEWREGVALUE : WORD;
END_VAR
STATE: Statusbyte des Klemmenkanals.
DATAIN: Dateneingangswort des Klemmenkanals.
REGNO: Nummer des Registers auf den ein Schreib- bzw. Lesezugriff erfolgen soll.
READ: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert und der aktuelle Registerwert gelesen. Bei Erfolg steht der Registerwert in der Ausgangsvariablen CURRREGVALUE zur Verfügung.
WRITE: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert und in den Register REGNO der Wert der Eingangsvariablen NEWREGVALUE geschrieben. Anschließend wird der aktuelle Wert des Registers gelesen und steht bei Erfolg in der Ausgangsvariablen CURREGVALUE zur Verfügung.
TMOUT: Gibt die Timeout-Zeit an, die bei der Ausführung der Funktion nicht überschritten werden darf.
NEWREGVALUE: Datenwort, das bei einem Schreibzugriff in dem Register mit der Nummer REGNO geschrieben werden soll.
VAR_OUTPUT
VAR_OUTPUT
CTRL :BYTE;
DATAOUT :WORD;
BUSY :BOOL;
ERR :BOOL;
ERRID :UDINT;
CURREGVALUE :WORD;
END_VAR
CONTROL: Controlbyte des Klemmenkanals.
DATAOUT: Datenausgangswort des Klemmenkanals.
BUSY: Bei der Aktivierung des Bausteines wird dieser Ausgang gesetzt und bleibt gesetzt, bis die Ausführung der Funktion abgeschlossen wurde.
ERR: Sollte ein Fehler bei der Ausführung der Funktion auftreten, dann wird dieser Ausgang gesetzt, nachdem der BUSY-Ausgang zurückgesetzt wurde.
ERRID: Liefert bei einem gesetzten ERR-Ausgang die Fehlernummer.
CURREGVALUE: Bei einem erfolgreichen Lese- oder Schreibzugriff wird über die Variable der aktuelle Registerwert ausgegeben.
Fehlerbeschreibung:
Fehlernummer | Fehlerbeschreibung |
---|---|
0 | kein Fehler |
0x100 | Timeout-Fehler. Die zulässige Ausführungszeit wurde überschritten. |
0x200 | Parameter Fehler (z.B. bei einer unzulässigen Registernummer). |
0x300 | Der gelesene Wert unterscheidet sich von dem geschriebenen Wert (Schreibzugriff auf diesen Register möglicherweise nicht erlaubt oder fehlgeschlagen ) |
Beispiele für einen Aufruf in FUP:
VAR
ReadWriteTerminalReg1 : ReadWriteTerminalReg;
State AT%IB0 : BYTE;
Control AT%QB0 : BYTE;
DataIn AT%IW2 : WORD;
DataOut AT%QW2 : WORD;
Start_ReadTerminalType : BOOL;
Start_WriteFeatureRegister: BOOL;
RWTerminalReg_Busy : BOOL;
RWTerminalReg_Err : BOOL;
RWTerminalReg_ErrId : UDINT;
TerminalType : WORD;
FeatureRegValue : WORD;
END_VAR
Beispiel 1
Im Beispiel 1 wird aus dem Register 8 einer analogen Ausgangsklemme die Klemmenbezeichnung ausgelesen. Die Variablen State, Control, DataIn und DataOut werden mit den entsprechenden IO-Variablen der Klemme im TwinCAT System Manager verknüpft. Die Klemmenbezeichnung lautet: KL4002.
Beispiel 2
Im Beispiel 2 wird in dem Feature-Register (Register 32) einer analogen Ausgangsklemme KL4002 die Anwenderskalierung aktiviert. Der neue Wert des Feature-Registers wird dann von dem Funktionsbaustein gelesen und kann über die Ausgangsvariable CURREGVALUE überprüft werden.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.7.0 und höher | BCxxxx (165) | Standard.Lb6, PlcSystemBC.Lb6, TcPlcUtilitiesBC.Lb6 |