ModbusRtuSlave_KL6x22B
Der Funktionsbaustein ModbusRTUslave_KL6x22B realisiert einen Modbus-Slave, der über eine serielle Busklemme KL6031 oder KL6041 kommuniziert. Der Baustein verhält sich passiv, bis er von einem angeschlossenen Modbus-Master Telegramme empfängt.
Ein Beispielprogramm für PC bzw. CX1000 oder für einen Buscontroller BC verdeutlicht die Funktionsweise.
Zur Kommunikation über eine serielle PC-Schnittstelle (COM-Port) steht der Funktionsbaustein ModbusRTUslave_PcCom zur Verfügung.
VAR_INPUT
VAR_INPUT
UnitID : UINT;
AdrInputs : POINTER TO BYTE; (* Pointer to the Modbus input area *)
SizeInputBytes : UINT;
AdrOutputs : POINTER TO BYTE; (* Pointer to the Modbus output area *)
SizeOutputBytes : UINT;
AdrMemory : POINTER TO BYTE; (* Pointer to the Modbus memory area *)
SizeMemoryBytes : UINT;
END_VAR
UnitID: Modbus Stationsadresse (1..247). Der Modbus-Slave antwortet nur, wenn er Telegramme mit seiner eigenen Stationsadresse empfängt. Optional können hier auch Sammeladressen eingestellt werden um auf beliebige Anfragen zu antworten. Die Adresse 0 ist für Broadcast-Telegramme reserviert und somit keine gültige Stationsadresse.
AdrInputs: Startadresse des Modbus-Input-Bereiches. Der Datenbereich wird üblicherweise als SPS-Array deklariert und die Adresse kann mit ADR(Input-Variable) berechnet werden.
SizeInputBytes: Größe des Modbus-Input-Bereiches in Bytes. Die Größe kann mit SIZEOF(Input-Variable) berechnet werden.
AdrOutputs : Startadresse des Modbus-Output-Bereiches. Der Datenbereich wird üblicherweise als SPS-Array deklariert und die Adresse kann mit ADR(Output-Variable) berechnet werden.
SizeOutputBytes: Größe des Modbus-Output-Bereiches in Bytes. Die Größe kann mit SIZEOF(Output-Variable) berechnet werden.
AdrMemory : Startadresse des Modbus-Memory-Bereiches. Der Datenbereich wird üblicherweise als SPS-Array deklariert und die Adresse kann mit ADR(Memory-Variable) berechnet werden.
SizeMemoryBytes : Größe des Modbus-Memory-Bereiches in Bytes. Die Größe kann mit SIZEOF(Memory-Variable) berechnet werden.
VAR_OUTPUT
VAR_OUTPUT
ErrorId : Modbus_ERRORS;
END_VAR
ErrorId: Zeigt eine Fehlernummer im Falle einer gestörten oder fehlerhaften Kommunikation an.
Verbindung zur Hardware
Die zur Verknüpfung mit dem Kommunikationsport notwendigen Datenstrukturen sind im Funktionsbaustein enthalten. Auf einem PC erfolgt die Zuweisung im TwinCAT System Manager analog zur Beschreibung im Kapitel Serielle Busklemme. Auf einem Buscontroller BC müssen die I/O-Adressen manuell zugewiesen werden. Siehe Hardwarezuordnung am Buscontroller BC.
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT ab V2.8 |
PC (i386), CX1000 |
ModbusRTU.lib (ab Version 2.0) |
TwinCAT ab V2.8 |
Buscontroller BC |
ModbusRTU.lb6 (ab Version 2.0) |