Our full technical support staff does not monitor this forum. If you need assistance from a member of our staff, please submit your question from the Ask a Question page.

Log in or register to post/reply in the forum.

Serial ModBus communication between sensor and CR1000X

Technician Sep 23, 2022 01:50 PM

I'm trying to use the digital interface of the temperature and humity probe "Rotronic HygroClip2 Advanced Series HC2A-S3" with the CR1000X.

Datasheet of the probe:


After trying multiple different protocols, setups and functions within CRBasic, I've finally managed to get a response from the probe when I send a "Data request". 

The probe is setup to use Modbus-protocol and according to the digital chip in the probe, 

https://prodc5fe4b8-pic4.ysjianzhan.cn/upload/E-M-AC3000-CP_20.pdf (Modbus protocol)

The probe needs to recive the command:


To respond with the sensor data in the from:


Currently when using the sniffer mode in the terminal emulator in Loggernet, I'm able to see that my data request command is send correctly, but the response I recive is not in the expected form. 

I've also tried to use the dedicated modbus functions within the CRBasic editor, but using them I get no response in the sniffer mode.

Bellow is the data from the Terminal emulator in Loggernet and the code running on the CR1000X:

Terminal Emulator:


1: ComRS232
2: ComME
3: Com310
4: ComSDC7
5: ComSDC8
6: Com320
7: ComSDC10
8: ComSDC11
9: ComC1
10: ComC3
11: ComC5
12: ComC7
13: ComUSB
15: TCP/IP
16: SDM-SIO4
17: Ethernet
22: USB network
23: IP Trace
32..47: SDM-SIO1
Select: 11


opening 11

hit ESC to exit, any other key to renew timeout

10:44:47.003 T :0103
10:44:47.039 R .....6.v...{}ssss....
10:44:54.003 T :0103
10:44:54.038 R .....6.v...{}ssss....
10:45:01.003 T :0103
10:45:01.038 R .....6.v...{}ssss....
10:45:08.003 T :0103
10:45:08.038 R .....6.v...{{ssss.s..
10:45:15.003 T :0103
10:45:15.039 R .....6.v...{{ssss.s..
10:45:22.003 T :0103
10:45:22.039 R .....6.v...{}ssss....
10:45:29.003 T :0103
10:45:29.039 R .....6.v...{}ssss....

CRBasic code: 

'Declare Public Variables 
Const CR = CHR(13)
Const LF = CHR(10)
Const CRLF = CHR(13) + CHR(10)
Public PTemp, batt_volt,ModbusData(20),Result, RETURNED
Public RX As String * 100

'Define Data Tables
DataTable (Test,1,-1)
  DataInterval (0,15,Sec,10)
  Minimum (1,batt_volt,FP2,0,False)
  Sample (1,PTemp,FP2)
  Sample (1,ModbusData(),FP2)
  Sample (1,Result,UINT2)
  Sample (1,RX,String)

'Main Program
  Scan (1,Sec,0,0)
    PanelTemp (PTemp,15000)
    Battery (batt_volt)
    SerialOut (ComC5,":0103"+CRLF,CHR(58),1,200)
    'Retrieve Modbus Data
    'ModbusMaster (Result,ComC5,19200,01,03,ModbusData(),1,0,1,50,0)   

    'Enter other measurement instructions
    'Call Output Tables
    CallTable Test


Sam Mar 5, 2023 10:19 PM


Public Result
Public ModbusData(3)
  SerialOpen (ComC5,19200,19,0,50,4)
  Scan (10,Sec,0,0)
    ModbusMaster (Result,ComC5,19200,1,3,ModbusData(),1,3,1,100,11)


Opens : ComC5 : 19200,8,N,1 : RS-485

Issues request using Modbus ASCII : Addr 01 : Func 03 : Modbus ASCII 2 byte values

pokeeffe Mar 10, 2023 04:51 PM

Flagging for moderation --> @AndreaBocelli

Log in or register to post/reply in the forum.