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:
https://www.alphacontrols.com/Multimedia/www.alphacontrols.com/Files/ProductCategory/330/Manual.pdf
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:
:0103CRLF
To respond with the sensor data in the from:
:010306015E04CE042B96CRLF
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:
CR1000X>
CR1000X>W
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
ASCII (Y)? Y
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) EndTable 'Main Program BeginProg SerialOpen(ComC5,19200,16,1,10000,4) SerialFlush(ComC5) Scan (1,Sec,0,0) PanelTemp (PTemp,15000) Battery (batt_volt) SerialOut (ComC5,":0103"+CRLF,CHR(58),1,200) SerialInRecord(ComC5,RX,58,0,&H0D0A,RETURNED,10) 'Retrieve Modbus Data 'ModbusMaster (Result,ComC5,19200,01,03,ModbusData(),1,0,1,50,0) 'Enter other measurement instructions 'Call Output Tables CallTable Test NextScan EndProg
Public Result Public ModbusData(3) BeginProg SerialOpen (ComC5,19200,19,0,50,4) Scan (10,Sec,0,0) ModbusMaster (Result,ComC5,19200,1,3,ModbusData(),1,3,1,100,11) NextScan EndProg
Opens : ComC5 : 19200,8,N,1 : RS-485
Issues request using Modbus ASCII : Addr 01 : Func 03 : Modbus ASCII 2 byte values
Flagging for moderation --> @AndreaBocelli