Communication problems , modbus timeout error

Hello everyone,
So am working with a temperature regulator ''Eliwell4822'' the modbus RTU and RS485 is integrated , am using USB 485 converter and LabVIEW software to communicate with my device and read the registers but then I got the code 6101 Timeout error , I tried testing softwares as commix 1.4 and my latest try was with modbus poll and I got the timeout error again ,I checked everything before I work with it :
Baud rate: 9600
Data bits:8
Party:even
My port COM
SlaveID: 01
Mode:RTU
Register address and my funtion code was verified
Am new with modbus so any kind of help will be appreciated especially about the Timeout error
My email is : [email protected]
Thank you for your time.
 
Time-out means the master attempted to send a message, but failed to get a response.

That's usually at basic level, wiring and configuration

1. COM port #
You have a USB/RS-485 that installs on a Windows 'virtual' COM port. The COM port needs a number, COM1, COM2, COM5 whatever.
In Windows, go to Device Manager > Ports and see which COM port the USB/485 converter installed on and use that number for the COM port for the Labview master.

2. driver polarity is backwards

The RS-485 bus is likely half duplex '2-wire'. It's really 2-wire with a 3rd signal ground wire, but the argument for later.
There is no industry specification for labeling the RS-485 driver lines. Although they're supposed to be wired (+) to (+), (-) to (-), or A to A, B to B, sometimes the labeling from one vendor to the other is backwards. So when all the other settings appear to be OK but there's still no communication, try swapping the leads on one end to see if the labeling is backwards.

3. Serial settings have to be identical on both devices: baud rate/word size/parity/stop bit

4. Which protocol is the controller? Modbus or Televis?

I have no idea what Televis, but it's a selectable Protocol on the 4822. Is the controller configured for Modbus or Televis?

5. Are you sure the slave is slave address 01? Have you checked? Not all devices default to slave node 01.

I could not find the setting for configuring the Modbus slave ID number, but that controller has some oddball dEA, FAA seting for the 'index of the device within the family' (valid values from 0 to 14). That sort of sounds like the slave node address. Is this zero based counting where 0 = Modbus slave node 1? Modbus slave never have a slave node address zero, by definition.

If you have more one slave, wire and connect to only one slave initially to get comm up and running. That avoids issues with multiple slaves.

How do you know what the Modbus registers are? There was nothing in the basic manual about that.
 
Time-out means the master attempted to send a message, but failed to get a response.

That's usually at basic level, wiring and configuration

1. COM port #
You have a USB/RS-485 that installs on a Windows 'virtual' COM port. The COM port needs a number, COM1, COM2, COM5 whatever.
In Windows, go to Device Manager > Ports and see which COM port the USB/485 converter installed on and use that number for the COM port for the Labview master.

2. driver polarity is backwards

The RS-485 bus is likely half duplex '2-wire'. It's really 2-wire with a 3rd signal ground wire, but the argument for later.
There is no industry specification for labeling the RS-485 driver lines. Although they're supposed to be wired (+) to (+), (-) to (-), or A to A, B to B, sometimes the labeling from one vendor to the other is backwards. So when all the other settings appear to be OK but there's still no communication, try swapping the leads on one end to see if the labeling is backwards.

3. Serial settings have to be identical on both devices: baud rate/word size/parity/stop bit

4. Which protocol is the controller? Modbus or Televis?

I have no idea what Televis, but it's a selectable Protocol on the 4822. Is the controller configured for Modbus or Televis?

5. Are you sure the slave is slave address 01? Have you checked? Not all devices default to slave node 01.

I could not find the setting for configuring the Modbus slave ID number, but that controller has some oddball dEA, FAA seting for the 'index of the device within the family' (valid values from 0 to 14). That sort of sounds like the slave node address. Is this zero based counting where 0 = Modbus slave node 1? Modbus slave never have a slave node address zero, by definition.

If you have more one slave, wire and connect to only one slave initially to get comm up and running. That avoids issues with multiple slaves.

How do you know what the Modbus registers are? There was nothing in the basic manual about that.
Th

Time-out means the master attempted to send a message, but failed to get a response.

That's usually at basic level, wiring and configuration

1. COM port #
You have a USB/RS-485 that installs on a Windows 'virtual' COM port. The COM port needs a number, COM1, COM2, COM5 whatever.
In Windows, go to Device Manager > Ports and see which COM port the USB/485 converter installed on and use that number for the COM port for the Labview master.

2. driver polarity is backwards

The RS-485 bus is likely half duplex '2-wire'. It's really 2-wire with a 3rd signal ground wire, but the argument for later.
There is no industry specification for labeling the RS-485 driver lines. Although they're supposed to be wired (+) to (+), (-) to (-), or A to A, B to B, sometimes the labeling from one vendor to the other is backwards. So when all the other settings appear to be OK but there's still no communication, try swapping the leads on one end to see if the labeling is backwards.

3. Serial settings have to be identical on both devices: baud rate/word size/parity/stop bit

4. Which protocol is the controller? Modbus or Televis?

I have no idea what Televis, but it's a selectable Protocol on the 4822. Is the controller configured for Modbus or Televis?

5. Are you sure the slave is slave address 01? Have you checked? Not all devices default to slave node 01.

I could not find the setting for configuring the Modbus slave ID number, but that controller has some oddball dEA, FAA seting for the 'index of the device within the family' (valid values from 0 to 14). That sort of sounds like the slave node address. Is this zero based counting where 0 = Modbus slave node 1? Modbus slave never have a slave node address zero, by definition.

If you have more one slave, wire and connect to only one slave initially to get comm up and running. That avoids issues with multiple slaves.

How do you know what the Modbus registers are? There was nothing in the basic manual about that.
Thank you so much for replying !
1- yes I have the number of my port com it's ''COM8''
2-in my datasheet it says that 12 is supposed to be wired with (+) and 11 with (-) , and in my USB converter I Have A right under it we find D+ and B there is a D- under it , , what I did is that I connected A to 12 and B to 11 , but I'll try to reverse that !
3- I checked the settings and it's all similar
4- the protocol is Modbus
5- about the address am not that sure ! I went to a menu in my controller and I entered the values for DEA=1 and FAA=0 and the final address will be (FF : DD) Where FF is FAA and DD is DEA and the is another way
To calculate the address using parameters FAA and dEA:
dBA = FAA x 16 + dEA
*I have just one slave connected and it's the regulator
Click for the registers table .
For the final address I was taking an address from the table that you will find in the link And i subtract the first address value from the device register for example:
*Set point address from the linked table is :16392 ( the first number refers to the type of register is this case it's the discret input 10001-20000)
Finaly : 16392-10001=6392
And I converted this value to HEX to match the RTU frame .
I just followed what it says in here
If anything is incorrect please let me know .
 
1. Slave ID
Is there some other document that specifies how the Modbus slave ID is configured, dealing with the FAA dEA? I'm totally lost on your formula that has a 16 multiplier factor.

A slave is silent and does not reply unless it recognizes its own slave address in an incoming message, so it is critical to establish a known slave ID. If you have FF:dd configured as 0:1, then I would try both slave addresses decimal 1 and decimal 2, because this oddball FF;dd numbering scheme is zero based, so if FF:dd = 01, then that might be interpreted as
00 zero based = 01 decimal
01 zero based = 02 decimal
Maybe, who knows? No example and Italian minimalist documentation.

You need to experiment with changing target slave addresses in Modpoll (or on the controller) to see if you can 'hit' the correct slave ID, because a slave is silent unless it recognizes its own address. Getting the right slave ID address is critical.

2. Neither of your links work, so I do not know what register you are addressing.

A. Addressing

Addressing is secondary to getting communications established.

However, if you address the wrong register, a Modbus slave will either
- return the value from the wrongly addressed register
- throw an exception message ifs the register is not a valid register
- return zeroes in cases where unused register are padded with zeroes
any of which means that you have accomplished a connection with a reply message coming from the slave, which is not yet your situation.

Getting any reply means having established communication; getting no reply means communication has not been established.
So getting the correct address is secondary to establishing communication.

B. Hexadecimal? Why?
I don't know why you are converting to hexadecimal for register addressing. I don't know what Labview uses for register addressing, but it appears to me, a seldom-ModbusPoll-user, that ModbusPoll uses decimal addressing. If there's a selection for hex addressing I've missed it.

There is a selection for zero based or one based addressing, found under Display

screen shot
zero or one based addressing selected under Display.JPG

FYI, in my experience, any master using hex addressing has always used zero based addressing (binary/hex is inherently zero based).

There is a check box for PLC addresses (base 1) under Setup>Read/Write Definitions, but I get the same results whether the box checked or not, so it appears that not checking the box is not zero based addressing, whereas the zero/one based addressing under Display does make a difference.

one based addressing for FC03, 6337 is (4)6337.JPG

C. A temperature setpoint will never be a discrete input

Typically, a temperature setpoint value will reside in a writeable Modbus Holding Register, (4)xxxx or (4)xxxxxx. One reads a holding register with FC03, one writes to a holding register using FC06 or FC10(hex).

Some controllers will switch from setpoint A to setpoint B when a digital input changes state. However, a check of function H11 on page 6 shows that the digital input on this controller has an activate/deactivate OSP, but does NOT define what OSP is and the word OSP does not occur anywhere else in the document. But all that is moot, because Modbus has no Write Discrete Input command. One can write a coil value, but can only read a discrete input.

The SP register 16392 is a so-called 6-digit address, (4)16392 where the leading numeral (4) indicates that the value is in a holding register, and the remaining 5 digits allow addressing up to the maximum 65,535 possible registers addressed by the Modbus 16 bit address value, FFFF (hex). Early Modbus was memory-limited so addressing was so-called 5-digit addressing, limited to (4)9999 (decimal) because Modbus devices never needed more than 9,999 registers. The low cost of memory now makes it feasible to use registers above 9,999 (decimal) with 6-digit addressing

If you want to change the setpoint via Modbus, then read (4)16392 with FC03. ModPoll appears to take a 6 digit address, as shown in the screen shot below (I can't test it because I don't have a slave that uses that range).

ModPoll appears to take 6 digit addresses, (4)16392.JPG
 
Top