MODBUS Netzwerk : Telegrammstruktur MODBUS NET-Mode

 

Das LIAN 98 Handbuch kann und darf aus rechtlichen Gründen nicht die komplette MODBUS-Dokumentation enthalten. In diesem Handbuch wurde nur auszugsweise aufgeführt, was zur Anwendung der LIAN 98 Software unbedingt an Wissen erforderlich ist.

Detailierte Informationen zum Protokoll findet man in der MODBUS-Dokumentation auf der Webseite
von der "Modbus Organization"
<Modbus Specifications and Implementation Guides>

 

Telegrammformat

 

 

Steuer- und Überwachungsrichtung

 

 

ADU  : Application Data Unit
PDU  : Protocol Data Unit
MBAP-Kopf : MODBUS Application Protocol Header

 

Fehlermeldung : Nur Überwachungsrichtung ( Server zum Client )

 

 

Transaction Identifier :

Identifizierung der MODBUS Abfrage / Antwort-Abwicklung. Initialisiert durch den Client und vom Server aus der empfangenen Anfrage in der Antwort zurückgegeben.

 

Protokoll Identifier :

Das MODBUS-Protokoll wird durch den Wert 0 identifiziert. Initialisiert durch den Client und vom Server aus der empfangenen Anfrage in der Antwort zurückgegeben.

 

Länge :

Das Längenfeld enthält die Anzahl der nachfolgenden Bytes ( Unit Identifier und Datenfelder ).

 

Unit Identifier/ Server-Adresse :

Identifizierung des Remote-Slaves an einer seriellen Leitung oder an anderen Verbindungen.

Nur Server müssen eine eindeutige Adresse haben. Der Client selbst hat keine Adresse. Ein Client spricht gezielt einen Server an, indem er die Adresse dieses Server einer PDU voranstellt. Ebenso sendet der Server seine Adresse in der Rückmeldung an den Client, um den Absender der Nachricht anzuzeigen.

 

Funktionscode :

Die Standard-Funktionscodes, die in der Anwendungsschicht verwendet werden, sind detailliert in der Dokumentation
"MODBUS Application Protocol Specification" beschrieben und findet man auf der Webseite von der "Modbus Organization".

 

Code Funktion Erklärung
1 Read Coils Einzelmeldungen ( lesen/ schreiben möglich )
2 Read Discrete Inputs Einzelmeldungen ( nur lesen möglich )
3 Read Holding Registers 16 Bit Analogwerte ( lesen/ schreiben möglich )
4 Read Input Registers 16 Bit Analogwerte ( nur lesen möglich )
5 Write Single Coils z.B. Einzelbefehl
6 Write Single Register z.B. 16 Bit Analogwert/ Bitmuster
7 Read Exception Status nur serielle Linie
8 Diagnostics nur serielle Linie
     
11 Get Comm Event Counter nur serielle Linie
12 Get Comm Event Log nur serielle Linie
     
15 Write Multiple Coils z.B. Einzelbefehle
16 Write Multiple Register z.B. 16 Bit Analogwerte/ Bitmuster
17 Report Slave ID nur serielle Linie
     
20 Read File Record  
21 Write File Record  
22 Mask Write Register  
23 Read/ Write Multiple Register z.B. 16 Bit Analogwerte/ Bitmuster
24 Read FIFO Queue  
     
43 Encapsulated Interface Transport  
     

 

Ausnahme-Fehler :

Der Funktionscode einer Ausnahme-Fehlermeldung entspricht dem Funktionscode der Abfrage plus 128. Die Ausnahme-Fehlernummer bezeichnet die Ursache des Fehlers. Eine Beschreibung zur Ursache ist in der Dokumentation "MODBUS Application Protocol Specification" bei den Erklärungen zu den einzelnen Abfragen angegeben.

 


MODBUS Netzwerk : Ethernet-Rahmen

 

Link Ebene ( Layer 2 )

 

Ethernet v.2.0 MAC Header

 

I/ G = 0

Individuelle Adresse

I/ G = 1

Gruppen Adresse

U/ L = 0

Global verwaltete Adresse

U/ L = 1

Lokal verwaltete Adresse

 

Preamble ( Präambel )

7 Bytes
Die Präambel dient dazu, dass der oder die Empfänger ( Netzwerkkarte ) sich mit dem Sender ( Netzwerkkarte ) synchronisieren und damit der Startbegrenzer und somit der nachfolgende Ethernet-Datenrahmen richtig interpretiert werden kann.

Diese Felder werden von der Netzwerkkarte nicht an die Software weitergegeben !

Start Frame Delimiter ( Startrahmenbegrenzer )

Der Startrahmenbegrenzer ist 1 Byte lang und ist die Sequenz 10101011 Binär.
Er folgt unmittelbar den Präambel-Pattern und signalisiert den Beginn eines Ethernet-Datenrahmens.

Dieses Feld wird von der Netzwerkkarte nicht an die Software weitergegeben !

Ziel-Adresse

Empfänger-Adresse, für die das Paket bestimmt ist.

Quell-Adresse

Identifiziert die Station, von welcher das Paket gesendet wurde.

Ethernet
Längen- / Typ-Feld

Internet Protokoll ( IPv4 ) = 0800 HEX

Für MODBUS wird dieses Feld als Typ-Feld verwendet und hat einen festen Wert von 0800H. Dieses Feld zeigt die Art des MAC Client Protokolls an.

MAC Client Daten

Die Daten bestehen aus :
. IPv4 Header
. TCP Header
. Anwenderdaten MODBUS ( ADU )

. PAD Felder ( Trailer ), falls vorhanden

Die Client Daten müssen eine Mindestlänge aufweisen, damit der Ethernet-Datenrahmen beginnend mit der Zieladresse bis einschliesslich des Trailers eine Mindestrahmenlänge von 60 Bytes aufweist. Sind zuwenig Daten vorhanden, müssen die Client-Daten mit PAD Felder ( Padding Bits ) auf die erforderliche Mindestlänge gebracht werden. Dies wird automatisch von der Netzwerkkarte durchgeführt.

Frame Check Sequence ( Blockprüfsumme )

4 Bytes
Der Inhalt des Ethernet-Datenrahmen, beginnend mit der Zieladresse bis einschliesslich der Client-Daten wird durch eine Blockprüfsumme gesichert. Der Empfänger ( Netzwerkkarte ) erkennt somit kleinste Übertragungsfehler.

Diese Felder werden von der Netzwerkkarte nicht an die Software weitergegeben !

 

Netzwerk Ebene ( Layer 3 )

 

IPv4 Header

Für detaillierte Informationen über den IPv4 Header lesen Sie bitte auch auf der IETF Webseite
das Dokument <RFC 791 : Internet Protocol>.

 

 

Version

Internet Protocol Version = 4 ( IPv4 ), siehe auch [ RFC 791 ].
Dieses Feld zeigt das Format des IP Headers an und hat einen festen Wert von 4 für IPv4.

IHL

Die Internet Header Länge ist die Länge des IP Headers, gezählt in Double Words ( 32 Bit Einheiten ), und zeigt so den Beginn des Datenbereichs an. Der kleinste Wert für einen korrekten Header ist 5 ( = 20 Bytes ).

Type of service

Bit 0 : Reserviert
Bit 1 : Reserviert
Bit 2 : R ( Zuverlässigkeit )
Bit 3 : T ( Durchsatz )
Bit 4 : D ( Verzögerung )
Bit 5 - 7 : PRIORITÄT

Der Service-Typ beschreibt die Angabe der abstrakten Parameter der gewünschten Dienstart. Diese Parameter werden verwendet um die Auswahl der aktuellen Service-Parameter während der Übertragung eines Datenpaketes durch einen Netzknoten anzugeben. Mehrere Netzwerke ermöglichen Vorrangbehandlung, welche hohe Priorität irgendwie vorrangiger behandeln als anderen Datenverkehr ( gewöhnlich während Zeiten hoher Last nur unter Akzeptanz von Datenverkehr über einer gewissen Priorität ). Die beste Wahl ist ein Kompromiss zwischen geringer Verzögerung, hoher Zuverlässigkeit und hohem Durchsatz.

R : 0 = Normale Zuverlässigkeit, 1 = Hohe Zuverlässigkeit
T : 0 = Normaler Durchsatz, 1 = Hoher Durchsatz
D : 0 = Normale Verzögerung, 1 = Geringe Verzögerung

Total Länge

Total Länge ist die Gesamtlänge des Datenpakets, gemessen in Oktetten, und umfasst Internet Header und Daten.

Identifikation

Ein identifizierender Wert des Senders um anzuzeigen, zu welchem Datenpaket die Fragmente gehören.

Flags

Bit 5 : MF ( more fragments )
Bit 6 : DF ( don't fragment )
Bit 7 : reserviert, muss 0 sein

Verschiedene Kontrollflags

MF : 0 = Letztes Fragment, 1 = Mehr Fragmente
DF : 0 = darf fragmentiert werden, 1 = darf nicht fragmentiert werden

Fragment Offset

Dieses Feld zeigt an, an welche Stelle im Datenpaket dieses Fragment gehört. Es wird in Einheiten von 8 Oktetts ( 64 Bits ) gemessen. Das erste Fragment hat den Offset 0.

Time to live

Dieses Feld zeigt die maximale Lebensdauer eines Datenpakets im Internet an. Wenn das Feld den Wert 0 zeigt, muss das Datenpaket zerstört werden. Dieses Feld verändert sich während der Bearbeitung. Die Zeit wird in Sekunden gemessen, aber jeder Netzknoten, den das Datenpaket durchläuft, muss die TTL um eine Stelle verringern, auch wenn die Bearbeitung des Datenpaketes weniger als eine Sekunde dauert.

Protokoll

Transmission Control Protocol = 6 ( TCP ), siehe auch [ RFC 793 ].
Dieses Feld definiert, welches Protokoll höherer Schichten als nächstes dem Datenteil vorangestellt ist. Es hat für TCP einen festen Wert von 6.

Header Prüfsumme

Die Prüfsumme gilt nur für den Header. Weil sich einige Header-Felder ändern ( z. B. time to live ), muss die Prüfsumme nach jedem Durchlauf durch den Rooter neu berechnet werden.

Quell-Adresse

Der Parameter bestimmt die IP-Adresse des sendenden Hosts. ( Absender )

Ziel-Adresse

Der Parameter bestimmt die IP-Adresse des empfangenden Hosts. ( Empfänger )

Optionen ( variable )

Das Optionsfeld hat eine variable Länge.
Optionen können im Datenpaket vorhanden sein oder nicht. Sie müssen von allen IP-Modulen ( Host und Gateway ) implementiert sein. Optional ist nur die Übertragung in jedem einzelnen Datenpaket, nicht die Implementierung. Die Sicherheitsoption ist in manchen Rechnern in jedem Datenpaket vorgeschrieben.

Padding ( variabel )

Das Füllfeld hat eine variable Länge.
Das Padding-Feld ( Füllfeld ) wird benutzt, um sicher zu stellen, dass der IP Header immer im 32-Bit Format endet. Ein Füllzeichen ist immer Null.

 

Transport Ebene ( Layer 4 )

 

TCP Header

Für detaillierte Informationen über den TCP Header lesen Sie bitte auch auf der IETF Webseite
das Dokument <RFC 793 : Transmission Control Protocol>.

 

 

Quell-Port

Identifiziert den PORT, von dem das Paket veranlasst wurde.

Ziel-Port

Identifiziert den PORT, für den das Paket bestimmt ist.

Sequenz-Nummer

Ist die Sequenznummer des ersten Datenbytes in diesem Segment, ausgenommen das SYN Bit ist gesetzt. Wenn das SYN Bit gesetzt ist, ist die Sequenznummer die Initial-Sequenznummer ( ISN ) und das erste Datenbyte ist ISN + 1.

Quittungsnummer

Falls das ACK Bit gesetzt ist, ist diese Nummer die nächste Sequenznummer, die der Sender des Pakets erwartet. Sobald eine Verbindung aufgebaut ist, wird diese immer wieder gesendet.

Daten Offset

Die Anzahl von Double Words ( 32 Bit Einheiten ) im TCP Header. Hiermit wird der Beginn der Daten angezeigt. Der TCP Header ( und auch eine enthaltene Option ) ist eine Integralzahl mit einer Länge von 32 Bit.

Reserviert

Reserviert für spätere Anwendung und muss 0 sein.

Steuerfeld

URG : Urgent Pointer
ACK : Acknowledgment
PSH : Push Funktion
RST : Zurücksetzung der Verbindung
SYN : Synchronisierung der Sequenznummern
FIN  : Keine weiteren Daten vom Sender.

Window

Die Anzahl der Bytes, die der Sender dieses Segments ab dem bereits bestätigten Byte zu akzeptieren bereit ist.

Prüfsumme

Die Prüfsumme wird auf alle 16 Bit Einheiten im Header und in den Daten angewendet. Wenn ein Segment eine ungerade Zahl von zu prüfenden Header- und Datenbytes enthält, wird das letzte Byte rechts mit Nullen aufgefüllt um ein 16 Bit Word für die Prüfung zu bilden. Der Block wird nicht als Teil des Segments übertragen. Während die Prüfsumme berechnet wird, wird das Prüffeld selbst mit Nullen ersetzt.

Urgent pointer

Dieses Feld übermittelt den aktuellen Wert des Urgent Pointers als positiven Offset der Sequenznummer in diesem Segment. Der Urgent Pointer zeigt auf die Sequenznummer des Bytes, das den dringenden Daten folgt. Dieses Feld wird nur in Segmenten interpretiert, in denen das "URG Bit" im Steuerfeld gesetzt ist.

Optionen ( variable )

Das Optionsfeld hat eine variable Länge.
Optionen können Platz am Ende des TCP Headers belegen und haben eine Länge von mehreren Bytes. Alle Optionen sind in der Prüfsumme enthalten. Eine Option kann mit jedem Byte beginnen.

Padding ( variable )

Das Füllfeld hat eine variable Länge.
Das Padding-Feld ( Füllfeld ) wird benutzt, um sicher zu stellen, dass der TCP Header immer im 32-Bit Format endet. Ein Füllzeichen ist immer Null.

 

Anwenderdaten

MODBUS Datentelegramm ( ADU )

 

 


MAYR Software

Wuerzburger Ring 39,  D 91056 Erlangen

Handbuch LIAN 98


LIAN 98 Protocol Router, Simulator and Analyzer
© Copyright 2001, 2006, 2011 by Werner Mayr. All Rights reserved.