Uploaded image for project: 'EtherNet/IP Core V3'
  1. EtherNet/IP Core V3
  2. PSEIP-882

Improve HOLD_LAST_STATE behavior for assemblies addressing the same process data

    Details

    • Type: Change
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: V3.8.5.0
    • Component/s: None
    • Labels:
      None

      Description

      Description:

      In an OEM device, three assemblies (110, 111, 112) are defined which all address the IO-Link port data (32 bytes max), but with different I/O data lengths. Each of the assemblies is assigned to another connection. Depending on the configured connection, only the configured number of bytes shall be used. The device supports variable process data lengths which can be set at runtime e.g. via web interface or during connection establishment (config assembly). When the IO size is reduced, the exceeding/unused IO bytes shall be set to zero.

      The assemblies 110, 111 und 112 are all linked to the same DPM area, as they all can transfer e.g. IO-Link port 1-8 data. The IO-Link data is linked as assembly members with the assembly instance.

      Example:

      • Assembly 110 consists of 4 members each pointing to the start of IOL1, IOL2, IOL3 and IOL4.
        All members have a length of 32 bytes.

      • Assembly 111 consists of 4 members each pointing to the start of IOL1, IOL2, IOL3 and IOL4.
        All members have a length of 4 bytes.
      • Assembly 112 consists of 4 members each pointing to the start of IOL1, IOL2, IOL3 and IOL4.
        All members have different lengths (0-32 bytes). They are configurable through the webserver or config assembly

      The above assembly instances will not be used simultaneously in multiple parallel connections.
      This means that only one assembly instance is actively involved in a connection at any one time.

       

      Bild  

       

      Current EtherNet/IP Core behavior:

      The EtherNet/IP Core operates cyclically and updates the assembly instances and their members. The stack provides a flag HOLD_LAST_STATE:

      • EtherNet/IP stack behavior for HOLD_LAST_STATE == 0 (not set):
        • If an assembly is not involved in an active cyclic connection, all members are set to zero (cyclically, not only once).
      • EtherNet/IP stack behavior for HOLD_LAST_STATE == 1 (set):
        • If an assembly is not involved in an active cyclic connection, all members remain unchanged.

            Consequence:

      • If for one of the three assemblies 110, 111, or 112 the flag  HOLD_LAST_STATE is not set, the IOL data is always set to zero since the members of that assembly will be written to 0 cyclically. This also influences the other assemblies member data as all point to the same IOLX start address.
      • If for all assembly instances the flag is set, the IOL data remains intact, but this has the side affect that IOL bytes that are not being written by the currently active assembly instance remain !=0 when there was a connection running before that used more IOL data. 
        Example:
        • Connection with Assembly 110 is established and writes 32 bytes (!=0) for each IOL port. 
        • Connection with Assembly 110 is closed. All written bytes (4x32bytes) remain untouched (!=0)
        • Another connection to assembly 111 is established which writes only the first 4 bytes of each IOL port.
          Therefore, bytes 5 to 32 of this new connection are not written, but they still show values !=0.

      The present issue requests a solution that

      • does not set the IOL data of the active connection to zero
      • sets excess bytes of an earlier connection to zero

      Acceptance criteria:

      • The flag HOLD_LAST_STATE of  one assembly does not have side-effects on another assembly, assuming that the assembly instances are not active at the same time.
      • If the connection changes or the process data size is reduced, the excess bytes are set to zero (see also PSNPXEISV3-101)

       

       

        Attachments

          Issue Links

            Expenses

              Activity

                Status Description

                  People

                  • Reporter:
                    KMichel Kai Michel
                  • Votes:
                    0 Vote for this issue
                    Watchers:
                    0 Start watching this issue

                    Dates

                    • Created:
                      Updated:
                      Resolved: