This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x_ICE EtherCAT Sync Manager

Hi,

The EtherCAT Slave have the description in the following file:

EtherCAT_IPCore_Xilinx_V2_04a_Datasheet_all_v1i0.pdf

Does it mean always need to access full Sync Manager buffer when cyclic Process Data.

In TI case:

SM 2 (Outputs) is defined 5 Bytes which consisted sDOOutputs(1 Byte) & sDO1Outputs(4 Bytes).

And in the cyclic frame, the Logic address is 0x1000000 and the data is five Bytes.

Questions:

1. When I send a frame which the Logic address is 0x1000000 and the data is 1 Byte for sDOOutputs.LEDs, does it will be success?(Can write to the memory of SM2, and will generation the "HOST_AL_EVENT" ?)

2. When I send a frame which the Logic address is 0x1000003 and the data is 2 Byte for sDO1Outputs.Motordata, does it will be success?

3. If I want send the sDOOutputs and the sDO1Outputs in different cyclic time, have any suggestion?(Assign two Sync Manager for Process Output Data?)

Best regards,

Louis chou

  • Hi,

       I am still looking forward to hearing...


    Best regards,

    Louis

  • Hi,

    1. When I send a frame which the Logic address is 0x1000000 and the data is 1 Byte for sDOOutputs.LEDs, does it will be success?(Can write to the memory of SM2, and will generation the "HOST_AL_EVENT" ?)

    > It will write to SM2 memory - but will not generate HOST_AL_EVENT as last byte of SM is not accessed

    2. When I send a frame which the Logic address is 0x1000003 and the data is 2 Byte for sDO1Outputs.Motordata, does it will be success?

    > If you have accessed first byte of SM2 prior to this - will be a success 

    3. If I want send the sDOOutputs and the sDO1Outputs in different cyclic time, have any suggestion?(Assign two Sync Manager for Process Output Data?)

    Assign one more SMs is one way to solve this or assign an ID byte (for process data corresponding to lower cycle time) to identify valid data during a cycle and chose the lowest cycle time at master. For higher cycle time update process data - master will set ID info appropriately. Let stack parse the ID byte and handle the rest of the process data when a match. You may ask this question in ETG forums as well to get expert opinions.

  • This issue had me confused for a while.  Here is a different way of saying what PratheeshGangadhar said.

    The Sync Manager is an EtherCAT process (piece of hardware, not a thread) that checks for access to the first byte and last byte of a PDO.  You must access the first byte first, then whatever you want.  You can re-read the first byte.  You can read bytes interior to the PDO.  Or you can skip reading any of the interior bytes of the PDO and just read the last byte.  Upon reading the last byte, the Sync Manger will recognize that PDO as having been read and readjust its pointers to the three buffers that it uses for synchronizing between the master and the slave.

    I have less experience with SDO.  Their synchronization method is similar, but not the same.