For anyone else's assistance, I've posted the last reply from The Support Team below. I've tested the reccomended syntax, and I can't explain why it works this time! (I did have the RS485 A/B connections reversed early on, but spotted that due to the reversed/mirrored values showing up with my monitor.)
Thank you for the great support.
Hi James,
We can start with the command package and try to replicate it for the logger.
0x01 0x03 0x00 0x00 0x00 0x02 (+CRC) 0xC4 0x0B
The first hexadecimal is sensor address 0x01 = address 1
The second is MODBUS register type 0x03 = holding register
The third and fourth are the start address 0x00 0x00 = 0
The fifth and sixth are the amount of byte to be read 0x00 0x02 = 2
We can ignore the last two since the logger automatically calculates the CRC.
Based on the response 01 03 04 00 00 00 EC FB BE
The first and second hexadecimal is a follow-up echo from the sensor address and MODBUS register type 0x01 0x0
The third indicates four bytes response 0x04
The fourth and fifth are the first parameter 0x00 0x00, which is 0; we are unsure if this reading represents moisture.
The sixth and seventh are the second parameter 0x00 0xEC, which is 236 in decimal. We assume that if this is temperature data, a factor of 0.1 makes the value 23.6. It is likely the correct value.
The response indicates that the reading has an integer 16-bit (2-bytes) as the value type.
The correct syntax in dataTaker would be
1MODBUS(AD1,R4:1,=1..2CV)
1CV("Humidity~%")
2CV"Temp~degC")
AD1 represents sensor address 1
R4 represents the holding register 03
1 represents the starting address of 0; there is a shift of 1 between the dataTaker and MODBUS register due to the implementation of CV bound to the MODBUS register. We do not have 0CV and start with 1CV, meaning the dataTaker starting register is 0. However, it only occurs on the declaration; in the backend, we negate the number by 1.
=1..2CV indicates that you want to get two parameters at once, or you can declare it as two syntax
1MODBUS(AD1,R4:1,"Humidity~%")
1MODBUS(AD1,R4:2,"Temp~degC")
Your second syntax posted in the forum seems correct; if it does not give you the reading, you can try to swap between RS485+ and RS485-. Please ensure you are using the Tx Z pin and RTS Y pin.
Best regards,
The Support Team
Technical Support and Application Specialist
dataTaker( and Odalog( Product
For anyone else's assistance, I've posted the last reply from The Support Team below. I've tested the reccomended syntax, and I can't explain why it works this time! (I did have the RS485 A/B connections reversed early on, but spotted that due to the reversed/mirrored values showing up with my monitor.)
Thank you for the great support.
------------
Hi James,
We can start with the command package and try to replicate it for the logger.
0x01 0x03 0x00 0x00 0x00 0x02 (+CRC) 0xC4 0x0B
The first hexadecimal is sensor address 0x01 = address 1
The second is MODBUS register type 0x03 = holding register
The third and fourth are the start address 0x00 0x00 = 0
The fifth and sixth are the amount of byte to be read 0x00 0x02 = 2
We can ignore the last two since the logger automatically calculates the CRC.
Based on the response 01 03 04 00 00 00 EC FB BE
The first and second hexadecimal is a follow-up echo from the sensor address and MODBUS register type 0x01 0x0
The third indicates four bytes response 0x04
The fourth and fifth are the first parameter 0x00 0x00, which is 0; we are unsure if this reading represents moisture.
The sixth and seventh are the second parameter 0x00 0xEC, which is 236 in decimal. We assume that if this is temperature data, a factor of 0.1 makes the value 23.6. It is likely the correct value.
The response indicates that the reading has an integer 16-bit (2-bytes) as the value type.
The correct syntax in dataTaker would be
1MODBUS(AD1,R4:1,=1..2CV)
1CV("Humidity~%")
2CV"Temp~degC")
AD1 represents sensor address 1
R4 represents the holding register 03
1 represents the starting address of 0; there is a shift of 1 between the dataTaker and MODBUS register due to the implementation of CV bound to the MODBUS register. We do not have 0CV and start with 1CV, meaning the dataTaker starting register is 0. However, it only occurs on the declaration; in the backend, we negate the number by 1.
=1..2CV indicates that you want to get two parameters at once, or you can declare it as two syntax
1MODBUS(AD1,R4:1,"Humidity~%")
1MODBUS(AD1,R4:2,"Temp~degC")
Your second syntax posted in the forum seems correct; if it does not give you the reading, you can try to swap between RS485+ and RS485-. Please ensure you are using the Tx Z pin and RTS Y pin.
Best regards,
The Support Team
Technical Support and Application Specialist
dataTaker( and Odalog( Product