Cannot read modbus RTU values

10 REM THIS PROGRAM READS MODBUS VALUES FROM THE BOILER ON MODBUS RTU ADDRESS 2
20 REM THIS ALLOWS A BAS SYSTEM OR THE T3000 GRAPHIC TO DISPLAY SOME 
30 REM INFORMATION ABOUT THE BOILER STATUS 

40 REM READ CURRENT BOILER SETPOINT 40003
50 IF INTERVAL ( 00:00:05 ) THEN VAR3 = 3.2.MB_REG2 

60 REM READ CURRENT BOILER SETPOINT TIMER 40002 
70 IF INTERVAL ( 00:00:05 ) THEN VAR4 = 3.2.MB_REG1 

80 REM READ CURRENT BOILER MODULATION PERCENT 30002 
90 REM IF INTERVAL ( 00:00:05 ) THEN VAR5 = 3.2.MB_INPUTREG1 

100 REM READ CURRENT BOILER SYSTEM TEMP 30003 
110 REM IF INTERVAL ( 00:00:11 ) THEN VAR6 = 3.2.MB_INPUTREG2 

120 REM READ CURRENT BOILER SUPPLY TEMP 30004 
130 REM IF INTERVAL ( 00:00:11 ) THEN VAR7 = 3.2.MB_INPUTREG3 

140 REM READ CURRENT BOILER RETURN TEMP 30005 
150 REM IF INTERVAL ( 00:00:11 ) THEN VAR8 = 3.2.MB_INPUTREG4  

I am having problems reading modbus rtu values from a boiler I am working with.
I am able to read/write the modbus rtu registers with Modbus Poll, but I cannot get the T3000 to read the modbus values. I have updated my T3000 software and updated the firmware on my T3-TB-8i.

My serial settings are shown in the screenshot below:

My final design requires modbus rtu to work reliably.

Thanks for your time,
JustBru

image
set a panel NO.



Check the COMMS

about pg:

Demonstration:

I have everything setup correctly. Personally I am wondering if it is an issue with the 19200 baud rate. Unfortunately, I cannot change the baud rate of the boiler I am trying to connect to.
I see that your example is on a baud rate of 9600.

Justin

check ur panel number and set sub rs458,Please connect the cable to rs458 sub,not main rs485

My panel number is set to 3 and I am using the RS485 sub port.

40003
50 VAR3 = 3.2.MB_REG3 not reg2 。ur modbus id is 2?

My T3000 panel number is 3. My boiler modbus address is 2 and my modbus register I am trying to reach is 40003. The MB_REG commaind is base 0 from what I understand.
So that is why 40003 is MB_REG2 and 40002 is MB_REG1

Try setting panel number to 1 or 2.

Not long ago, I was also troubled by the problem of not being able to communicate. Fortunately, I succeeded. I don’t think there’s anything wrong with your settings. Please change panel no. to 2 and try again.

It there a way to adjust the speed that the modbus points are polled? I know that I noticed that modbus poll only contacted the boiler every 1 second or so. The T3000 seems to constantly be transmitting.

JustBru
I tried to communicate at 19,200 Baud, and there was no problem. Have you solved your problem?


I am able to read over modbus at 19200 with a fake modbus slave. My problem comes with reading from the boiler. The T3000 doesn’t contact the modbus boiler. I am able to contact the boiler with a modbus adapter on my pc. In my mind this is probably an issue with how fast the T3000 attempts to read the modbus points. I think the boiler can’t handle the requests as fast as they come in. My PC modbus adapter can read the boiler modbus points just fine. It works right away. I can tell from my pc modbus adapter tx/rx lights that it is polling the modbus points every second or so. The T3000 is constantly trying to contact the modbus points and I think this is causing my issue. From my understanding, the T3000 doesn’t care how often I actually call for the value of a modbus point in my programs. The T3000 just has a list of network points that it constantly is trying to contact. When my program acually asks for the value, it is just reading it from the network points list. This is why I see no difference in the T3000 modbus tx/rx lights no matter how long of an INTERVAL statement I create.

I think that if I can slow down the polling rate of the modbus points that the boiler will be able to handle the requests and I will be able to do what I need to do.

In my control design, it doesn’t matter if there is a 1 second delay between each modbus read/write.
If I can get the modbus communications to work reliably, my final control design is as follows:

  1. Read 4-20mA input.
  2. If the input is over 5mA, then calculate the temperature setpoint requested by scaling the 4-20mA signal.
  3. Contact the boiler over modbus and set the boiler status to ON, set the current boiler setpoint to the temperature scaled from the 4-20mA input, and set the boiler setpoint timer to 60 seconds so that the boiler will shutdown if it doesn’t hear from the T3000 after 60 seconds.
  4. If the 4-20mA input is below 5mA, then contact the boiler over modbus and set the boiler status to OFF.

It is actually a quite simple control program if I can get modbus communications to work.

Is it possible to get a modbus poll/write rate settting? I really think this would solve my issues.

Justin

The T3-TB-11 has panel number 2 and also Modbus RTU ID: of 2, try changing the Modbus RTU ID: to something else that is not an address on the RS485

My panel number and modbus RTU ID are set to 1.

Note that when you configure one of the Serial ports to be Modbus Master, make sure that no other devices on the cable are also Modbus Master (meaning that other devices connected to the Serial Port must be Modbus Slave).If another device or a third-party Modbus Master is connected to RS485 SUB or Main, T3 automatically switches to Modbus Slave. As a result, T3 cannot access its child nodes properly.

Also, note that the polling rate is set automatically by the background network points task. Its not under program control as you may have imagined there with the interval statements. I agree it would be a good idea to the the program control the polling rate, we’ll work on adding some features for that soon.