@tthamm, do you have the communication working via read test? The device documentation is very clear, you only have to convert addresses from hex to decimal for testing.
Try reading Active import with these settings:
- Function: Holding register (#3)
- Address: 20480
- Data type: uint64
- Read swap: Word
The read value is in 0.01KWh. If the value is incorrect then try using different read swap modes.
(10.01.2022, 08:07)admin Wrote: @tthamm, do you have the communication working via read test? The device documentation is very clear, you only have to convert addresses from hex to decimal for testing.
Try reading Active import with these settings:
- Function: Holding register (#3)
- Address: 20480
- Data type: uint64
- Read swap: Word
The read value is in 0.01KWh. If the value is incorrect then try using different read swap modes.
@admin, thank you. i always get a "Operation timed out". The Logicmachine have D0, D1 and C. The Abb have A, B, C, i connect D0 = A, D1 = B, C = 0V. Is this correct?
I am currently working on profiles for:
Breathing Buildings NVHR
Condair Dehumidifer
Lindab HRU
RED Air Source Heat Pump
Daikin AC/VAM with RTS-Net modbus interface.
If anyone has profiles for these can you please post. If not i will post when finished.
When using a profile and reading blocs of parameters, "read_count" refers to number of 16bit modbus registers or number of registers defined on "datatype"?
Is this reading input register 4 as 32bit float and register 6 as 32bit float using a single modbus read command? (count is 4 because we're reading registers 4,5,6 and 7)
Or should I define read_count as 2 because I'm reading 2 32bit registers?
Size is always 1 register (16 bits) no matter what the data type is. The system will read the required number of registers based on the data type chosen.
Block read is needed for certain devices that don't allow reading registers directly but only via a large block read. Block read can be useful in large projects since it speeds things up but usually values can be simply read one by one.
(23.03.2022, 14:41)admin Wrote: Size is always 1 register (16 bits) no matter what the data type is. The system will read the required number of registers based on the data type chosen.
Block read is needed for certain devices that don't allow reading registers directly but only via a large block read. Block read can be useful in large projects since it speeds things up but usually values can be simply read one by one.
You can use Windows calculator for bitmasks. Switch to "Programmer" mode then switch keypad to "Bit toggling" mode. Switch required bits from 0 to 1. The HEX or DEC value will be your bitmask. For HEX you need to add 0x before the number in the profile (for example F becomes 0xF and so on).
(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...