30.09.2023, 09:57
Hello,
I used a scheduled script to read the modbus register. In the device instructions it's indicated that I must repeat the reading in case of error. I attach the script that I used to detect if there is an error. It doesn't work. Can someone help me, please?
nappartamento = grp.getvalue('32/1/2')
nappartamento = nappartamento + 1
if (nappartamento > 211 ) then
nappartamento = 200
end
grp.update('32/1/2', nappartamento)
log(nappartamento)
require('luamodbus')
mb = luamodbus.rtu()
mb:open('/dev/ttyUSB0', 9600, 'N', 8, 1, 'H')
mb:connect()
mbetslave(32) --CENTRALINA MASTER
--IMPOSTO LETTURA NAPPARTAMENTO
contatore1=1
mb:writeregisters(7, nappartamento)
os.sleep(10)
--RIPETO SE RISPONDE CON ERRORE 5 VOLTE
contatore1=1
while (contatore1 > 0) do
res, err = mb:readregisters(7, nappartamento)
if not res then
os.sleep(30)
mb:writeregisters(7, nappartamento)
contatore1 = contatore1 + 1
if contatore1 > 5 then
alert('errore1')
return
end
else -- TUTTO OK
contatore1=0
end
end
mb:writeregisters(6, nappartamento)
os.sleep(35)
--RIPETO SE RISPONDE CON ERRORE 5 VOLTE
contatore2=1
while (contatore2 > 0) do
res, err = mb:readregisters(6, nappartamento)
if not res then
os.sleep(30)
mb:writeregisters(6, nappartamento)
contatore2 = contatore2 + 1
if contatore2 > 5 then
alert('errore2')
return
end
else -- TUTTO OK
contatore2=0
end
end
-- LEGGO VALORI
--log(mb:readregisters(3015,8))
os.sleep(1)
calorieh,caloriel,frigorieh,frigoriel,acs_lo,afs_lo,acs_hi,afs_hi = mb:readregisters(3015,8)
calorie = caloriel + (calorieh*65535)
log(calorie)
frigorie=frigoriel + (frigorieh*65535)
log(frigorie)
acs=acs_lo+(acs_hi*65535)
log(acs)
--afs=afs_lo+(afs_hi*65535)
--RIPETO SE RISPONDE CON ERRORE 5 VOLTE
mb:close()
I used a scheduled script to read the modbus register. In the device instructions it's indicated that I must repeat the reading in case of error. I attach the script that I used to detect if there is an error. It doesn't work. Can someone help me, please?
nappartamento = grp.getvalue('32/1/2')
nappartamento = nappartamento + 1
if (nappartamento > 211 ) then
nappartamento = 200
end
grp.update('32/1/2', nappartamento)
log(nappartamento)
require('luamodbus')
mb = luamodbus.rtu()
mb:open('/dev/ttyUSB0', 9600, 'N', 8, 1, 'H')
mb:connect()
mbetslave(32) --CENTRALINA MASTER
--IMPOSTO LETTURA NAPPARTAMENTO
contatore1=1
mb:writeregisters(7, nappartamento)
os.sleep(10)
--RIPETO SE RISPONDE CON ERRORE 5 VOLTE
contatore1=1
while (contatore1 > 0) do
res, err = mb:readregisters(7, nappartamento)
if not res then
os.sleep(30)
mb:writeregisters(7, nappartamento)
contatore1 = contatore1 + 1
if contatore1 > 5 then
alert('errore1')
return
end
else -- TUTTO OK
contatore1=0
end
end
mb:writeregisters(6, nappartamento)
os.sleep(35)
--RIPETO SE RISPONDE CON ERRORE 5 VOLTE
contatore2=1
while (contatore2 > 0) do
res, err = mb:readregisters(6, nappartamento)
if not res then
os.sleep(30)
mb:writeregisters(6, nappartamento)
contatore2 = contatore2 + 1
if contatore2 > 5 then
alert('errore2')
return
end
else -- TUTTO OK
contatore2=0
end
end
-- LEGGO VALORI
--log(mb:readregisters(3015,8))
os.sleep(1)
calorieh,caloriel,frigorieh,frigoriel,acs_lo,afs_lo,acs_hi,afs_hi = mb:readregisters(3015,8)
calorie = caloriel + (calorieh*65535)
log(calorie)
frigorie=frigoriel + (frigorieh*65535)
log(frigorie)
acs=acs_lo+(acs_hi*65535)
log(acs)
--afs=afs_lo+(afs_hi*65535)
--RIPETO SE RISPONDE CON ERRORE 5 VOLTE
mb:close()