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 <
[email protected]> 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 <[email protected]>
> Datum: Freitag, 12. Juli 2024 um 17:09
> An: [email protected] <[email protected]>
> 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