Modbus-Interfaces
Adresse | Beschreibung | |||
---|---|---|---|---|
0x0000 | Prozessdaten-Inferface | |||
0x0800 | Prozessdaten-Inferface | |||
0x1000 | Read only | Buskopplerkennung | ||
0x1010 | Prozessabbildlänge in Bit, analoge Ausgänge | |||
0x1011 | Prozessabbildlänge in Bit, analoge Eingänge | |||
0x1012 | Prozessabbildlänge in Bit, digitale Ausgänge | |||
0x1013 | Prozessabbildlänge in Bit, digitale Eingänge | |||
0x1020 | Watchdog, aktuelle Zeit in [ms] | |||
0x1021 | Anzahl der Ausgelösten Fallbacks (Watchdog Timeout oder Bus Fehler) | |||
0x1022 | Anzahl der aktiven TCP Verbindungen | |||
0x1030 | Hardware Version | |||
0x1031 | Software Version Main | |||
0x1032 | Software Version Sub-Main | |||
0x1033 | Software Version Beta | |||
0x1034 | Seriennummer | |||
0x1035 | Produktionsdatum Tag | |||
0x1036 | Produktionsdatum Monat | |||
0x1037 | Produktionsdatum Jahr | |||
0x1040 | E-Bus Status 1 OK, 0 nicht OK | |||
0x1120 | Read/Write | Watchdog vordefinierte Zeit in [ms] (Default: 1000) | ||
0x1121 | Watchdog Reset Register | |||
0x1122 | Art des Watchdogs | 2 | Disable | |
1 | Telegramm Watchdog (Default) | |||
0 | Schreibtelegramm Watchdog | |||
0x1123 | Fallback Mode | 2 | Stopp E-Bus, E-Bus wird gestoppt, E-Bus kann mit 0x1140 wieder aktiviert werden | |
1 | Freeze | |||
0 | Set to Zero (Default) | |||
0x1124 | Writelock | 1 | Yes (Default) | |
0 | No | |||
0x1140 | Write 0, E-Bus wird in INIT geschaltet, Wert > 0 EtherCAT Master wird in OP geschaltet (Achtung: die letzten Ausgangswerte werden wieder beschrieben), 5 sec Timeout in dem kein Fallback berücksichtigt wird. |
Erweitertes Modbus-Interface
Adresse | Beschreibung | |
---|---|---|
0x6000 | Read only | Buskopplerkennung (9000dec) |
0x6001 | 1. Klemme | |
0x60xx | xx'te Klemme |
Adresse | Registerkommunikation via Modbus Interface - Beschreibung | ||
---|---|---|---|
0x1400 | Read/Write | READ | WRITE |
STATUS | CONTROL | ||
0x010x - Error | 0x0001 execute | ||
0x020x - Busy | - | ||
0x040x - done | - | ||
0x1401 | Bit 15 0 - Read/ 1 - Write | Bit 0..14 Klemmen Nummer (Position im EtherCAT Aufbau), beginnt mit 1 | ||
0x1402 | CoE Index Nummer | ||
0x1403 | Register Bit 0..7 Sub Index, Bit 8..15 nicht verwendet | ||
0x1404 | Länge in Byte | ||
0x1405 | Error Code: ADS Fehler Code | ||
0x1406..14FF | Data[1]...Data[FF] |
Beispiel: Lesen der 2. EtherCAT Klemme (EL3204) Objekt 0x1008 SubIndex 0x00 (Name der Klemme)
(Beispiel: Download)
1. Schritt
ModbusRegWrite
MB.Addr:=0x1400
MB.Len:= 5 (Worte oder Register)
0x1400:=0x0001
0x1401:=0x0002; lesen bit 15=FALSE, 2te Klemme
0x1402:=0x1008; Objekt 0x1008
0x1403:=0x0000; SubIndex 0
0x1404:=0x0000; Länge (nur für das Schreiben notwendig)
Client:
ModbusTCP | Function Code | Start Addr | Length | Byte Len | Execute | R/W | Object | SubIndex | Length |
7 Byte | 1 Byte | 2 Byte | 2 Byte | 1 Byte | 2 Byte | 2 Byte | 2 Byte | 2 Byte | 2 Byte |
00 00 00 00 00 11 00 | 10 | 14 00 | 00 05 | 0A | 00 01 | 00 02 | 10 08 | 00 00 | 00 00 |
Server:
ModbusTCP | Function Code | Start Addr | Length |
7 Byte | 1 Byte | 2 Byte | 2 Byte |
00 00 00 00 00 06 00 | 10 | 14 00 | 00 05 |
2. Schritt
ModbusRegRead
MB.Addr:=0x1400
MB.Len:= 12 (Worte oder Register)
0x1400:=0x0201; SDO Kommunikation noch nicht abgeschlossen, es muss weiter gepollt werden, Schritt 2 ist zu wiederholen bis der Wert 0x0400 ist (wobei 0x0500 ein Fehler bedeutet).
0x1401:=0x0002;2te Klemme
0x1402:=0x1008;
0x1403:=0x0000;
Client:
ModbusTCP | Function Code | Start Addr | Modbus Length |
7 Byte | 1 Byte | 2 Byte | 2 Byte |
00 00 00 00 00 06 00 | 03 | 14 00 | 00 14 |
Server:
ModbusTCP | Function Code | Byte Length | Execute | R/W | Object | SubIndex | COE | Rest |
7 Byte | 1 Byte | 1 Byte | 2 Byte | 2 Byte | 2 Byte | 2 Byte |
| 30 Byte |
00 00 00 00 00 2B 00 | 03 | 28 | 02 01 | 00 02 | 10 08 | 00 00 | 00 00 | Don’t use it, because length is 0 Byte |
3. Schritt (wiederholen von Schritt 2):
ModbusRegRead
MB.Addr:=0x1400
MB.Len:= 12 (Worte oder Register)
0x1400:=0x0400; ohne Fehler Daten stehe bereit
0x1401:=0x0002; 2te Klemme
0x1402:=0x1008; Objekt 0x1008
0x1403:=0x0000; SubIndex
0x1404:=0x000B; Länge
0x1405:=0x0000; Error Code
0x1406:=0x4C45; 'EL'
0x1407:=0x3233; '32'
0x1408:=0x3430; '02'
0x1409:=0x30D2; '-0'
0x140A:=0x3030; '00'
0x140B:=0x0030; '0'
Client:
ModbusTCP | Function Code | Start Addr | Modbus Length |
7 Byte | 1 Byte | 2 Byte | 2 Byte |
00 00 00 00 00 06 00 | 03 | 14 00 | 00 14 |
Server:
ModbusTCP | Function Code | Byte Len | Execute | R/W | Object | SubIndex | COE | Error | Data | Rest |
7 Byte | 1 Byte | 1 Byte | 2 Byte | 2 Byte | 2 Byte | 2 Byte | 2 Byte | 2 Byte | 11 Byte | 17 Byte |
00 00 00 00 00 2B 00 | 03 | 28 | 04 00 | 00 02 | 10 08 | 00 00 | 00 0B | 00 00 | 4C 45 32 33 32 30 30 D2 30 30 30 | Don’t use it, because length is 11 Byte |
Wenn mehr Daten ausgelesen werden als die CoE-Länge zurückgibt, sind diese Daten zu ignorieren. Es können hier noch alte Daten im Buffer stehen, die aber bei der Antwort keine Rolle spielen; hier ist die COE-Länge auszuwerten.
Beispiel: Schreiben der 5. EtherCAT Klemme (EL3318) Objekt 0x8000 SubIndex 0x19, Wert für 75µV Messung = 102 dec
Beispiel für ein Schreiben auf eine EL3318 (5te Klemme) bei der der erste Kanal der Klemme auf den Typ 75µV-Messung eingestellt werden soll.
1. Schritt
Write Multiple Register (Modbus Function Code 16)
MB.Addr:=0x1400
MB.Len:= 7 (Worte oder Register)
0x1400:=0x0001
0x1401:=0x8005; Schreiben (bit 15 = TRUE), 5. Klemme
0x1402:=0x8000; Objekt 0x8000
0x1403:=0x0019; SubIndex 0x19
0x1404:=0x0002; Länge
0x1405:=0; Error Code
0x1406:=102; Wert für 0x8000, SubIdx 0x19
2. Schritt
Read Multiple Register (Modbus Function Code 3), es sollten hier mindestens 6 Worte gelesen werden. Wenn ein Fehler auftritt, steht der Fehler Code ab dem Offset 0x1405.
Abfrage bis Bit 10 im Offset 0x1400, steht dies auf „done“ (0x04xx), war das Schreiben erfolgreich.
Sollte als Antwort im Offset 0x1400 der Wert 0x02xx stehen, ist das Schreiben noch nicht abgeschlossen. Das Lesen ist dann zu wiederholen.
Sollte als Antwort im Offset 0x1400 der Wert 0x01xx stehen, ist ein Fehler aufgetreten. Der Fehler Code ist dann im Offset 0x1405 zu finden, es handelt sich um einen ADS Fehler Code.
Modbus UDP
Wahlweise kann die Kommunikation auch über Modbus UDP verwendet werden.