Hi Frederic,
While thinking about what could be going wrong I had the following idea:
When connecting to an S7 as soon as the IsoTP and the S7 login is finished, the
driver asks the S7 to identify itself.
I would assume something is going wrong here ... so if you are unable to
provide a WireShark dump, you can skip the identification step, if you tell the
driver which S7 type you are expecting.
So could you please give this connection string a try?
s7://{ip}/{rack}/{slot}?controller-type=S7_300
For if, rack and slot just use your normal values ... the important part is to
add the "?controller-type=S7_300" to the end of your existing connection string.
I know you have a S7-200 ... but we don't have a constant for the 200 as the
200 generally doesn't support this protocol.
Please tell us if this works.
Chris
Am 12.11.19, 06:49 schrieb "Christofer Dutz" <[email protected]>:
Hi Frederic,
First of all, a warm welcome here. I am sorry to hear that you are having
trouble. If course it could be that the hardware is causing trouble. I guess
the only way to find out what's going wrong would be to do a Wireshark
recording of the communication.
Then we can be sure what's going wrong.
The discarded incoming message, is definitely the cause, but I don't know
what could be causing this.
Could you do a Wireshark capture, create a jira issue and attach it to
that? Then I'll have a look.
Chris
________________________________
Von: Fr?d?ric Auberson <[email protected]>
Gesendet: Montag, 11. November 2019 14:52:44
An: [email protected] <[email protected]>
Betreff: "Discarded Message"... How do I start debugging this?
Hi All,
I'm trying to make my first steps, but already hitting a roadblock: My
minimal code seems stuck on getConnection, and I've no idea how to debug
this.
I'm really trying to do something minimal, inspired by the example code,
and reading the first 4 input pins of my S7-200. I see the "START" log
entry, but not the "CONNECTED" one, meaning I never complete the connection
step. The only suspicious thing I see is this:
Discarded message pipeline : [S7PlcConnection$1$1#0, IsoOnTcpProtocol#0,
IsoTPProtocol#0, S7Protocol#0, Plc4XS7Protocol#0,
DefaultChannelPipeline$TailContext#0]. Channel : [id: 0x5148d82b, L:/
192.168.1.16:53396 - R:/192.168.1.222:102]."
Full disclosure: I'm using an off-brand adapter because I can't afford a
proper Siemens CP 243-1. Can that cause the issue?
How do I even begin to debug this?
Thanks,
Fred
----- my code -----
static final String connectionString = "s7://192.168.1.222/0/2";
public static void main(String[] args) {
logger.info("----- START -----");
try (PlcConnection plcConnection = new
PlcDriverManager().getConnection(connectionString)) {
logger.info("----- CONNECTED -----");
if (!plcConnection.getMetadata().canRead()) {
logger.error("This connection doesn't support reading.");
return;
}
PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
builder.addItem("value-1", "%I0.0:BOOL");
builder.addItem("value-2", "%I0.1:BOOL");
builder.addItem("value-3", "%I0.2:BOOL");
builder.addItem("value-4", "%I0.3:BOOL");
PlcReadRequest readRequest = builder.build();
logger.info(readRequest.execute().get().toString());
logger.info("----- DONE -----");
} catch (Exception e) {
e.printStackTrace();
}
----- the output -----
INFO S7Test - ----- START -----
INFO o.apache.plc4x.java.PlcDriverManager - Instantiating new PLC Driver
Manager with class loader sun.misc.Launcher$AppClassLoader@18b4aac2
INFO o.apache.plc4x.java.PlcDriverManager - Registering available
drivers...
INFO o.apache.plc4x.java.PlcDriverManager - Registering driver for
Protocol s7 (Siemens S7 (Basic))
DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging
framework
DEBUG io.netty.util.ResourceLeakDetector - -Dio.netty.leakDetection.level:
simple
[...lots of Netty debug output removed here...]
DEBUG io.netty.util.Recycler - -Dio.netty.recycler.ratio: 8
DEBUG o.a.p.j.i.protocol.IsoOnTcpProtocol - ISO on TCP Message sent
DEBUG o.a.p.j.i.protocol.IsoOnTcpProtocol - ISO on TCP Message received
DEBUG o.a.p.j.isotp.protocol.IsoTPProtocol - Got Data:
11d00001000200c2020200c1020102c0010a
DEBUG o.a.plc4x.java.s7.netty.S7Protocol - S7 Message with id 0 queued
DEBUG o.a.p.j.i.protocol.IsoOnTcpProtocol - ISO on TCP Message sent
DEBUG o.a.plc4x.java.s7.netty.S7Protocol - S7 Message with id 0 sent
DEBUG i.n.channel.DefaultChannelPipeline - Discarded inbound message
org.apache.plc4x.java.isotp.protocol.model.IsoTPMessage@480c8d80 that
reached at the tail of the pipeline. Please check your pipeline
configuration.
DEBUG i.n.channel.DefaultChannelPipeline - Discarded message pipeline :
[S7PlcConnection$1$1#0, IsoOnTcpProtocol#0, IsoTPProtocol#0, S7Protocol#0,
Plc4XS7Protocol#0, DefaultChannelPipeline$TailContext#0]. Channel : [id:
0x5148d82b, L:/192.168.1.16:53396 - R:/192.168.1.222:102].
DEBUG o.a.p.j.i.protocol.IsoOnTcpProtocol - ISO on TCP Message received
DEBUG o.a.p.j.isotp.protocol.IsoTPProtocol - Got Data:
02f080320300000000000800000000f0010001000100f0
INFO o.a.plc4x.java.s7.netty.S7Protocol - S7Connection established
pdu-size 240, max-amq-caller 1, max-amq-callee 1
DEBUG o.a.plc4x.java.s7.netty.S7Protocol - S7 Message with id 2 queued
DEBUG o.a.plc4x.java.s7.netty.S7Protocol - S7 Message with id 0 received
DEBUG o.a.p.j.i.protocol.IsoOnTcpProtocol - ISO on TCP Message sent
DEBUG o.a.plc4x.java.s7.netty.S7Protocol - S7 Message with id 2 sent
DEBUG i.n.channel.DefaultChannelPipeline - Discarded inbound message
org.apache.plc4x.java.isotp.protocol.model.IsoTPMessage@64b0dea4 that
reached at the tail of the pipeline. Please check your pipeline
configuration.
DEBUG i.n.channel.DefaultChannelPipeline - Discarded message pipeline :
[S7PlcConnection$1$1#0, IsoOnTcpProtocol#0, IsoTPProtocol#0, S7Protocol#0,
Plc4XS7Protocol#0, DefaultChannelPipeline$TailContext#0]. Channel : [id:
0x5148d82b, L:/192.168.1.16:53396 - R:/192.168.1.222:102].