Hi Chris,


thanks for your answer. I tried you suggestion, but then I got the following 
message in the logs:

16:27:58.368 [main] DEBUG org.apache.plc4x.java.s7.connection.S7PlcConnection - 
Unknown parameter controllerType with value S7_400



I assume you mean the parameter "controller-type" but adding this parameter 
unfortunately causes no changes. Still the same error:

16:28:00.018 [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)



The code is very straight forward and copied from the getting started section:


    public static void main(final String[] args)
    {
        String connectionString = 
"s7://192.168.3.166/0/3?controller-type=S7_400";

        try (PlcConnection plcConnection = new 
PlcDriverManager().getConnection(connectionString))
        {
            Builder readRequest = plcConnection.readRequestBuilder();
            readRequest.addItem("v1", "%DB.DB5031.0:INT");
            readRequest.build().execute().whenComplete((response, throwable) -> 
{
                System.out.println("Value1: " + response.getInteger("v1"));
            });
        }
        catch(PlcConnectionException e)
        {
            e.printStackTrace();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }



It seems the error is directly from the getConnection() method. Maybe a 
wireshark helps in this case?



Freundliche Grüße aus Dingolfing



Florian Probst

SW Engineering & Development

Project Manager







DE software & control GmbH

Mengkofener Str. 21, D-84130 Dingolfing

Fon: +49 8731 3797-0; Fax: +49 8731 3797-29

Mobil: +49 176 16263624

http://www.de-gmbh.com/



Geschäftsführung:

Friedrich Steininger, Heino Migge, Onur Mubariz

Amtsgericht Landshut, HRB 4478



-----Ursprüngliche Nachricht-----
Von: Christofer Dutz [mailto:christofer.d...@c-ware.de]
Gesendet: Mittwoch, 26. Februar 2020 13:32
An: dev@plc4x.apache.org
Betreff: Re: [S7] Connection terminated



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<mailto: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<mailto: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<mailto: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<mailto: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






Reply via email to