ModbusRtuMasterV2_KL6x5B
Der Funktionsbaustein ModbusRtuMasterV2_KL6x5B
realisiert einen Modbus-Master, der über eine serielle Busklemme KL6001, KL6011 oder KL6021 kommuniziert. Zur Kommunikation über eine serielle PC-Schnittstelle (COM-Port) steht der Funktionsbaustein ModbusRtuMasterV2_PcCOM zur Verfügung.
Verbindung zur Hardware Die zur Verknüpfung mit dem Kommunikations-Port notwendigen Datenstrukturen sind im Funktionsbaustein enthalten. Auf einem PC erfolgt die Zuweisung im TwinCAT System Manager analog zur Beschreibung im Kapitel Serielle Busklemme der Dokumentation TF6340 TC3 Serial Communication. |
Der Baustein wird nicht in seiner Grundform aufgerufen, sondern es werden in einem SPS-Programm einzelne Aktionen des Funktionsbausteins verwendet. Jede Modbus-Funktion ist als Aktion realisiert.
Unterstützte Modbus-Funktionen (Aktionen)
- ModbusMaster.ReadCoils
Modbus-Funktion 1 = Read Coils - Liest binäre Ausgänge (Coils) von einem angeschlossenen Slave. Die Daten werden in komprimierter Form (8 Bit pro Byte) ab der angegebenen Adresse
pMemoryAddr
abgelegt. - ModbusMaster.ReadInputStatus
Modbus-Funktion 2 = Read Input Status - Liest binäre Eingänge von einem angeschlossenen Slave. Die Daten werden in komprimierter Form (8 Bit pro Byte) ab der angegebenen Adresse
pMemoryAddr
abgelegt. - ModbusMaster.ReadRegs
Modbus-Funktion 3 = Read Holding Registers - Liest Daten von einem angeschlossenen Slave.
- ModbusMaster.ReadInputRegs
Modbus-Funktion 4 = Read Input Registers - Liest Eingangsregister von einem angeschlossenen Slave.
- ModbusMaster.WriteSingleCoil
Modbus-Funktion 5 = Write Single Coil - Sendet einen binären Ausgang (Coil) an einen angeschlossenen Slave. Die Daten müssen in komprimierter Form (8 Bit pro Byte) ab der angegebenen Adresse
pMemoryAddr
zum Senden bereit liegen. - ModbusMaster.WriteSingleRegister
Modbus-Funktion 6 = Write Single Register - Sendet ein einzelnes Datenwort an einen angeschlossenen Slave
- ModbusMaster.WriteMultipleCoils
Modbus-Funktion 15 = Write Multiple Coils - Sendet binäre Ausgänge (Coils) an einen angeschlossenen Slave. Die Daten müssen in komprimierter Form (8 Bit pro Byte) ab der angegebenen Adresse
pMemoryAddr
zum Senden bereit liegen. - ModbusMaster.WriteRegs
Modbus-Funktion 16 = Preset Multiple Registers - Sendet Daten an einen angeschlossenen Slave
- ModbusMaster.Diagnostics
Modbus-Funktion 8 = Diagnostics - Sendet eine Diagnoseanforderung mit einem von Anwender angegebenen Funktionscode (subfunction code) an den Slave. Da bei dieser Funktion kein Speicher adressiert wird, wird hier der Funktionscode im Datenwort
MBAddr
übergeben. Eventuelle für die Funktion notwendige Daten werden überpMemoryAddr
mitgegeben.
Unterstützte Modbus-Funktionen (Aktionen) der MasterV2 Funktionsbausteine
- ModbusMaster.ReadWriteRegs
Modbus-Funktion 23 = Read/Write Multiple Registers - Sendet die über die Aux-Parmeter spezifizierten Daten an einen angeschlossenen Slave und empfängt gleichzeitig Daten von dem Slave. Die empfangenen Daten werden an der durch pMemoryAddr spezifizierten Adresse abgelegt.
- ModbusMaster.UserReadWrite
Universelles Anwendertelegramm - Der Modbus-Funktion Code wird vom Anwender im ersten Byte spezifizierten Daten (pMemoryAddr) angegeben. Der Anwender ist mit dieser Funktion in der Lage Modbus-Telegramm mit beliebigem Funktionscode zu senden. Evtl. vom Slave empfangene Daten werden an der durch pAuxMemoryAddr spezifizierten Adresse abgelegt.
Eingänge
VAR_INPUT
UnitID : BYTE;
Quantity : WORD;
MBAddr : WORD;
cbLength : UINT;
pMemoryAddr : POINTER TO BYTE;
AuxQuantity : WORD;
AuxMBAddr : WORD;
AuxcbLength : UINT;
pAuxMemoryAddr : POINTER TO BYTE;
Execute : BOOL;
Timeout : TIME;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
UnitID | UINT | 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 (siehe UnitID) |
Quantity | WORD | Anzahl der zu lesenden oder zu schreibenden Datenworte bei Wort-orientierten Modbus-Funktionen. Bei Bit-orientierten Modbus-Funktionen gibt Quantity die Anzahl der Bits (Inputs oder Coils) an. |
MBAddr | WORD | Modbus-Datenadresse, von der die Daten aus dem Endgerät (Slave) gelesen werden. Diese Adresse wird unverändert zum Slave übertragen und wird dort als Datenadresse interpretiert. |
cbLength | UINT | Größe der verwendeten Datenvariable für Sende- oder Lese-Aktionen in Bytes. cbLength muss größer oder gleich der durch Quantity bestimmten übertragenen Datenmenge sein. Bei Wortzugriffen gilt z. B.: [cbLength >= Quantity * 2]. cbLength kann mit SIZEOF(ModbusDaten) berechnet werden. |
pMemoryAddr | BYTE | Speicheradresse in der SPS, die mit ADR (ModbusDaten) berechnet wird. Bei Leseaktionen werden die gelesenen Daten in der adressierten Variablen abgelegt. Bei Sende-Aktionen werden die Daten aus der adressierten Variablen zum Endgerät übertragen. |
AuxQuantity | WORD | Zusätzlicher Parameter, welcher nur bei Read/Write Funktionen verwendet wird, siehe ReadWriteRegs/UserReadWrite |
AuxMBAddr | WORD | Zusätzlicher Parameter, welcher nur bei Read/Write Funktionen verwendet wird, siehe ReadWriteRegs/UserReadWrite. |
AuxcbLength | UINT | Zusätzlicher Parameter, welcher nur bei Read/Write Funktionen verwendet wird, siehe ReadWriteRegs/UserReadWrite |
pAuxMemoryAddr | BYTE | Zusätzlicher Parameter, welcher nur bei Read/Write Funktionen verwendet wird, siehe ReadWriteRegs/UserReadWrite |
Execute | BOOL | Startsignal. Mit steigender Flanke am Eingang Execute wird die Aktion ausgelöst. |
Timeout | TIME | Timeout-Wert für das Warten auf eine Reaktion des angesprochenen Slaves. |
Ausgänge
VAR_OUTPUT
BUSY : BOOL;
Error : BOOL;
ErrorId : MODBUS_ERRORS;
cbRead : UINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Busy | BOOL | Zeigt an, dass der Funktionsbaustein aktiv ist. Busy wird mit steigender Flanke an Execute TRUE und wird wieder FALSE nachdem die gestartete Aktion beendet ist. Es kann immer nur eine Aktion gleichzeitig aktiv sein. |
Error | BOOL | Zeigt an, dass bei der Bearbeitung einer Aktion ein Fehler aufgetreten ist. |
ErrorId | MODBUS_ERRORS | Zeigt eine Fehlernummer im Falle einer gestörten oder fehlerhaften Kommunikation an. |
cbRead | UINT | Liefert die Anzahl der gelesenen Datenbytes bei einer Lese-Aktion. |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.0 | PC oder CX (x86, x64, ARM) | Tc2_ModbusRTU |