Hey Chris, Thanks for this I will test in on monday on the PLC. I also wanted to ask why you substracted 28 in the mspec. I analyzed it and it puts the length (in the Register Session packet) to 0 (getSizeinBytes()-28) as it should be 4 (from what I saw from a working implementation of EIP/CIP. The problem was that the PLC would send an error code back because of this 0 length.
Etienne ROBINET > Le 7 mars 2020 à 12:27, Christofer Dutz <[email protected]> a écrit : > > Hi All, > > so I just added a packet-size-estimator for AB-ETH ... hope that helps a > little more. > > Chris > > > > Am 07.03.20, 12:23 schrieb "Christofer Dutz" <[email protected]>: > > Hi Etienne, > > well I just had a look at the driver ... it seems it's just not finished > yet. > The reason it doesn't parse the response is that it doesn't know how big > it is ... I will try to implement a packetSizeEstimator for this, but it > would really be great if someone who knows this protocol (Has some sort of > specification as well as a device to test it on) could work on this. > > I'll try to guess what it could be .. but no idea if this gets you much > further. > > We really should only put stuff outside the sandbox, if there's at least > one person willing and able to maintain it ... > > Chris > > > Am 06.03.20, 17:16 schrieb "Robinet, Etienne" <[email protected]>: > > 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 >>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >> > > > >
