- •INHALTSVERZEICHNIS
- •Inhaltsverzeichnis zu Register 2
- •WAGO-I/O-SYSTEM
- •Komponenten
- •Montage
- •Verfahren der Dezentralisierung
- •MODBUS-Koppler/Controller
- •Hardware
- •Einspeisung
- •Stationsadresse
- •Betriebsartenschalter
- •Feldbusanschluss
- •Technische Daten
- •Abmessungen
- •Koppler
- •Controller
- •MODBUS
- •Konfiguration in der Masteranschaltung
- •Koppler
- •Controller
- •Gemeinsame Funktionen Koppler/Controller
- •Inbetriebnahme und Diagnose
- •Hochlauf und Fehleranzeigen
- •MODBUS-LED
- •Inbetriebnahme des Controllers mit WAGO-I/O-PRO
- •Allgemeine Betriebsbedingungen
- •Klimatische Umgebungsbedingungen
- •Mechanische Umgebungsbedingungen
- •Schutzklasse und Schutzart
- •Vorschriften und Prüfergebnisse
- •Elektromagnetische Verträglichkeit
- •750-404 Zählerklemmen
- •750-511 Pulsweiten - Klemme
- •Einsatz in explosionsgefährdeten Bereichen
5.3 Gemeinsame Funktionen Koppler/Controller
5.3.1 Implementierte MODBUS-Funktionen
Die folgende Tabelle zeigt die Funktionen, die sowohl der MODBUS-Koppler als auch der MODBUS-Controller unterstützt:
Funktions- |
Funktion |
Beschreibung |
|
Code |
|
|
|
|
|
|
|
0x01 |
Read Coil Status |
Eingangsbits und Ausgangsbits als Octet String lesen. |
Funktionen sind |
|
|
|
|
0x02 |
Read Input Status |
Eingangsbits als Octet String lesen. |
identisch |
|
|||
|
|
|
|
0x03 |
Read Holding Registers |
Anzahl von Eingangsworten lesen. |
Funktionen sind |
|
|
|
|
0x04 |
Read Input Registers |
Anzahl von Eingangsworten lesen. |
identisch |
|
|||
|
|
|
|
0x05 |
Force Single Coil |
Ausgangsbit schreiben. |
|
|
|
|
|
0x06 |
Preset Single Register |
Schreibt einen Wert in ein Ausgangswort. |
|
|
|
|
|
0x0B |
Fetch Comm Event Ctr |
Status Wort und Event counter lesen. |
|
|
|
|
|
0x0F |
Force Multiple Coils |
Schreibt eine Anzahl von Ausgangsbits. |
|
|
|
|
|
0x10 |
Preset Multiple Regs |
Schreibt eine Anzahl von Ausgangsworten. |
|
|
|
|
|
Tabelle 5.29: Implementierte Funktionen
MODBUS / Konfiguration |
53 |
01.10.99
5.3.1.1 Anwendung der MODBUS-Funktionen
Die grafische Übersicht zeigt, mit welchen MODBUS-Funktionen auf Daten des Prozessabbildes zugegriffen werden kann.
Bild 5.14: Übersicht MODBUS-Funktionen, z. B. beim Koppler
Es ist sinnvoll, auf die analogen Signale mit Register-Funktionen und auf die binären Signale mit Coil-Funktionen zuzugreifen. Wenn auch auf die binären Signale mit Register-Funktionen lesend bzw. schreibend zugegriffen wird, verschieben sich die Adressen, sobald weitere analoge Klemmen nachgerüstet werden.
54 |
MODBUS / Konfiguration |
01.10.99
5.3.1.2 Read Coil Status (Funktionscode 0x01):
Diese Funktion liest den Status der Einund Ausgangsbits (coils) im Slave. Broadcast wird dabei nicht unterstützt. Beim Koppler/Controller ist die Anzahl der E/A-Punkte auf 256 begrenzt.
Anfrage:
Die Anfrage bestimmt die Startadresse und die Anzahl der Bits, die gelesen werden sollen.
Der erste Punkt wird mit 0 adressiert. Bei Modicon startet die Adressierung mit 1 (0x01).
In der folgenden Tabelle ist ein Beispiel für eine Anfrage abgebildet, durch die die Bits 0 bis 7 des Slaves 11 gelesen werden sollen:
Feldname |
Beispiel |
|
RTU |
ASCII |
|
Start of frame |
- |
|
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
|
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x01 |
|
0x01 |
”01” |
0x30, 0x31 |
Starting address high |
0x00 |
|
0x00 |
”00” |
0x30, 0x30 |
Starting address low |
0x00 |
|
0x00 |
”00” |
0x30, 0x30 |
Number of points high |
0x00 |
|
0x00 |
”00” |
0x30, 0x30 |
Number of points low |
0x08 |
|
0x08 |
”08” |
0x30, 0x38 |
Error Check (LRC / CRC) |
- |
|
0x3D |
”EC” |
0x45, 0x43 |
|
|
|
0x66 |
|
|
End of frame |
|
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.30: Beispiel Anfrage, Read Coil Status |
|
|
|
||
Antwort:
Die aktuellen Werte der abgefragten Bits werden in das Datenfeld gepackt. Eine 1 entspricht dabei dem Zustand ON und eine 0 dem Zustand OFF. Das niederwertigste Bit des ersten Datenbytes enthält das erste Bit der Anfrage. Die anderen folgen aufsteigend. Falls die Anzahl der Eingänge kein Vielfaches von 8 ist, werden die restlichen Bits des letzten Datenbytes mit Nullen aufgefüllt. Falls mehr Bits abgefragt werden als Einoder Ausgänge im Knoten vorhanden sind, werden die übrigen Eingangsbits zu Null gesetzt und die Ausgänge erhalten den letzten gültigen Wert.
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3A |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x01 |
0x01 |
”01” |
0x30, 0x31 |
Byte Count |
0x01 |
0x01 |
”01” |
0x30, 0x31 |
Data (point 8...0) |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Error Check (LRC / CRC) |
- |
0xD2 |
”E1” |
0x45, 0x31 |
|
|
0x5D |
|
|
End of frame |
- |
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.31: Beispiel Antwort, Read Coil Status
MODBUS / Konfiguration |
55 |
01.10.99
Der Status der Eingänge 7 bis 0 wird als Byte-Wert 0x12 oder binär 0001 0010 angezeigt. Eingang 7 ist das höchstwertige Bit dieses Bytes und Eingang 0 das niederwertigste.
Die Zuordnung erfolgt damit von 7 bis 0 mit OFF-OFF-OFF-ON-OFF-Off-ON-OFF.
Bit: |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
Coil: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
56 |
MODBUS / Konfiguration |
01.10.99
5.3.1.3 Read Input Status (Funktionscode 0x02):
Diese Funktion liest den Status der Eingangsbits im Slave. Broadcast wird dabei nicht unterstützt. Beim Koppler/Controller ist die Anzahl der Punkte auf 256 begrenzt.
Anfrage:
Die Anfrage bestimmt die Startadresse und die Anzahl der Bits, die gelesen werden sollen.
Der erste Punkt wird mit 0 adressiert. Bei Modicon startet die Adressierung mit 1 (0x01).
In der folgenden Tabelle ist ein Beispiel für eine Anfrage abgebildet, durch die die Bits 0 bis 7 des Slaves 11 gelesen werden sollen:
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points low |
0x08 |
0x08 |
”08” |
0x30, 0x38 |
Error Check (LRC / CRC) |
- |
0x79 |
”EC” |
0x45, 0x42 |
|
|
0x66 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
|
|
|
|
|
Tabelle 5.32: Beispiel Anfrage, Read Input Status
Antwort:
Die aktuellen Werte der abgefragten Bits werden in das Datenfeld gepackt. Eine 1 entspricht dabei dem Zustand ON und eine 0 dem Zustand OFF. Das niederwertigste Bit des ersten Datenbytes enthält das erste Bit der Anfrage. Die anderen folgen aufsteigend. Falls die Anzahl der Eingänge kein Vielfaches von 8 ist, werden die restlichen Bits des letzten Datenbytes mit Nullen aufgefüllt. Falls mehr Bits abgefragt werden als Eingänge im Knoten vorhanden sind, werden die übrigen Eingangsbits zu Null gesetzt.
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3A |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
Byte Count |
0x01 |
0x01 |
”01” |
0x30, 0x31 |
Data (point 8...0) |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Error Check (LRC / CRC) |
- |
0x22 |
”E0” |
0x45, 0x30 |
|
|
0x5D |
|
|
End of frame |
- |
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.33: Beispiel Antwort, Read Input Status
MODBUS / Konfiguration |
57 |
01.10.99
Der Status der Eingänge 7 bis 0 wird als Byte-Wert 0x12 oder binär 0001 0010 angezeigt. Eingang 7 ist das höchstwertige Bit dieses Bytes und Eingang 0 das niederwertigste.
Die Zuordnung erfolgt damit von 7 bis 0 mit OFF-OFF-OFF-ON-OFF-Off-ON-OFF.
Bit: |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
Coil: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
58 |
MODBUS / Konfiguration |
01.10.99
5.3.1.4 Read Holding Register (Funktionscode 0x03)
Mit dieser Funktion werden die binären Inhalte von Holding Registern in den Slaves ausgelesen. Broadcast wird nicht unterstützt. Die maximale Anzahl ist auf 128 Register in einem frame begrenzt.
Anfrage:
Die Anfrage bestimmt die Adresse des Startwortes (Startregister) und die Anzahl der Register, die gelesen werden sollen.
Die Adressierung beginnt mit 0. Bei Modicon startet die Adressierung mit 1 (0x01).
Beispiel für eine Abfrage der Register 0 und 1 von Slave 11:
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points low |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
Error Check (LRC / CRC) |
- |
0xC4 |
”F0” |
0x46, 0x30 |
|
|
0xA1 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.34: Beispiel Anfrage, Read Holding Register
Antwort:
Die Registerdaten der Antwort werden als 2 Bytes pro Register gepackt. Das erste Byte enthält dabei die höherwertigen Bits, das zweite die niederwertigen. Eine Antwort auf die obige Anfrage sieht wie folgt aus:
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3A |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
Byte Count |
0x04 |
0x04 |
”04” |
0x30, 0x34 |
Data Hi (Register 0) |
0x3F |
0x3F |
”3F” |
0x33, 0x46 |
Data Lo (Register 0) |
0xFB |
0xFB |
”FB” |
0x46, 0x42 |
Data Hi (Register 1) |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Data Lo (Register 1) |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Error Check (LRC / CRC) |
- |
0x2D |
”B4” |
0x42, 0x34 |
|
|
0x61 |
|
|
End of frame |
- |
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.35: Beispiel Antwort, Read Holding Register
Die Inhalte von Register 0 werden durch zwei Bytewerte hexadezimal angezeigt: 0x3F und 0xFB oder 16379 dezimal. Die Inhalte von Register 1 sind 0x00 und0x00 oder 0 dezimal.
MODBUS / Konfiguration |
59 |
01.10.99
5.3.1.5 Read Input Register (Funktionscode 0x04)
Diese Funktion dient dazu, eine Anzahl von Eingangsworten (auch ”Eingangsregister”) zu lesen. Broadcast wird nicht unterstützt und die maximale Anzahl ist auf 128 Register in einem frame begrenzt.
Anfrage:
Die Anfrage bestimmt die Adresse des Startwortes (Startregister) und die Anzahl der Register, die gelesen werden sollen.
Die Adressierung beginnt mit 0. Bei Modicon startet die Adressierung mit 1 (0x01).
Beispiel für eine Abfrage der Register 0 und 1 von Slave 11:
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points low |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
Error Check (LRC / CRC) |
- |
0xC4 |
”F0” |
0x46, 0x30 |
|
|
0xA1 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.36: Beispiel Anfrage, Read Input Register
Antwort:
Die Registerdaten der Antwort werden als 2 Bytes pro Register gepackt. Das erste Byte enthält dabei die höherwertigen Bits, das zweite die niederwertigen. Eine Antwort auf die obige Anfrage sieht wie folgt aus:
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3A |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
Byte Count |
0x04 |
0x04 |
”04” |
0x30, 0x34 |
Data Hi (Register 0) |
0x3F |
0x3F |
”3F” |
0x33, 0x46 |
Data Lo (Register 0) |
0xFB |
0xFB |
”FB” |
0x46, 0x42 |
Data Hi (Register 1) |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Data Lo (Register 1) |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Error Check (LRC / CRC) |
- |
0x2D |
”B4” |
0x42, 0x34 |
|
|
0x61 |
|
|
End of frame |
- |
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.37: Beispiel Antwort, Read Input Register
Die Inhalte von Register 0 werden durch zwei Bytewerte hexadezimal angezeigt: 0x3F und 0xFB oder 16379 dezimal. Die Inhalte von Register 1 sind 0x00 und0x00 oder 0 dezimal.
60 |
MODBUS / Konfiguration |
01.10.99
5.3.1.6 Force Single Coil (Funktionscode 0x05):
Mit Hilfe dieser Funktion wird ein einzelnes Ausgangsbit geschrieben. Diese Funktion kann auch als Broadcast verschickt werden, dann wird dasselbe Bit in allen Slaves gesetzt. Beim Koppler/Controller ist die Anzahl der E/A-Punkte auf 256 begrenzt.
Anfrage:
Der gewünschte ONoder OFF-Zustand wird als Konstante im Datenfeld der Anfrage spezifiziert. Ein Wert von 0xFF00 setzt das Ausgangsbit auf 1, ein Wert von 0x00 auf 0. Andere Werte sind nicht spezifiziert und haben keine Auswirkung auf den Zustand der Ausgänge. In diesem Beispiel wird das Bit 0 in Slave 11 auf 1 gesetzt:
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x05 |
0x05 |
”05” |
0x30, 0x35 |
Coil address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Coil address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Force data high |
0xFF |
0xFF |
”FF” |
0x46, 0x46 |
Force data low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Error Check (LRC / CRC) |
- |
0x8C |
”F1” |
0x46, 0x31 |
|
|
0x90 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.38: Beispiel Anfrage, Force Single Coil
Antwort:
Die Antwort ist ein Echo der Anfrage. Sie wird zurückgegeben, wenn das Bit gesetzt wurde.
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x05 |
0x05 |
”05” |
0x30, 0x35 |
Coil address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Coil address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Force data high |
0xFF |
0xFF |
”FF” |
0x46, 0x46 |
Force data low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Error Check (LRC / CRC) |
- |
0x8C |
”F1” |
0x46, 0x31 |
|
|
0x90 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.39: Beispiel Antwort, Force Single Coil
MODBUS / Konfiguration |
61 |
01.10.99
5.3.1.7 Preset Single Register (Funktionscode 0x06):
Diese Funktion schreibt einen Wert in ein einzelnes Ausgangswort (auch ”Ausgangsregister”). Diese Funktion kann auch als Broadcast verschickt werden, dann wird dasselbe Ausgangswort in allen Slaves gesetzt.
Anfrage:
Die Adressierung beginnt mit 0. Bei Modicon startet die Adressierung mit 1 (0x01). Die Anfrage bestimmt die Adresse des ersten Ausgangswortes, das gesetzt werden soll. Der zu setzende Wert wird im Anfragedatenfeld bestimmt.
Im Beispiel wird das Register 0 im Slave 11 gesetzt.
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x06 |
0x06 |
”06” |
0x30, 0x36 |
Register address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Register address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Preset data high |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Preset data low |
0x34 |
0x34 |
”34” |
0x33, 0x34 |
Error Check (LRC / CRC) |
- |
0x8C |
”A9” |
0x41, 0x39 |
|
|
0x17 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.40: Beispiel Anfrage, Preset Single Register
Antwort:
Die Antwort ist ein Echo der Anfrage. Sie wird nach dem Setzen der Register gesendet.
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x06 |
0x06 |
”06” |
0x30, 0x36 |
Register address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Register address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Preset data high |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Preset data low |
0x34 |
0x34 |
”34” |
0x33, 0x34 |
Error Check (LRC / CRC) |
- |
0x8C |
”A9” |
0x41, 0x39 |
|
|
0x17 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.41: Beispiel Antwort, Preset Single Register
62 |
MODBUS / Konfiguration |
01.10.99
5.3.1.8 Fetch Comm Event Counter (Funktionscode 0x0B):
Diese Funktion gibt ein Statuswort und einen Ereigniszähler aus dem KommunikationsEreigniszähler des Slaves zurück. Der Master kann mit diesem Zähler feststellen, ob der Slave die Nachrichten fehlerlos behandelt hat.
Nach jeder erfolgreichen Nachrichtenverarbeitung wird der Zähler hochgezählt. Dieses Zählen erfolgt nicht bei Ausnahmeantworten, Poll-Kommandos oder Zählerabfragen. Der Ereigniszähler kann durch die Diagnosefunktion (Code 0x08), durch die Unterfunktion Restart Communications Option (Code 0x01) oder Clear Counters und das Diagnose-Register (Code 0x0A) zurückgesetzt werden.
Anfrage:
Im Beispiel wird der Kommunikationszähler des Slaves 11 gelesen:
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Error Check (LRC / CRC) |
- |
0x47 |
”EA” |
0x45, 0x41 |
|
|
0x47 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.42: Beispiel Anfrage, Fetch Comm Event Counter
Antwort:
Die Antwort enthält ein 2 Byte Statuswort und einen 2 Byte Ereigniszähler. Das Statuswort enthält nur Nullen.
In der folgenden Tabelle ist ein Beispiel für eine Antwort dargestellt:
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Status high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Status low |
0x00 |
0x00 |
”00” |
0x31, 0x33 |
Event count high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Event count low |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
Error Check (LRC / CRC) |
- |
0xE4 |
”E7” |
0x45, 0x37 |
|
|
0xA0 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.43: Beispiel Antwort, Fetch Comm Event Counter
Der Ereigniszähler zeigt, dass 3 (0x03) Ereignisse gezählt wurden.
MODBUS / Konfiguration |
63 |
01.10.99
5.3.1.9 Force Multiple Coils (Funktionscode 0x0F):
Durch diese Funktion wird eine Anzahl Ausgangsbits auf 1 oder 0 gesetzt. Bei einer Broadcast-Sendung werden dieselben Bits in allen angeschalteten Slaves gesetzt. Die maximale Anzahl ist 256 Bits.
Anfrage:
Der erste Punkt wird mit 0 adressiert. Bei Modicon startet die Adressierung mit 1 (0x01).
Die Anfragenachricht spezifiziert die Bits, die gesetzt werden sollen. Die geforderten 1- oder 0-Zustände werden durch die Inhalte des Anfragedatenfelds bestimmt.
In diesem Beispiel werden 16 Bits beginnend mit Adresse 0 in Slave 11 gesetzt. Die Anfrage enthält 2 Bytes mit dem Wert 0xA5F0 also 1010 0101 1111 0000 binär.
Bit: |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
Coil: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
Das erste Byte überträgt die 0xA5 an die Adresse 7 bis 0, wobei 0 das niederwertigste Bit ist. Das nächste Byte überträgt 0xF0 an die Adresse 15 bis 8, wobei das niederwertigste Bit 8 ist.
Feldname |
Beispiel |
|
RTU |
ASCII |
|
Start of frame |
- |
|
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
|
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x0F |
|
0x0F |
”0F” |
0x30, 0x46 |
Coil address high |
0x00 |
|
0x00 |
”00” |
0x30, 0x30 |
Coil address low |
0x00 |
|
0x00 |
”00” |
0x30, 0x30 |
Quantity of coils high |
0x00 |
|
0x00 |
”00” |
0x30, 0x30 |
Quantity of coils low |
0x10 |
|
0x10 |
”10” |
0x31, 0x30 |
Byte Counter |
0x02 |
|
0x02 |
”02” |
0x30, 0x32 |
Force data high (coils 7 ... 0) |
0xA5 |
|
0xA5 |
”A5” |
0x41, 0x35 |
Force data low (coils 15 ... 8) |
0xF0 |
|
0xF0 |
”F0” |
0x46, 0x30 |
Error Check (LRC / CRC) |
- |
|
0xE7 |
”3F” |
0x33, 0x46 |
|
|
|
0x94 |
|
|
End of frame |
|
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.44: Beispiel Anfrage, Force Multiple Coils |
|
|
|
||
Antwort:
Die Antwort ist die Adresse des Slaves, der Funktionscode, die Startadresse und die Anzahl der gesetzten Bits.
Fieldname |
Example |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x0F |
0x0F |
”0F” |
0x30, 0x46 |
Coil address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Coil address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Quantity of coils high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Quantity of coils low |
0x10 |
0x10 |
”10” |
0x31, 0x30 |
Error Check (LRC / CRC) |
- |
0x54 |
”D6” |
0x44, 0x36 |
|
|
0xAD |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.45: Beispiel Antwort, Force Multiple Coils |
|
|
||
64 MODBUS / Konfiguration
01.10.99
5.3.1.10 Preset Multiple Registers (Funktionscode 0x10):
Diese Funktion schreibt Werte in eine Anzahl von Ausgangsworten (auch ”Ausgangsregister”). Bei einer Broadcast-Sendung werden die Werte in alle Slaves geschrieben. Die maximale Registeranzahl pro frame ist 128.
Anfrage:
Der erste Punkt wird mit 0 adressiert. Bei Modicon startet die Adressierung mit 1 (0x01).
Die Anfragenachricht bestimmt die Register, die gesetzt werden sollen. Die Daten werden als 2 Bytes pro Register gesendet.
Im Beispiel wird dargestellt, wie die Daten in den beiden Registern 0 und 1 in Slave 11 gesetzt werden:
Feldname |
|
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
|
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
|
Function code |
0x10 |
0x10 |
”10” |
0x31, 0x30 |
|
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
Number of register high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
Number of register low |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
|
Byte Counter |
0x04 |
0x04 |
”04” |
0x30, 0x34 |
|
Data high |
(register 0) |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Data low |
(register 0) |
0x34 |
0x34 |
”34” |
0x33, 0x34 |
Data high |
(register 1) |
0x56 |
0x56 |
”56” |
0x35, 0x36 |
Data low |
(register 1) |
0x78 |
0x78 |
”78” |
0x37, 0x38 |
Error Check (LRC / CRC) |
- |
0xA9 |
”CB” |
0x43, 0x42 |
|
|
|
|
0x43 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
|
Tabelle 5.46: Beispiel Anfrage, Preset Multiple Registers
Antwort:
Die Antwort gibt die Adresse des Slaves, den Funktionscode, die Startadresse und die Anzahl der gesetzten Register zurück.
Feldname |
Beispiel |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x10 |
0x10 |
”10” |
0x31, 0x30 |
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of register high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of register low |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
Error Check (LRC / CRC) |
- |
0x41 |
”E3” |
0x45, 0x33 |
|
|
0x62 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabelle 5.47: Beispiel Antwort, Preset Multiple Registers |
|
|
||
MODBUS / Konfiguration |
65 |
01.10.99
5.3.2 Watchdog (Verhalten bei Feldbusausfall)
Der Watchdog dient zur Überwachung der Datenübertragung zwischen übergeordneter Steuerung und Koppler/Controller. Dazu wird von der übergeordneten Steuerung eine Zeitfunktion (Time-out) im Koppler/Controller zyklisch angestoßen. Bei fehlerfreier Kommunikation kann diese Zeit ihren Endwert nicht erreichen, weil sie zuvor immer wieder neu gestartet wird. Falls diese Zeit abgelaufen sein sollte, liegt ein Feldbusausfall vor.
Der Watchdog muss eingeschaltet sein, damit er aktiviert werden kann (siehe ‘Koppler/Einstellungen’ bzw. ‘Controller/Einstellungen’).
Im Koppler/Controller sind gesonderte Register für die Ansteuerung und für die Statusabfrage des Watchdogs durch die übergeordnete Steuerung vorhanden (RegisterAdressen 0x1000 bis 0x1008).
Nach dem Einschalten der Versorgungsspannung ist der Watchdog noch nicht aktiviert. Zunächst ist der Time-out-Wert festzulegen (Register 0x1000). Der Watchdog kann dadurch aktiviert werden, dass im Masken-Register (0x1001) ein Funktionscode geschrieben wird, der ungleich 0 ist. Eine zweite Möglichkeit zur Aktivierung besteht darin, im Toggle-Register (0x1003) einen von 0 abweichenden Wert zu schreiben.
Durch Lesen der minimalen Triggerzeit (Register 0x1004) wird festgestellt, ob die Watchdog-Fehlerreaktion aktiviert wurde. Falls dieser Zeitwert 0 ist, wird ein Feldbusausfall angenommen. Der Watchdog kann entsprechend der zuvor genannten beiden Möglichkeiten oder mittels Register 0x1007 neu gestartet werden.
Wenn der Watchdog einmal gestartet wurde, kann er vom Anwender aus Sicherheitsgründen nur über einen bestimmten Weg gestoppt werden (Register 0x1005 oder 0x1008).
66 |
MODBUS / Konfiguration |
01.10.99
Watchdog-Register:
Die Kommunikation mit den Watchdog-Registern darf genutzt werden!
Register |
Bezeichnung |
Zugang |
Länge |
Vorgabewert |
Beschreibung |
|
Adresse |
|
|||||
|
|
(Wort) |
|
|
|
|
|
|
|
|
|
|
|
0 x 1000 |
Zeitüberschreitung |
lesen / |
1 |
pu/co |
Dieses Register speichert den Wert für die |
|
|
(Time-out), |
schreiben |
|
0x0000 |
Zeitüberschreitung (Time-out). Damit der |
|
|
WD_TIME |
|
|
|
Watchdog gestartet werden kann, muss der |
|
|
|
|
|
|
Vorgabewert auf einen Wert ungleich Null |
|
|
|
|
|
|
geändert werden. Die Zeit wird in Vielfachen |
|
|
|
|
|
|
von 100 ms gesetzt, 0x0009 bedeutet also eine |
|
|
|
|
|
|
Time-out-Zeit von 0.9 s. Dieser Wert kann bei |
|
|
|
|
|
|
laufendem Watchdog nicht geändert werden. |
|
|
|
|
|
|
Es gibt keinen Code durch den der aktuelle |
|
|
|
|
|
|
Datenwert nochmals geschrieben werden kann, |
|
|
|
|
|
|
während der Watchdog aktiv ist |
|
|
|
|
|
|
|
|
0 x 1001 |
Watchdog-Funktion |
lesen / |
1 |
pu/co |
Mittels dieser Maske sind die Funktionscodes |
|
|
Codiermaske, |
schreiben |
|
0x0000 |
einstellbar, um die Watchdog-Funktion zu |
|
|
Funktionscode |
|
|
|
triggern. Über die 1 kann der Funktionscode |
|
|
1...16, |
|
|
|
(Funktionscode-1) |
|
|
|
|
|
ausgewählt werden ( = 2 |
+ ....) |
|
|
WDFCM_1_16 |
|
|
|
|
|
|
|
|
|
|
D1001.0 entspricht Funktionscode1, |
|
|
|
|
|
|
D1001.1 entspricht Funktionscode2... |
|
|
|
|
|
|
Wenn hier ein Wert ungleich Null steht, wird die |
|
|
|
|
|
|
Watchdog-Funktion gestartet. Wenn in die |
|
|
|
|
|
|
Maske nur Codes von nicht unterstützten |
|
|
|
|
|
|
Funktionen eingetragen werden, startet der |
|
|
|
|
|
|
Watchdog nicht. Ein bestehender Fehler wird |
|
|
|
|
|
|
rückgesetzt und das Prozessabbild kann wieder |
|
|
|
|
|
|
beschrieben werden. Auch hier kann bei |
|
|
|
|
|
|
laufendem Watchdog keine Änderung erfolgen. |
|
|
|
|
|
|
Es gibt keinen Code durch den der aktuelle |
|
|
|
|
|
|
Datenwert nochmals geschrieben werden kann, |
|
|
|
|
|
|
während der Watchdog aktiv ist |
|
|
|
|
|
|
|
|
0 x 1002 |
Watchdog-Funktion |
lesen / |
1 |
pu/co |
Gleiche Funktion wie zuvor, aber mit den |
|
|
Codiermaske, |
schreiben |
|
0x0000 |
Funktionscodes 17 bis 32. Diese Codes werden |
|
|
Funktionscode |
|
|
|
nicht unterstützt, dieses Register sollte deshalb |
|
|
17...32, |
|
|
|
auf dem Vorgabewert belassen werden. Es gibt |
|
|
WD_FCM_17_32 |
|
|
|
keinen Ausnahmecode durch den der aktuelle |
|
|
|
|
|
|
Datenwert nochmals geschrieben werden kann, |
|
|
|
|
|
|
während der Watchdog aktiv ist |
|
|
|
|
|
|
|
|
0 x 1003 |
Watchdog-Trigger, |
lesen / |
1 |
pu/co |
Dieses Register wird für eine alternative |
|
|
WD_TRIGGER |
schreiben |
|
0x0000 |
Triggermethode benutzt. Durch |
Schreiben |
|
|
|
|
|
unterschiedlicher Werte in dieses Register wird |
|
|
|
|
|
|
der Watchdog getriggert. Aufeinanderfolgende |
|
|
|
|
|
|
Werte müssen sich in der Größe |
|
|
|
|
|
|
unterscheiden. Das Schreiben eines Werts |
|
|
|
|
|
|
ungleich Null startet den Watchdog. Ein |
|
|
|
|
|
|
Watchdog Fehler wird zurückgesetzt und das |
|
|
|
|
|
|
Schreiben der Prozessdaten wird wieder |
|
|
|
|
|
|
ermöglicht. |
|
|
|
|
|
|
|
|
0 x 1004 |
Minimale aktuelle |
lesen / |
1 |
pu/co |
Durch diesen Wert kann der aktuelle |
|
|
Trigger-Zeit, |
schreiben |
|
0xFFFF |
WatchdogStatus ausgelesen werden. Wenn |
|
|
WD_AC_TRG_TIME |
|
|
|
der Watchdog getriggert wird, wird der |
|
|
|
|
|
|
gespeicherte Wert mit dem aktuellen |
|
|
|
|
|
|
verglichen. Wenn der aktuelle Wert kleiner ist |
|
|
|
|
|
|
als der gespeicherte, wird dieser durch den |
|
|
|
|
|
|
aktuellen ersetzt. Die Einheit ist 100 ms/Digit. |
|
|
|
|
|
|
Durch das Schreiben neuer Werte wird der |
|
|
|
|
|
|
gespeicherte Wert geändert, dies hat keine |
|
|
|
|
|
|
Auswirkung auf den Watchdog. 0x000 ist nicht |
|
|
|
|
|
|
erlaubt. |
|
|
|
|
|
|
|
|
MODBUS / Konfiguration |
67 |
01.10.99
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 x 1005 |
Watchdog stoppen, |
lesen / |
1 |
pu/co |
Wenn hier zunächst der Wert 0xAAAA und |
||||
|
|
|
|
|
|
|
WD_AC_STOP_MASK |
schreiben |
|
0x0000 |
dann 0x5555 geschrieben wird, wird der |
|||
|
|
|
|
|
|
|
|
|
|
|
Watchdog |
gestoppt. |
Die |
Watchdog- |
|
|
|
|
|
|
|
|
|
|
|
Fehlerreaktion wird gesperrt. Ein Watchdog- |
|||
|
|
|
|
|
|
|
|
|
|
|
Fehler wird zurückgesetzt und das Schreiben |
|||
|
|
|
|
|
|
|
|
|
|
|
auf die Prozessdaten wird wieder ermöglicht. |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
0 x 1006 |
Während |
lesen |
1 |
pu |
Aktueller Watchdog-Status. |
|
|
||
|
|
|
|
|
|
|
Watchdog läuft, |
|
|
0x0000 |
bei 0x0: Watchdog nicht aktiv, |
|
||
|
|
|
|
|
|
|
WD_RUNNING |
|
|
|
bei 0x1: Watchdog aktiv. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
0 x 1007 |
Watchdog neu |
lesen / |
1 |
pu |
Schreiben von 0x1 in das Register startet den |
||||
|
|
|
|
|
|
|
starten, |
schreiben |
|
0x001 |
Watchdog wieder. |
|
|
|
|
|
|
|
|
|
|
WD_RESTART |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
0 x 1008 |
Watchdog einfach |
lesen / |
1 |
pu |
Durch Schreiben der Werte 0x0AA55 oder |
||||
|
|
|
|
|
|
|
anhalten |
schreiben |
|
0x0000 |
0X55AA (ab V2.5) wird der Watchdog |
|||
|
|
|
|
|
|
|
WD_AC_STOP_SIMPL |
|
|
|
angehalten, falls er aktiv war. Die Watchdog- |
|||
|
|
|
|
|
|
|
E |
|
|
|
Fehlerreaktion wird deaktiviert. Ein anstehender |
|||
|
|
|
|
|
|
|
|
|
|
|
Watchdog-Fehler wird zurückgesetzt und ein |
|||
|
|
|
|
|
|
|
|
|
|
|
Schreiben ins Watchdog-Register ist wieder |
|||
|
|
|
|
|
|
|
|
|
|
|
möglich. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
Tabelle 5.48: Watchdog-Register |
|
|
pu: Vorgabewert bei Spannungseinschaltung |
||||||
Die Länge ist in allen Register 1, d. h. es kann bei jedem Zugriff nur ein Wort geschrieben oder gelesen werden.
Beispiele:
Watchdog für eine Zeitüberschreitung von mehr als 1 s setzen
1.Schreiben Sie 0x000A (=1000 ms / 100 ms) in das Register für Zeitüberschreitung (0x1000).
2.Schreiben Sie 0x0010 (=2(5-1)) in die Codiermaske (Register 0x1001), um den Watchdog zu starten.
3.Verwenden Sie die Funktion ‘Force Single Coil’ um den Watchdog zu triggern.
4.Lesen Sie das Register der minimalen aktuellen Triggerzeit und vergleichen Sie es mit Null um zu prüfen, ob Zeitüberschreitung vorliegt.
Die letzten beiden Schritte werden zyklisch ausgeführt.
Watchdog für eine Zeitüberschreitung von mehr als 10 min setzen
1.Schreiben Sie 0x1770 (=10*60*1000 ms / 100 ms) in das Register für Zeitüberschreitung (0x1000).
2.Schreiben Sie 0x0001 in den Watchdog-Trigger-Register (0x1003) um den Watchdog zu starten.
3.Schreiben Sie 0x0001, 0x0000, 0x0001... oder einen Zählerwert in das Watchdog- Trigger-Register (0x1003) um den Watchdog zu triggern.
4.Lesen Sie das Register der minimalen aktuellen Triggerzeit und vergleichen Sie es
mit Null um zu prüfen, ob Zeitüberschreitung vorliegt. Die letzten beiden Schritte werden zyklisch ausgeführt.
68 |
MODBUS / Konfiguration |
01.10.99
Feldbusausfall am Koppler:
Die Auswertung der Watchdog-Register erfolgt durch die Firmware des Kopplers. Der Klemmenbus wird unterbrochen. Die digitalen Ausgänge werden auf 0 und die analogen Ausgänge auf den Minimalwert gesetzt (z. B. bei 4...20 mA auf 4 mA).
Feldbusausfall am Controller:
Die Auswertung der Watchdog-Register erfolgt durch den Funktionsblock ‘FBUS_ERROR_INFORMATION’ im Steuerungsprogrammm. Der Klemmenbus bleibt in Funktion und die Prozessabbilder bleiben erhalten. Das Steuerungsprogramm kann autark weiter abgearbeitet werden.
Bild 5.15:Funktionsblock zur Ermittlung des Feldbusausfalls
‘FBUS_ERROR’ (BOOL) |
= FALSE = kein Fehler |
|
= TRUE = Feldbusausfall |
‘ERROR’ (WORD) |
= 0 = kein Fehler |
|
= 1 = Feldbusausfall |
Mittels dieser Ausgänge und einem entsprechenden Steuerungsprogramm kann der Knoten bei Feldbusausfall in einen sicheren Zustand geführt werden.
MODBUS / Konfiguration |
69 |
01.10.99
5.3.3 Konfigurations-Funktion
Folgende Register können gelesen werden, um die Konfiguration der angeschlossenen Klemmen zu bestimmen:
Register- |
Bezeichnung |
Zugang |
Länge |
Typ |
|
Beschreibung |
|
Adresse |
|
|
(Wort) |
|
|
|
|
0 x 1022 |
CnfLen.AnalogOut |
lesen |
4++ |
pu |
|
Anzahl E/A-Bits bei den |
|
|
|
|
|
|
|
Prozessdatenworten.der Ausgänge |
|
|
|
|
|
|
|
|
|
0 x 1023 |
CnfLen.AnalogInp |
lesen |
3++ |
pu |
|
Anzahl E/A-Bits bei den |
|
|
|
|
|
|
|
Prozessdatenworten.der Eingänge |
|
|
|
|
|
|
|
|
|
0 x 1024 |
CnfLen.DigitalOut |
lesen |
2++ |
pu |
|
Anzahl E/A-Bits bei den |
|
|
|
|
|
|
|
Prozessdatenbits.der Ausgänge |
|
|
|
|
|
|
|
|
|
0 x 1025 |
CnfLen.DigitalInp |
lesen |
1 |
pu |
|
Anzahl E/A-Bits bei den |
|
|
|
|
|
|
|
Prozessdatenbits.der Eingänge |
|
|
|
|
|
|
|
|
|
0 x 1026 |
slaveAdr |
lesen |
1 |
pu |
|
Aktuelle Knotenadresse. Die Adresse |
|
|
|
|
|
|
|
wird beim Einschalten der Spannuns- |
|
|
|
|
|
|
|
versorgung gelesen. |
|
|
|
|
|
|
|
|
|
0 x 1027 |
Settings |
lesen |
1 |
pu |
|
Hier werden die aktuellen Ein- |
|
|
stellungen hinterlegt. Diese werden |
||||||
|
|
|
|
|
|
||
|
|
|
|
|
|
beim Einschalten der Spannungs- |
|
|
|
|
|
|
|
versorgung abgefragt. |
|
|
|
|
|
|
|
D0-D2: |
Baudrate |
|
|
|
|
|
|
D3-D4: |
Byte Frame |
|
|
|
|
|
|
D5: |
Datenlänge 8/7 Bit |
|
|
|
|
|
|
D6: |
ungenutzt |
|
|
|
|
|
|
D7: |
ungenutzt |
|
|
|
|
|
|
D8-D10: |
End of Frame Time |
|
|
|
|
|
|
D11: |
RTU/ASCII Modus |
|
|
|
|
|
|
D12: |
Error Check |
|
|
|
|
|
|
|
ausgeschaltet/eingeschaltet |
|
|
|
|
|
|
D13: |
Extended Functions |
|
|
|
|
|
|
|
ausgeschaltet/eingeschaltet |
|
|
|
|
|
|
D14: |
Watchdog |
|
|
|
|
|
|
|
eingeschaltet/ausgeschaltet |
|
|
|
|
|
|
D15: |
ungenutzt |
|
|
|
|
|
|
|
|
Tabelle 5.49: Konfigurations-Funktion |
|
|
|
pu: Vorgabewert bei Spannungseinschaltung |
|||
70 |
MODBUS / Konfiguration |
01.10.99
5.3.4 Firmware-Information
Diese Register werden genutzt, um Informationen zur Firmware des Kopplers bzw. Controllers auszulesen.
Register- |
Bezeichnung |
Zugang |
Länge |
Typ |
Beschreibung |
Adresse |
|
|
(Wort) |
|
|
|
|
|
|
|
|
0x2010 |
Revison, |
lesen |
1 |
pu/co - |
Firmware Stand (256* Haupt- + Unter-) |
|
INFO_REVISION |
|
|
|
z.B.: V2.5 = 0x0205 |
|
|
|
|
|
|
0x2011 |
Series code, |
lesen |
1 |
pu/co - |
WAGO-Baureihennnummer: |
|
INFO_SERIES |
|
|
|
750 für WAGO-I/O-System |
|
|
|
|
|
|
0x2012 |
Item number, |
lesen |
1 |
pu/co - |
WAGO-Bestellnummer: |
|
INFO_ITEM |
|
|
|
312, 314, 315, 316 für Koppler, |
|
|
|
|
|
812, 814, 815, 816 für Controller |
|
|
|
|
|
|
0x2013 |
Major sub item code, |
lesen |
1 |
pu/co - |
Erweiterte WAGO-Bestellnummer. |
|
INFO_MAJOR |
|
|
|
Wird für spezielle Firmwareversionen |
|
|
|
|
|
oder Einstellungen genutzt: |
|
|
|
|
|
0xFFFF für Koppler/Controller. |
|
|
|
|
|
|
0x2014 |
Minor sub item code, |
lesen |
1 |
pu/co - |
Erweiterte WAGO-Bestellnummer. |
|
INFO_MINOR |
|
|
|
Wird für spezielle Firmwareversionen |
|
|
|
|
|
oder Einstellungen genutzt: |
|
|
|
|
|
0xFFFF für Koppler/Controller. |
|
|
|
|
|
|
0x2020 |
Description, |
lesen |
128 |
pu/co - |
Kurzbeschreibung für diesen |
|
INFO_DESCRIPTION |
|
|
|
Koppler/Controller, max. 255 Zeichen. |
|
|
|
|
|
Falls nicht verfügbar steht hier der Wert |
|
|
|
|
|
0xFF. |
|
|
|
|
|
|
0x2021 |
Description, |
lesen |
16 |
pu/co - |
Angabe der Herstellungs-Zeit des |
|
INFO_TIME |
|
|
|
Firmwarestandes, max. 31 Zeichen. Falls |
|
|
|
|
|
nicht verfügbar steht hier der Wert 0xFF. |
|
|
|
|
|
|
0x2022 |
Description, |
lesen |
16 |
pu/co - |
Angabe des Herstellungs-Datums des |
|
INFO_DATE |
|
|
|
Firmwarestandes, amx. 31 Zeichen. Falls |
|
|
|
|
|
nicht verfügbar steht hier der Wert 0xFF. |
|
|
|
|
|
|
0x2023 |
Description, |
lesen |
32 |
pu/co - |
Angabe der Firma und des Nutzers des |
|
INFO_LOADER_INFO |
|
|
|
Firmware-Programmiergeräts, max. 63 |
|
|
|
|
|
Zeichen. Falls nicht verfügbar steht hier |
|
|
|
|
|
der Wert 0xFF |
|
|
|
|
|
|
Tabelle 5.50: Firmware-Information |
|
pu: Vorgabewert bei Spannungseinschaltung, co: Konstante |
|||
MODBUS / Konfiguration |
71 |
01.10.99
5.3.5 Allgemeine Register
Die Konstanten, die hier hinterlegt sind, können benutzt werden, um die Kommunikation mit dem Master zu testen.
Register- |
Bezeichnung |
Zugang |
Länge |
Initial- |
Beschreibung |
|
Adresse |
|
|
(Wort) |
Wert |
|
|
|
|
|
|
|
|
|
0x2000 |
Null, GP_ZERO |
lesen |
1 |
pu/co |
Konstante mit Null. |
|
|
|
|
|
0x0000 |
|
|
|
|
|
|
|
|
|
0x2001 |
Einsen, GP_ONES |
lesen |
1 |
pu/co |
Konstante mit Einsen. Ist -1 falls sie als ”signed |
|
|
|
|
|
0xFFFF |
int” deklariert wird oder MAXVALUE bei |
|
|
|
|
|
|
”unsigned int”. |
|
|
|
|
|
|
|
|
0x2002 |
1,2,3,4, GP_1234 |
lesen |
1 |
pu/co |
Konstanter Wert, um zu testen, ob Highund |
|
|
|
|
|
0x1234 |
Low-Byte getauscht sind (Intel/Motorola |
|
|
|
|
|
|
Format). Sollte im Master als |
0 x 1234 |
|
|
|
|
|
erscheinen. Wenn 0 x 3412 erscheint, müssen |
|
|
|
|
|
|
Highund Low-Byte getauscht werden. |
|
|
|
|
|
|
|
|
0x2003 |
Maske1, GP_AAAA |
lesen |
1 |
pu/co |
Konstante, um zu sehen, ob alle Bits vorhanden |
|
|
|
|
|
0xAAAA |
sind. Wird zusammen mit Register |
0 x 2004 |
|
|
|
|
|
genutzt. |
|
|
|
|
|
|
|
|
0x2004 |
Maske2, GP_5555 |
lesen |
1 |
pu/co |
Konstante, um zu sehen, ob alle Bits vorhanden |
|
|
|
|
|
0x5555 |
sind. Wird zusammen mit Register |
0 x 2003 |
|
|
|
|
|
genutzt. |
|
|
|
|
|
|
|
|
0x2005 |
Größte positive Zahl, |
lesen |
1 |
pu/co |
Konstante, um die Arithmetik zu kontrollieren. |
|
|
GP_MAX_POS |
|
|
0x7FFF |
|
|
|
|
|
|
|
|
|
0x2006 |
Größte negative Zahl, |
lesen |
1 |
pu/co |
Konstante, um die Arithmetik zu kontrollieren. |
|
|
GP_MAX_NEG |
|
|
0x8000 |
|
|
|
|
|
|
|
|
|
0x2007 |
Größte halbe |
lesen |
1 |
pu/co |
Konstante, um die Arithmetik zu kontrollieren. |
|
|
positive Zahl, |
|
|
0x3FFF |
|
|
|
GP_HALF_POS |
|
|
|
|
|
|
|
|
|
|
|
|
0x2008 |
Größte halbe |
lesen |
1 |
pu/co |
Konstante, um die Arithmetik zu kontrollieren. |
|
|
negative Zahl, |
|
|
0x4000 |
|
|
|
GP_HALF_NEG |
|
|
|
|
|
|
|
|
|
|
|
|
Tabelle 5.51: Allgemeine Register |
|
|
pu: Initial-Wert bei Spannungseinschaltung; co: Konstante |
|||
72 |
MODBUS / Konfiguration |
01.10.99
