function modbusReadHoldingRegister()
Jump to navigation
Jump to search
Read value from single holding register using modbus protocol. The call is asynchronous: the code execution proceeds immediately and when the response arrives, callback function is called.
nil modbusReadHoldingRegister(table config
)
Parameters
table config{deviceAddress
,callback
,address
,port
,timeout
}
- string
deviceAddress
IP address of device - function{response}
callback
this function is called when response arrives - string
address
number of the holding register - optional number
port
numer of port (default 502) - optional number
timeout
maximum seconds to wait for response (default 30)
Callback Parameters
table response{result
,errInfo
,address
,value
}
- number
result
error code of the response (0 is success) - string
errInfo
error description (if result>0) - number
address
number of the holding register - string
value
value of the holding register
Return value
nil
Usage
-- Read value of all outputs from NETIO with IP 10.0.0.105 on port 505 function modbusReadCallback(data) if data.result == 0 then log(string.format("modbus addr %d, got %s", data.address, tostring(data.value))) else log(string.format("modbus coil addr %d failed with error %d: %s", data.address, data.result, data.errorInfo)) end end for i = 101,104 do modbusReadHoldingRegister{deviceAddress='10.0.0.105', port=505, timeout=6, address=i, callback=modbusReadCallback} end
Requirements
Netio FirmWare 3.3.0+