Modbus-Interfaces

Adresse

Beschreibung

0x0000
0x00FF

Prozessdaten-Inferface
Eingänge

0x0800
0x08FF

Prozessdaten-Inferface
Ausgänge

0x1000
0x1006

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
Verhalten wie bei einem Watchdog oder E-Bus Fehler verfahren soll 

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
Verriegelt das schreiben von einem 2ten Modbus Client

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
terminal

Object
Nr.

SubIndex

Length
Write

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
terminal

Object
Nr.

SubIndex

COE
Length

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
terminal

Object
Nr.

SubIndex

COE
Length

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.