Part Number: AM2432
Question
We are currently working on DLR conformance (ODVA CT22), and we have a question regarding the correct handling of the Sign_On Overflow scenario, specifically for Unicast Continuous Sign_On frames.
Background
During execution of:
- CT22 DLR Emulated Test 2.3:
Sign_On Frame – Overflow
our DUT fails at:
- Analyze Sign_on Unicast Results
According to the test result:
"Observed 1 Sign_on frames for Sequence ID 0x15; Expected at least 2 Sign_on frames"
Observed Behavior
From packet capture:
- The CT tool first sends a multicast Sign_On frame exceeding maximum size (~1512 bytes).
- Then, it sends a unicast Sign_On frame (Continuous Sign_On) to the DUT (~60 bytes).
- However, the DUT does not transmit any response frame.
Current Implementation Issue
From our analysis of the TI SDK (EIP_processProtocolFrames), it appears that DLR frame detection is performed based on:
Destination MAC == 01:21:6C:00:00:02 (DLR multicast)
As a result:
- Unicast Sign_On (Continuous Sign_On) frames are not recognized as DLR frames
- These frames are discarded in EIP_processProtocolFrames()
CIP Specification Reference
According to CIP Specification, Volume 2, Section 9-5.5.4 (Sign_On Process):
-
When the Sign_On frame exceeds maximum size:
- A node does not append its address
- Instead, it sends the Sign_On frame directly to the active supervisor (unicast)
-
Upon receiving this unicast Sign_On:
- The supervisor restarts the Sign_On process
- It sends a new Sign_On frame directly (unicast) to the node
- The node shall:
- Add its address
- Forward the Sign_On frame again (multicast)
This implies that unicast Sign_On frames must be handled as valid DLR frames, not discarded.
Questions
We tried the following modifications, and the test passed, but we are not confident that these are correct implementations.
(1) DLR frame detection
We modified the code so that:
- Unicast Sign_On frames are also processed by
EIP_DLR_processDLRFrame()
Question: What is the correct way to identify DLR frames in this case?
Is there any recommended method (e.g., EtherType, DLR Frame Type)?
(2) Destination MAC handling
To avoid CT failure:
- We modified the destination MAC address to the DLR multicast address before forwarding
Question: Is rewriting the destination MAC address to multicast the correct behavior?
Or should the original unicast destination be preserved?
(3) signOnRcvdFlag handling
In the SDK implementation:
EIP_DLR_processDLRFrame()returns without processing ifsignOnRcvdFlag == FALSE
We observed that:
- Even after accepting unicast Sign_On frames,
signOnRcvdFlagremains FALSE - As a workaround, we temporarily removed this check to pass the test
Question:
What is the correct condition and timing to set signOnRcvdFlag to TRUE?
- Should it be set upon receiving:
- multicast Sign_On?
- unicast Sign_On (continuous)?
- both?
Environment
- SDK: Industrial Communications SDK for AM243x 11.00.00.08
Summary
Our main concern is:
- Proper handling of Unicast Continuous Sign_On frames
- Compliance with CIP Sign_On overflow behavior
- Alignment with TI SDK intended implementation
Any guidance on correct design or reference implementation would be greatly appreciated.