In case of PD flow lost there is a possibility that PD packets are discarded for long time. Let’s assume:
Also if only sequenceCounter 0 packet is lost data is discarded until next 0 sequence counter is got.
Tested fix where the PD packets are discarded if counter is smaller than previous until the timeout overflow happens. In this case lastSeqCnt is set to
current sequenceCounter value and PD data receiving continues.
Example fix as an attachment.
Example fix sent by me is invalid. And also the idea do not work as the timeout is for ComId and not for each sender. Any ideas how to handle this situation where first packet is lost?
IEC61375-2-3 Table A.3:
The sequence counter:
· Shall be managed for sending process telegrams per
ComId/MsgType at each requester/publisher.
· Shall be managed (stored) for received process
telegrams per SourceIPAddr/ComId/MsgType at each
publisher/subscriber.
· Shall be incremented with each sending of the process
telegram. Telegrams sent in parallel via different
subnets are sent with the same sequence counter to
detect duplication at receiver side.
· Can be used for communication layer surveillance (PD
sending).
A surveillance that the application is still updating its process
data (user data) can be done via the safe data transmission
protocol (SDTv2, see Annex B) or can be implemented by the
application (e.g. via a life sign).
The standard is only requiring to suppress duplicates (same sequence counter).
It needs to be discussed whether a defined variance e.g. <=3 can be included. If older counters are received, a re-synchronisation would need to be implemented (suppress telegram but take over sequence counter in case sequ. counter is smaller).
Decision: Sequence counter surveillance for PD shall be implemented acc. IEC61375-2-3. Thus sequence counter surveillance discards only duplicated packets (same sequence counter).