Modbus Martem
Jump to navigation
Jump to search
Addressing scheme
Telem Application Modbus function code enumeration:
enum ModbusFunctionCodes { MODBUS_FN_UNSUPPORTED = 0x0, MODBUS_READ_COIL = 0x1, MODBUS_READ_INPUT = 0x2, MODBUS_READ_HOLDING_REGISTERS = 0x3, MODBUS_READ_INPUT_REGISTERS = 0x4, MODBUS_FORCE_SINGLE_COIL = 0x5, MODBUS_SET_SINGLE_REGISTER = 0x6, MODBUS_FORCE_MULTIPLE_COIL = 0xF, MODBUS_SET_MULTIPLE_REGISTER = 0x10 };
Lower device addressing has small differences for input and output objects in Telem Application.
Input objects function code is determined from the address in the following way:
if(100000 <= address) fn_code = address / 100000; else fn_code = address / 10000; switch( fn_code ) { case 0: return MODBUS_READ_COIL; case 1: return MODBUS_READ_INPUT; case 3: return MODBUS_READ_INPUT_REGISTERS; default: case 4: return MODBUS_READ_HOLDING_REGISTERS; }
Note that ...