Modbus terms? Modbus to BACnet trasnlator
Need some help. I've never dealt with modbus. I'm using a RTA translator to go from modbus to bacnet mstp. I've got the translator talking now I just need to map my points. I'm a little confused as to the terms for modbus.
I have a modbus slave profile for my modbus device that list the points and theres a few general groupings.
Can some one explain?
About those Modbus groups
These groups are the data areas that are associated with the different "Function Codes" that Modbus uses.
Wiki actually has a decent breakdown of them:
There are also different "data address" value ranges for the different groups.
Not the most straight forward thing, but apparently it was originally related to the physical addresses on the PLC hardware that Modicon used when developing the protocol.
The control coils refer to the discrete output points
the discrete inputs are just that
holding registers are 8 bit bytes that are located in the memory
the input registers are the 8 bit bytes that relate to the input of the device.
Now the format is:
MW Memory word
IW input word
OW output word
Usually the mod bus registers are designated as a memory word 8 bit byte or multiple register.
The codes embedded in the command go from the modbus master to the slave and instructs the slave to read back or write to a specific memory register or a string of registers as specified in the commands.
Wiki = http://en.wikipedia.org/wiki/Modbus
The various reading, writing and other operations are categorised as follows. The most primitive reads and writes are shown in bold. A number of sources  use alternative terminology, for example Force Single Coil where the standard uses Write Single Coil.
Function Name Function Code
Data Access Bit access Physical Discrete Inputs Read Discrete Inputs 2
Internal Bits or Physical Coils Read Coils 1
Write Single Coil 5
Write Multiple Coils 15
16-bit access Physical Input Registers Read Input Register 4
Internal Registers or Physical Output Registers Read Holding Registers 3
Write Single Register 6
Write Multiple Registers 16
Read/Write Multiple Registers 23
Mask Write Register 22
Read FIFO Queue 24
File Record Access Read File Record 20
Write File Record 21
Diagnostics Read Exception Status 7
Get Com Event Counter 11
Get Com Event Log 12
Report Slave ID 17
Read Device Identification 43
Other Encapsulated Interface Transport 43
Good day nasaguyjoe,
One issue that may need special attention is how you deal with floating point numbers (i.e. Analog I/O values), as Modbus does not have a defined standard to represent or deal with floating point values. In most cases Modbus vendors use adjacent Inputs/Registers... but there are 4 different ways to represent the floating point (IEEE 32 bit) value... big endian, little endian, nibble swaps, etc.
The second issue is that some Modbus field devices use absolute addresses where some use offset addresses...
The third issue is to be aware of is that each Modbus data object can also reflect the same physical data. For example the binary data objects can be used as bit fields of the register objects...