2410_LSS100100/LSS100200_SW_03.0

Modbus-Einstellungen im Controller mithilfe von Skripten

Bei der Arbeit mit Modbus im Controller ist es wichtig, die verfügbaren Funktionscodes zu verstehen. Diese Codes bestimmen den Typ des Speichers (z. B. Halteregister, Eingangsspulen usw.), auf den zugegriffen werden soll, und die entsprechende Aktion (Lesen oder Schreiben). Alle nachfolgend beschriebenen Funktionen können sowohl für Modbus TCP als auch für Modbus RTU verwendet werden.

  1. Funktionscodes:

    • Funktionscodes definieren spezifische Operationen:

      • Read: Abrufen von Daten von Erweiterungsgeräten.

      • Write: Spulen oder Register aktualisieren.

    • Gängige Funktionscodes:

      • Digitaleingänge lesen (Funktionscode 2)

        Name

        „Getrennten Eingang lesen“

        Befehl

        value = mb:readdiscreteinputs(address)

        Argumente

        [address]: Adresse des Eingangs

        Zurückgegebene Werte

        1: EIN, 0: AUS

        Ausnahmecodes

        01 oder 02 oder 03 oder 04.

        Name

        „Getrennte Eingänge lesen“

        Befehl

        value = mb:readdiscreteinputs(start,count)

        Argumente

        [address]: Adresse des ersten zu lesenden Eingangs

        [count]: Anzahl der zu lesenden Eingänge (max. 2000)

        Zurückgegebene Werte

        1: EIN, 0: AUS

        Fehlercodes:

        01 oder 02 oder 03 oder 04

        Beispiel

        bool1, bool2= mb: readdiscreteinputs(10,2)

        Der von der digitalen Eingangsadresse 11 gelesene Wert wird an die Variable bool1 zurückgegeben.

        Der von der digitalen Eingangsadresse 12 gelesene Wert wird an die Variable bool2 zurückgegeben.

      • Spulen lesen (Funktionscode 1)

        Name

        „Einzelne Spule lesen“

        Befehl

        coil = mb:readcoils(address)

        Befehl

        coil= mb:readcoils(start, count)

        Argumente

        [address]: Adresse der Spulen

        Zurückgegebene Werte

        1: EIN, 0: AUS

        Ausnahmecodes

        01 oder 02 oder 03 oder 04

        Name

        „Mehrere Spulen lesen“

        Argumente

        [start]: Adresse der ersten zu lesenden Spule

        [count]: Anzahl der zu lesenden Spulen (max. 2000)

        Zurückgegebene Werte

        1: EIN, 0: AUS

        Ausnahmecodes

        01 oder 02 oder 03 oder 04

        Beispiel

        coil1,coil2,coil3= mb:readcoils(1000, 3)

        Der von der Spulenadresse 1000 gelesene Wert wird an die Variable Spule1 zurückgegeben.

        Der von der Spulenadresse 1001 gelesene Wert wird an die Variable Spule2 zurückgegeben.

        Der von der Spulenadresse 1002 gelesene Wert wird an die Variable Spule3 zurückgegeben.

      • Eingangsregister lesen (Funktionscode 4)

        Name

        „Eingangsregister lesen“

        Befehl

        value = mb:readinputregisters(address,count)

        Argumente

        [address]: Adresse des ersten zu lesenden Eingangsregisters

        [count]: Anzahl der zu lesenden Eingangsregister (max. 125)

        Zurückgegebene Werte

        2-Byte-Werte

        Ausnahmecodes

        01 oder 02 oder 03 oder 04.

        Beispiel

        value1, value2, value3, value4 = mb:readinputregisters(1015,4)

        Der von der Eingangsregisteradresse 1015 gelesene Wert wird an den Variablenwert1 zurückgegeben.

        Der von der Eingangsregisteradresse 1016 gelesene Wert wird an den Variablenwert2 zurückgegeben.

        Der von der Eingangsregisteradresse 1017 gelesene Wert wird an den Variablenwert3 zurückgesendet.

        Der von der Eingangsregisteradresse 1018 gelesene Wert wird an den Variablenwert4 zurückgegeben.

      • Halteregister lesen (Funktionscode 3)

        Name

        „Register lesen“

        Befehl

        value = mb:readregisters(address,count)

        Argumente

        [address]: Adresse des ersten zu lesenden Registers

        [count]: Anzahl der zu lesenden Register (max. 125)

        Zurückgegebene Werte

        2-Byte-Werte

        Ausnahmecodes

        01 oder 02 oder 03 oder 04.

        Beispiel

        int1, int2= mb: readregisters(1100,3)

        Der von der Registeradresse 1100 gelesene Wert wird an die Variable int1 zurückgegeben.

        Der von der Registeradresse 1101 gelesene Wert wird an die Variable int2 zurückgegeben.

        Der von der Registeradresse 1102 gelesene Wert wird an die Variable int3 zurückgegeben.

      • Einzelne Spule schreiben (Funktionscode 5)

        Name

        „Einzelnes Bit schreiben“

        Befehl

        value = mb:writebits (1000, value)

        [Startadresse, Wert „true“ oder „false“/„0“]

      • Einzelnes Register schreiben (Funktionscode 6)

        Name

        „Einzelnes Register schreiben“

        Befehl

        value = mb:writeregisters(1000, 123)

        [Adresse, Wert]

      • Mehrere Spulen schreiben (Funktionscode 0F)

        Name

        „Mehrere Bits schreiben“

        Befehl

        value = mb:writebits(1000, true, false, true, ...)

        [Adresse, Bitwert1, Bitwert2,...{max. 1968 Bits}]

      • Mehrere Register schreiben (Funktionscode 10)

        Name

        „Mehrere Register schreiben“

        Befehl

        value = mb:writeregisters(1000, 123, 321, 222, ...)

        [Adresse, Wert1, Wert2, ..{max. 123 Register}]

        Ausnahmecodes

        mb:readcoils(start, count)

        mb:readdiscreteinputs(start, count)

        mb:readregisters(start, count)

        mb:readinputregisters(start, count)Diese Befehle lesen ein oder mehrere Register/Spulen ab der Startadresse und geben im Erfolgsfall alle Werte zurück. Im Falle eines Fehlers werden drei Variablen zurückgesendet:

        Nil

        Beschreibung des Ausnahmecodes

        Ausnahmecode

Modbus-Ausnahmecodes: (siehe hier).

QR Code is a registered trademark of DENSO WAVE INCORPORATED in Japan and other countries.

War das hilfreich für Sie?