Hi guys,
I’m in the middle of a migration from Matrikon OPC to the Ignition OPC built-in the Gateway and I’m having connectivity problems with some of the devices.
All the devices uses Modbus RTU to communicate with the master, and a media converter (Moxa NPort) to convert the RS-485 to Ethernet. This is how Matrikon has been working since the beginning, and how I have to implement it on Ignition.
I’ve already migrate several devices, but some of them has been a real challenge. One of the devices, an Ingeteam Inverter, has been real difficult, showing me several time out and driver setting to stale in the console.
In the following console logs, the [CT1_MBGW1a] is the Moxa converter used to communicate with the Inverser via Modbus RTU
(D) 11:20:38 DriverVariableNode[CT1_MBGW1a] Setting [CT1_MBGW1a]1.IR15@4500ms to stale. Last update was 172935ms ago. Max age is 90000.0ms.
(D) 11:20:38 DriverVariableNode[CT1_MBGW1a] Setting [CT1_MBGW1a]1.IR14@4500ms to stale. Last update was 172935ms ago. Max age is 90000.0ms.
(D) 11:20:38 DriverVariableNode[CT1_MBGW1a] Setting [CT1_MBGW1a]1.IR16@4500ms to stale. Last update was 172935ms ago. Max age is 90000.0ms.
(D) 11:20:38 DriverVariableNode[CT1_MBGW1a] Setting [CT1_MBGW1a]1.IRI1@4500ms to stale. Last update was 174304ms ago. Max age is 90000.0ms.
(D) 11:20:38 drivers.ModbusOverTCPDriver[CT1_MBGW1a].RequestQueue Low count: 5
(D) 11:20:38 drivers.ModbusOverTCPDriver[CT1_MBGW1a].RequestQueue High count: 0
(D) 11:20:38 drivers.ModbusOverTCPDriver[CT1_MBGW1a].RequestQueue Critical count: 0
WARN 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a].BasicRequestCycle.TimeoutDaemon ScheduledRequest[com.inductiveautomation.xopc.drivers.modbus2.requests.ReadInputRegistersRequest@c3b4c09] request with key "java.lang.Object@306b4275" failed due to timeout.
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a].RequestSchedule Canceling 7 ScheduledRequests.
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a] Disconnecting -> Disconnected
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a] Connected -> Disconnecting
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a] Reconnecting...
WARN 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a].ReadInputRegistersRequest Request failed. FailureType==TIMEOUT
java.lang.Exception: Request failed by TimeoutDaemon due to timeout: ScheduledRequest[com.inductiveautomation.xopc.drivers.modbus2.requests.ReadInputRegistersRequest@c3b4c09]
at com.inductiveautomation.xopc.driver.api.BasicRequestCycle$TimeoutDaemon.failRequests(BasicRequestCycle.java:352)
at com.inductiveautomation.xopc.driver.api.BasicRequestCycle$TimeoutDaemon.run(BasicRequestCycle.java:305)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
WARN 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a].ReadHoldingRegistersRequest Request failed. FailureType==DISCONNECTED
java.lang.Exception: RequestCycle stopped.
at com.inductiveautomation.xopc.driver.api.BasicRequestCycle.run(BasicRequestCycle.java:135)
at java.lang.Thread.run(Unknown Source)
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a] Connecting -> Connected
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a] Releasing connect permit.
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a].SocketIODelegate [hostname=192.168.2.1,port=40001] TCP connection successfully opened.
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a].SocketIODelegate [hostname=192.168.2.1,port=40001] Opening TCP connection...
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a] Disconnected -> Connecting
(D) 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a].BasicRequestCycle Shutdown complete.
WARN 11:21:52 drivers.ModbusOverTCPDriver[CT1_MBGW1a].ReadInputRegistersRequest Request failed. FailureType==DISCONNECTED
java.lang.Exception: RequestCycle stopped.
at com.inductiveautomation.xopc.driver.api.BasicRequestCycle.shutdown(BasicRequestCycle.java:263)
at com.inductiveautomation.xopc.driver.api.AbstractDriver.createNewRequestCycle(AbstractDriver.java:652)
at com.inductiveautomation.xopc.driver.api.AbstractDriver.notifyDisconnectDone(AbstractDriver.java:618)
at com.inductiveautomation.xopc.driver.api.AbstractIODelegatingDriver.notifyDisconnectDone(AbstractIODelegatingDriver.java:71)
at com.inductiveautomation.xopc.driver.api.AbstractIODelegatingDriver.disconnect(AbstractIODelegatingDriver.java:43)
at com.inductiveautomation.xopc.driver.api.AbstractIODelegatingDriver.reconnect(AbstractIODelegatingDriver.java:93)
at com.inductiveautomation.xopc.drivers.modbus2.AbstractModbusDriver.access$100(AbstractModbusDriver.java:89)
at com.inductiveautomation.xopc.drivers.modbus2.AbstractModbusDriver$2.notifyCommunicationTimeout(AbstractModbusDriver.java:150)
at com.inductiveautomation.xopc.drivers.modbus2.requests.AbstractModbusRequest.fail(AbstractModbusRequest.java:173)
at com.inductiveautomation.xopc.drivers.modbus2.requests.AbstractModbusReadRequest.fail(AbstractModbusReadRequest.java:101)
at com.inductiveautomation.xopc.driver.api.ScheduledRequest.fail(ScheduledRequest.java:113)
at com.inductiveautomation.xopc.driver.api.BasicRequestCycle$TimeoutDaemon.failRequests(BasicRequestCycle.java:349)
at com.inductiveautomation.xopc.driver.api.BasicRequestCycle$TimeoutDaemon.run(BasicRequestCycle.java:305)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
I’ve been trying modifying the device parameters in the Ignition Gateway, the OPC Server parameters, the scan clases, but nothing seems to fix it. Even I install the last minor update (7.7.7 to 7.7.10) but it’s the same. But in Matrikon OPC works perfectly.
I hope you could help me. Thanks