I have a colleague who created an intern library for communicating with the
AB PLCs. From what I understood, here is how it proceeds:

1) Register Session (TCP:44818)
2)CIP Encapsulation with Rack and Slot Number
 this then proceeds so sent Read/Write requests using CIP services codes,
the tags are accessed using their name (there is a method putting this into
a Bytebuffer)
3)ENIP sends the packet as SendRRData and gets the response

I don't know enough about AB to know if that differs a lot from what is
implemented in PLC4X, maybe this can help.

Etienne


Le ven. 6 mars 2020 à 17:15, Robinet, Etienne <[email protected]> a écrit :

> Well from what I've seen, PLC4x is calling right the session register but
> can't handle the positive response (using AB-ETH)
> Using 0.6 EIP protocol, the Session is properly opened, but impossible to
> rightly access data as there is no way to mention which slot the plc is and
> the tag (from what I understood)
>
> Etienne
>
> Le ven. 6 mars 2020 à 17:03, Otto Fowler <[email protected]> a
> écrit :
>
>> I’ve used that to test session, list identities and get all attributes
>> calls from my code to cpppo.
>>
>> If you look at the documentation and the samples you can get cpppo talking
>> to cpppo and then see how the plc4x stuff compares doing the same tasks
>> maybe
>>
>>
>>
>>
>> On March 6, 2020 at 10:49:27, Robinet, Etienne ([email protected]) wrote:
>>
>> What could I test with this library exactly?
>>
>> I managed to establish a Session registration at ENIP level, but seems
>> like
>> the app can not decode the answer (which has Success code 0 as expected).
>> Here is where it's stuck: https://i.imgur.com/ZDrSVTA.png
>>
>> The packetSize= -1 because the packageSizeEstimator is null (why?)
>>
>> Etienne
>>
>> Le ven. 6 mars 2020 à 15:53, Otto Fowler <[email protected]> a
>> écrit
>> :
>>
>> > I would recommend using https://github.com/pjkundert/cpppo to test this
>> > stuff to some extent.
>> >
>> > Using the docker container works well too.
>> >
>> >
>> >
>> >
>> > On March 6, 2020 at 09:04:11, Christofer Dutz (
>> [email protected])
>> > wrote:
>> >
>> > Hi Robert,
>> >
>> > unfortunately I wasn't able to test the ported driver before as I don't
>> > have access to an Allen Bradley device.
>> > I do however recall that I brought up that the protocol looked familiar
>> to
>> > the EtherNet/IP protocol, however seems to have differences.
>> > So you should treat wireshark decodings with care.
>> >
>> > Regarding the error itself, this should use the TCP transport which uses
>> > the NioSocketChannel which should work with the NioEventLoop,
>> > so this error is strange. But it seems to have disappeared as you
>> managed
>> > to get passed this issue.
>> >
>> > It now seems that the problems are related to an invalid request being
>> sent
>> > or a configuration error on the PLC (Don't know the AB-ETH protocol
>> > really).
>> >
>> > Perhaps Volker can help here. However from a look at the mspec for that
>> > protocol, I would assume it's only partially implemented, so perhaps you
>> > are unimplemented parts of this protocol.
>> >
>> > Chris
>> >
>> >
>> >
>> > Am 06.03.20, 13:00 schrieb "Robinet, Etienne" <[email protected]>:
>> >
>> > Hi,
>> > After some tweaking I managed to create a right "Register Session"
>> message
>> > (
>> > https://i.imgur.com/OR9RDdd.png), but I got an error response from the
>> PLC
>> > (
>> > https://i.imgur.com/2Zm1op3.png).
>> > Do you know what the Request should be?
>> >
>> > Etienne
>> >
>> > Le ven. 6 mars 2020 à 10:47, Julian Feinauer <
>> [email protected]
>> > >
>> > a écrit :
>> >
>> > > Hi,
>> > >
>> > > you already help with your bug reports and the feedback you give!
>> > >
>> > > Julian
>> > >
>> > > Am 06.03.20, 10:45 schrieb "Robinet, Etienne" <[email protected]>:
>> > >
>> > > Hi Julian,
>> > > thanks for the fast response. I would be really glad if I could help a
>> > > bit
>> > > on that, as far as I can.
>> > >
>> > > Etienne
>> > >
>> > > Le ven. 6 mars 2020 à 10:43, Julian Feinauer <
>> > > [email protected]>
>> > > a écrit :
>> > >
>> > > > Hi Etienne,
>> > > >
>> > > > sorry that you have that much issues. Perhaps @Volker Emmert can
>> > > comment
>> > > > on that as he implemented the driver together with @Christofer Dutz.
>> > > >
>> > > > Julian
>> > > >
>> > > > Am 06.03.20, 10:37 schrieb "Etienne Robinet" <[email protected]>:
>> > > >
>> > > > Really sorry for double-post, but I managed to establish a
>> > > connection
>> > > > by changing the port from 2222 to 44818 (
>> > > >
>> > >
>> >
>> >
>>
>> https://literature.rockwellautomation.com/idc/groups/literature/documents/qr/comm-qr001_-en-e.pdf
>> > > > )
>> > > >
>> > > > I also change the url to : ab-eth:tcp://163.243.183.250
>> > > > And this is where the application freezes now:
>> > > >
>> > > > ab-eth:tcp://163.243.183.250
>> > > > 10:34:49.867 [main] TRACE o.a.p.j.s.c.DefaultNettyPlcConnection -
>> > > > Channel was created, firing ChannelCreated Event
>> > > > 10:34:49.875 [nioEventLoopGroup-2-1] DEBUG
>> > > > o.a.p.j.a.p.AbEthProtocolLogic - Sending COTP Connection Request
>> > > > 10:34:49.909 [nioEventLoopGroup-2-1] TRACE
>> > > > o.a.plc4x.java.spi.Plc4xNettyWrapper - Adding Response Handler ...
>> > > > 10:34:49.909 [nioEventLoopGroup-2-1] TRACE
>> > > > o.a.plc4x.java.spi.Plc4xNettyWrapper - Sending to wire
>> > > >
>> > >
>> >
>> >
>>
>> CIPEncapsulationConnectionRequest[sessionHandle=0,status=0,senderContext={0,0,0,0,0,0,0,0},options=0]
>>
>> >
>> > > > 10:34:49.920 [nioEventLoopGroup-2-1] DEBUG
>> > > > o.a.plc4x.java.spi.Plc4xNettyWrapper - Forwarding request to plc
>> > > >
>> > >
>> >
>> >
>>
>> CIPEncapsulationConnectionRequest[sessionHandle=0,status=0,senderContext={0,0,0,0,0,0,0,0},options=0]
>>
>> >
>> > > > 10:34:49.926 [nioEventLoopGroup-2-1] DEBUG
>> > > io.netty.util.Recycler -
>> > > > -Dio.netty.recycler.maxCapacityPerThread: 4096
>> > > > 10:34:49.926 [nioEventLoopGroup-2-1] DEBUG
>> > > io.netty.util.Recycler -
>> > > > -Dio.netty.recycler.maxSharedCapacityFactor: 2
>> > > > 10:34:49.926 [nioEventLoopGroup-2-1] DEBUG
>> > > io.netty.util.Recycler -
>> > > > -Dio.netty.recycler.linkCapacity: 16
>> > > > 10:34:49.926 [nioEventLoopGroup-2-1] DEBUG
>> > > io.netty.util.Recycler -
>> > > > -Dio.netty.recycler.ratio: 8
>> > > > 10:34:49.935 [nioEventLoopGroup-2-1] DEBUG
>> > > > io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.checkAccessible:
>> > > true
>> > > > 10:34:49.935 [nioEventLoopGroup-2-1] DEBUG
>> > > > io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.checkBounds:
>> true
>> > > > 10:34:49.935 [nioEventLoopGroup-2-1] DEBUG
>> > > > i.n.util.ResourceLeakDetectorFactory - Loaded default
>> > > ResourceLeakDetector:
>> > > > io.netty.util.ResourceLeakDetector@385a14ab
>> > > > 10:34:49.966 [nioEventLoopGroup-2-1] DEBUG
>> > > > o.a.p.j.s.GeneratedDriverByteToMessageCodec - Sending bytes to PLC
>> > > for
>> > > > message
>> > > >
>> > >
>> >
>> >
>>
>> CIPEncapsulationConnectionRequest[sessionHandle=0,status=0,senderContext={0,0,0,0,0,0,0,0},options=0]
>>
>> >
>> > > > as data 01010000000000000000000000000000000000000000000000000000
>> > > > 10:34:49.972 [nioEventLoopGroup-2-1] TRACE
>> > > > o.a.p.j.s.GeneratedDriverByteToMessageCodec - Receiving bytes,
>> > > trying to
>> > > > decode Message...
>> > > >
>> > > > BR,
>> > > >
>> > > > Etienne
>> > > >
>> > > > On 2020/03/06 09:30:22, Etienne Robinet <[email protected]>
>> > > wrote:
>> > > > > Hi all,
>> > > > > I wanted to ask how far we are on the AB-ETH driver? I have a
>> > > > LOGIXS5580 Series PLC to test, and when I try to run the HelloWorld
>> > > example
>> > > > I get following error:
>> > > > >
>> > > > > 10:24:44.771 [nioEventLoopGroup-2-1] INFO
>> > > > o.a.p.j.s.c.NettyChannelFactory - Unable to connect, shutting down
>> > > worker
>> > > > thread.
>> > > > > org.apache.plc4x.java.api.exceptions.PlcConnectionException:
>> > > Error
>> > > > creating channel.
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> org.apache.plc4x.java.spi.connection.NettyChannelFactory.createChannel(NettyChannelFactory.java:115)
>>
>> >
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> org.apache.plc4x.java.spi.connection.DefaultNettyPlcConnection.connect(DefaultNettyPlcConnection.java:89)
>>
>> >
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> org.apache.plc4x.java.PlcDriverManager.getConnection(PlcDriverManager.java:74)
>>
>> >
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> org.apache.plc4x.java.examples.helloplc4x.HelloPlc4x.main(HelloPlc4x.java:45)
>>
>> >
>> > > > > Caused by: java.lang.IllegalStateException: incompatible event
>> > > loop
>> > > > type: io.netty.channel.nio.NioEventLoop
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> io.netty.channel.AbstractChannel$AbstractUnsafe.register(AbstractChannel.java:462)
>>
>> >
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:87)
>>
>> >
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:81)
>>
>> >
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> io.netty.channel.MultithreadEventLoopGroup.register(MultithreadEventLoopGroup.java:86)
>>
>> >
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:322)
>>
>> >
>> > > > > at
>> > > > io.netty.bootstrap.Bootstrap.doResolveAndConnect(Bootstrap.java:159)
>> > > > > at io.netty.bootstrap.Bootstrap.connect(Bootstrap.java:143)
>> > > > > at
>> > > >
>> > >
>> >
>> >
>>
>> org.apache.plc4x.java.spi.connection.NettyChannelFactory.createChannel(NettyChannelFactory.java:99)
>>
>> >
>> > > > > ... 3 more
>> > > > >
>> > > > > Any ideas on where this comes from? In Studio5000 the PLC is
>> > > on the
>> > > > slot 4 and I am connected to a swtich on IP: 163.243.183.250 and
>> > > here's the
>> > > > plc4x uri: "ab-eth://163.243.183.250/".
>> > > > >
>> > > > > BR,
>> > > > >
>> > > > > Etienne
>> > > > >
>> > > >
>> > > >
>> > > >
>> > >
>> > >
>> > >
>> >
>>
>

Reply via email to