Ignition 8 Modbus TCP SocketIODelegate

I’m trying without success to connect to a modbus TCP device (ABB PM554 ETH) using the ignition Modbus TCP driver in ignition 8.

The weird thing is I was able to successfully connect and communicate in ignition 7.9.9.

In ignition 8 it connects and disconnects relative to the OMB time setting on the modbus TCP server.

In the following log pic I had the omb time set at 30,000 ms.

I should note that I saw the same behavior from ignition 7.9.9 when I had the OMB time set at the default 1000 ms…

but upon research found Modbus TCP disconnection and no reconnection [SOLVED] and changing the OMB time to 30000 ms fixed the issue.

I have tried changing the OMB time back to 1000 while attempting to connect to ignition 8 but I get the same error just at a higher frequency.

Anyone else come across this? Any ideas on what to try?

Are you subscribed to any tags on that device right now?

Yes I am, though they are in the constant stat of bad_stale, or Error_config.

I initially exported the tags from 7.9.9 and imported into 8.

I also tried creating an OPC tag in ignition 8 but still couldn’t ever get a good quality.

Ignition 7.9.9

Looks like you’re on broken nightly version that doesn’t have a default Tag Group configured. Create a Tag Group and assign all your tags to it.

Your right Kevin. I missed the tag group. Just setting to default on the boolyfooly tag seemed to do the trick.

I also want to note for others. When originally troubleshooting on my imported tags I did select a tag group but didnt see a difference in the tag quality. It looks like previous versions of ignition used “Ignition OPC-UA Server” and in ignition 8 it uses “Ignition OPC UA Server” for the OPC Server.

Ooooo! This is going to break applications that use system.opc.*(). Not good.

It’s going to be fine because on upgrade it won’t change. This was a tag import into a new install of 8.

1 Like


I have a similar problem on 8.1.9.
I was making edits to the modbus device address config while a tag subscribed to and made an error.

I have since corrected the modbus configuration error I made.

Problem is I cant get it to snap out of it. tried restarting the modbus module. Then even Deleting all tags subscribed and the modbus device and restarting the gateway. New modbus setups created that that point to the address needed still give the following error. I will try a different address on Monday but suspect new addresses will not work.

Another odd thing I found as I am not on site is that if I change the address of an existing modbus device to the address of device that give this error it works fine.

I suspect new Modbus TCP devices that are created from this point forward will fail in the same way regardless of address but will post an update Monday when I can confirm.

I'm reviving this topic because I'm seeing similar errors and I can't figure out what's wrong. I'm also just getting started with Ignition so very much a beginner.

I'm running version 8.1.24 (trial) on Windows Server 2019. The machine has two network interfaces. I've configured a Modbus TCP device

  • Name: Modbus
  • Enabled: true
  • Hostname: 10.255.255.220
  • Port: 502
  • Local address: 10.255.255.240
  • Comm. timeout: 2000

Advanced options are left at default, except I'm setting Zero-based addressing to true. In addition to the IP and the port, this is the vendor documentation I have on the device interface:

Documentation
register INPUT REGISTERS
function READ_INPUT_REGISTERS (0x30001)
Address Type Multiplier Description
0 int 10 temperature from the main sensor
3 bool - Open door
4 bit - ...

I've configured an address for the device like so:

Prefix Start End Step Modbus Type Modbus Address
temp 0 0 Input Register (UInt16) 0

But the thing keeps connecting and disconnecting. This is what I'm seeing in the logs:

SocketIODelegate	19Jan2023 21:42:03
	[hostname=10.255.255.220,port=502] Socket connection closed, DriverState was Connected.

java.io.IOException: End of stream reached.
at com.inductiveautomation.iosession.socket.AsyncSocketIOSession.run(AsyncSocketIOSession.java:74)
at java.base/java.lang.Thread.run(Unknown Source)

Wireshark doesn't show any traffic at all. It's just this error showing up in the logs every 5 seconds or so.

I wrote a little program in Rust for testing and ran it on the same machine.

use modbus::Client;
use modbus::tcp;

fn main() {
    let mut client = tcp::Transport::new("10.255.255.220").unwrap();
    let res = client.read_input_registers(0, 1).unwrap();
    println!("{:?}", res);
}

This, however, works like a charm and I can see the activity in Wireshark.

I'm stuck.

1 Like