12
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf
(2012). Weitere Informationen finden Sie
unter:
http://www.modbus.org/specs.php
Übersicht
Der Grundgedanke der Modbus-Schnittstelle ist, dass jeder Sensor unter einer Adresse existiert und als Wertetabelle
erscheint. Diese Werte werden als Register bezeichnet. Jeder Wert in der Tabelle hat einen zugehörigen Index, und
dieser Index wird verwendet, um zu erkennen, auf welchen Wert in der Tabelle zugegriffen wird.
Sensor-Adressen
Jedem Sensor wird eine Adresse von 1 bis 247 zugewiesen. Apogee-Sensoren werden mit einer Standardadresse von 1
ausgeliefert. Wenn mehrere Sensoren an derselben Modbus-Leitung verwendet werden, muss die Adresse des
Sensors durch Beschreiben des Registers Slave Address geändert werden.
Register Index
Jedes Register in einem Sensor stellt einen Wert im Sensor dar, z. B. eine Messung oder einen
Konfigurationsparameter. Einige Register können nur gelesen werden, andere können nur geschrieben werden und
wieder andere können sowohl gelesen als auch geschrieben werden. Jedes Register befindet sich an einem
bestimmten Index in der Tabelle für den Sensor. Oft wird dieser Index als Adresse bezeichnet, die eine andere Adresse
als die Sensoradresse ist, aber leicht mit der Sensoradresse verwechselt werden kann.
Es gibt jedoch zwei verschiedene Indizierungsschemata, die für Modbus-Sensoren verwendet werden, wobei die
Umrechnung zwischen beiden einfach ist. Ein Indizierungsschema wird als einseitige Nummerierung bezeichnet, bei
der das erste Register den Index 1 erhält und somit der Zugriff durch die Anforderung des Zugriffs auf Register 1
erfolgt. Das andere Indizierungsschema wird als Null-basierte Nummerierung bezeichnet, bei der das erste Register
den Index 0 erhält und somit der Zugriff durch die Anforderung des Zugriffs auf das Register 0 erfolgt. Die Apogee-
Sensoren verwenden die Null-basierte Nummerierung. Wenn der Sensor jedoch in einem System verwendet wird, das
eine einseitige Nummerierung verwendet, wie z. B. bei einem CR1000X-Logger, wird durch Hinzufügen von 1 zur
nullseitigen Adresse die einseitige Adresse für das Register erzeugt.
Register Format:
Gemäß der Spezifikation des Modbus-Protokolls sind Holding-Register (die Art von Registern, die Apogee-Sensoren
enthalten) für eine Breite von 16 Bit definiert. Bei wissenschaftlichen Messungen ist es jedoch wünschenswert, einen
genaueren Wert zu erhalten, als es 16 Bits erlauben. Daher verwenden mehrere Modbus-Implementierungen zwei 16-
Bit-Register, die als ein 32-Bit-Register fungieren. Apogee Modbus-Sensoren verwenden diese 32-Bit-
Implementierung, um Messwerte als 32-Bit-IEEE-754-Gleitkommazahlen zu liefern.
Apogee Modbus-Sensoren enthalten auch einen redundanten, doppelten Satz von Registern, die 16-Bit-Ganzzahlen
mit Vorzeichen verwenden, um Werte als dezimal verschobene Zahlen darzustellen. Es wird empfohlen, wenn möglich
die 32-Bit-Werte zu verwenden, da sie genauere Werte enthalten.
Kommunikationsparameter:
Apogee Sensoren kommunizieren mit der Modbus RTU Variante des Modbus Protokolls. Die Standard-
Kommunikationsparameter sind wie folgt:
Slave-Adresse: 1
Baudrate: 19200
Datenbits: 8
Stoppbits: 1
Parität: Gerade
Byte-Reihenfolge: Big-Endian (das höchstwertige Byte wird zuerst gesendet)