Protronic 100/500/550 Digitric 500
MODBUSSchnittstellenbeschreibung
Bedienungsanleitung
42/62-50040 DE
Rev. 04
Impressum
Protronic 100/500/550 Digitric 500 MODBUS-Schnittstellenbeschreibung
Bedienungsanleitung Druckschrift-Nr. 42/62-50040 DE Ausgabedatum: Revision:
11.01 04
Hersteller: ABB Automation Products GmbH Höseler Platz 2 D-42579 Heiligenhaus
Telefon: Telefax:
+49 (0) 20 56 - 12 - 51 81 +49 (0) 20 56 - 12 - 50 81
© Copyright 2000 by ABB Automation Products GmbH Änderungen vorbehalten Diese Betriebsanleitung ist urheberrechtlich geschützt. Die Übersetzung sowie die Vervielfältigung und Verbreitung in jeglicher Form - auch als Bearbeitung oder in Auszügen -, insbesondere als Nachdruck, fotomechanische oder elektronische Wiedergabe oder in Form der Speicherung in Datenverarbeitungsanlagen oder Datennetzen ohne die ausdrückliche Genehmigung des Rechtsinhabers sind untersagt und werden zivil- und strafrechtlich verfolgt.
2
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Inhalt 1
Beschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2
Schnittstellenmodul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1 2.2
3
6 6 7 7
Datentransfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.7.1 3.7.2
3.7.3 3.7.4 3.7.5 3.7.6 3.7.7
Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Telegrammzeichen (Frame). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Übertragungsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Telegramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Zulässige Adressen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Prüfsumme CRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Funktion 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Funktion 03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 REAL-Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 INTEGER-Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Funktion 05 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Funktion 06 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Funktion 08 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Funktion 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Funktion 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4
Wertebereiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5
Berechnung der Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.1 5.2 5.2.1 5.2.2 5.2.3 5.3 5.3.1 5.3.2
6
7
MODBUS-Register-Tabelle globale Variablen REAL, INT, DINT, LONG . . . . . . . . . . . 19 MODBUS-Coil-Tabelle globale Variablen Boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Neu hinzugekommene Variable ab der Bibliotheksversion 3.6 . . . . . . . . . . . . . . . . . . . 33
Anhang 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 8.1
Inhalt
Globale Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Online-Parameter (ab FW 1.149). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Spezial Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Anhang 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 7.1 7.2 7.3
8
INT-, DINT-, LONG-Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 REAL-Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Pair of Registers-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Senden eines Pairs of Registers an Protronic/Digitric . . . . . . . . . . . . . . . . . . . . . . . . . 16 Lesen eines Pairs of Registers aus Protronic/Digitric . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Exponent-Mantisse-Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Senden von Mantisse und Exponent an Protronic/Digitric . . . . . . . . . . . . . . . . . . . . . . 17 Lesen von Mantisse und Exponent aus Protronic/Digitric . . . . . . . . . . . . . . . . . . . . . . . 17
Zuordnung der Variablen der Protronic/Digitric-Regler zu MODBUS-Registern 18 6.1 6.2 6.3
42/62-50040 DE
RS 485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technische Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RS 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technische Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programmierbeispiele in C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 modbus_read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 modbus_write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Programierbeispiel zum Ermitteln der CRC-Summe des MODBUS-RTU-Telegramms 36 Regelabweichung mit Pair of Register in Loop 1 ermitteln (L1_XW, Register 170) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Regelabweichung mit Pair of Register in Loop 1 ermitteln (L1_XW, Register 170/171) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Regelabweichung nach Exp & Mantisse in Loop 1 ermitteln (L1_XW, Register 2170) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Nummer des aktuellen Programms ermitteln (Register 802) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Tastatureingiff: Hand/Automatik/Cascade verstellen (Register 900) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3
Onlineparameter, Gerät, Tabelle 1, Stützwert 1 mit Pair of Register schreiben (Register 10022/23) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Onlineparameter, Gerät, Tabelle1, Stützwert 1 mit Exponent/Mantisse schreiben (Register 20022/23) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Programmgeber Programm 1, Laufzeit 1 (P17), LONG-Wert schreiben (Reg 15034/35) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
9
Anhang 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 9.1 9.1.1 9.1.2 9.1.3 9.1.4
4
Programmierbeispiele in Quickbasic 4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 IEEE-Werteberechnung mittels MKS$ und CSV-Funktion . . . . . . . . . . . . . . . . . . . . . . 39 IEEE-Werteberechnung ohne spezielle Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Berechnete Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Berechnung der Prüfsumme CRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Beschreibung 1
Beschreibung Die serielle Kommunikation der Regler Protronic 100/500/550 und Digitric 500 erfolgt gemäß der MODBUS-Protokollspezifikation. Die Protronic/Digitric-Regler sind in der Kommunikation immer „Slaves", d.h. sie reagieren nur, wenn das überlagerte System, der „Master", einen entsprechenden Befehl erteilt. Von Protronic/Digitric werden nur das RTU-Verfahren und daraus nur die für Protronic/Digitric wichtigen Funktionen unterstützt.
Von Protronic/Digitric wird nur eine Auswahl der MODBUS-Funktionen unterstützt. Nähere Informationen über das MODBUS-Protokoll sind in folgendem Schriftstück enthalten:
GOULD MODICON MODBUS PROTOCOL Reference Guide Gould Inc., Programmable Control Division P.O Box 3083 Andover, Massachussetts, 01810 PI-MBUS -300 Rev A, November 93
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
5
Schnittstellenmodul 2
Schnittstellenmodul 2.1 RS 485 Technische Daten – – – – –
Galvanisch getrennt von der Reglerelektronik Max. 32 Busteilnehmer (einschließlich PC) Linienstruktur ohne Abzweigungen, Stichleitungen zu einzelnenen Teilnehmern < 0,3 m Leitungslänge < 1200 m Ein mindestens dreiadriges geschirmtes Buskabel mit einem verdrillten Adernpaar zur Datenübertragung und einem zusätzlichen isolierten Leiter zum Potentialausgleich zwischen den Anschlüssen „Modulnull" aller galvanisch getrennten Busteilnehmer. Zum Betrieb von nicht galvanisch getrennten Busteilnehmern ist in der Regel ein zusätzlicher getrennter Leiter mit großem Querschnitt parallel zum Datenkabel erforderlich. – Der Schirm des Datenkabels ist über das mitgelieferte Schirmanschlussblech mit dem Reglergehäuse zu verbinden. Er ist zur Einhaltung der Funkstörgrenzwerte und zur Erhöhung der Störfestigkeit der Schnittstelle erforderlich. G
S
Z-19003
M
Bild 2-1 Montage des Schirmanschlussblechs bei Protronic 500/550 G Gehäuse M Modulträger S Schirmanschlussblech
3
Ansicht von hinten
4
1
2
4
z-19169
Ansicht von oben
Bild 2-2 Montage des Schirmanschlussblechs bei Digitric 500 ↓ Einsetzrichtung 1 Modulträger 2 Knebel 3 Schirmanschlussblech
6
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
4 Nut
42/62-50040 DE
Schnittstellenmodul
1 2 3 4 5
1
6
2
1 2 3 4 5
Schirm, beidseitig geerdet
6
3
1 2 3 4 5 6
Z-19010
32
Bild 2-3 Anschlussplan RS 485
2.2 RS 232 Technische Daten – Galvanisch getrennt von Reglerelektronik – Zum direkten Anschluss eines Konfigurier- PCs oder Modems (mit 9poligem Sub-D-Stecker) – Leitungslänge max. 10m
3
2
2
3 6
PC
5
Protronic z-19005
Bild 2-1 Anschlussplan RS 232
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
7
Datentransfer 3
Datentransfer 3.1 Allgemeines An einem Bus können beliebige Teilnehmer, die der MODBUS-Spezifikation entsprechen, betrieben werden. Die Anzahl der Teilnehmer richtet sich nach der verwendeten Übertragungstechnik. Protronic bietet über das rückseitig einsteckbare Modul die Schnittstellen RS 232 zum Anschluss eines Masters (Konfigurier-PC oder -Modem) RS 485 zum Anschluss von maximal 32 Teilnehmern (einschließlich Master). Für die Datenübertragung wird eine Kombination von Telegrammzeichen zu einem oder mehreren Telegrammen zusammengefasst. Diese Telegramme übernehmen auch die „Hand-Shake-Funktion", indem jedes Telegramm vom Master zum Slave erst beantwortet werden muss, bevor ein neues Telegramm gesendet werden darf. Im Rechner sind entsprechende Überwachungen notwendig, um nicht antwortende Busteilnehmer auszugrenzen (Time-Out-Überwachung). Die Timeout-Zeit richtet sich nach der verwendeten Baudrate und nach der Reaktionszeit der angeschlossenen Teilnehmer.
3.2 Telegrammzeichen (Frame) Die Telegramme bestehen aus der Folge von 1/0 Informationen. Die zu übertragenden Werte sind in Bytes (= 8 Bit) zerlegt. Jedes dieser Bytes wird ergänzt durch 1 Start-Bit wahlweise 1 Parity-Bit (gerade Anzahl von „1") 1 Stop-Bit. In der nachfolgenden Beschreibung wird der Begriff „Byte" verwendet, auch wenn einschließlich der Start- , Stop- und Paritiy-Bits eigentlich 10 oder 11 Bits übertragen werden.
3.3 Übertragungsregeln Ruhezustand der Datenleitung entspricht der logischen „1". Vor Beginn der Datenübertragung muss für die Zeit von mindestens 3 Byte der Ruhezustand auf der Datenleitung bestehen. Zwischen den Bytes eines Telegrammes darf der Abstand nicht größer als 3 Byte werden, da ein Abstand von mehr als 3,5 Bytes als Trennung zwischen zwei Telegrammen definiert ist.
3.4 Telegramme Die MODBUS-Telegramme haben folgenden Aufbau: Pause
Adresse
Funktion
Daten
Prüfsumme
1 Byte
1 Byte
n Bytes
2 Byte
Pause
3.5 Zulässige Adressen Als Adressen in den Busteilnehmenr sind die Ziffern 1 bis 255 zugelassen. Die Adresse 0 ist die Globaladresse (Broadcast-Adresse). Wird diese Adresse in einem Telegramm verwendet, so akzeptieren alle Teilnehmer das Telegramm, geben aber keine Bestätigung an den Master.
3.6 Prüfsumme CRC Die Prüfsumme wird über alle Bytes eines Telegrammes (ohne Start-, Stop- und Patrity-Bits) berechnet. Für die Ermittlung der Prüfsumme sind im Anhang Beispielprogramme aufgeführt. Details sind der Originaldokumentation über MODBUS zu entnehmen.
8
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Datentransfer 3.7 Funktionen Protronic/Digitric unterstützt folgende Funktionen: Code Bezeichnung Funktion 01 READ COIL STATUS Lesen von binären Werten 02
03 04
05 06
08
READ INPUT STATUS
entspricht bei Protronic der Funktion 01. Es wird vorzugsweise Funktion 01 verwendet.
READ HOLDING REGISTERS
Lesen von REAL-, INT-, DINT- oder LONG- Werten
READ INPUT REGISTERS
entspricht bei Protronic/Digitric der Funktion 03. Es wird vorzugsweise Funktion 03 verwendet.
FORCE SINGLE COIL
Setzen eines einzelnen Binär-Wertes
PRESET SINGLE REGISTER
Setzen eines einzelnen Integer-Wertes, für DINT oder REAL sind zwei dieser Telegramme erforderlich
LOOPBACK DIAGNOSTIC TEST
Testtelegramm zur Diagnose der Konmmunikationsfähigkeit des Slave
15
FORCE MULTIPLE COILS Setzen von mehreren aufeinanderfolgenden binären Werten
16
PRESET MULTIPLE REGISTERS Setzen von mehreren aufeinanderfolgenden Werten
3.7.1
Funktion 01
Diese Funktion dient zur Abfrage von mehreren aufeinanderfolgenden binären Werten aus den Reglern. Die Broadcast-Adresse 0 ist nicht zulässig. Beispiel: Dieses Telegramm fordert den Binärstatus der Binäreingänge BE01(151) bis BE34(170), d.h. 20 Werte, an. Adresse
11
Funktion
Startadresse
01
Anzahl
Prüfsumme CRC
HByte
LByte
HByte
LByte
00
151
00
20
LByte
HByte
(Alle Angaben dezimal) In der Antwort sind die binären Informationen in wenigen Bytes gepackt. Die erforderliche Anzahl errechnet sich aus der angeforderten Anzahl geteilt durch 8. Adresse
Funktion
Anzahl Bytes
Status 151 ...158
Status 159 ...160
Status 167 ...170
11
01
03
8 Bit
8 Bit
8 Bit
Prüfsumme CRC LByte
HByte
(Alle Angaben dezimal) Die Anzahl der Bytes sagt aus, wieviel Datenbytes folgen. Status 151 bis 158: Status der Binäreingänge BE01 bis BE14 (der Status kann „0" oder „1" sein). Bit
7
Adresse
158
BE..
14
6
5
4
3
2
1
0
157
156
155
154
153
152
151
13
12
11
04
03
02
01
Status
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
9
Datentransfer Status 159 bis 166: Status der Binäreingänge BE15 bis BE26 (der Status kann „0" oder „1" sein). Bit
7
6
5
4
3
2
1
0
Adresse
166
165
164
163
162
161
160
159
BE..
26
25
24
23
22
21
16
15
Status Status 167 bis 170: Da in diesem Byte nur 4 binäre Informationen übertragen werden, sind die Bits 7 bis 4 mit „0" belegt. Die Bits 3 bis 0 enthalten die gewünschten Daten (der Status kann „0" oder „1" sein). Bit
3
2
1
0
Adresse
7
170
169
168
167
BE..
34
33
32
31
Status
3.7.2
6
0
5
0
4
0
0
Funktion 03
Diese Funktion dient zur Abfrage von mehreren aufeinanderfolgenden analogen Werten aus den Reglern. Die Broadcast-Adresse 0 ist nicht zulässig. REAL-Werte REAL-Werte sind in 32-Bit im Regler kodiert. Zum Lesen dieser Werte wird daher die doppelte Anzahl von Registern benötigt. Beispiel: Lesen von Analogeingang AE01 aus den Registern 0 und 1. Adresse 11
Funktion
Startadresse
03
Anzahl
Prüfsumme CRC
HByte
LByte
HByte
LByte
00
00
00
02
LByte
HByte
(AlleAngaben dezimal.) Die Antwort hat folgenden Aufbau: Adresse
Funktion
Anzahl Bytes
Wert von AE01 Datum [0] Adresse 0
11
03
04
HByte
Prüfsumme CRC Datum [1] Adresse 1
LByte
HByte
LByte
LByte
HByte
Zur gleichzeitigen Abfrage mehrerer REAL-, DINT- oder LONG- Werte muss die Anzahl je Wert um 2 vergrößert werden. Das Antworttelegramm verlängert sich um 4 Bytes je REAL-Wert. Die Umrechnung der 4 Bytes in REAL-Werte ist im nächsten Abschnitt beschrieben.
10
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Datentransfer INTEGER-Werte Zum Lesen von INTEGER-Werten dienen die gleichen Telegramme. Beispiel: Lesen des aktuellen Segmentes des Programmgebers aus Register 803 (0323H). Adresse 11
Funktion 03
Startadresse
Anzahl
Prüfsumme CRC
HByte
LByte
HByte
LByte
03H
23H
00
01
LByte
HByte
Die Antwort hat folgenden Aufbau: Adresse
Funktion
Anzahl Bytes
Wert des Segments
Prüfsumme CRC
Datum [0] Adresse 803 11
03
02
HByte
LByte
LByte
HByte
Zur gleichzeitigen Abfrage mehrerer INT-Werte muss die Anzahl je Wert um 1 vergrößert werden. Das Antworttelegramm verlängert sich um 2 Bytes je REAL-Wert. Es ist grundsätzlich möglich, REAL- und INT-Werte in einem Telegramm abzufragen. Bei der Auswertung der Antwort muss dann die unterschiedliche Byte-Anzahl je Wert berücksichtigt werden.
3.7.3
Funktion 05
Diese Funktion dient zum Setzen eines einzelnen Binär-Wertes. Wird die Broadcast-Adresse „0" benutzt, so reagieren alle angeschlossenen Regler darauf. Beispiel: Setzen von Binär-Ausgang BA76 (Adresse 266 = 10AH) Adresse 11
Funktion 05
Adresse
Wert
Prüfsumme CRC
HByte
LByte
HByte
LByte
01H
0AH
FFH
01
LByte
HByte
Zum Setzen eines Binärwertes wird in HByte des Wertes grundsätzlich FFH zum Rücksetzen 00H gesendet. LByte des Wertes ist immer 0. Als Antwort wird das Telegramm komplett zurückgesendet, nachdem der Befehl vollzogen wurde.
3.7.4
Funktion 06
Diese Funktion dient zum Schreiben eines einzelnen Registers. Zur Änderung eines analogen Wertes müssen nacheinander zwei derartige Telegramme in zwei aufeinanderfolgende Adressen (Register) gesendet werden. Wird die Broadcast-Adresse „0" benutzt, so reagieren alle angeschlossenen Regler darauf. Beispiel: Schreiben des Computer-Sollwertes für L1 (Adresse 228 + 229 = F4H + F5H) Adresse
Funktion
Adresse
11
06
00
Wert Datum [0] 228 = F5H
HByte
Prüfsumme CRC LByte
LByte
HByte
Als Anwort wird das komplette Telegramm zurückgesendet, nachdem der erste Teilwert im Regler gespeichert wurde. Das zweite Telegramm folgt mit folgendem Aufbau:
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
11
Datentransfer Adresse
Funktion
Adresse
11
06
00
Wert Datum [1] 229 = F5H
HByte
Prüfsumme CRC LByte
LByte
HByte
Auch dieses Telegramm wird als Bestätigung zurückgesendet.
3.7.5
Funktion 08
Diese Funktion dient zur Diagnose der Kommunikation. Details werden später dokumentiert.
3.7.6
Funktion 15
Diese Funktion dient zum Setzen von mehreren aufeinanderfolgenden binären Werten in den Reglern. Wird die Broadcast-Adresse „0" benutzt, so gelten die Werte für alle Regler. Beispiel: Setzen der Binärausgänge BA11 bis BA26 (Adressen 225 bis 236 = E1H bis EBH). Adresse
Funktion
Startadresse
Anzahl
11
15
00
00
E1H
0BH
Anzahl Bytes
Datum 1
Datum 2
Prüfsumme CRC
2
x
y
Lbyte
HByte
Datum 1 setzt die Binärausgänge BA11 bis BA22 (der Status kann „0" oder „1" sein). Bit
7
6
5
4
3
2
1
0
Adresse
232
231
230
229
228
227
226
225
BE..
22
21
16
15
14
13
12
11
Status x= Datum 2 setzt die restlichen Binärausgänge. (Der Status kann „0" oder „1" sein. Die unbenutzten Bits müssen immer „0" sein.) Bit
7
3
2
1
0
Adresse
236
235
234
233
BE..
26
25
24
23
Status
3.7.7
0
6
0
5
0
4
0
Funktion 16
Diese Funktion dient zum Setzen von mehreren aufeinanderfolgenden analogen Werten in den Reglern. Wird die Broadcast-Adresse 0 benutzt, so gelten die Werte für alle Regler. Es können maximal 60 Register oder 30 REAL-Werte mit einem Telegramm geschrieben werden. Für einen Wert hat das Telegramm folgenden Aufbau: Adr.
Funkt. Startadresse
Anzahl
Anzahl
REAL-Wert [1] Datum [0]
11
12
16
HByte LByte HByte LByte Byte
Prüfsumme Datum [1]
CRC
HByte LByte HByte LByte LByte HByte
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Datentransfer Jeder REAL-Wert wird in 2 Register (Datum [0] und Datum [1]) mit insgesamt 4 Bytes übertragen. Für jeden zusätzlichen Wert ist die Anzahl um „2" und Zahl der Bytes um „4" zu erhöhen. Integer-Werte werden als ein 16-Bit-Wort (Datum [0]) übertragen. . Adr. 11
Funkt. 16
Startadresse HByte
LByte
Anzahl HByte
Anzahl LByte
Byte
INT-Wert [1]
Prüfsumme
Datum [0]
CRC
HByte
LByte
LByte
HByte
Es ist grundsätzlich möglich, REAL-, INT- und DINT-Werte in einem Telegramm zu verändern. Beim Aufbau der Telegramme ist dann die unterschiedliche Länge der Werte zu beachten. Als Antwort wird das Telegramm ohne die Daten zurückgesendet.
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
13
Wertebereiche 4
Wertebereiche REAL
-1,175.494.35E-38 ... 0 ... 3,402.823.47 E+39 werden in 2 Registern (= 4 Bytes) gespeichert
INT = INT16-32.768 ... 0 ... 32.767 In Protronic/Digitric und IBIS-R werden weitere Datentypen benutzt: DINT, LONG und TIME sind vom Typ INT32.
14
DINT
-2.147.483.647 ... 0 ... 2.147.483.647
LONG
0 ... 4.294.967.294 (Zeit in ms)
BOOL
0 und 1
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Berechnung der Daten 5
Berechnung der Daten 5.1 INT-, DINT-, LONG-Werte INT- und DINT- Werte benötigen keine spezielle Umrechnung. INT-Werte werden als einzelnes Register (= 2 Bytes) gelesen und geschrieben, DINT- und LONG Werte als Folge von zwei Registern (= 4 Bytes) gelesen oder geschrieben.
5.2 REAL-Werte Das MODBUS-Protokoll sieht nur 16-Bit vorzeichenbehaftete Ganzahlen als Übertragungswerte vor. Die REAL-Zahlen des Reglers müssen daher entsprechend aufbereitet werden. Das in den Reglern verwendete IEEE-Format entspricht dem in den PCs verwendetem Format. |-----data[1]--------|------data[0]------| 31.30....23.22....16|15.................0 +-----------+---------------------------+ |s 8 bits |msb 23 bit mantisse lsb | +-----------+---------------------------+ | | | | | +-------------Mantisse | +---------------------------Exponent (7fh) +---------------------------------Sign-Bit (0=Pos,1=Neg) Der wahre Exponent-Wert ist der Exponent minus 7Fh für das IEEE 4 byte REAL-Format. Je nach der im PC verwendeten Programmiersprache kann direkt oder indirekt auf die einzelnen Bytes der REAL-Werte zugegriffen werden. Für Rechnersysteme, die ein anderes Zahlenformat verwenden oder keinen Zugriff auf die einzelnen Bestandteile der REAL-Werte zulassen, sind im Anhang Beispielprogramme in C und Basic zur Wandlung von REAL-Zahlen in das Byt-Muster des IEEE-Formates angegeben. Für die Datenübertragung stehen zwei Datenformate zur Verfügung, die sich nur in der Genauigkeit des Zahlenwertes unterscheiden. Je nachdem welches dieser beiden Verfahren verwendet werden soll, sind die Variablen-Adressen auszuwählen.
5.2.1
Pair of Registers-Verfahren
Um auch Gleitkomma-Zahlen in der maximalen Genauigkeit übertragen zu können, ist auf dem Protronic/ Digitric ein neues Verfahren zum Übertragen eines 32-Bit-Wertes implementiert worden. Das Pair of Register Verfahren wird auch vom ABB-Leitsystem Freelance unterstützt. Dabei werden REAL-Werte (4 Byte IEEE-Format) in zwei aufeinander folgenden 16-Bit-Registern übertragen, d.h. die 4 aufeinanderfolgenden Bytes die eine REAL-Zahl darstellen werden in 2 x 2 Bytes getrennt, es findet keine Konvertierung von Formaten statt. Register mit gerader Adresse übertragen das niederwertige WORD, Register mit ungerader Adresse (gerade + 1) das höherwertige WORD (16-Bit-Register). Um die Konsistenz der Darstellung zu erhalten, müssen bei der Übertragung eines 32-Bit-Wertes stets beide Register aufeinanderfolgend übertragen werden:
data[0] low word HB
LB gerade
42/62-50040 DE
data[1] hi word HB
LB
gerade+1
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
15
Berechnung der Daten 5.2.2
Senden eines Pairs of Registers an Protronic/Digitric
Bildungsvorschrift für die Aufspaltung eines (4 Byte IEEE) REAL-Wertes in 2 Registerwerten à 16-Bit, wobei in data[0] der zu schreibende Wert des geraden Registers, in data[1] der des ungeraden Registers enthalten ist: Das nachfolgende Programm greift direkt auf den im PC im IEEE-Format verfügbaren Wert *pdata zu. Beispiel: Wert = 133,5 int data[2]; unsigned long *pdata; float wert; wert pdata data[0] data[1]
= = = =
133.5; (void *)&wert; (unsigned)(*pdata & 0xFFFF); (unsigned)(*pdata >>16);
Diese Werte müssen mit zwei direkt aufeinanderfolgenden Telegrammen mit der Funktion 06 oder einem Telegramm mit der Funktion 16 gesendet werden. Dabei muss data[0] immer vor data[1] gesendet werden.
5.2.3
Lesen eines Pairs of Registers aus Protronic/Digitric
In den dafür vorgesehenen MODBUS-Adressen stehen die Werte in der Mantisse-Exponent-Darstellung zum Lesen bereit. Mit einen Telegramm mit der Funktion 03 können die Werte ausgelesen werden. Bildungsvorschrift für das Zusammenfügen von 2 Registerwerten à 16-Bit in ein (4 Byte IEEE) REALWert, wobei in data[0] der gelesene Wert des geraden Registers, in data[1] der des ungeraden Registers enthalten ist: float int
*ptrReal data[2]
ptrReal = (float *)&data[0]
5.3 Exponent-Mantisse-Format Dieses Verfahren wird auch von den Reglern Contric CM1 und C1 und von dem ABB-Leitsystem Freelance benutzt. Aus dem für REAL angegeben Wertebereich können mit diesem Verfahren folgende Werte übertragen werden: +0,0001 to +3.2767 E38 -0,000 to -3.2768 E38 und der Wert 0. Das Vorzeichen des Wertes ist in der Mantisse enthalten. 8000H......FFFFH ...0000H......7FFFH -32.768 -1 0 32.767 Mantisse und Exponent werden jeweils als ein Register (16-Bit) gelesen und geschrieben. Beispiele: Wert 65432 12345 -1234 1234 123.4 12.34 1.234 0.1234 0.01234 0.001234 0.0001234
16
Exponent 5 5 4 4 3 2 1 0 0 0 0
Mantisse 6543 12345 -1234 1234 1234 1234 1234 1234 123 12 1
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Berechnung der Daten 5.3.1
Senden von Mantisse und Exponent an Protronic/Digitric
Bildungsvorschriften für die Aufspaltung eines (4 Byte IEEE) REAL-Wertes in 2 Registerwerten à 16-Bit (Mantisse und Exponent): exponent = 0 while (abs(realwert) >= 1.0 ) { realwert = realwert / 10 exponent = exponent + 1 } realwert = realwert * 10000.0 wert = (int)realwert // Rundungsfehler berücksichtigen if (wert > 0) wert = wert + 0.5; else wert = wert - 0.5; mantisse = (int)wert; data[0] = mantisse data[1] = exponent Diese Werte müssen mit zwei Telegrammen mit der Funktion 05 oder einem Telegramm mit der Funktion 15 gesendet werden. Dabei muss die Mantisse immer vor dem Exponent gesendet werden.
5.3.2
Lesen von Mantisse und Exponent aus Protronic/Digitric
In den dafür vorgesehenen MODBUS-Adressen stehen die Werte in der Mantisse-Exponent-Darstellung zum Lesen bereit. Mit einen Telegramm mit der Funktion 03 können die Werte ausgelesen werden. Bildungsvorschrift für das Zusammenfügen von 2 16-Bit-Registerwerten (Mantisse und Exponent) in ein (4 Byte IEEE) REAL-Wert: realwert = mantisse realwert = realwert / 10000.0 for(i=0;i < exponent; i=i+1) realwert = realwert * 10.0
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
17
Zuordnung der Variablen der Protronic/Digitric-Regler zu MODBUS-Registern 6
Zuordnung der Variablen der Protronic/Digitric-Regler zu MODBUS-Registern Die Zuordnung der einzelnen Parameter und dynamischen Größen zu den Registern ist in den Listen im Anhang dieser Dokumentation angegeben. Alle Registernummern sind in dezimaler Schreibwesie notiert. Die verschiedenen Register lassen sich in 3 Bereiche unterteilen.
6.1 Globale Variable Für das Lesen bzw. Schreiben globaler Variablen sind die Register 0-2000 reserviert. Zum Lesen und Schreiben von 32-Bit-Werten wird das Pair of Register-Verfahren angewandt. Die Tabelle mit der Beschreibung der einzelnen Variablen befindet sich im Anhang. Falls die Werte im Exponent/Mantisse-Verfahren gelesen werden sollen (ab Firmware 1.149), so ist ein Offset von 2000 auf das jeweilige Register zu addieren (Register 2000-4000).
6.2 Online-Parameter (ab FW 1.149) Online Parameter sollten nur azyklisch gelesen bzw. geschrieben werden. Für das Lesen bzw. Schreiben lokaler OnlineParameter mit dem Pair of Register-Verfahren sind die Register 10000-20000 reserviert. Falls die Werte im Exponent/Mantisse Verfahren gelesen werden sollen, so ist ein Offset von 10000 auf das jeweilige Register zu addieren (Register 20000-30000). Dabei werden die Parameter entsprechend der Gebrauchsanweisung (42/62-50012) wie folgt interpretiert: Geräte Parameter Tabellenwerte: 10000 - 10999 (Bildungsvorschrift: 10000 + 2 × Parameter-Nummer) Onlineparameter Loop 1: 11000 - 11999 Onlineparameter Loop 2: 12000 - 12999 Onlineparameter Loop 3: 13000 - 13999 Onlineparameter Loop 4: 14000 - 14999 (Bildungsvorschrift: 10000 + Loop × 1000 + 2 × Parameternummer) L1_Kp hat Nummer 1 Adresse = 10000 + 1 × 1000 + 2 × 1 = 11002 Programme 1..10 P1 : 15000 - 15199 P2 : 15200 - 15399 .... P10 : 16800 - 16999 (Bildungsvorschrift: 15000 + (Prg - 1) × 200 + 2 × Parameternummer)
6.3 Spezial Register Tastatur-Fernbedienung: Register 900. Folgende Hexwerte simulieren einen Tastendruck; es kann jeweils nur ein Code an das Register 900 übergeben werden: TASTE ENTER TASTE MENU TASTE IND TASTE LOOP TASTE SPW TASTE MAC TASTE LEFT TASTE RIGHT TASTE DOWN TASTE UP
18
0x0200 0x0100 0x0080 0x0040 0x0020 0x0010 0x0008 0x0004 0x0002 0x0001
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 1 7 7.1
Anhang 1 MODBUS-Register-Tabelle globale Variablen REAL, INT, DINT, LONG
Register
Kurzbezeichnung
Datentyp
Beschreibung
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58
.AE01 .AE02 .AE11 .AE12 .AE13 .AE14 .AE21 .AE22 .AE23 .AE24 .AE31 .AE32 .AE33 .AE34 .AE41 .AE42 .AE43 .AE44 .AE51 .AE52 .AE53 .AE54 .AE61 .AE62 .AE63 .AE64 .AE71 .AE72 .AE73 .AE74
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL
Grundgerät Analogeingang 1 Grundgerät Analogeingang 2 Slot 1 Analogeingang 1 Slot 1 Analogeingang 2 Slot 1 Analogeingang 3 Slot 1 Analogeingang 4 Slot 2 Analogeingang 1 Slot 2 Analogeingang 2 Slot 2 Analogeingang 3 Slot 2 Analogeingang 4 Slot 3 Analogeingang 1 Slot 3 Analogeingang 2 Slot 3 Analogeingang 3 Slot 3 Analogeingang 4 Slot 4 Analogeingang 1 Slot 4 Analogeingang 2 Slot 4 Analogeingang 3 Slot 4 Analogeingang 4 Slot 5 Analogeingang 1 Slot 5 Analogeingang 2 Slot 5 Analogeingang 3 Slot 5 Analogeingang 4 Slot 6 Analogeingang 1 Slot 6 Analogeingang 2 Slot 6 Analogeingang 3 Slot 6 Analogeingang 4 Slot 7 Analogeingang 1 Slot 7 Analogeingang 2 Slot 7 Analogeingang 3 Slot 7 Analogeingang 4
60 - 69
nicht belegt
70 72 74 76
.AA01 .AA11 .AA12 .AA13
REAL REAL REAL REAL
Grundgerät Analogausgang 1 Slot 1 Analogausgang 1 Slot 1 Analogausgang 2 Slot 1 Analogausgang 3
78 - 79
nicht belegt
80 82 84
.AA21 .AA22 .AA23
REAL REAL REAL
Slot 2 Analogausgang 1 Slot 2 Analogausgang 2 Slot 2 Analogausgang 3
86 - 87
nicht belegt
88 90 92
.AA31 .AA32 .AA33
REAL REAL REAL
Slot 3 Analogausgang 1 Slot 3 Analogausgang 2 Slot 3 Analogausgang 3
94 - 95
nicht belegt
96 98 100
.AA41 .AA42 .AA43
REAL REAL REAL
Slot 4 Analogausgang 1 Slot 4 Analogausgang 2 Slot 4 Analogausgang 3
102 - 103
nicht belegt
104 106 108
.AA51 .AA52 .AA53
REAL REAL REAL
Slot 5 Analogausgang 1 Slot 4 Analogausgang 2 Slot 4 Analogausgang 3
110 - 111
nicht belegt
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
19
Anhang 1 Register
Kurzbezeichnung
Datentyp Beschreibung
112 114 116
.AA61 .AA62 .AA63
REAL REAL REAL
Slot 6 Analogausgang 1 Slot 6 Analogausgang 2 Slot 6 Analogausgang 3
118 - 119
nicht belegt
120 122 124
.AA71 .AA72 .AA73
REAL REAL REAL
Slot 7 Analogausgang 1 Slot 7 Analogausgang 2 Slot 7 Analogausgang 3
126 - 149
nicht belegt
150 152 154 156 158 160 162 164 166 168 170 172 174 176 178 180 182 184 186 188 190 192 194
.L1_ES1 .L1_ES2 .L1_ES3 .L1_ES4 .L1_ES5 .L1_WAKT .L1_YTRACK .L1_XDIGI .L1_XANA .L1_D .L1_XW .L1_WANA .L1_WDIGI .L1_K1 .L1_K2 .L1_K3 .L1_K4 .L1_PID_Y_OUT .L1_XW_EU .L1_XW_PRZ .L1_YMAX .L1_YMIN .L1_TIME_DPS_MAN
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL DINT
196 198 200 202 204 206 208 210 212 214 216
.L1_YHAND .L1_KP_STEUER .L1_KS_STEUER .L1_TN_STEUER .L1_TV_STEUER .L1_Y0_STEUER .L1_TT_STEUER .L1_T1_STEUER .L1_PID_I_OUT .L1_PID_D_OUT .L1_YIN
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL
allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang Aktueller Sollwert Analogeingang für Tracking Digitalanzeige x Analoganzeige x Wert zum D-Teil Regelabweichung Xw Analoganzeige w Digitalanzeige w Konstante K1 Konstante K2 Konstante K3 Konstante K4 Ausgang des PID-Reglers Regelabweichnung in EU Regelabweichung in % Stellgrenze Max. Stellgrenze Min. Stellzeit für Schrittregler: positiv = mehr, negativ = weniger Stellwert Hand Parametersteuerung Kp Parametersteuerung Ks Parametersteuerung Tn Parametersteuerung Tv Parametersteuerung Y0 Parametersteuerung Tt Parametersteuerung T1 Integrator des Regelmoduls D-Ausgang des Regelmoduls Analogeongang für y-extern
218 - 223
nicht belegt
224
.L1_BA_YOUT
REAL
Stellgrad des Zweipunktreglers als 0...100 %
226
.INDS_LOOP1
INT
Anzeigeschleife-Position
227
nicht belegt
228 230 232 234 236 238 240 242
.L1_WCOMPUTER .L1_WSOLL0 .L1_WSOLL1 .L1_WSOLL2 .L1_WSOLL3 .L1_WW .L1_V .L1_VISTDIGI
REAL REAL REAL REAL REAL REAL REAL REAL
Computer-Sollwert Ziel-Sollwert 1 Ziel-Sollwert 2 Ziel-Sollwert 3 Ziel-Sollwert 4 wirksamer Sollwert Verhältnis-Sollwert Anzeigewert Verhältnis-Istwert
244 - 247
nicht belegt
20
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 1 Register
Kurzbezeichnung
Datentyp
Beschreibung
248 250 252 254 256 258 260 262 264 266 268 270 272 274 276 278 280 282 284 286 288 290 292 294 296
.L1_LAMBDA .L1_XANA_SKAL .L1_WANA_SKAL .L1_YCOMPUTER .L1_W_FOLGE .L1_YMIN_BR .L1_YMAX_BR .L1_YMIN_HR .L1_YMAX_HR .L1_WEXT .L1_SKALV .L1_R1 .L1_R2 .L1_R3 .L1_R4 .L1_R5 .L1_R6 .L1_R7 .L1_R8 .L1_T1 .L1_T2 .L1_D1 .L1_D2 .L1_D3 .L1_D4
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL LONG LONG LONG LONG LONG LONG
ohne Funktion skalierter Wert für X-Anzeige skalierter Wert für W-Anzeig Stellgröße bei DDC Sollwert für Folgeregler bei Kask. Y-Min-Auswahl Begrenzungsregler Override Y-Max-Auswahl Begrenzungsregler Override Y-Min-Auswahl Hauptregler Override Y-Max-Auswahl Hauptregler Override Externer Sollwert Skalierungsfaktor bei Last-Luftregelung freie REAL-Variable freie REAL-Variable freie REAL-Variable freie REAL-Variable freie REAL-Variable freie REAL-Variable freie REAL-Variable freie REAL-Variable freie LONG (Time) Variable freie LONG (Time) Variable freie LONG (DINT) Variable freie LONG (DINT) Variable freie LONG (DINT) Variable freie LONG (DINT) Variable
297 - 299
nicht belegt
300 302 304 306 308 310 312 314 316 318 320 322 324 326 328 330 332 334 336 338 340 342 344
.L2_ES1 .L2_ES2 .L2_ES3 .L2_ES4 .L2_ES5 .L2_WAKT .L2_YTRACK .L2_XDIGI .L2_XANA .L2_D .L2_XW .L2_WANA .L2_WDIGI .L2_K1 .L2_K2 .L2_K3 .L2_K4 .L2_PID_Y_OUT .L2_XW_EU .L2_XW_PRZ .L2_YMAX .L2_YMIN .L2_TIME_DPS_MAN
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL DINT
346 348 350 352 354 356 358 360 362 364 366
.L2_YHAND .L2_KP_STEUER .L2_KS_STEUER .L2_TN_STEUER .L2_TV_STEUER .L2_Y0_STEUER .L2_TT_STEUER .L2_T1_STEUER .L2_PID_I_OUT .L2_PID_D_OUT .L2_YIN
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL
allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang Aktueller Sollwert Analogeingang für Tracking Digitalanzeige x Analoganzeige x Wert zum D-Teil Regelabweichung Xw Analoganzeige w Digitalanzeige w Konstante K1 Konstante K2 Konstante K3 Konstante K4 Ausgang des PID-Reglers Regelabweichnung in EU Regelabweichung in % Stellgrenze Max. Stellgrenze Min. Stellzeit für Schrittregler: positiv = mehr, negativ = weniger Stellwert Hand Parametersteuerung Kp Parametersteuerung Ks Parametersteuerung Tn Parametersteuerung Tv Parametersteuerung Y0 Parametersteuerung Tt Parametersteuerung T1 Integrator des Regelmoduls D-Ausgang des Regelmoduls Analogeongang für y-extern
368 - 373
nicht belegt
374
.L2_BA_YOUT
REAL
Stellgrad des Zweipunktreglers als 0...100 %
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
21
Anhang 1 Register
Kurzbezeichnung
Datentyp
Beschreibung
376
.INDS_LOOP2
INT
Anzeigeschleife-Position
377
nicht belegt
378 380 382 384 386 388 390 392
.L2_WCOMPUTER .L2_WSOLL0 .L2_WSOLL1 .L2_WSOLL2 .L2_WSOLL3 .L2_WW .L2_V .L2_VISTDIGI
REAL REAL REAL REAL REAL REAL REAL REAL
Computer-Sollwert Ziel-Sollwert 1 Ziel-Sollwert 2 Ziel-Sollwert 3 Ziel-Sollwert 4 wirksamer Sollwert Verhältnis-Sollwert Verhältnis-Istwert
394 - 397
nicht belegt
398 400 402 404 406 408 410
.L2_LAMBDA .L2_XANA_SKAL .L2_WANA_SKAL .L2_YCOMPUTER .L2_W_FOLGE .L2_YMIN_BR .L2_YMAX_BR
REAL REAL REAL REAL REAL REAL REAL
ohne Funktion skalierter Wert für X-Anzeige skalierter Wert für W-Anzeig Stellgröße bei DDC Sollwert für Folgeregler bei Kask. Y-Min-Auswahl Begrenzungsregler Override Y-Max-Auswahl Begrenzungsregler Override
411 - 415
nicht belegt
416
.L2_WEXT
REAL
Externer Sollwert
418 - 419
nicht belegt
420 422 424 426 428 430 432 434 436 438 440 442 444 446
.L2_R1 .L2_R2 .L2_R3 .L2_R4 .L2_R5 .L2_R6 .L2_R7 .L2_R8 .L2_T1 .L2_T2 .L2_D1 .L2_D2 .L2_D3 .L2_D4
REAL REAL REAL REAL REAL REAL REAL REAL LONG LONG LONG LONG LONG LONG
freie freie freie freie freie freie freie freie freie freie freie freie freie freie
448 - 449
nicht belegt
450 452 454 456 458 460 462 464 466 468 470 472 474 476 478 480 482 484 486 488 490 492 494 496 498
.L3_ES1 .L3_ES2 .L3_ES3 .L3_ES4 .L3_ES5 .L3_WAKT .L3_YTRACK .L3_XDIGI .L3_XANA .L3_D .L3_XW .L3_WANA .L3_WDIGI .L3_K1 .L3_K2 .L3_K3 .L3_K4 .L3_PID_Y_OUT .L3_XW_EU .L3_XW_PRZ .L3_YMAX .L3_YMIN .L3_TIME_DPS_MAN .L3 YHAND .L3 KP_STEUER
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL DINT REAL REAL
allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang Aktueller Sollwert Analogeingang für Tracking Digitalanzeige x Analoganzeige x Wert zum D-Teil Regelabweichung Xw Analoganzeige w Digitalanzeige w Konstante K1 Konstante K2 Konstante K3 Konstante K4 Ausgang des PID-Reglers Regelabweichnung in EU Regelabweichung in % Stellgrenze Max. Stellgrenze Min. Stellzeit für Schrittregler: positiv = mehr, negativ = weniger Stellwert Hand Parametersteuerung Kp
22
REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable LONG (Time) Variable LONG (Time) Variable LONG (DINT) Variable LONG (DINT) Variable LONG (DINT) Variable LONG (DINT) Variable
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 1 Register
Kurzbezeichnung
Datentyp
Beschreibung
500 502 504 506 508 510 512 514 516
.L3 KS_STEUER .L3_TN_STEUER .L3_TV_STEUER .L3_Y0_STEUER .L3_TT_STEUER .L3_T1_STEUER .L3_PID_I_OUT .L3_PID_D_OUT .L3_YIN
REAL REAL REAL REAL REAL REAL REAL REAL REAL
Parametersteuerung Ks Parametersteuerung Tn Parametersteuerung Tv Parametersteuerung Y0 Parametersteuerung Tt Parametersteuerung T1 Integrator des Regelmoduls D-Ausgang des Regelmoduls Analogeingang Y-Extern
518 - 523
nicht belegt
524
.L3_BA_YOUT
REAL
Stellgrad des Zweipunktreglers als 0
526
.INDS_LOOP3
INT
Anzeigeschleife-Position
527
nicht belegt
528 530 532 534 536 538 540 542
.L3_WCOMPUTER .L3_WSOLL0 .L3_WSOLL1 .L3_WSOLL2 .L3_WSOLL3 .L3_WW .L3_V .L3_VISTDIGI
REAL REAL REAL REAL REAL REAL REAL REAL
Computer-Sollwert Ziel-Sollwert 1 Ziel-Sollwert 2 Ziel-Sollwert 3 Ziel-Sollwert 4 wirksamer Sollwert Verhältnis-Sollwert Verhältnis-Istwert
544 - 547
nicht belegt
548 550 552 554 556 558 560
.L3_LAMBDA .L3_XANA_SKAL .L3_WANA_SKAL .L3_YCOMPUTER .L3_W_FOLGE .L3_YMIN_BR .L3_YMAX_BR
REAL REAL REAL REAL REAL REAL REAL
ohne Funktion skalierter Wert für X-Anzeige skalierter Wert für W-Anzeig Stellgröße bei DDC Sollwert für Folgeregler bei Kask. Y-Min-Auswahl Begrenzungsregler Override Y-Max-Auswahl Begrenzungsregler Override
562- 565
nicht belegt
566
.L3_WEXT
REAL
Externer Sollwert
568 - 569
nicht belegt
570 572 574 576 578 580 582 584 586 588 590 592 594 596
.L3_R1 .L3_R2 .L3_R3 .L3_R4 .L3_R5 .L3_R6 .L3_R7 .L3_R8 .L3_T1 .L3_T2 .L3_D1 .L3_D2 .L3_D3 .L3_D4
REAL REAL REAL REAL REAL REAL REAL REAL LONG LONG LONG LONG LONG LONG
freie freie freie freie freie freie freie freie freie freie freie freie freie freie
598 - 599
nicht belegt
42/62-50040 DE
REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable LONG (Time) Variable LONG (Time) Variable LONG (DINT) Variable LONG (DINT) Variable LONG (DINT) Variable LONG (DINT) Variable
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
23
Anhang 1 Register
Kurzbezeichnung
Datentyp
Beschreibung
600 602 604 606 608 610 612 614 616 618 620 622 624 626 628 630 632 634 636 638 640 642 644
.L4_ES1 .L4_ES2 .L4_ES3 .L4_ES4 .L4_ES5 .L4_WAKT .L4_YTRACK .L4_XDIGI .L4_XANA .L4_D .L4_XW .L4_WANA .L4_WDIGI .L4_K1 .L4_K2 .L4_K3 .L4_K4 .L4_PID_Y_OUT .L4_XW_EU .L4_XW_PRZ .L4_YMAX .L4_YMIN .L4_TIME_DPS_MAN
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL DINT
646 648 650 652 654 656 658 660 662 664 666
.L4 YHAND .L4 KP_STEUER .L4 KS_STEUER .L4_TN_STEUER .L4_TV_STEUER .L4_Y0_STEUER .L4_TT_STEUER .L4_T1_STEUER .L4_PID_I_OUT .L4_PID_D_OUT .L4_YIN
REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL
allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang allgemeiner Eingang Aktueller Sollwert Analogeingang für Tracking Digitalanzeige x Analoganzeige x Wert zum D-Teil Regelabweichung Xw Analoganzeige w Digitalanzeige w Konstante K1 Konstante K2 Konstante K3 Konstante K4 Ausgang des PID-Reglers Regelabweichnung in EU Regelabweichung in % Stellgrenze Max. Stellgrenze Min. Stellzeit für Schrittregler: positiv = mehr negativ = weniger Stellwert Hand Parametersteuerung Kp Parametersteuerung Ks Parametersteuerung Tn Parametersteuerung Tv Parametersteuerung Y0 Parametersteuerung Tt Parametersteuerung T1 Integrator des Regelmoduls D-Ausgang des Regelmoduls Analogeingang Y-Extern
668 - 673
nicht belegt
674
.L4_BA_YOUT
REAL
Stellgrad des Zweipunktreglers als 0
676
.INDS_LOOP4
INT
Anzeigeschleife-Position
677
nicht belegt
678 680 682 684 686 688 690 692
.L4_WCOMPUTER .L4_WSOLL0 .L4_WSOLL1 .L4_WSOLL2 .L4_WSOLL3 .L4_WW .L4_V .L4_VISTDIGI
REAL REAL REAL REAL REAL REAL REAL REAL
Computer-Sollwert Ziel-Sollwert 1 Ziel-Sollwert 2 Ziel-Sollwert 3 Ziel-Sollwert 4 wirksamer Sollwert Verhältnis-Soll Verhältnis-Istwert
694 - 697
nicht belegt
698 700 702 704 706 708 710
.L4_LAMBDA .L4_XANA_SKAL .L4_WANA_SKAL .L4_YCOMPUTER .L4_W_FOLGE .L4_YMIN_BR .L4_YMAX_BR
REAL REAL REAL REAL REAL REAL REAL
ohne Funktion skalierter Wert für X-Anzeige skalierter Wert für W-Anzeig Stellgröße bei DDC Sollwert für Folgeregler bei Kask. Y-Min-Auswahl Begrenzungsregler Override Y-Max-Auswahl Begrenzungsregler Override
712 - 715
nicht belegt
716
.L4_WEXT
REAL
Externer Sollwert
718 - 719
nicht belegt
24
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 1 Register
Kurzbezeichnung
Datentyp
Beschreibung
720 722 724 726 728 730 732 734 736 738 740 742 744 746
.L4_R1 .L4_R2 .L4_R3 .L4_R4 .L4_R5 .L4_R6 .L4_R7 .L4_R8 .L4_T1 .L4_T2 .L4_D1 .L4_D2 .L4_D3 .L4_D4
REAL REAL REAL REAL REAL REAL REAL REAL LONG LONG LONG LONG LONG LONG
freie freie freie freie freie freie freie freie freie freie freie freie freie freie
748 - 749
nicht belegt
750 752 754 756 758
.TAB01 .TAB02 .TAB03 .TAB04 .TAB4AE
REAL REAL REAL REAL REAL
Ausgang Ausgang Ausgang Ausgang Eingang
760 - 769
nicht belegt
770 772
.ZK01 .ZK02
REAL REAL
Ausgang der Zustandskorrektur 1 Ausgang der Zustandskorrektur 2
774 - 794
nicht belegt
795 796 797 798 799 800 801 802 803 804 806
.WW_LOOP1 .WW_LOOP2 .WW_LOOP3 .WW_LOOP4 .A_LOOP .PG_NR_AKT .PG_SCHNELL .PG_NR_SEL .PG_SEG .PG_LAUF .W_P
INT INT INT INT INT INT INT INT INT LONG REAL
Index des ausgewählten Sollwerts Index des ausgewählten Sollwerts Index des ausgewählten Sollwerts Index des ausgewählten Sollwerts Loop in der anzeige (0=Loop 1,...) Nummer des aktiven Programms Laufgeschwindigkeit Programmgeber Nummer des aktuellen Programms 0...9 aktuelles Segment des Programmgebers Laufzeit des Programmgebers seit Start Programmgeber Sollwert
808 - 809
nicht belegt
810 811 812 813 814 815 816
.LATERALNR .LATERAL1 .LATERAL2 .LATERAL3 .LATERAL4 .LATERAL5 .LATERAL6
INT INT INT INT INT INT INT
Adresse Laterale Kommunikation Status Laterale Kommunikation Nr. Status Laterale Kommunikation Nr. Status Laterale Kommunikation Nr. Status Laterale Kommunikation Nr. Status Laterale Kommunikation Nr. Status Laterale Kommunikation Nr.
817 - 819
nicht belegt
42/62-50040 DE
REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable REAL-Variable LONG (Time) Variable LONG (Time) Variable LONG (DINT) Variable LONG (DINT) Variable LONG (DINT) Variable LONG (DINT) Variable
der Tabelle 1 der Tabelle 2 der Tabelle 3 der Tabelle 4 Tabelle 4 für ESx
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
1 2 3 4 5 6
25
Anhang 1 Register
Kurzbezeichnung
Datentyp
Beschreibung
902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933
.INT_01 .INT_02 .INT_03 .INT_04 .INT_05 .INT_06 .INT_07 .INT_08 .INT_09 .INT_10 .INT_11 .INT_12 .INT_13 .INT_14 .INT_15 .INT_16 .INT_17 .INT_18 .INT_19 .INT_20 .INT_21 .INT_22 .INT_23 .INT_24 .INT_25 .INT_26 .INT_27 .INT_28 .INT_29 .INT_30 .INT_31 .INT_32
INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT
freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie freie
INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable INT-Variable
für für für für für für für für für für für für für für für für für für für für für für für für für für für für für für für für
Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation Kommunikation
Liste von wichtigen Registern für eine schnelle Datenübertragung Register
Kurzbezeichnung
Datentyp
Beschreibung
820 822 824 826 828 830
.L1_WW .L1_WAKT .L1_XDIGI .L1_D .L1_XW .L1_PID_Y_OUT
REAL REAL REAL REAL REAL REAL
wirksamer Sollwert aktueller Sollwert Digitalanzeige x Wert zum D-Teil Regelabweichung Xw Ausgang des PID-Reglers
840 842 844 846 848 850
.L2_WW .L2_WAKT .L2_XDIGI .L2_D .L2_XW .L2_PID_Y_OUT
REAL REAL REAL REAL REAL REAL
wirksamer Sollwert aktueller Sollwert Digitalanzeige x Wert zum D-Teil Regelabweichung Xw Ausgang des PID-Reglers
860 862 864 866 868 870
.L3_WW .L3_WAKT .L3_XDIGI .L3_D .L3_XW .L3_PID_Y_OUT
REAL REAL REAL REAL REAL REAL
wirksamer Sollwert aktueller Sollwert Digitalanzeige x Wert zum D-Teil Regelabweichung Xw Ausgang des PID-Reglers
880 882 884 886 888 890
.L4_WW .L4_WAKT .L4_XDIGI .L4_D .L4_XW .L4_PID_Y_OUT
REAL REAL REAL REAL REAL REAL
wirksamer Sollwert aktueller Sollwert Digitalanzeige x Wert zum D-Teil Regelabweichung Xw Ausgang des PID-Reglers
26
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 1 7.2
MODBUS-Coil-Tabelle globale Variablen Boolean
Coil(Status)
Kurzbezeichnung
Datentyp
Beschreibung
0 1 2
.NOCONNECT_B0 .AE01ERR .AE02ERR
BOOL BOOL BOOL
Binär Null Fehler AE01 Fehler AE02
3-10
nicht belegt
11 12 13 14
.AE11ERR .AE12ERR .AE13ERR .AE14ERR
BOOL BOOL BOOL BOOL
Fehler Fehler Fehler Fehler
AE11 AE12 AE13 AE14
15 - 20
nicht belegt
21 22 23 24
.AE21ERR .AE22ERR .AE23ERR .AE24ERR
BOOL BOOL BOOL BOOL
Fehler Fehler Fehler Fehler
AE21 AE22 AE23 AE24
25 - 30
nicht belegt
31 32 33 34
.AE31ERR .AE32ERR .AE33ERR .AE34ERR
BOOL BOOL BOOL BOOL
Fehler Fehler Fehler Fehler
AE31 AE32 AE33 AE34
35 - 40
nicht belegt
41 42 43 44
.AE41ERR .AE42ERR .AE43ERR .AE44ERR
BOOL BOOL BOOL BOOL
Fehler Fehler Fehler Fehler
AE41 AE42 AE43 AE44
45 - 50
nicht belegt
51 52 53 54
.AE51ERR .AE52ERR .AE53ERR .AE54ERR
BOOL BOOL BOOL BOOL
Fehler Fehler Fehler Fehler
AE51 AE52 AE53 AE54
55 - 60
nicht belegt
61 62 63 64
.AE61ERR .AE62ERR .AE63ERR .AE64ERR
BOOL BOOL BOOL BOOL
Fehler Fehler Fehler Fehler
AE61 AE62 AE63 AE64
65 - 70
nicht belegt
71 72 73 74
.AE71ERR .AE72ERR .AE73ERR .AE74ERR
BOOL BOOL BOOL BOOL
Fehler Fehler Fehler Fehler
AE71 AE72 AE73 AE74
75 - 99
nicht belegt
99 100 101 102
.AA01BUE .AA11BUE .AA12BUE .AA13BUE
BOOL BOOL BOOL BOOL
Fehler Fehler Fehler Fehler
AA01 AA11 AA12 AA13
103 - 104
nicht belegt
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
27
Anhang 1 Coil(Status)
Kurzbezeichnung
Datentyp
Beschreibung
105 106 107
.AA21BUE .AA22BUE .AA23BUE
BOOL BOOL BOOL
Fehler AA21 Fehler AA22 Fehler AA23
108
nicht belegt
109 110 111
.AA31BUE .AA32BUE .AA33BUE
BOOL BOOL BOOL
Fehler AA31 Fehler AA32 Fehler AA33
112
nicht belegt
113 114 115
.AA41BUE .AA42BUE .AA43BUE
BOOL BOOL BOOL
Fehler AA41 Fehler AA42 Fehler AA43
116
nicht belegt
117 118 119
.AA51BUE .AA52BUE .AA53BUE
BOOL BOOL BOOL
Fehler AA51 Fehler AA52 Fehler AA53
120
nicht belegt
121 122 123
.AA61BUE .AA62BUE .AA63BUE
BOOL BOOL BOOL
Fehler AA61 Fehler AA62 Fehler AA63
124
nicht belegt
125 126 127
.AA71BUE .AA72BUE .AA73BUE
BOOL BOOL BOOL
Fehler AA71 Fehler AA72 Fehler AA73
128 - 150
nicht belegt
28
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 1 Coil(Status)
Kurzbezeichnung
Datentyp
Beschreibung
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
.BE01 .BE02 .BE03 .BE04 .BE11 .BE12 .BE13 .BE14 .BE15 .BE16 .BE21 .BE22 .BE23 .BE24 .BE25 .BE26 .BE31 .BE32 .BE33 .BE34 .BE35 .BE36 .BE41 .BE42 .BE43 .BE44 .BE45 .BE46 .BE51 .BE52 .BE53 .BE54 .BE55 .BE56 .BE61 .BE62 .BE63 .BE64 .BE65 .BE66 .BE71 .BE72 .BE73 .BE74 .BE75 .BE76
BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL
Binäreingang01 Binäreingang02 Binäreingang03 Binäreingang04 Binäreingang11 Binäreingang12 Binäreingang13 Binäreingang14 Binäreingang15 Binäreingang16 Binäreingang21 Binäreingang22 Binäreingang23 Binäreingang24 Binäreingang25 Binäreingang26 Binäreingang31 Binäreingang32 Binäreingang33 Binäreingang34 Binäreingang35 Binäreingang36 Binäreingang41 Binäreingang42 Binäreingang43 Binäreingang44 Binäreingang45 Binäreingang46 Binäreingang51 Binäreingang52 Binäreingang53 Binäreingang54 Binäreingang55 Binäreingang56 Binäreingang61 Binäreingang62 Binäreingang63 Binäreingang64 Binäreingang65 Binäreingang66 Binäreingang71 Binäreingang72 Binäreingang73 Binäreingang74 Binäreingang75 Binäreingang76
197 - 220
nicht belegt
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
29
Anhang 1 Coil(Status)
Kurzbezeichnung
Datentyp
Beschreibung
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 - 289
.BA01 .BA02 .BA03 .BA04 .BA11 .BA12 .BA13 .BA14 .BA15 .BA16 .BA21 .BA22 .BA23 .BA24 .BA25 .BA26 .BA31 .BA32 .BA33 .BA34 .BA35 .BA36 .BA41 .BA42 .BA43 .BA44 .BA45 .BA46 .BA51 .BA52 .BA53 .BA54 .BA55 .BA56 .BA61 .BA62 .BA63 .BA64 .BA65 .BA66 .BA71 .BA72 .BA73 .BA74 .BA75 .BA76 nicht belegt
BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL
Binärausgang01 Binärausgang02 Binärausgang03 Binärausgang04 Binärausgang11 Binärausgang12 Binärausgang13 Binärausgang14 Binärausgang15 Binärausgang16 Binärausgang21 Binärausgang22 Binärausgang23 Binärausgang24 Binärausgang25 Binärausgang26 Binärausgang31 Binärausgang32 Binärausgang33 Binärausgang34 Binärausgang35 Binärausgang36 Binärausgang41 Binärausgang42 Binärausgang43 Binärausgang44 Binärausgang45 Binärausgang46 Binärausgang51 Binärausgang52 Binärausgang53 Binärausgang54 Binärausgang55 Binärausgang56 Binärausgang61 Binärausgang62 Binärausgang63 Binärausgang64 Binärausgang65 Binärausgang66 Binärausgang71 Binärausgang72 Binärausgang73 Binärausgang74 Binärausgang75 Binärausgang76 positive Flanke schaltet die Anzeige (Ind) um auf:
290 291
.STEPS_B .STEPS_F
BOOL BOOL
vorherige Anzeige nächste Anzeige
292
nicht belegt
293 294 295 296 297 298 299
.STEPW_F .SLH_LOOP1 .SLH_LOOP2 .SLH_LOOP3 .SLH_LOOP4 .POS_WW .POS_Y
BOOL BOOL BOOL BOOL BOOL BOOL BOOL
Sollwert Kanal 1 Kanal 2 Kanal 3 Kanal 4 wirksamer Sollwert Stellwert
300
.REMOTE
BOOL
Reglerfernbedienung über RS-232/485
301 302 303 304 305 306
.FLAG_1 .FLAG_2 .FLAG_3 .FLAG_4 .FLAG_5 .FLAG_6
BOOL BOOL BOOL BOOL BOOL BOOL
Display-Flag Display-Flag Display-Flag Display-Flag Display-Flag Display-Flag
307 - 308
nicht belegt
30
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
1 2 3 4 5 6
für für für für für für
SBG SBG SBG SBG SBG SBG
42/62-50040 DE
Anhang 1 Coil(Status)
Kurzbezeichnung
Datentyp Beschreibung
309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 331 332 333 334 335 336 337 338 339 340 341
.PG_BETRIEB .MACCOUNT .COMAKTIV .WW_UM .CAS_TRACK .PG_RESET .PRG_ENDE .PRG_BA1 .PRG_BA2 .PRG_BA3 .PRG_BA4 .L1_B1 .L1_A_VORB .L1_M_VORB .L1_C_VORB .L1_BETART_UM .L1_REGLER_AUTO .L1_REGLER_MAN .L1_REGLER_C .L1_HAND_M .L1_HAND_W .L1_W_STATUS .L1_V_F .L1_GW1_OUT .L1_GW2_OUT .L1_GW3_OUT .L1_GW4_OUT .L1_PID_PS .L1_SPAKTIV .L1_MAN_AUTO .L1_MAN_CAS .L1_WEXT_AKTIV
BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL
1 = Programmgeber läuft interner Zeitzähler für BA-Umschaltung 1 solange Kommunikation ohne Unterbrechung reserviert Tracking des Führungsreglers wenn nicht Kaskade Programmgeber Reset Binärausgang, Programm beendet Binärausgang 1 des Programmgebers Binärausgang 2 des Programmgebers Binärausgang 3 des Programmgebers Binärausgang 4 des Programmgebers Umschaltung ES1/ES2 in Festwert ES Automatik vorbereitet Hand vorbereitet Cascade vorbereitet Eingang für BA-Umschaltung Setze Regler auf Automatik Setze Regler auf Hand Setze Regler auf Cascade Schrittregler Ausgang „mehr“ Schrittregler Ausgang „weniger“ Sollwert Status Status: Festwert/Verhältnis Ausgang Grenzwertübergang 1 Ausgang Grenzwertübergang 2 Ausgang Grenzwertübergang 3 Ausgang Grenzwertübergang 4 Umschaltsignal Parametersatz 1 2 1 solange Selbstparametrierung aktiv 1 wenn Hand oder Automatik 1 wenn Hand oder Kaskade 1 wenn externer Sollwert angewählt
342 - 359
nicht belegt
360 361 362 363 364 365 366 367 368 369 371 372 373 374 375 376 377 378 379 380 381
.L2_B1 .L2_A_VORB .L2_M_VORB .L2_C_VORB .L2_BETART_UM .L2_REGLER_AUTO .L2_REGLER_MAN .L2_REGLER_C .L2_HAND_M .L2_HAND_W .L2_W_STATUS .L2_V_F .L2_GW1_OUT .L2_GW2_OUT .L2_GW3_OUT .L2_GW4_OUT .L2_PID_PS .L2_SPAKTIV .L2_MAN_AUTO .L2_MAN_CAS .L2_WEXT_AKTIV
BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL
Umschaltung ES1/ES2 in Festwert ES Automatik vorbereitet Hand vorbereitet Cascade vorbereitet Eingang für BA-Umschaltung Setze Regler auf Automatik Setze Regler auf Hand Setze Regler auf Cascade Schrittregler Ausgang „mehr“ Schrittregler Ausgang „weniger“ Sollwertstatus Status: Festwert/Verhältnis Ausgang Grenzwertübergang 1 Ausgang Grenzwertübergang 2 Ausgang Grenzwertübergang 3 Ausgang Grenzwertübergang 4 Umschaltsignal Parametersatz 1 2 1 solange Selbstparametrierung aktiv 1 wenn Hand oder Automatik 1 wenn Hand oder Kaskade 1 wenn externer Sollwert angewählt
382 - 399
nicht belegt
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
31
Anhang 1 Coil(Status)
Kurzbezeichnung
Datentyp
Beschreibung
400 401 402 403 404 405 406 407 408 409 411 412 413 414 415 416 417 418 419 420 421
.L3_B1 .L3_A_VORB .L3_M_VORB .L3_C_VORB .L3_BETART_UM .L3_REGLER_AUTO .L3_REGLER_MAN .L3_REGLER_C .L3_HAND_M .L3_HAND_W .L3_W_STATUS .L3_V_F .L3_GW1_OUT .L3_GW2_OUT .L3_GW3_OUT .L3_GW4_OUT .L3_PID_PS .L3_SPAKTIV .L3_MAN_AUTO .L3_MAN_CAS .L3_WEXT_AKTIV
BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL
Umschaltung ES1/ES2 in Festwert ES Automatik vorbereitet Hand vorbereitet Cascade vorbereitet Eingang für BA-Umschaltung Setze Regler auf Automatik Setze Regler auf Hand Setze Regler auf Cascade Schrittregler Ausgabg „mehr“ Schrittregler Ausgabg „weniger“ Sollwert-Status Status: Festwert/Verhältnis Ausgang Grenzwertübergang 1 Ausgang Grenzwertübergang 2 Ausgang Grenzwertübergang 3 Ausgang Grenzwertübergang 4 Umschaltsignal Parametersatz 1 2 1 solange Selbstparametrierung aktiv 1 wenn Hand oder Automatik 1 wenn Hand oder Kaskade 1 wenn externer Sollwert angewählt
422 - 439
nicht belegt
440 441 442 443 444 445 446 447 448 449 451 452 453 454 455 456 457 458 459 460 461
.L4_B1 .L4_A_VORB .L4_M_VORB .L4_C_VORB .L4_BETART_UM .L4_REGLER_AUTO .L4_REGLER_MAN .L4_REGLER_C .L4_HAND_M .L4_HAND_W .L4_W_STATUS .L4_V_F .L4_GW1_OUT .L4_GW2_OUT .L4_GW3_OUT .L4_GW4_OUT .L4_PID_PS .L4_SPAKTIV .L4_MAN_AUTO .L4_MAN_CAS .L4_WEXT_AKTIV
BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL
Umschaltung ES1/ES2 in Festwert ES Automatik vorbereitet Hand vorbereitet Cascade vorbereitet Eingang für BA-Umschaltung Setze Regler auf Automatik Setze Regler auf Hand Setze Regler auf Cascade Schrittregler Ausgang „mehr“ Schrittregler Ausgang „weniger“ Sollwert-Status Status: Festwert/Verhältnis Ausgang Grenzwertübergang 1 Ausgang Grenzwertübergang 2 Ausgang Grenzwertübergang 3 Ausgang Grenzwertübergang 4 Umschaltsignal Parametersatz 1 2 1 solange Selbstparametrierung aktiv 1 wenn Hand oder Automatik 1 wenn Hand oder Kaskade 1 wenn externer Sollwert angewählt
32
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 1 7.3
Neu hinzugekommene Variable ab der Bibliotheksversion 3.6
Register
Kurzbezeichnung
Datentyp
Beschreibung
220 222 244 246 342 343 344 1048 942 944 946 948 950 952 954 956 958 960 962 964
.L1_SCAL_LO .L1_SCAL_HI .L1_ANA_LO .L1_ANA_HI .L1_SETZ_MAN .L1_SETZ_AUTO .L1_SETZ_CASC .L1_SETZ_W .L1_K5 .L1_K6 .L1_K7 .L1_K8 .L1_K9 .L1_K10 .L1_K11 .L1_K12 .L1_K13 .L1_K14 .L1_K15 .L1_K16
REAL REAL REAL REAL BOOL BOOL BOOL INT REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL
Untere Regelkreisskalierung Obere Regelkreisskalierung Untere Bargraphenskalierung Obere Bargraphenskalierung Umschalten auf HAND Umschalten auf AUTOMATIK Umschalten auf CASCADE Umschalten der Sollwertquelle Bewertungsfaktor K5 Bewertungsfaktor K6 Bewertungsfaktor K7 Bewertungsfaktor K8 Bewertungsfaktor K9 Bewertungsfaktor K10 Bewertungsfaktor K11 Bewertungsfaktor K12 Bewertungsfaktor K13 Bewertungsfaktor K14 Bewertungsfaktor K15 Bewertungsfaktor K16
370 372 394 396 342 343 344 1049 966 968 970 972 974 976 978 980 982 984 986 988
.L2_SCAL_LO .L2_SCAL_HI .L2_ANA_LO .L2_ANA_HI .L2_SETZ_MAN .L2_SETZ_AUTO .L2_SETZ_CASC .L2_SETZ_W .L2_K5 .L2_K6 .L2_K7 .L2_K8 .L2_K9 .L2_K10 .L2_K11 .L2_K12 .L2_K13 .L2_K14 .L2_K15 .L2_K16
REAL REAL REAL REAL BOOL BOOL BOOL INT REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL
Untere Regelkreisskalierung Obere Regelkreisskalierung Untere Bargraphenskalierung Obere Bargraphenskalierung Umschalten auf HAND Umschalten auf AUTOMATIK Umschalten auf CASCADE Umschalten der Sollwertquelle Bewertungsfaktor K5 Bewertungsfaktor K6 Bewertungsfaktor K7 Bewertungsfaktor K8 Bewertungsfaktor K9 Bewertungsfaktor K10 Bewertungsfaktor K11 Bewertungsfaktor K12 Bewertungsfaktor K13 Bewertungsfaktor K14 Bewertungsfaktor K15 Bewertungsfaktor K16
520 522 544 546 422 423 424 1050 990 992 994 996 998 1000 1002 1004 1006 1008 1010 1012
.L3_SCAL_LO .L3_SCAL_HI .L3_ANA_LO .L3_ANA_HI .L3_SETZ_MAN .L3_SETZ_AUTO .L3_SETZ_CASC .L3_SETZ_W .L3_K5 .L3_K6 .L3_K7 .L3_K8 .L3_K9 .L3_K10 .L3_K11 .L3_K12 .L3_K13 .L3_K14 .L3_K15 .L3_K16
REAL REAL REAL REAL BOOL BOOL BOOL INT REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL
Untere Regelkreisskalierung Obere Regelkreisskalierung Untere Bargraphenskalierung Obere Bargraphenskalierung Umschalten auf HAND Umschalten auf AUTOMATIK Umschalten auf CASCADE Umschalten der Sollwertquelle Bewertungsfaktor K5 Bewertungsfaktor K6 Bewertungsfaktor K7 Bewertungsfaktor K8 Bewertungsfaktor K9 Bewertungsfaktor K10 Bewertungsfaktor K11 Bewertungsfaktor K12 Bewertungsfaktor K13 Bewertungsfaktor K14 Bewertungsfaktor K15 Bewertungsfaktor K16
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
33
Anhang 1 Register
Kurzbezeichnung
Datentyp
Beschreibung
670 672 694 696 462 463 464 1051 1014 1016 1018 1020 1022 1024 1026 1028 1030 1032 1034 1036
.L4_SCAL_LO .L4_SCAL_HI .L4_ANA_LO .L4_ANA_HI .L4_SETZ_MAN .L4_SETZ_AUTO .L4_SETZ_CASC .L4_SETZ_W .L4_K5 .L4_K6 .L4_K7 .L4_K8 .L4_K9 .L4_K10 .L4_K11 .L4_K12 .L4_K13 .L4_K14 .L4_K15 .L4_K16
REAL REAL REAL REAL BOOL BOOL BOOL INT REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL
Untere Regelkreisskalierung Obere Regelkreisskalierung Untere Bargraphenskalierung Obere Bargraphenskalierung Umschalten auf HAND Umschalten auf AUTOMATIK Umschalten auf CASCADE Umschalten der Sollwertquelle Bewertungsfaktor K5 Bewertungsfaktor K6 Bewertungsfaktor K7 Bewertungsfaktor K8 Bewertungsfaktor K9 Bewertungsfaktor K10 Bewertungsfaktor K11 Bewertungsfaktor K12 Bewertungsfaktor K13 Bewertungsfaktor K14 Bewertungsfaktor K15 Bewertungsfaktor K16
1038 1040 1054 1053 308 1042 934 935 936 937 938 939 940 941 307 1044 1046 1052
.RTC_DATUM .RTC_ZEIT .RTC_ERROR .RTC_STATUS .SETZ_DATUM .NEU_DATUM .MOD0ERR .MOD1ERR .MOD2ERR .MOD3ERR .MOD4ERR .MOD5ERR .MOD6ERR .MOD7ERR .DPAKTIV .PG_NLAUF .PG_SEGZEIT .PG_ZYKLEN
DINT DINT INT INT BOOL DINT INT INT INT INT INT INT INT INT BOOL DINT DINT INT
Datum mit Uhrzeit [s] Uhrzeit [msec] Uhrenfehler Uhrenstatus Setze Uhrzeit Synchronisieruhrzeit Fehler E/A-Grundgerät Fehler Modul 1 Fehler Modul 2 Fehler Modul 3 Fehler Modul 4 Fehler Modul 5 Fehler Modul 6 Fehler Modul 7 Profibus DP Kommunikation läuft Nettolaufzeit des aktiven PGs Laufzeit im Segment des PG Bearbeitete Schleife des PG
34
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 2 8
Anhang 2 8.1 Programmierbeispiele in C Alle nachfolgenden Beispiele für die Zugriffe auf Register sind in C, um eine exakte und fehlerfreies Beispiel zu gewährleisten. Die Übertragung findet hier im RTU-Protokoll statt. Die Funktionen modbus_read() und modbus_write() zeigen, wie ein Telgramm aufgebaut wird, alle anderen Funktionen zeigen den Umgang mit den verschiedenen Datenformaten.
modbus_read Daten von anderen MODBUS-Teilnehmern besorgen (Read Output Register: Funktion 03) void modbus_read(unsigned regnr, int anzahl, int *recdata) { int unsigned sendbuf[0] sendbuf[1] sendbuf[2] sendbuf[3] sendbuf[4] sendbuf[5] crc sendbuf[6] sendbuf[7]
i,anz; crc; = = = = = = = = =
mod_adr; /* MODBUS-Zieladresse 3; /* Read Output Register regnr>>8; /* Hi Register Nummer regnr; /* Lo Register Nummer 0; /* Hi Anzahl Register anzahl; /* Lo Anzahl Register CRC16(sendbuf,6); crc; crc>>8;
ComWrite(sendbuf,8); ComRead(receivebuf); // receivebuf[0]; // receivebuf[1];
*/ */ */ */ */ */
/* 8 Zeichen senden */ /* Daten Empfangen */ enthaelt Adresse enthaelt Function-Code
anz = receivebuf[2];
/*
Anzahl Datenbytes */
// receivebuf[3+anz]; // receivebuf[4+anz];
enthaelt Adresse CRC enthaelt Adresse CRC
for (i=0; i < anz; i+=2) { recdata[i+0] = receivebuf[4+i]; recdata[i+1] = receivebuf[3+i]; } }
modbus_write Daten zu anderen MODBUS-Teilnehmern schicken (Write Single Register: Funktion 06) void modbus_write(unsigned regnr, int data) { unsigned crc; sendbuf[0] = mod_adr; /* MODBUS-Zieladresse */ sendbuf[1] = 6; /* Write Single Register */ sendbuf[2] = regnr>>8; /* Hi Register Nummer */ sendbuf[3] = regnr; /* Lo Register Nummer */ sendbuf[4] = data>>8; /* Hi Datenbyte */ sendbuf[5] = data; /* Lo Datenbyte */ crc = CRC16(sendbuf,6); sendbuf[6] = crc; sendbuf[7] = crc>>8; ComWrite(sendbuf,8); /* 8 Zeichen senden */ ComRead(receivebuf); /* Quittung Empfangen */ }
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
35
Anhang 2 Programierbeispiel zum Ermitteln der CRC-Summe des MODBUS-RTU-Telegramms unsigned short CRC16( void *data_p /* Datenbereich */, unsigned len /* Datenlänge*/ ) /* 16 Bit CRC (MODBUS-RTU) von data_p berechnen */ { #
define POLYNOM int unsigned short unsigned char
0x0A001 i,j; crc = 0xffff; *p = data_p;
for (j=0; j < len; j++) { /* für gesammten Puffer */ for (crc ^= *p++,i=0; i < 8; i++) { /* für ein Byte */ if ((crc & 0x0001)) crc = (crc >> 1) ^ POLYNOM; else crc >>= 1; } } return (crc); }
Regelabweichung mit Pair of Register in Loop 1 ermitteln (L1_XW, Register 170) void read_float_split_merge() { float *fval; int recdata[30]; modbus_read(170, 2, &recdata[0]); fval = (void *)&recdata[0]; printf("Float-Register 170/171 : float =%6.3f", *fval); }
Regelabweichung mit Pair of Register in Loop 1 ermitteln (L1_XW, Register 170/171) void read_float_split_merge() { float *fval; int recdata[30]; modbus_read(170, 1, &recdata[0]); modbus_read(171, 1, &recdata[1]); fval = (void *)&recdata[0]; printf("Float-Register 170/171 : float =%6.3f", *fval); }
Regelabweichung nach Exp & Mantisse in Loop 1 ermitteln (L1_XW, Register 2170) void read_float_mantisse_exp() { float fval; int recdata,i; int man,exp; modbus_read(2170, 1, &recdata); man = recdata; modbus_read(2171, 1, &recdata); exp = recdata; fval = man; fval = fval / 10000.0; for(i=0;i < exp; i++) fval *= 10.; printf("Float-Register 2170/2171 :
float =%6.3f", fval);
}
36
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 2 Nummer des aktuellen Programms ermitteln (Register 802) void read_int() { int recdata; modbus_read(802, 1, &recdata); printf("Integer-Register 802 :
int =%d", recdata);
}
Tastatureingiff: Hand/Automatik/Cascade verstellen (Register 900) void write_int() { modbus_write(900, 0x10); }
Onlineparameter, Gerät, Tabelle 1, Stützwert 1 mit Pair of Register schreiben (Register 10022/23) void write_float_split_merge() { int data[2]; unsigned long *pdata; float wert; wert = 133.5; pdata = (void *)&wert; data[0] = (unsigned)(*pdata & 0xFFFF); data[1] = (unsigned)(*pdata >>16); modbus_write(10022,data[0]); modbus_write(10023,data[1]); }
Onlineparameter, Gerät, Tabelle1, Stützwert 1 mit Exponent/Mantisse schreiben (Register 20022/23) void write_float_mantisse_exp() { float wert; int exp,man; ^ wert = 133.5; exp = 0; while (fabs(wert) >= 1.0 ) { wert = wert / 10; exp++; } wert = wert * 10000.0; // Rundungsfehler berücksichtigen if (wert > 0) wert = wert + 0.5; else wert = wert - 0.5; man = (int)wert; modbus_write(20022,man); modbus_write(20023,exp);
// zuerst Mantisse // dann Exponent
}
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
37
Anhang 2 Programmgeber Programm 1, Laufzeit 1 (P17), LONG-Wert schreiben (Reg 15034/35) void write_long_split_merge() { int data[2]; unsigned long *pdata; long wert; wert = 80000l; /* 80000 sekunden */ pdata = (void *)&wert; data[0] = (unsigned)(*pdata & 0xFFFF); data[1] = (unsigned)(*pdata >>16); modbus_write(15034,data[0]); modbus_write(15035,data[1]); }
38
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 3 9
Anhang 3 9.1 Programmierbeispiele in Quickbasic 4.5 9.1.1
IEEE-Werteberechnung mittels MKS$ und CSV-Funktion
’Demoprogramm zur Bearbeitung von IEEE-Werte-Darstellung ’in Quick-Basic 4.5 ’benutzt die Quick-Basic-Funktionen MKS$ und CVS ’------------------------------------------------------DECLARE FUNCTION BINAER$ (z$) DECLARE FUNCTION HEX2$ (x) CLS DO INPUT "Realwert (E = Ende) "; Realwert$ IF UCASE$(Realwert$) = "E" THEN END Realwert! = VAL(Realwert$) ’------------------------------------------------------’Aufbereiten: ’------------------------------------------------------’ Realwert in IEEE-Darstellung IEEE$ = MKS$(Realwert!) ’4 Byte-String FOR I = 0 TO 3 Byte(I) = ASC(MID$(IEEE$, I + 1, 1)) NEXT Date0& = Byte(1) * 256 + Byte(0) Date1& = Byte(3) * 256 + Byte(2) ’Diese 2 Worte muessen richtig in das Sendetelegramm ’eingebaut werden. ’------------------------------------------------------’Kontroll-Darstellungen IEEE$ = HEX2$(Byte(3)) + HEX2$(Byte(2)) IEEE$ = IEEE$ + HEX2$(Byte(1)) + HEX2$(Byte(0)) PRINT IEEE$; " ="; BINAER$(IEEE$) ’======================================================= 'Zurückrechnen '------------------------------------------------------'es sind empfangen worden die Bytes(0) bis Byte(3) '-----------------------------------------------------IEEEHEX$ = "" FOR I = 0 TO 3 IEEEHEX$ = IEEEHEX$ + CHR$(Byte(I)) NEXT Realwert! = CVS(IEEEHEX$) PRINT "Rueckrechnung = "; Realwert! LOOP '---------------------------------------'Umwandlung einer Hex-Ziffer in Binädarstellung '--------------------------------------------------FUNCTION BINAER$ (z$) DEFINT A-Z FOR I = 1 TO LEN(z$) x1$ = "" x% = VAL("&H" + MID$(z$, I, 1)) DO UNTIL x% = 0 Y$ = LTRIM$(STR$(x% MOD 2)) x% = x% \ 2 x1$ = Y$ + x1$ LOOP x1$ = RIGHT$("0000" + x1$, 4) x$ = x$ + " " + x1$ NEXT BINAER$ = x$ END FUNCTION '---------------------------------------DEFSNG A-Z 'Stellt Hex-Ziffern zweistellig dar '---------------------------------------FUNCTION HEX2$ (x) HEX2$ = RIGHT$("00" + HEX$(x), 2) END FUNCTION
9.1.2
42/62-50040 DE
IEEE-Werteberechnung ohne spezielle Funktionen
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
39
Anhang 3 ’Demoprogramm zur Bearbeitung von IEEE-Werte-Darstellung ’in Quick-Basic 4.5 Version 1.0 ’------------------------------------------------------DECLARE FUNCTION BINAER$ (z$) CLS DO UNTIL i = 127 INPUT "Realwert (e = ende) "; RealWert IF UCASE$(RealWert$) = "E" THEN END RealWert! = VAL(RealWert$) ’---------------------------------------------------------’Aufbereitung: ’========================================================== ’Vorzeichen separieren Vorzeichen = 0 IF RealWert! < 0 THEN RealWert! = RealWert! * (-1) Vorzeichen = -1 END IF ’---------------------------------------------------------’Exponenten bestimmen Exponent% = 0 X! = RealWert! IF X! > 1 THEN DO UNTIL X! < 1 X! = X! / 2 Exponent% = Exponent% + 1 LOOP Exponent% = Exponent% - 1 ELSE DO UNTIL X! > 1 X! = X! * 2 Exponent% = Exponent% - 1 LOOP PRINT Exponent% END IF ’---------------------------------------------------------’Mantisse bestimmen Mantisse = RealWert! * (2 ^ (23 - Exponent%)) Mantisse = Mantisse AND &H7FFFFF ’---------------------------------------------------------'Worte und Bytes für Telegramm bestimmen Exponent% = (Exponent% + &H7F) * 128 Date0 = Mantisse MOD &H10000 Date1 = Mantisse \ &H10000 + Exponent% Byte(0) = Date0 MOD 256 Byte(1) = Date0 \ 256 Byte(2) = Date1 MOD 256 Byte(3) = Date1 \ 256 + ((-1) * Vorzeichen) * &H80 '------------------------------------------------------'Kontrolldarstellung PRINT "IEEE-Wert: "; FOR i = 3 TO 0 STEP -1 PRINT BINAER$(HEX$(Byte(i))); NEXT PRINT '======================================================= 'Zurückrechnen '------------------------------------------------------'es sind empfangen worden die Bytes(0) bis Byte(3) '------------------------------------------------------'Vorzeichen ist in Bit 7 von Byte(3) kodiert Vorzeichen = 1
40
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 3 IF (Byte(3) AND &H80) = &H80 THEN Vorzeichen = -1 ’------------------------------------------------------’Exponent ermitteln aus Bit 6 bis 0 aus Byte(3) ’und Bit 8 aus Byte(2) Exponent = (Byte(3) AND &H7F) * 2 + (Byte(2) \ 128) ’------------------------------------------------------’Mantisse ermitteln: ’Bit 7 von Byte(3) setzen, ’Mantisse aus Byte(0) bis Byte(3) errechnen Mantisse = (Byte(2) OR &H80) * &H10000 Mantisse = Mantisse + Byte(1) * &H100 + Byte(0) ’------------------------------------------------------RealWert! = Vorzeichen * Mantisse / (2 ^ (23 - (Exponent - &H7F))) PRINT "Rückrechnung = "; RealWert! LOOP '--------------------------------------------------'Umwandlung einer Hex-Ziffer in Binädarstellung '--------------------------------------------------FUNCTION BINAER$ (z$) DEFINT A-Z FOR i = 1 TO LEN(z$) x1$ = "" X% = VAL("&H" + MID$(z$, i, 1)) DO UNTIL X% = 0 Y$ = LTRIM$(STR$(X% MOD 2)) X% = X% \ 2 x1$ = Y$ + x1$ LOOP x1$ = RIGHT$("0000" + x1$, 4) X$ = X$ + " " + x1$ NEXT BINAER$ = X$ END FUNCTION
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
41
Anhang 3 9.1.3
Berechnete Beispiele
Exponent auf Basis 2 wird durch mehrfache Multiplikation mit 2 oder Division durch 2 so berechnet, dass sich ein 24-stelliger binärer Wert mit einer 1 an der höchsten (linken) Stelle ergibt. In der IEEE-Darstellung wird diese 1 unterdrückt. dezim. hexadezimal binär s/Exponent /Wert -1.0 -0.5 -0.4 -0.3 -0.2 -0.1 0.0 0.1 0.2 0.2 0.4 0.5 1.0 10.0
42
BF BF BE BE BE BD 00 3D 3E 3E 3E 3F 3F 41
80 00 CC 99 4C CC 00 CC 4C 99 CC 00 80 20
00 00 CC 99 CC CC 00 CC CC 99 CC 00 00 00
00 00 CD 9A CD CD 00 CD CD 9A CD 00 00 00
1011 1011 1011 1011 1011 1011 0000 0011 0011 0011 0011 0011 0011 0100
1111 1111 1110 1110 1110 1101 0000 1101 1110 1110 1110 1111 1111 0001
1000 0000 1100 1001 0100 1100 0000 1100 0100 1001 1100 0000 1000 0010
/ 0000 0000 1100 1001 1100 1100 0000 1100 1100 1001 1100 0000 0000 0000
0000 0000 1100 1001 1100 1100 0000 1100 1100 1001 1100 0000 0000 0000
0000 0000 1100 1001 1100 1100 0000 1100 1100 1001 1100 0000 0000 0000
0000 0000 1100 1001 1100 1100 0000 1100 1100 1001 1100 0000 0000 0000
0000 0000 1101 1010 1101 1101 0000 1101 1101 1010 1101 0000 0000 0000
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
42/62-50040 DE
Anhang 3 9.1.4
Berechnung der Prüfsumme CRC
'Basic-Programm zur Ermittlung der Prüfsumme CRC für MODBUS'RTU Telegramme 'Quickbasic 4.5 Version 1.0 '----------------------------------------------------------DECLARE FUNCTION HEX2$ (x!) CLS MaxI = 2 PRINT "Eingabe der Telegrammbytes in Hex 05H oder dezimal 5" PRINT "getrennt einheitlich durch Leerzeichen oder Kommata" DO INPUT Tel$ i = 1 L = LEN(Tel$) Tel$ = UCASE$(Tel$) DO UNTIL Tel$ = "" Tel$ = LTRIM$(Tel$) x = INSTR(Tel$, " ") + INSTR(Tel$, ",") IF x > 4 THEN Fehler = 1: EXIT DO IF x > 0 THEN Byte$(i) = LEFT$(Tel$, x) TEl$ = RIGHT$(Tel$, LEN(Tel$) - x + 1) ELSE Byte$(i) = Tel$ Tel$ = "" END IF Byte$(i) = RTRIM$(Byte$(i)) IF RIGHT$(Byte$(i), 1) "H" THEN Byte$(i) = HEX2$(VAL(Byte$(i))) ELSE Byte$(i) = LEFT$(Byte$(i), 2) END IF IF HEX2$(VAL("&H" + Byte$(i))) Byte$(i) THEN Fehler = 1: EXIT DO i = i + 1 LOOP IF Fehler = 0 THEN EXIT DO SOUND 1000, .03 LOOP MaxI = i - 1 x& = 65535 FOR i = 1 TO MaxI y& = (VAL("&H" + Byte$(i)) XOR x&) n = 1 DO DO r = y& MOD 2 y& = y& - r y& = y& / 2 IF ABS(r) = 1 THEN EXIT DO n = n + 1 IF (n = 9) AND (i = MaxI) THEN EXIT FOR IF n = 9 THEN EXIT DO LOOP IF n < 9 THEN y& = y& XOR 40961 n = n + 1 END IF IF n = 9 THEN IF (i = MaxI) THEN EXIT FOR EXIT DO END IF LOOP x& = y& NEXT PRINT "CRC ="; HEX$(y&); " Hex" PRINT " muss in der Reihenfolge "; HEX2$(y& MOD 256); " "; HEX2$(y& \ 256); PRINT " in das Telegramm aufgenommen werden !" FUNCTION HEX2$ (x) HEX2$ = RIGHT$("00" + HEX$(x), 2) END FUNCTION
42/62-50040 DE
Protronic 100/500/550, Digitric 500, MODBUS-Schnittstellenbeschreibung
43
ABB Automation Products GmbH Höseler Platz 2 D-42579 Heiligenhaus Tel. +49(0)20 56 12 - 5181 Fax +49(0)20 56 12 - 5081 http://www.abb.de/regler
Technische Änderungen vorbehalten Printed in the Fed. Rep. of Germany 42/62-50040 DE Rev. 04 Ausgabe 11.01