Hi Florian, from the log PLC4X is a little disappointed that the PLC just hangs up without any notice. I've had this problem with Siemens LOGO "PLC"s ... there the identification step was causing problems. Could you please append the following to your connection string?
?controllerType=S7_400 This will make the driver not ask the PLC what type it is ... I think this had caused problems in the past. If this is the same problem with your setup, then we definitely have to at least output some helpful information. Chris Am 26.02.20, 10:14 schrieb "Probst, Florian" <florian.pro...@de-gmbh.com>: Hello all, we're trying to replace our old style native INAT library by using a pure Java PLC library. I'm trying to connect to our S7-400 PLC but the PLC terminates the connection after the first message sent. As URL I've used the following: s7://192.168.3.166/0/3 Earlier we used the TSAP 0x0303 for connecting to the PLC by using a native library. Here is the Log output: 07:54:09.976 [main] INFO org.apache.plc4x.java.PlcDriverManager - Instantiating new PLC Driver Manager with class loader sun.misc.Launcher$AppClassLoader@73d16e93 07:54:09.992 [main] INFO org.apache.plc4x.java.PlcDriverManager - Registering available drivers... 07:54:09.992 [main] INFO org.apache.plc4x.java.PlcDriverManager - Registering driver for Protocol s7 (Siemens S7 (Basic)) 07:54:10.026 [main] DEBUG io.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework 07:54:10.032 [main] DEBUG io.netty.util.ResourceLeakDetector - -Dio.netty.leakDetection.level: simple 07:54:10.032 [main] DEBUG io.netty.util.ResourceLeakDetector - -Dio.netty.leakDetection.targetRecords: 4 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent - Platform: Windows 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - -Dio.netty.noUnsafe: false 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Java version: 8 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.copyMemory: available 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - java.nio.Buffer.address: available 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - direct buffer constructor: available 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - java.nio.Bits.unaligned: available, true 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent0 - java.nio.DirectByteBuffer.<init>(long, int): available 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent - sun.misc.Unsafe: available 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.tmpdir: C:\Users\fp\AppData\Local\Temp (java.io.tmpdir) 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.bitMode: 64 (sun.arch.data.model) 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.maxDirectMemory: 3784310784 bytes 07:54:10.042 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.uninitializedArrayAllocationThreshold: -1 07:54:10.058 [main] DEBUG io.netty.util.internal.CleanerJava6 - java.nio.ByteBuffer.cleaner(): available 07:54:10.058 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.noPreferDirect: false 07:54:10.059 [main] DEBUG io.netty.util.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@136432db 07:54:10.059 [main] DEBUG io.netty.util.internal.PlatformDependent - org.jctools-core.MpscChunkedArrayQueue: available 07:54:10.143 [main] INFO org.apache.plc4x.java.s7.connection.S7PlcConnection - Setting up S7 Connection with: host-name 192.168.3.166, rack 0, slot 0, pdu-size 1024, max-amq-caller 8, max-amq-callee 8 07:54:10.159 [main] DEBUG io.netty.channel.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 16 07:54:10.176 [main] DEBUG io.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 07:54:10.176 [main] DEBUG io.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 07:54:10.193 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.noKeySetOptimization: false 07:54:10.193 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.selectorAutoRebuildThreshold: 512 07:54:10.275 [main] DEBUG io.netty.channel.DefaultChannelId - -Dio.netty.processId: 9024 (auto-detected) 07:54:10.276 [main] DEBUG io.netty.util.NetUtil - -Djava.net.preferIPv4Stack: false 07:54:10.276 [main] DEBUG io.netty.util.NetUtil - -Djava.net.preferIPv6Addresses: false 07:54:10.933 [main] DEBUG io.netty.util.NetUtil - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) 07:54:10.936 [main] DEBUG io.netty.util.NetUtil - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 07:54:11.609 [main] DEBUG io.netty.channel.DefaultChannelId - -Dio.netty.machineId: 00:50:b6:ff:fe:26:ae:1f (auto-detected) 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numHeapArenas: 16 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numDirectArenas: 16 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.pageSize: 8192 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxOrder: 11 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.chunkSize: 16777216 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.tinyCacheSize: 512 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.smallCacheSize: 256 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.normalCacheSize: 64 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimInterval: 8192 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.useCacheForAllThreads: true 07:54:11.634 [main] DEBUG io.netty.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 07:54:11.634 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.allocator.type: pooled 07:54:11.634 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.threadLocalDirectBufferSize: 0 07:54:11.634 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.maxThreadLocalCharBufferSize: 16384 07:54:11.676 [nioEventLoopGroup-2-1] DEBUG org.apache.plc4x.java.isotp.protocol.IsoTPProtocol - ISO Transport Protocol Sending Connection Request 07:54:11.693 [nioEventLoopGroup-2-1] DEBUG io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.checkAccessible: true 07:54:11.693 [nioEventLoopGroup-2-1] DEBUG io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.checkBounds: true 07:54:11.693 [nioEventLoopGroup-2-1] DEBUG io.netty.util.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@68818334 07:54:11.693 [nioEventLoopGroup-2-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.maxCapacityPerThread: 4096 07:54:11.693 [nioEventLoopGroup-2-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.maxSharedCapacityFactor: 2 07:54:11.693 [nioEventLoopGroup-2-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.linkCapacity: 16 07:54:11.693 [nioEventLoopGroup-2-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.ratio: 8 07:54:11.693 [nioEventLoopGroup-2-1] DEBUG org.apache.plc4x.java.isoontcp.protocol.IsoOnTcpProtocol - ISO on TCP Message sent 07:54:11.708 [nioEventLoopGroup-2-1] WARN io.netty.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen at sun.nio.ch.SocketDispatcher.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) at sun.nio.ch.IOUtil.read(IOUtil.java:192) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:247) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1140) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:347) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:148) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:745) org.apache.plc4x.java.api.exceptions.PlcConnectionException: java.util.concurrent.ExecutionException: org.apache.plc4x.java.api.exceptions.PlcIoException: Connection terminated by remote at org.apache.plc4x.java.base.connection.NettyPlcConnection.connect(NettyPlcConnection.java:88) at org.apache.plc4x.java.PlcDriverManager.getConnection(PlcDriverManager.java:73) at test.ReadValue.main(ReadValue.java:22) Caused by: java.util.concurrent.ExecutionException: org.apache.plc4x.java.api.exceptions.PlcIoException: Connection terminated by remote at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895) at org.apache.plc4x.java.base.connection.NettyPlcConnection.connect(NettyPlcConnection.java:79) ... 2 more Caused by: org.apache.plc4x.java.api.exceptions.PlcIoException: Connection terminated by remote at org.apache.plc4x.java.base.connection.NettyPlcConnection.lambda$connect$0(NettyPlcConnection.java:70) at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:500) at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:474) at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:413) at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:538) at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:527) at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:98) at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84) at io.netty.channel.AbstractChannel$CloseFuture.setClosed(AbstractChannel.java:1156) at io.netty.channel.AbstractChannel$AbstractUnsafe.doClose0(AbstractChannel.java:758) at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:734) at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:605) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.closeOnRead(AbstractNioByteChannel.java:105) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.handleReadException(AbstractNioByteChannel.java:127) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:174) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:745) Any ideas why this does not work? What options can I try to make this work? May be the rack/slot be is wrong? Looking forward for your help! Kind regards, Florian