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 >