Micropilot FMR20 Modbus RS485
8.1.2
Modbus-functiecodes
Functiecode
Actie
03 (0x03)
Enkelvoudig/meervoudig lezen
06 (0x06)
Enkelvoudig schrijven
16 (0x10)
Meervoudig schrijven
8.1.3
Modbus-uitzonderingen
Uitzondering
MB_EX_ILLEGAL_FUNCTION
MB_EX_ILLEGAL_DATA_ADDRESS 02 (0x02) Registeradres is niet beschikbaar
MB_EX_ILLEGAL_DATA_VALUE
8.1.4
Speciale datatypes Modbus
Datatype
Registers
per
parameter
float32
2
(IEEE754)
uint32/int32
2
string (char8
0,5
array)
Endress+Hauser
Aantal
Beschrijving
01 (0x01) Functiecode wordt niet ondersteund
03 (0x03) Datawaarde is niet toegestaan (bijv. schrijven van een float32 naar
een char8 register).
Geldt ook voor schrijven naar alleen-lezen registers.
Beschrijving
Omdat een float32 uit vier bytes bestaat, moet een parameter met float32 als datatype
worden verdeeld in twee 16 bits woorden die worden overgedragen via Modbus. Om een
float32-type parameter te lezen, moeten twee opvolgende Modbus-registers daarom
worden uitgelezen.
Modbus-register [n]
Byte A
Byte B
float32-waarde
Dezelfde voorwaarden die gelden voor float32-datatypes zijn ook van toepassing voor
uint32/int32-datatypes.
Modbus-register [n]
Byte A
Byte B
uint32/Int32-waarde
Omdat een enkel karakter van een karakterstring slechts één byte nodig heeft, worden
altijd twee karakters opgenomen in een Modbus-register. Verder is de lengte van een
parameter met string als datatype beperkt tot 60 karakters.
Modbus-register [n]
char8 [n]
char8 [n+1]
Systeemintegratie via Modbus-protocol
Registertype
Holding-register
Holding-register
Holding-register
Modbus-register [n+1]
Byte C
Modbus-register [n+1]
Byte C
Modbus-register [n+1]
char8 [n+2]
Commandotype
Standaard
Standaard
Standaard
Byte D
Byte D
char8 [n+3]
31