is modbus device online - benanderson_475 - 04.09.2020
Is there a way in lua to return true or false if a specific modbus device is online? say modbus device at address 3?
Many thanks
RE: is modbus device online - Daniel - 04.09.2020
You can check it like this
Code: -- First parameter is slave ID, second is optional RTU port number (1, 2 or 3; default is 1)
function checkrtu(slave, portnr)
local query = 'SELECT active FROM modbus_devices WHERE proto="rtu" AND slave=? AND portnr=?'
if type(portnr) == 'number' and portnr == 2 or portnr == 3 then
portnr = portnr - 1
else
portnr = 0
end
local res = db:getone(query, slave, portnr)
return toboolean(res)
end
function checktcp(ip, port)
local settings, res
settings = tostring(ip) .. ':' .. tostring(port)
res = db:getone('SELECT active FROM modbus_devices WHERE proto="tcp" AND settings=?', settings)
return toboolean(res)
end
RE: is modbus device online - benanderson_475 - 08.09.2020
(04.09.2020, 07:29)Daniel. Wrote: You can check it like this
Code: -- First parameter is slave ID, second is optional RTU port number (1, 2 or 3; default is 1)
function checkrtu(slave, portnr)
local query = 'SELECT active FROM modbus_devices WHERE proto="rtu" AND slave=? AND portnr=?'
if type(portnr) == 'number' and portnr == 2 or portnr == 3 then
portnr = portnr - 1
else
portnr = 0
end
local res = db:getone(query, slave, portnr)
return toboolean(res)
end
function checktcp(ip, port)
local settings, res
settings = tostring(ip) .. ':' .. tostring(port)
res = db:getone('SELECT active FROM modbus_devices WHERE proto="tcp" AND settings=?', settings)
return toboolean(res)
end
Many Thanks, it works perfectly
RE: is modbus device online - balatis - 13.09.2020
(04.09.2020, 07:29)Daniel. Wrote: You can check it like this
Code: -- First parameter is slave ID, second is optional RTU port number (1, 2 or 3; default is 1)
function checkrtu(slave, portnr)
local query = 'SELECT active FROM modbus_devices WHERE proto="rtu" AND slave=? AND portnr=?'
if type(portnr) == 'number' and portnr == 2 or portnr == 3 then
portnr = portnr - 1
else
portnr = 0
end
local res = db:getone(query, slave, portnr)
return toboolean(res)
end
function checktcp(ip, port)
local settings, res
settings = tostring(ip) .. ':' .. tostring(port)
res = db:getone('SELECT active FROM modbus_devices WHERE proto="tcp" AND settings=?', settings)
return toboolean(res)
end
Hi
As i can get the result in a group address??
Thanks in advance
RE: is modbus device online - Erwin van der Zwart - 13.09.2020
grp.checkwrite('1/1/1', checkrtu(1, 1))
or
grp.checkwrite('1/1/1', checktcp('192.168.0.11', 502))
RE: is modbus device online - balatis - 13.09.2020
(13.09.2020, 17:57)Erwin van der Zwart Wrote: grp.checkwrite('1/1/1', checkrtu(1, 1))
or
grp.checkwrite('1/1/1', checktcp('192.168.0.11', 502)) thanks Erwin!
|