184
16.
end
17.
end)
18.
19.
-- register write callback
20.
mb:setwriteregistercb(function(register, value)
21.
if register == 0 then
22.
-- send value limited to 0..100
23.
grp.write('4/1/5', math.min(100, value), dt.scale)
24.
else
25.
alert('register: %d = %d', register, value)
26.
end
27.
end
28.
end
29.
30.
-- server part init
31.
if not server then
32.
require('rpc')
33.
34.
-- incoming data handler
35.
local handler = function(request)
36.
local fn, res
37.
38.
fn =tostring(request.fn)
39.
40.
if not mb[ fn ]then
41.
return{nil, 'unknown function ' .. fn }
42.
end
43.
44.
if type(request.params)=='table' then
45.
table.insert(request.params, 1, mb)
46.
res ={ mb[ fn ](unpack(request.params))}
47.
else
48.
res ={ mb[ fn ](mb)}
49.
end
50.
51.
return res
52.
end
53.
54.
server = rpc.server('127.0.0.1', 28002, 'mbproxy', handler, 0.01)
55.
end
56.
57.
mb:handleslave()
58.
server:step()
Example: event script which changes modbus slave coil (address 0)
Must be mapped to a group address with binary value.