Hi Florian,
I just noticed that it's failing on sending the first message where the type
isn't requested.
So I guess you're correct that the problem is related to the tsap id and we did
have an issue with this as the connection string only configured the local
partner part and not the remote tsap id. I think this is fixed in the 0.6.0
branch (which we are currently preparing to release)
Alternatively I would like to encourage you to try the new S7 driver
0.7.0-SNAPSHOT ... this has a different connection string syntax. I think your
connection string would then look like this:
s7://192.168.3.166?remoteRack=0&remoteSlot=3
If this too doesn't work, please do a Wireshark recording of the packets and
provide us with them (ideally via Jira issue) and then we'll have a look at
what's going wrong.
Chris
Am 26.02.20, 13:32 schrieb "Christofer Dutz" <[email protected]>:
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" <[email protected]>:
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