Modbus bei PCD2/3.Mxxx0
OCT, 23rd 2009, LAH
Inhalt
• Modbus Saia®PCD Grundlagen
• Modbus Saia®PCD Client und Server
• Modbus Saia®PCD UID‘s, Mapping und Channel
• Behandlung von Werten
• Grenzwerte
Modbus PCD3.Mxx0
2
Modbus Grundlagen: « Saia Historie »
Seit einigen Jahren gibt es eine Lösung für den Einsatz des
Modbus auf der Saia-PCD-Systemen.
(mit einer FBox Bibliothek vom Engiby)
Mit dem Ziel folgendes zu erreichen:
mehr Leistungsfähigkeit
und für die Verwendung in zukünftigen MB panels
(für den Zugriff auf Nicht-Saia-Systeme)
Wurde das Modbusprotokoll in die Firmware der PCD3
und der PCD2.M5xx0 eingefügt.
Firmware Version 1.10.16 oder Später unterstützen die
„Modbus Saia Version“.
Für die Programmierung der Kommunikation gibt es eine
FBox Bibliothek.
Modbus PCD3.Mxx0
3
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
4
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
5
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
6
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
7
Modbus für Saia®PCD
Im Moment gibt es 8 Public Function Codes:
Name
Code
Read Coils
Read Discrete Inputs
Read Holding Registers
Read Input Registers
(Force) Write single Coil
(Force) Write multiple Coils
(Preset) Write single Holding Register
(Preset) Write multiple Holding Registers
1
2
3
4
5
15
6
16
Modbus PCD3.Mxx0
8
Modbus bei Saia®PCD: Master / Slave und Client / Server
Der Serielle Modbus ist eigentlich Master / Slave orientert
Der Modbus auf TCP/UDP ist Client / Server orientert
Zur Vereinfachung wird bei der Saia-PCD in beiden Fällen von
Client / Server in den SFC’s, den FBoxen und der Dokumentation
gesprochen.
Name of presentation
9
Modbus bei Saia®PCD
Client und Server
Alle Protokolle sind eingebaut (RTU, ASCII, UDP, TCP)
Serieller Modbus ist auf allen Schnittstellen verfügbar, bis auf F2xx
(RS232, RS485, RS422, mit/ohne Handshake, …), 1200 Bd 115kBd
Die Medienzuweisung kann vom Anwender definiert werden
Viele Datenverarbeitungen sind möglich Kompatibilität mit nicht
Saia Geräten, Zugriff auf PCD Register, …
Modbus PCD3.Mxx0
10
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
11
Saia Modbus Client - Channels
Channels werden für die Anfragen beim Server verwendet
Channel = {Port - Protocol}
Port = local port number (Serial) or remote server port (TCP/UDP)
Ex: {RTU – Port 2} , {TCP – Port 502}
Diagnostics
Timeouts:
Close timeout close connection (TCP/UDP) – 0 for closing connection immediatly
Response timeout time within the response is expected
Channel busy from request sending to response reception (or
Response timeout) cannot send another request
Cannot define 2 identical channels
Modbus PCD3.Mxx0
12
Saia Modbus Client
Saia PCD Client Lese- / Schreib-Anfragen (Requests)
Kommunikation über Verbindungen (connections)
- Verbindung = {Port – Protocol (– IP address)} eine Verbindung
pro IP Adresse
- Vor dem « Send Request » wird eine Verbindung aufgebaut – für den
Anwender versteckter Mechanismus
- Eine Verbindung kann nach einer vom Anwender definierten Zeit
geschlossen werden (nur TCP/UDP)
Verbindungszugriff über logische Kanäle (Channels)
Mehrere Daten-Verarbeitungen können durchgeführt werden
Modbus PCD3.Mxx0
13
Saia Modbus Client – Modbus Requests
Read / Write requests
Sent over a Channel ID to an IP address connection
Sent to a UID with a Function Code
Modbus Start address + number of Modbus elements
Saia address set by user is address sent in the frame
Related to server mapping see server device User manual
PCD media:
Write request: location where the data are read before being sent
Read request: location where to store the requested data
Processing data processing before sending / after receiving
Modbus PCD3.Mxx0
14
Saia Modbus Client – Modbus Requests
Maximale Datenmengen
Das Datenfeld der Anfrage ist auf 253 Byte begrenzt
Für Saia PCD:
Read Coils / DI: maximale Anzahl der abgefragten Elemente = 2000
Write Coils: maximale Anzahl der gesendeten Elemente = 1968
Read HR / IR: maximale Anzahl der abgefragten HR/IR = 125
max 62 PCD Register
Write HR: maximale Anzahl der gesendeten HR = 123
max 61 PCD Register
Modbus PCD3.Mxx0
15
Saia Modbus Client – Diagnose
Diagnose reservierte Register und Flags
Channel bezogene Diagnostic (Flags und Register)
Aufbau ähnlich wie « SASI »
Flags: siehe Benutzerhandbuch (Bsp: RBSY, RFUL, TBSY)
Registers: siehe Benutzerhandbuch (Reception Bit 0..15,
Transmission Bit 16..31)
Modbus PCD3.Mxx0
16
Modbus bei Saia®PCD: Mapping und UID‘s
Was ist eine UID?
Eine UID ist wie eine S-Bus-Adresse. Der Unterschied ist, daß ein Server bis zu 9 Adressen
(UID’s) haben kann.
Jede UID hat ein eigenes Mapping
Auf eine UID kann über jeden Modbus Port und Channel zugegriffen werden.
Physical Connection
Client 1
Zum Beispiel
Data Access
Client 2
UID 1
Mapping
R 1… R100
F 1…F 10
UID 2
Mapping
R 101…R 200
F 20 …F 30
UID 3
Mapping
R 500… R600
F 100…F 150
UID 4
Mapping
R 700…R 800
F 400 …F 500
Data Access
Modbus PCD3.Mxx0
17
Modbus Besonderheiten: Mapping und UID‘s
Wofür benötigt man ein Mapping?
Jede UID hat ein Mapping dasa den Zugriff auf bestimmte Resourcen zuläßt.
Der Server gewährt über das Mapping Zugriff auf die angeforderten Resourcen.
Der Client kann Resourcen aus dem Server lesen oder schreiben und auf die eigenen
Variablen abbilden.
Client
Server
Mapping
R 1 [3]
Read Int: HR 1…6 16Bit
F 0 [8]
Read Bin: Coil 0…7
Modbus PCD3.Mxx0
Mapping
HR1…6 16Bit
Coil 0…7
R100…R102 32Bit
F0…F7
18
Saia Modbus Server – Mapping und UIDs
Unit ID (UID) = normalerweise als Server Identifier verwendet (Serial)
UID beschreibt die Grundlegende Behandlung von Daten bezogen auf diese UID
Auf der PCD sind bis zu 9 UIDs definierbar, + default UID 0.
Die UID’s können vom Anwender definiert werden.
Für jede UID kann ein anderes Mapping verwendet werden
Pro UID können bis zu 10 Mappingbereiche verwendet werden
UID muß im Bereich 0 – 254 (0 – 247 in seriell) sein
Das default Mapping, UID 0, darf keine Adresskollisionen verursachen.
Eine UID darf nur einmal in einem Netzwerk vorhanden sein
UIDs sind auf alle Server Instanzen bezogen, also alle Modbus Ports
Auf einer seriellen Schnittstelle sind keine 2 gleiche UID’s möglich
(außer Default UID)
Eine UID ist zur Laufzeit umkonfigurierbar
Modbus PCD3.Mxx0
19
Saia Modbus Server – UIDs
Unit ID (UID) = normalerweise als Server Identifier verwendet (Serial)
Auf der PCD, mehrere UIDs sind definierbar (Max 9 + default UID 0)
UID muß im Bereich 0 – 254 (0 – 247 in serial) sein
UIDs sind auf alle Server Instanzen bezogen
Default UID
Broadcast in Serial
Antwortet immer bei TCP/UDP: wenn die empfangene UID nicht gefunden wird,
wird die default UID verwendet
Default UID wird beim erstellen der ersten Server Instanz generiert
Muß vor der Verwendung konfiguriert werden (UID processing, Map, …)
UID Grundlegende Behandlung von Daten bezogen auf diese UID
Many UIDs verschiedene Datenbehandlungen, erweitertes Mapping, …
Auf einer seriellen Schnittstelle sind keine 2 gleiche UID’s möglich
(außer Default UID)
UID ist umkonfigurierbar CSF mit Define UID
Modbus PCD3.Mxx0
20
Modbus Besonderheiten: Default UID
UID 0 ist die Default UID
im Seriellen Modbus ist die Default UID immer aktiv und wird für den
Empfang von Broadcast Telegrammen verwendet
im TCP/UDP ist die Default UID auch immer aktiv, es ist jedoch kein
Mapping zugeordnet. Anfragen zu nicht existierenden UID’s werden
von der Default UID beantwortet. Das bedeutet es wird immer
geantwortet, wenigstens mit einer Fehlermeldung.
Wenn ein Mapping für die Default UID im TCP/UDP konfiguriert wird, wird
dieses für die Default UID und alle nicht konfigurierten UID’s verwendet.
Default UID wird beim erstellen der ersten Server Instanz generiert
Sie Muß vor der Verwendung konfiguriert werden (UID processing,
Map, …)
Name of presentation
21
Saia Modbus Server
SaiaPCD
Server 1 (RTU – Port 2)
Server 2 (TCP – Port 502)
UID1
UID2
UID3
Map 1.1
Map 2.1
Map 3.1
Map 1.2
Map 2.2
Map 3.2
Map 1.3
Map 3.3
Map 1.4
Map 3.4
Map 1.5
Map 3.5
Map 1.6
Default Mapping
Modbus PCD3.Mxx0
22
Saia Modbus Server – Media Mapping
Media mapping map Modbus media on PCD media
Media mapping zone :
Modbus Media
Access
Type
Media
Type
Start
Address
Range
PCD Media
Media
Type
Start
Address
Range
Area
Type
Default mapping :
Modbus PCD3.Mxx0
23
Modbus Besonderheiten: Offset
Modbus Ressourcen werden mit 1 beginnend gezählt, aber im
Telegramm wird die Adresse mit 0 angefangen.
dieser Offset kann zu Diskussionen führen, weil der falsche Wert
gelesen oder geschrieben wird. Dies ist von den Einstellungen
auf beiden Seiten abhängig.
Mit den SFC‘s und FBoxen kann im Slave/Server der Offset
eingestellt werden.
Name of presentation
24
Saia Modbus Server – Diagnose
Diagnose reserviert Register und Flags
Für alle Server, UID bezogene Diagnose (Flags und Register)
Für serielle Server, zusätzlich serielle Diagnose
Aufbau ähnlich wie « SASI »
Flags: siehe Benutzerhandbuch (Bsp: RBSY, RFUL, TBSY)
Register: siehe Benutzerhandbuch (Reception Bit 0..15,
Transmission Bit 16..31)
Modbus PCD3.Mxx0
26
Modbus Besonderheiten: Multiple Servers
Ein Modbus Channel wird durch eine Gruppe bestehend aus Port und Protokoll
definiert, z.B. Port 502 und TCP oder Port 2 und ASCII
Channel: Communication channel, the number is not related
to a physical port
Serial port: Physical port
Protocol: Communication protocol
Bis zu 4 Server Channels können pro PCD definiert werden.
Der gleiche Channel kann nur einmal definiert werden
Beispiel gültige Channels: 502 bei TCP, 502 bei UDP, 503 bei TCP,
Schnittstelle 2 bei ASCII
Name of presentation
27
Modbus Besonderheiten: 16 Bit und 32 Bit
Modbus ist 16 bit (word) orientiert
Das Übertragen von 32 bit werten ist alltäglich, aber nicht genormt; weder für
für Ganzzahlen, noch für Gleitkommazahlen.
das bedeutet es gibt verschiedene Wege 32 bit Werte auf Holding Register
abzubilden (mapping) und umgekehrt.
Um das zu bewältigen werden die Methoden des Wort-Tauschens
(word swapping) und der Umformung (conversion) unterstützt.
Beispiel: ein Holding Register mit Vorzeichen mit dem Wert -5 wird auf ein
Register abgebildet. Die oberen 16 Bit des Empfangsregisters werden mit “1”
aufgefüllt, um einen 32 bit Wert zu erhalten.
Wenn 32 Bit Werte mit anderen Herstellern ausgetauscht werden sollen, muß
man sich über das Mapping verständigen:
mit/ohne Vorzeichen?
Niederwertiges Wort zuerst? (Schneider Electric hat das LSW zuerst,
d.h. swap bytes)
nur bei Gleitkomma: IEEE or FFP?
Mapping address 01? (das erste Element von Modicon Geräten ist 1)
Name of presentation
28
Saia Modbus Server – UID Datenbehandlung
UIDs processing Behandlung der Daten für alle Anfragen zu der UID
Offset : Die Anfrageadresse wird um 1 erhöht; wird für manche
clients, wie Schneider Electric verwendet
Saia Server: Modbus Adresse HR 0 Mapped auf Reg 0, HR1 on Reg 1
Schneider client requests element 1 modbus address 0
without offset: gets element mapped from HR 0 (here Reg 0)
with offset: gets element mapped from HR 1 (here Reg 1)
Swap: only used in 32-bits access
32-bits register wordwise swapped
MSW (16bits)
LSW (16bits)
LSW (16bits)
MSW 1 (16bits)
DefMap: stellt fest, welches Mapping bei Anfragen verwendet wird
0: default mapping wird nicht verwendet nur Anwendermapping
1: wenn kein Anwendermapping paßt, wird das Default verwendet
Modbus PCD3.Mxx0
29
Saia Modbus Server – Media Mapping
Area Type Datenverarbeitung beim Empfang / vor dem Senden
Coils keine spezielle Behandlung
16 Bit mit Vorzeichen (nur Schreiben) wenn der Wert des HR / IR < 0,
setzt man das MSW des PCD Registers auf 0xFFFF
Bsp: HR = 0x8001 PCD register = 0xFFFF 8001
16 Bit ohne Vorzeichen das MSW des PCD Registers wird auf 0x0000 gesetzt
Bsp: HR = 0x8001 PCD register = 0x0000 8001
32 Bit 2 HR / IR = 1 PCD Register, keine Behandlung
32 bit IEEE FFP wird in IEEE gewandelt bevor die Daten auf den Bus gesendet
werden (wird nur auf FFP Werte angewendet), IEEE wird in FFP gewandelt, bevor die
Daten auf PCD Medien geschrieben werden (nur nötig, wenn die Werte in FFP
gewünscht werden)
Modbus PCD3.Mxx0
30
Saia Modbus Client – Modbus Requests
Processing Datenbearbeitung nach Empfang / vor dem Senden
Coils_DI_Processing keine Bearbeitung
16 bits mit Vorzeichen (nur bei Leseanfragen) wenn HR / IR
Wert < 0, setzt man das MSW des PCD Registers auf 0xFFFF
Bsp: HR = 0x8001 PCD register = 0xFFFF 8000
16 bits ohne Vorzeichen MSW des PCD Registers wird auf 0x0000
gesetzt
Bsp: HR = 0x8001 PCD register = 0x0000 8001
32 bits binär 2 HR / IR = 1 PCD register, keine Bearbeitung
32 bits tauschen 2 HR / IR wortweise tauschen = 1 PCD register
Bsp: HR0 = 0x1234, HR1 = 0x5678
PCD register = 0x1234 5678 (32 bits binär)
PCD register = 0x5678 1234 (32 bits tauschen)
Modbus PCD3.Mxx0
31
Saia Modbus Client – Modbus Requests
Processing Datenbearbeitung beim Empfang / vor dem Senden
32 bits IEEE2FFP - 32 bits FFP2IEEE
Wandlung von FFP nach IEEE wird vor dem Senden auf den Bus
durchgeführt (nur wenn der Anwender FFP Werte hat, sonst 32 Bit)
Wandlung von IEEE nach FFP vor dem Schreiben auf PCD-Medien
(nur wenn der Anwender FFP Werte benötigt, sonst 32 Bit)
Swap + 32 bits IEEE2FFP / 32 bits FFP2IEEE
wortweise tauschen wird vor dem Senden / nach dem Empfang
ausgeführt
Modbus PCD3.Mxx0
32
Saia Modbus Server – UID processing
Holes (Löcher): definiert, wie die Adressen zwischen HR (16 bits)
und PCD Registern (32 bits) zugewiesen werden.
Saia Server: 16 HR von Adresse 0 Mapping auf 16 PCD Reg von Adresse 0
Modbus Holding
Registers
PCD Registers
(Server)
Modbus PCD3.Mxx0
HR0
HR1
HR2
HR3
HR4
HR5
R0
R1
R2
UID: Holes = 0, Offset = 0
R0
R2
R4
UID: Holes = 1, Offset = 0
33
Saia Modbus Server – Media Mapping
Was ist beim Zuordnen der Medien (media mapping) wichtig?
Die Anzahl der Elemente ist abhängig von der UID Verarbeitung
« no holes », benötigt 1 PCD Register für 2 HR/IR –
« holes » benötigt zweimal so viele PCD Registers (2 PCD Register für 2 HR/IR)
In einem 32-bits Bereich, kann nicht auf eine ungerade Adresse eines HR/IR
zugegriffen werden
Modbus Holding
Registers
PCD Registers
(Server)
Modbus PCD3.Mxx0
HR0
HR1
HR2
HR3
HR4
HR5
R0
R1
R2
UID: Holes = 0, Offset = 0
R0
R2
R4
UID: Holes = 1, Offset = 0
34
Saia Modbus - Grenzwerte
Server: maximal 4 pro PCD System
zum Beispiel: 1 Server TCP port 502, 1 server TCP port 503, 1 server UDP
port 502 and 1 server RTU on serial port 2.
UIDs: maximum 10 pro PCD System: 10 = 9 + DefaultUID
Mapping Areas: maximum 10 pro UID
wenn mehr als 10 mapping areas erforderlich sind, kann eine zusätzliche
UID definiert werden
Channels: maximum 10 pro PCD System
zum Beispiel: 1 channel TCP to server port 502, 1 channel TCP to server
port 503, 1 channel UDP to server port 502 and 1 channel RTU using port 1.
Connections: max 26 Verbindungen gleichzeitig offen.
maximum 10 connections offen auf dem Client
verbleibende connections können vom Server genutzt werden
Modbus PCD3.Mxx0
35
Modbus
Noch Fragen?
Vielen Dank!
Modbus PCD3.Mxx0
36