 
                                Modbus Grundlagen
OCT, 23rd 2009, LAH
Modbus Grundlagen
Modbus:
 1979 von Modicon entwickelt
 Application layer messaging protocol  Kommunikation zwischen
1 Master und vielen Slaves
 Frames  Slave Adresse, auszuführende Funktion, Daten, CRC
 Kann auf serielle Schnittstellen (RS232, RS485, RS422) in RTU/ASCII Modus
oder auf Ethernet via TCP / UDP verwendet werden
Modbus PCD3.Mxx0
2
Modbus Grundlagen
Modbus TCP / UDP
PCD3 M5540
Modbus Client/Server
IP : 10.1.2.100
Station : 100
PC
IP : 10.1.2.1
PG5 Software
Schneider Software
TwidoSuite
Ethernet
Schneider Controller
Twido PLC
Modbus Server
IP : 10.1.2.103
Station : 103
Modbus PCD3.Mxx0
TCP / UDP
PCD3 M5340
Modbus Server
IP : 10.1.2.102
Station : 102
PCD3 M5540
Modbus Server
IP : 10.1.2.101
Station : 101
3
Modbus Grundlagen
Modbus seriell
PCD3 M5540
Modbus Client
Station : 100
PCD3.F110
Port 1
RS485
Port 2
RTU / ASCII
RS485
RTU / ASCII
Port 2
Schneider Controller
Twido PLC
Modbus Server
Station : 103
Modbus PCD3.Mxx0
PCD3.F110
Port 1
PCD3 M5340
Modbus Server
Station : 102
Port 2
PCD3.F110
Port 1
PCD3 M5540
Modbus Server
Station : 101
4
Modbus Grundlagen – Das Protokoll
 Anfrage / Antwort Prozess
 Dienste festgelegt durch
Funktionskode, Bestandteil der
Anfrage / Antwort
 Es sind 127 Öffentliche und
Benutzerdefinierte Funktionskodes verfügbar 
Datenzugriff (R/W),
Diagnose, …
 Port 502 ist reserviert für
Modbus (TCP/UDP);
ein anderer Port kann definiert
werden
Modbus PCD3.Mxx0
5
Modbus Grundlagen – Das Protokoll
Modbus Seriell:
max 247 Slaves auf dem Bus, jeder Slave hat eine Eindeutige Adresse
 RTU (Remote Terminal Unit):
 Standard Modbus Protokoll
 Die Kommunikation ist Zeitgesteuert (inter-character time, inter-frame time)
 ASCII (American Standard Code for Information Interchange)
 Die Kommunikation wird gesteuert durch ein Start Zeichen und 2 End Zeichen
 2 ASCII-Zeichen sind nötigt, um 1 Byte zu senden zweimal so viel wie bei RTU
Modbus PCD3.Mxx0
6
Modbus Grundlagen - Requests
 Request structure:
-
Read Req: Data = Modbus addr. + nbr of elements to read
 Response: Data = nbr of data bytes + data
-
Write Req: Data = Modbus addr. + nbr of elements to write + data to write
 Response: Data = Request data
-
Error related to the Modbus function requested  Exception response:
Except. Function code = Req. Function code + 0x80, Data = Exception code
-
Additional address: used to identify server
Modbus PCD3.Mxx0
7
Modbus Grundlagen - Modbus Message Structure
Modbus PCD3.Mxx0
8
Modbus Grundlagen – Das Daten Modell
Es gibt 4 Modbus Medien Typen:
-
Holding Registers (HR): 16 bits - read / write
-
Input Registers (IR): 16 bits - read only
 HR und IR können abgebildet werden auf:
PCD Register, Timer, Counter und DBs
-
Coils: 1 bit - read / write
-
Discrete Inputs (DI): 1 bit - read only
 Coils und DI können abgebildet werden auf:
PCD Flags, Inputs und Outputs
Modbus PCD3.Mxx0
9
Modbus Grundlagen – Daten Modell (Server)
 Wie werden Modbus Daten auf Geräte Medien abgebildet?
 Jedes Gerät kann seine eigene Datenorganisation haben  Sollte dem Anwender
bekannt sein (Siehe Gerätehandbuch)
Jeder Datenbereich bzw. die gleichen Daten sind über verschiedenen Modbus Funktionen
ansprechbar
Saia PCD  Die Datenorganisation kann vom Anwender festgelegt werden
Modbus PCD3.Mxx0
10
Modbus Grundlagen – Adressierungs Modell (Server)
 Wie werden Adressen zwischen Modbus frame und Gerätemedien abgebildet?
 Modbus frame: jeder Wert adressiert von 0 to 65535
 Modbus data model: Jedes Element innerhalb eines Bereichs hat die Nummer 1 bis n
 Die Zuordnung zwischen dem Modbus data model und der Device Application ist Herstellerbezogen
PCD IOs
PCD Flags
PCD Timers
PCD Registers
Modbus PCD3.Mxx0
11
Modbus Grundlagen - Device and Modbus Address Range
Modbus PCD3.Mxx0
12
Modbus Grundlagen – Public Function Codes
Modbus PCD3.Mxx0
13
Modbus Grundlagen – Function Codes Controllers
Function Codes für Modicon Controller
Name
Code
Program 484
Poll 484
Program Controller
Report Slave ID
Program 884/M84
Reset Comm. Link
09
10
13
17
18
19
Modbus PCD3.Mxx0
14
Saia Modbus Server – Server Instances
 Mehrere Server Instanzen sind möglich
 Server = {Port + Protocol}
- Seriell: es sollte pro Schnittstelle nur ein Server verwendet werden
(RTU auf Schnittstelle 1, ASCII auf Schnittstelle 2)
- TCP/UDP: logische Schnittstelle  mehrere Server auf dem gleichen
Port / oder dem gleichen Protokoll
(TCP auf Port 502, UDP auf Port 502, TCP auf Port 503, …)
 Server Zugang über Verbindungen
- Seriell und UDP: eine Verbindung pro Server Instanz
- TCP: eine Verbindung pro angeschlossenem Client
 Es können keine 2 identische Server Instanzen definiert werden.
Modbus PCD3.Mxx0
15
Saia Modbus Client - Channels
Channels  werden für die Anfragen beim Server verwendet
 Channel = {Port - Protocol}
 Port = lokale Schnittstellenadresse (Seriell) oder
Ziel-Server port (TCP/UDP)
Beispiel: {RTU – Port 2} , {TCP – Port 502}
 Diagnose
 Timeouts:
 Close timeout  Verbindungsabbruch (TCP/UDP) – 0 für sofortigen Verbindungsabbruch
 Response timeout  Zeit in der eine Antwort erwartet wird
 Channel busy - vom senden einer Anforderung bis zum Eintreffen der
Antwort (oder Response timeout)  es kann keine
weitere Anforderung gesendet werden
 Es können keine zwei identische Kanäle definiert werden.
Modbus PCD3.Mxx0
16
Modbus
Fragen?
Vielen Dank!
Modbus PCD3.Mxx0
17