CompactLogix

I’ve been following the Ignition forums pretty close, and it seems that some of you have been able to set up and communicate with your compactlogix controllers. I, however, have not been able to communicate. I inquired about drivers for this device, and Vannessa suggested I post here, as some people have been successful, and some have not.

I am currently running Ignition on a linux machine (ubuntu), and the test device that I am attempting to connect to is an AB CompactLogix L35E (1769-L35E). Setup looks like it is pretty straight forward (as one gentleman pointed out in an earlier post), but I’ll go through it step by step here just in case I missed something.

I created a test project, and have my database (mysql) setup and functioning properly. The Controller has a test program running on it with a few tags for testing purposes, and it is functioning properly. Now, I go to the configuration page to set up the device under OPC-UA>Devices>Add A Device. I expand Allen-Bradley, then Ethernet, and select ControlLogix and click Next. I then enter a name for the device, in this case, CLTest, and set the device IP address which is 192.0.0.242 and leave the rest of the settings at their default values and click save. So far so good. In the Devices window, it shows the device that I just created, and that it is connected. I then go to the OPC-UA status page, and again, everything is connected.

So, now with everything set up and working properly, I should be able to open the Designer and begin. This is where the trouble begins.

I launch the designer, and open the test project. When I select the Tags folder, and then add OPC tag, the add tag dialog opens, and I then browse for a tag using the default IgnitionOPCUA. I am able to drill down to the device that I created, IgnitionOPCUA>Devices>[CLTest}>MainProgram, and there my tags on the controller are listed. So, I then select a test tag that I have created, that is an INT data type, and click OK.

As soon as I click OK, the tag is added, the compactlogix controller encounters a Major Recoverable Fault, and the Ignition console imeadiately starts scrolling “[CLTEST] Read Request failed due to TIMEOUT” (which is of no surprise, because the controller has faulted thus resulting in comms loss everywhere). The controller comms then come back online, and the ignition console displays the following:

[quote]jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:15,417]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | ERROR [ControlLogixDriver ] [10:19:15,657]: [CLTest] Connection lost due to IOException.
jvm 1 | java.io.IOException: Connection reset by peer
jvm 1 | at sun.nio.ch.FileDispatcher.read0(Native Method)
jvm 1 | at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
jvm 1 | at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
jvm 1 | at sun.nio.ch.IOUtil.read(IOUtil.java:200)
jvm 1 | at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractEthernetDriver$SelectionManager.readFromChannel(AbstractEthernetDriver.java:402)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractEthernetDriver$SelectionManager.run(AbstractEthernetDriver.java:527)
jvm 1 | at java.lang.Thread.run(Thread.java:619)
jvm 1 | Exception in thread “EthernetDriverTP-thread-30” java.util.MissingFormatArgumentException: Format specifier ‘s’
jvm 1 | at java.util.Formatter.format(Formatter.java:2432)
jvm 1 | at java.util.Formatter.format(Formatter.java:2367)
jvm 1 | at java.lang.String.format(String.java:2769)
jvm 1 | at com.inductiveautomation.xopc.drivers.allenbradley.requests.ABControlLogixBrowseRequest.receiveMessage(ABControlLogixBrowseRequest.java:141)
jvm 1 | at com.inductiveautomation.xopc.drivers.allenbradley.requests.ABControlLogixBrowseRequest.receiveMessage(ABControlLogixBrowseRequest.java:35)
jvm 1 | at com.inductiveautomation.xopc.driver.api.RequestSequence.receiveMessage(RequestSequence.java:49)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractDriver.messageArrived(AbstractDriver.java:652)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractEthernetDriver.messageArrived(AbstractEthernetDriver.java:215)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractEthernetDriver$SelectionManager$DeliverMessage.run(AbstractEthernetDriver.java:564)
jvm 1 | at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
jvm 1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
jvm 1 | at java.lang.Thread.run(Thread.java:619)
jvm 1 | WARN [ABControlLogixBrowseRequest ] [10:19:17,671]: [CLTest] Browse Request request failed due to TIMEOUT
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:19,933]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:22,188]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:24,441]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:26,716]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:28,971]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:31,222]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:33,478]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:35,731]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:37,985]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:40,236]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:42,488]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:44,739]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:46,991]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:49,243]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:51,494]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:53,749]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:56,002]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:19:58,254]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:20:00,510]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:20:02,783]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:20:05,038]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:20:07,296]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | WARN [ABControlLogixReadRequest ] [10:20:09,551]: [CLTest] Read Request failed due to TIMEOUT.
jvm 1 | ERROR [ControlLogixDriver ] [10:20:09,741]: [CLTest] Connection lost due to IOException.
jvm 1 | java.io.IOException: Connection reset by peer
jvm 1 | at sun.nio.ch.FileDispatcher.read0(Native Method)
jvm 1 | at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
jvm 1 | at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
jvm 1 | at sun.nio.ch.IOUtil.read(IOUtil.java:200)
jvm 1 | at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractEthernetDriver$SelectionManager.readFromChannel(AbstractEthernetDriver.java:402)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractEthernetDriver$SelectionManager.run(AbstractEthernetDriver.java:527)
jvm 1 | at java.lang.Thread.run(Thread.java:619)
jvm 1 | Exception in thread “EthernetDriverTP-thread-31” java.util.MissingFormatArgumentException: Format specifier ‘s’
jvm 1 | at java.util.Formatter.format(Formatter.java:2432)
jvm 1 | at java.util.Formatter.format(Formatter.java:2367)
jvm 1 | at java.lang.String.format(String.java:2769)
jvm 1 | at com.inductiveautomation.xopc.drivers.allenbradley.requests.ABControlLogixBrowseRequest.receiveMessage(ABControlLogixBrowseRequest.java:141)
jvm 1 | at com.inductiveautomation.xopc.drivers.allenbradley.requests.ABControlLogixBrowseRequest.receiveMessage(ABControlLogixBrowseRequest.java:35)
jvm 1 | at com.inductiveautomation.xopc.driver.api.RequestSequence.receiveMessage(RequestSequence.java:49)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractDriver.messageArrived(AbstractDriver.java:652)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractEthernetDriver.messageArrived(AbstractEthernetDriver.java:215)
jvm 1 | at com.inductiveautomation.xopc.driver.api.AbstractEthernetDriver$SelectionManager$DeliverMessage.run(AbstractEthernetDriver.java:564)
jvm 1 | at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
jvm 1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
jvm 1 | at java.lang.Thread.run(Thread.java:619)
jvm 1 | WARN [ABControlLogixBrowseRequest ] [10:20:11,832]: [CLTest] Browse Request request failed due to TIMEOUT
jvm 1 | WARN [ABControlLogixReadRequest ] [10:20:14,111]: [CLTest] Read Request failed due to TIMEOUT.
[/quote]

And it will keep cycling through until I remove the device.

On the controller i get the following:

[quote]12/31/1997 7:00:00 PM
(Type 01) Power-up Fault
(Code 60) Non-recoverable Fault./quote]

Note the date and time are wrong, this is because when the fault occurs, it completely wipes out all controller settings and the loaded program.

Any suggestions/help would be greatly appreciated.

Thank you for the detailed report - we are currently looking into this.

Thank you for your detailed steps and error log.

Can you email your test program to support@inductiveautomation.com? I want to use the same program to try to reproduce the problem.

Also, if you are able to reproduce the problem, please do the following:

  1. In the Configure section of the Ignition Gateway, select Console.
  2. Select Levels tab then type in ControlLogixDriver and click the Set button.
  3. Select “Trace” for the level of the xopc.drivers.allenbradley.ControlLogixDriver.
  4. Reproduce the problem.
  5. Email me all the wrapper.log files to support@inductiveautomation.com.

There is an Ignition Update coming out today that includes some ControlLogix fixes but none of them associated with what you are describing.

Just a reminder to everyone, we haven’t finished the in-house testing of the CompactLogix controller.

Thank you,
Tom

Thank you for the speedy response guys!

I have sent a copy of the test program and the wrapper.log file per your request.

Thank you for the files they were a big help.

There will be an update later today that should solve the issue.

I've loaded build 4446.

I can no longer browse the device tags, and the error that I see in the console follows along with the builds release notes:

This tag offset invalid is caused by some sort of difference between the controllogix and compactlogix? With the new build I have went down through every data type just to check them all and get the same result, not able to browse.

(I’m just trying to verify everything to make sure that it’s not something that I’ve done wrong before i swap back to a windows setup with rslinx as the opc server bleh)

You did everything correctly.

From your CompactLogix program, I was able to reproduce the problem.

I’ll be emailing you update module that fixes the problem.

Thank you,
Tom

Thank you Tom, you guys do an outstanding job! I’m glad we decided to go with Inductive Automation!