(24.01.2022, 07:14)admin Wrote: LM does not have D0/D1 markings, but A/B/GND. A is positive, B is negative. Try swapping A/B lines and also check that the serial port settings match.
now the communikation works!
I´ve found the manufactur manual with chapter 9 (Communication with Modbus) inside.
Here are the fields: Quantity, Details, Start reg (hex), Size, Res., Unit, Data type,
for Example:
Quantity: Active import, Details: Tariff 1, Start reg (hex): 5170, Size: 4, Res.: 0,01, Unit: kWh, Data type: Unsigned
When i try reading Active import with these settings:
- Function: Holding register (#3)
- Address: 20480
- Data type: uint64
- Read swap: Word
the Answer is 94425 (i think its 944,25 kWh), that is correct.
but how i have to "translate" for the Logicmachine? I know, that i have to calculate hex into dec (like 5000 in hex is 20480 in dec). In the Modbus Profile Generater are Fields like bus_datatype, datatype, value_custom, read_swap...
Can you give me an example? Thankx
I have the ABB B21 and have the next script what is working, maybe this can help you?
(04.11.2020, 20:56)stemic01 Wrote: FYI: I've just implemented and written a modbus JSON profile for the FLEXIT NORDIC S4 ventilation system. Now I can retrieve vital information and change certain parameters. PM if you are in need of this for your flexit. (PS! The CI66 JSON did not work for me).
Hello, I have also tried the CI66 JSON with no success. Are you interested in sharing your file that would be great
(27.12.2022, 14:48)Thank you,Fabiofabiorusco Wrote: Hallo,
I created this modbus profile, but if I try to import it in LM, it show me "invalid profile":
28.12.2022, 08:32 (This post was last modified: 28.12.2022, 08:33 by fabiorusco.)
(28.12.2022, 07:30)admin Wrote: Profile is missing datatype fields, most likely kWh readings will be incorrect. Can you provide documentation for this device?
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()
30.09.2023, 15:02 (This post was last modified: 30.09.2023, 15:03 by Erwin van der Zwart.)
Looked quickly and noticed this already:
res, err = mb:readregisters(6, nappartamento)
Where nappartamento seems to be a value around 200 resulting in a command where you try to read register 6 to 206 at once and those 200 registers probably don’t even exist (consecutive), given the “res, err =“ you probably want to read only register 6..
I think your command needs to be:
res, err = mb:readregisters(6)