You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@plc4x.apache.org by Sebastian Rühl <se...@googlemail.com> on 2018/06/13 07:03:08 UTC

Cleanup on ADS protocol implementation

Hi,

The last weeks I did some cleanup on the ADS protocol implementation.
While it seems to work fine there is still one implementation where im not quite sure how to implement this properly with Netty: The ADS/AMS serial protocol implementation.
https://infosys.beckhoff.com/content/1033/tcadsamsserialspec/html/tcamssericalspec_sample.htm?id=60692407917020132 <https://infosys.beckhoff.com/content/1033/tcadsamsserialspec/html/tcamssericalspec_sample.htm?id=60692407917020132>
As you can see in the above protocol the communication is like this: 

Terminal --> PLC : Request of 2 bytre data
PLC --> Terminal : Acknowledge:
PLC sends data:
Terminal --> PLC  : Acknowledge:

So what we need to do is to throttle the outgoing traffic to a single message where each message needs to fulfill the above lifecycle. My first attempts implement this with a Thread blocking behavior failed as this blocks the worker thread in Netty which is a really bad idea. Christopher gave me the hint using a queue (like in the S7 package fragmentation) but this doesn’t seem to work the way I need it (Prepend messages for retry and ack etc). So for me this means digging some more into natty and have a look at similar protocol implementations.

If anyone has an idea or experience implementing a low level protocol bouncing (SEND-ACK) let me know. :)

Sebastian