Hi Luiz, I tested the Odot modules and indeed with our version of the Plc4x-S7 driver it fails.
I performed the tests with S7-300 and S7-400 and on both behave the same way. The Odot equipment does not respond to the first "Setup communication" message; comparing the frames you can see the difference with respect to the use of an HMI or the KepWare driver. I modify the parameters via URL but it still does not respond. It's time to investigate, El sáb, 13 jul 2024 a las 14:29, Luiz doleron (<dole...@gmail.com>) escribió: > Hey Cesar, > > I modified my code to use CachedPlcConnectionManager but the problem > persists: the program gets stuck on the getConnection call. > > This is my code now: > > 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"; > > PlcConnection plcConnection = null; > > try { > > CachedPlcConnectionManager connectionManager = CachedPlcConnectionManager. > getBuilder(new DefaultPlcDriverManager()).build(); > > plcConnection = connectionManager.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 exception trace is: > > [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@345965f2 > > [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 - > 15:11:46.130938260 userEventTriggered: Multiplexor Event: > org.apache.plc4x.java.spi.events.ConnectEvent@139982de > > [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@53d1d4d1(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) > > [nioEventLoopGroup-2-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - Unregistered of > channel: PRIMARY > > [nioEventLoopGroup-2-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - > io.netty.channel.embedded.EmbeddedEventLoop@476a35e8 > > [plc4x-s7ha-thread-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection - Creating > prymary connection. > > [plc4x-s7ha-thread-1] INFO > org.apache.plc4x.java.transport.tcp.TcpChannelFactory - Configuring > Bootstrap with > > org.apache.plc4x.java.s7.readwrite.configuration.S7TcpTransportConfiguration@345965f2 > > [plc4x-s7ha-thread-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection - Reconnecting > primary channel. > > [nioEventLoopGroup-3-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - Unregistered of > channel: PRIMARY > > [nioEventLoopGroup-3-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - > io.netty.channel.embedded.EmbeddedEventLoop@476a35e8 > > [plc4x-s7ha-thread-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection - Creating > prymary connection. > > [plc4x-s7ha-thread-1] INFO > org.apache.plc4x.java.transport.tcp.TcpChannelFactory - Configuring > Bootstrap with > > org.apache.plc4x.java.s7.readwrite.configuration.S7TcpTransportConfiguration@345965f2 > > [plc4x-s7ha-thread-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection - Reconnecting > primary channel. > > [nioEventLoopGroup-4-1] INFO > org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - Unregistered of > channel: PRIMARY > > ... > -- *CEOS Automatización, C.A.* *GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,* *PISO 1, OFICINA 2, AV. RAUL LEONI, SECTOR GUAMACHITO,* *FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI* *Ing. César García* *Cel: +58 414-760.98.95* *Hotline Técnica SIEMENS: 0800 1005080* *Email: support.aan.automat...@siemens.com <support.aan.automat...@siemens.com>*