ModbusRtuMasterV2_Generic

ModbusRtuMasterV2_Generic 1:

Der Funktionsbaustein ModbusRtuMasterV2_Generic realisiert einen Modbus-Master, der über verschiedenste serielle Schnittstellen (COM-Port, virtueller COM-Port, EtherCAT-Klemmen, ...) kommuniziert.

Aufgrund der Hardware-unabhängigen Eigenschaft des ModbusRtuMasterV2_Generic ist die Verwendung etwas aufwendiger als bei den Hardware-abhängigen Funktionsbausteinen ModbusRtuMasterV2_PcCOM, ModbusRtuMasterV2_KL6x22B, ModbusRtuMasterV2_ KL6x5B. Alle Funktionsbausteinen bieten die gleiche ModbusRTU Funktionalität. Allein der ModbusRtuMasterV2_Generic ermöglicht jedoch die Verwendung von virtuellen COM-Ports.

ModbusRtuMasterV2_Generic 2:

Verbindung zur Hardware mittels TF6340 TC3 Serial Communication (Lizenz notwendig)

Die zur Verknüpfung mit dem Kommunikations-Port notwendigen Datenstrukturen müssen separat instanziiert werden. Die an diesem Funktionsbaustein vorhandenen Datenstrukturen vom Typ ComBuffer sind Datenpuffer zur Entkopplung der Hardware-abhängigen Hintergrundkommunikation. Diese Hintergrundkommunikation muss über entsprechende Funktionsbausteine (SerialLineControl, SerialLineControlADS) der Tc2_SerialCom SPS Bibliothek realisiert werden, wozu diese SPS Bibliothek zuerst im Programm eingebunden werden muss. Hiermit wird auch die Lizenz für TF6340 TC3 Serial Communication zusätzlich notwendig.

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)

Unterstützte Modbus-Funktionen (Aktionen) der MasterV2 Funktionsbausteine

ModbusRtuMasterV2_Generic 3: 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.
Bei der Diagnostics-Funktion (8) wird hier der Funktionscode (subfunction code) übergeben.

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.

ModbusRtuMasterV2_Generic 4: Ein-/Ausgänge

VAR_IN_OUT
    RxBuffer    : ComBuffer;
    TxBuffer    : ComBuffer;
END_VAR

Name

Typ

Beschreibung

TxBuffer

ComBuffer (Tc2_SerialCom SPS Bibliothek)

Puffer mit Sendedaten für die verwendete serielle Hardware. Dieser Datenpuffer wird vom Anwender niemals direkt beschrieben oder gelesen, sondern dient nur als Zwischenspeicher für die Kommunikationsbausteine. Die Hintergrundkommunikation muss über entsprechende Funktionsbausteine der Tc2_SerialCom SPS Bibliothek realisiert werden.

RxBuffer

ComBuffer (Tc2_SerialCom SPS Bibliothek)

Puffer in dem die Empfangsdaten abgelegt werden. Dieser Datenpuffer wird vom Anwender niemals direkt beschrieben oder gelesen, sondern dient nur als Zwischenspeicher für die Kommunikationsbausteine. Die Hintergrundkommunikation muss über entsprechende Funktionsbausteine der Tc2_SerialCom SPS Bibliothek realisiert werden.

ModbusRtuMasterV2_Generic 5: 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.4024.0

PC oder CX (x86, x64, ARM)

Tc2_ModbusRTU (>= v3.5.6.0)