Hello,

Are you using "CachedPlcConnectionManager"?


El vie, 12 de jul de 2024, 2:07 p. m., Luiz doleron <dole...@gmail.com>
escribió:

> Hi Chris,
>
> thank you for the reply.
>
> My problem is not the netty WARN messages. My problem is that the program
> gets stuck in the getConnection call when using the ODOT gateway to
> interface my S7-300 PLC.
>
> I'm not sure but maybe my problem is related to this issue:
> https://github.com/apache/plc4x/issues/1204
>
> [Bug]: CachedPlcConnectionManager get stuck if the connection with the PLC
> has a temporary interruption
>
>
> Em sex., 12 de jul. de 2024 às 12:55, Christofer Dutz <
> christofer.d...@c-ware.de> escreveu:
>
> > Hi Luiz,
> >
> > just some time ago someone reported this and I just recently found the
> > root-cause of it.
> > https://github.com/apache/plc4x/issues/1593
> > Right now, I would simply ignore this message … it shouldn’t influence
> the
> > functionality of the driver itself.
> >
> > Does it work in general?
> >
> > Chris
> >
> >
> > Von: Luiz doleron <dole...@gmail.com>
> > Datum: Freitag, 12. Juli 2024 um 17:09
> > An: dev@plc4x.apache.org <dev@plc4x.apache.org>
> > Betreff: RE: Re: PLC4J, Siemens S7-300 and MPI communication
> > Hi Cesar and everyone,
> >
> > I'm trying to get the ODOT gateway to work with PLC4X, however, I'm
> > getting a timeout WARN and the program stuck in the getConnection call.
> >
> > 1 - after plugging the gateway in the S7-300, I followed the instructions
> > here<https://www.odotautomation.com/uploads/S7MPI-V2.0-user-manual.pdf>
> > and set the IP using the NET-LINK app.
> > 2 - The S7-300/ODOT gateway successfully replied to ping
> > 3 - I was able to read data from the PLC using Kepware using S7/ethernet
> > driver
> >
> > However, when I tried PLC4J, I got a timeout. Any idea what I'm doing
> > wrong?
> >
> > My test code:
> >
> >
> > public static void main(String[] args) {
> >
> > // System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "Error");
> >
> > Logger logger = LoggerFactory.getLogger(TestConnection.class);
> >
> > String connectionString = "s7://10.10.26.88?controller-type:S7_300<
> > http://10.10.26.88?controller-type:S7_300>";
> >
> > PlcConnection plcConnection = null;
> >
> > try {
> >
> > plcConnection = PlcDriverManager.getDefault().getConnectionManager()
> >
> > .getConnection(connectionString);
> >
> >
> >
> > if (!plcConnection.getMetadata().isReadSupported()) {
> >
> > logger.error("This connection doesn't support reading.");
> >
> > return;
> >
> > }
> >
> > System.out.println("Success");
> >
> > } catch (Exception e) {
> >
> > e.printStackTrace();
> >
> > } finally {
> >
> > if (plcConnection != null) {
> >
> > try {
> >
> > plcConnection.close();
> >
> > } catch (Exception e) {
> >
> > e.printStackTrace();
> >
> > }
> >
> > }
> >
> > }
> >
> >
> >
> > }
> >
> > The log:
> >
> >
> > [main] INFO org.apache.plc4x.java.DefaultPlcDriverManager - Instantiating
> > new PLC Driver Manager with class loader
> > jdk.internal.loader.ClassLoaders$AppClassLoader@2cdf8d8a
> >
> > [main] INFO org.apache.plc4x.java.DefaultPlcDriverManager - Registering
> > available drivers...
> >
> > [main] INFO org.apache.plc4x.java.DefaultPlcDriverManager - Registering
> > driver for Protocol s7 (Siemens S7 (Basic))
> >
> > [main] INFO org.apache.plc4x.java.transport.tcp.TcpChannelFactory -
> > Configuring Bootstrap with
> >
> org.apache.plc4x.java.s7.readwrite.configuration.S7TcpTransportConfiguration@709ba3fb
> >
> > [main] INFO org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic -
> > S7 Driver running in ACTIVE mode.
> >
> > [main] INFO org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl -
> > 12:01:12.590558651 userEventTriggered: Multiplexor Event:
> > org.apache.plc4x.java.spi.events.ConnectEvent@5542c4ed
> >
> > [nioEventLoopGroup-2-1] WARN io.netty.channel.embedded.EmbeddedChannel -
> > More than one exception was raised. Will report only the first one and
> log
> > others.
> >
> > io.netty.handler.codec.DecoderException:
> > io.netty.handler.codec.EncoderException: MessageToMessageCodec$1 must
> > produce at least one message.
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
> >
> > at
> >
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
> >
> > at
> >
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
> >
> > at
> >
> io.netty.handler.codec.ByteToMessageCodec.channelRead(ByteToMessageCodec.java:103)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
> >
> > at
> >
> io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:280)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
> >
> > at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl.decode(S7HMuxImpl.java:145)
> >
> > at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl.decode(S7HMuxImpl.java:1)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
> >
> > at
> >
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
> >
> > at
> >
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
> >
> > at
> >
> io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
> >
> > at
> >
> io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
> >
> > at
> >
> io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
> >
> > at
> >
> io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
> >
> > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
> >
> > at
> >
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
> >
> > at
> > io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
> >
> > at
> >
> io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
> >
> > at java.base/java.lang.Thread.run(Thread.java:840)
> >
> > Caused by: io.netty.handler.codec.EncoderException:
> > MessageToMessageCodec$1 must produce at least one message.
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:99)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868)
> >
> > at io.netty.handler.logging.LoggingHandler.write(LoggingHandler.java:288)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868)
> >
> > at
> >
> io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:113)
> >
> > at
> >
> io.netty.handler.codec.ByteToMessageCodec.write(ByteToMessageCodec.java:108)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:956)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000)
> >
> > at
> >
> io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025)
> >
> > at
> io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306)
> >
> > at
> >
> org.apache.plc4x.java.spi.internal.DefaultConversationContext.sendToWire(DefaultConversationContext.java:70)
> >
> > at
> >
> org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(DefaultSendRequestContext.java:107)
> >
> > at
> >
> org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(DefaultSendRequestContext.java:1)
> >
> > at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$3(S7ProtocolLogic.java:194)
> >
> > at
> java.base/java.util.function.Consumer.lambda$andThen$0(Consumer.java:65)
> >
> > at
> >
> org.apache.plc4x.java.spi.Plc4xNettyWrapper.decode(Plc4xNettyWrapper.java:183)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81)
> >
> > at
> >
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
> >
> > ... 40 more
> >
> > [pool-6-thread-1] WARN
> > org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic - Timeout
> > during Connection establishing, closing channel...
> >
> > [pool-6-thread-1] INFO
> > org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - Unregistered of
> > channel: PRIMARY
> >
> > [pool-6-thread-1] WARN io.netty.channel.AbstractChannelHandlerContext -
> > Failed to mark a promise as failure because it has succeeded already:
> > DefaultChannelPromise@31ec571e(success)
> >
> > java.lang.IllegalStateException: HashedWheelTimer.stop() cannot be called
> > from TimerTask
> >
> > at io.netty.util.HashedWheelTimer.stop(HashedWheelTimer.java:393)
> >
> > at
> >
> org.apache.plc4x.java.spi.netty.NettyHashTimerTimeoutManager.stop(NettyHashTimerTimeoutManager.java:63)
> >
> > at
> >
> org.apache.plc4x.java.spi.Plc4xNettyWrapper.close(Plc4xNettyWrapper.java:130)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:757)
> >
> > at
> >
> io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:733)
> >
> > at
> >
> io.netty.channel.DefaultChannelPipeline.close(DefaultChannelPipeline.java:994)
> >
> > at io.netty.channel.AbstractChannel.close(AbstractChannel.java:280)
> >
> > at
> > io.netty.channel.embedded.EmbeddedChannel.close(EmbeddedChannel.java:569)
> >
> > at
> > io.netty.channel.embedded.EmbeddedChannel.close(EmbeddedChannel.java:556)
> >
> > at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$4(S7ProtocolLogic.java:185)
> >
> > at
> >
> org.apache.plc4x.java.spi.Plc4xNettyWrapper.lambda$8(Plc4xNettyWrapper.java:253)
> >
> > at
> >
> org.apache.plc4x.java.spi.netty.NettyHashTimerTimeoutManager.lambda$0(NettyHashTimerTimeoutManager.java:55)
> >
> > at
> >
> io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:715)
> >
> > at
> >
> io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34)
> >
> > at
> >
> io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:703)
> >
> > at
> >
> io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:790)
> >
> > at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:503)
> >
> > at java.base/java.lang.Thread.run(Thread.java:840)
> >
> > OS: Ubuntu 22.04
> > JDK: /usr/lib/jvm/java-1.17.0-openjdk-amd64
> >
> > [cid:ii_lyiu0d1z0]
> >
> > [cid:ii_lyiu1f6a1]
> > --
> > Luiz Carlos d´Oleron
> >
>
>
> --
> Luiz Carlos d´Oleron
>

Reply via email to