07.02.2020, 21:09
I state that I have read all the posts containing the term "modbus" but have not found an answer
Situation: Wiser4KNX which interrogates about 30 slave devices made up of switches or meters (Masterpact, Compact NSX, PowerTags, etc.) connected to Modbus TCP gateways (ComX510, IFE, Smartlink).
No connection problems.
For each of these devices only 2 registers are needed: Active Power and Active Energy.
Overall, therefore, a small amount of information is acquired from the system.
If I configure the devices in the Modbus section, using the preloaded profiles, after 7-8 objects an error message appears: "The limit has been reached. It is not possible to add objects of the same type".
If I access by script I can configure further 7-8 devices (therefore a total of about 16 readings).
Each additional line of code produces no reading.
In the Modbus configuration I tried to differentiate the ip hosts or the polling time but the result does not change.
What is this limitation determined by?
Thanks
Situation: Wiser4KNX which interrogates about 30 slave devices made up of switches or meters (Masterpact, Compact NSX, PowerTags, etc.) connected to Modbus TCP gateways (ComX510, IFE, Smartlink).
No connection problems.
For each of these devices only 2 registers are needed: Active Power and Active Energy.
Overall, therefore, a small amount of information is acquired from the system.
If I configure the devices in the Modbus section, using the preloaded profiles, after 7-8 objects an error message appears: "The limit has been reached. It is not possible to add objects of the same type".
If I access by script I can configure further 7-8 devices (therefore a total of about 16 readings).
Code:
require('luamodbus')
mb = luamodbus.tcp()
mb:open('192.168.90.105', 502)
res, err = mb:connect()
if res then
mb:setslave(1)
value1 = mb:readregistervalue(32095,"uint64") * 0.001
grp.update("50/3/0", value1)
mb:setslave(2)
value2 = mb:readregistervalue(1999,"int32")
grp.update("50/3/1", value2)
mb:setslave(3)
value3 = mb:readregistervalue(1999,"int32")
grp.update("50/3/2", value3)
mb:setslave(4)
value4 = mb:readregistervalue(1999,"int32")
grp.update("50/3/3", value4)
mb:setslave(5)
value5 = mb:readregistervalue(1999,"int32")
grp.update("50/3/4", value5)
mb:setslave(6)
value6 = mb:readregistervalue(1999,"int32")
grp.update("50/3/5", value6)
mb:setslave(7)
value7 = mb:readregistervalue(1999,"int32")
grp.update("50/3/6", value7)
else
log('connect failed', err)
end
mb:close()
Each additional line of code produces no reading.
In the Modbus configuration I tried to differentiate the ip hosts or the polling time but the result does not change.
What is this limitation determined by?
Thanks