EasyManua.ls Logo

Embedded Systems LogiMachine5 Power - Page 186

Embedded Systems LogiMachine5 Power
254 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
186
30.
mb:setregisters(id - 1, value)
31.
end
32.
end
33.
end
34.
35.
-- coil write callback
36.
function mbwritecoils(coil, value)
37.
local addr = coils[ coil + 1 ]
38.
if addr then
39.
grp.write(addr, value, dt.bool)
40.
end
41.
end
42.
43.
-- register write callback
44.
function mbwriteregisters(register, value)
45.
local addr = registers[ register + 1 ]
46.
if addr then
47.
grp.write(addr, value, regdt[ register + 1])
48.
end
49.
end
50.
51.
-- knx group monitor, handles group writes
52.
knxclient = eibdgm:new({ timeout = 0.1 })
53.
knxclient:sethandler('groupwrite', knxgroupwrite)
54.
55.
-- modbus slave, listen on all interfaces and default port 502
56.
mb = luamodbus.tcp()
57.
mb:open('0.0.0.0', 502)
58.
59.
-- setting slave id is optional
60.
-- mb:setslave(1)
61.
62.
mb:setreceivetimeout(0.1)
63.
mb:setmapping(#coils, 0, #registers, 0)
64.
65.
-- init coils
66.
for id, addr in ipairs(coils) do
67.
value = grp.getvalue(addr)
68.
mb:setcoils(id - 1, value)
69.
end
70.
71.
-- init registers
72.
for id, addr in ipairs(registers) do
73.
value = grp.getvalue(addr)
74.
mb:setregisters(id - 1, value)
75.
end
76.
77.
-- set callbacks for coil and register write
78.
mb:setwritecoilcb(mbwritecoils)
79.
mb:setwriteregistercb(mbwriteregisters)

Table of Contents