Modbus Tags "Bad_NotConnected" When polling more than one device

Hi everyone,

I am new to modbus systems now I have 4 RTU over RS485 devices ( Address 1: VFD, 2 and 3: Schneider PM2220 Powermeters and 4: Delta PLC). I have added their modbus addresses through Ignition Address mapping.
When I add tags only from one device, there is no problem and errors. The problem is that once I add tags for multiple devices, I have occasional "Bad_NotConnected: The variable should receive its value from another variable" errors. The more the number of tags I poll, the more frequent this error occurs.

I attach some pictures for reference.

Thanks everyone,
Ali



What do you see on the device's diagnostics page?

The diagnostics Tag shows Good connection without errors. But I have investigated it further and it seems that the poll requests are being sent to all 4 slave devices at once resulting in Frame and CRC errors by slaves.
I think I am experiencing the same problem here:

Are you sure there are no replies for each before the next is sent? (That is how RTU is supposed to work.) Are you sure these devices comply with Modbus RTU timing specifications? (They are supposed to ignore requests and replies that target other slave unit ID numbers.)

Are you including the unit number in your manual addressing? (Ignition's default to unit zero is a broadcast in Modbus RTU.)

1 Like

Was this issue resolved? I am having the same issue

In all cases the poster has disappeared when tasked with providing logs or other evidence to support the claim that multiple requests are sent at once.

Is there something else that would be causing the "variable should receive its value from another variable" error?

Disable the "Reconnect after consecutive timeouts" setting on the driver. That's the usual culprit.

Then you'll need to figure out why the device isn't responding to requests.

1 Like

I have not disappeared, I just found other posts indicating the same issue where you and pturmel had responded to it without any solution (other than a driver offer for sale by pturmel), so I don't know why are you looking for same details here too, cause you already know the issue exists.
Anyway, I could not use modbus for multiple slave devices, it is simply not possible in ignition due to a bug that is discussed in several posts.

Me also facing same issue
Bad_NotConnected: The variable should receive its value from another variable.

This is not a bug. As best could be told from the information in this and prior posts, the serial RTU link is simply overloaded, and made worse if any device drops out.

How many registers, across all devices, are you trying to poll, and at what pace? What is the baud rate on your RS-485 channel?

Ideal bulk polling, if every request is max size, and every slave responds instantly, is ~ (baud * 0.045) registers per second. For typical 9600 baud links, that works out to an absolute maximum of 432 16-bit registers per second across the whole link.

Me also. I’ve trying to diagnose this issue for days now! I three of the same devices, only reading one tag on each. As soon as I have more than (1) ID in designer perspective, I get ‘Bad’. Setup: ID1 (drop#1 or serial address in controller), ID2 (drop#2 or serial address in controller, ID3 (drop#3 or serial address in controller). 9600 baud, 8E1 on all devices. Modbus Poll runs great, with no errors on all three devices.

I believe it to be a bug. Why is it then that I have same setup using app ‘Modbus Poll’ on 3 controllers and everything is fine, but when using in Ignition (and I’ve tried every possible setting in the gateway) I get ‘Bad’ quality when I add another ID (different) in Ignition designer (perspective).

You are using a single device name in Ignition? And putting all three IDs in the same Ignition device? (Absolutely required.)

Please show the diagnostic page for your device instance.

Let me reiterate this for everybody who stumbles into this thread in the future.

It may not solve the issue, but it will clear things up and change the failure to be more meaningful.

2 Likes

I am using only one device for (3) ID's.

One of these days somebody with a serial analyzer is going to have to use it to snoop the difference between Ignition Modbus traffic and the working Modpoll or whatever other traffic.

Years ago, I used these USB to serial adapters with an RS-232 to RS-485 converter to talk to devices for another HMI software and they worked great. While these don't look special, they have a special software you can install that will show you the raw data going through the serial port and helped troubleshooting.

https://tripplite.eaton.com/keyspan-high-speed-usb-to-serial-adapter~USA19HS

Edit: I hope they still include that software and that it wasn't something from back 15+ years ago that didn't get ported. On their download page it only shows a driver, but I don't have one anymore so can't test it to see if it still has the extra diagnostics they used to have back with Windows XP.

Edit: They do still have the tool, but it didn't put any shortcuts in my start menu. The path to the serial assistant app for diagnostics is here: "C:\Program Files (x86)\Keyspan\Keyspan USA19H Driver\Windows 19H driver\K19HAsst.exe"

The Moxa serial-ethernet converters I normally recommend have a traffic tracing page. :man_shrugging:

Are you talking the MB-3170/3270? Those are our go-to also for Modbus devices and great for diagnostics, but wasn't sure if they were using them in this case. It sounded like they were doing serial direct to the server, which in that case they'd need a USB-Serial converter with a diagnostics tool to monitor it (unless there's some other way I don't know about).