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.

ICE Board :Max. data transfer rate with Ethercat stack

Other Parts Discussed in Thread: AM3359

Hello

We use the ICE board with TI chip AM3359 as a reference design for the EtherCat slave together   with the twincat master.

In order to understand the limitation of  EtherCat data transfer  rate we did the following :

1) on the function void APPL_Application(void) we use a counter to increment the analog input port (every 10 ms ) and we record the data on the EtherCat line by using the wiershark sniffer  we saw that if the counter increment every 10ms we did not lose any data ,  but if the counter rate is less than 10 MS  we start to loos data .

Is it possible? We know that the EtherCat can transfer data on much higher speed (even 4khz) 

How can we speed the data transfer by using this stack? do we need to change something on the configuration ?

thank you

Tsachy

 

Thank you

 

Tsachy

  • Tsachy,

    clearly every system has it's limits. But we are testing EtherCAT cycle times down to 100us. What your application does is a different thing but generally limitations are NOT in the 10ms range on our 600MHz device...

    What cycle time did you configure on your EtherCAT master? Our slave device can't transfer data any faster than requested by the master, no matter how fast you generate the data on application side.

    Regards,

  • hello Frank

    thank you for your response !

    first, sorry ,i did mistake on my last mail i wrote by mistake 10ms instead of 1ms.

    1) we use master with cycle time of  1ms (1kHZ). 

    we open a tread with task sleep inside of 1 ms  (which is the minimum possible why ?)  and we saw on the EtherCat line (with the wire shark)  our  counter increment correctly  ,without losing data (1,2,3...)

    When we use master with cycle time of 0.5ms (2Khz ) and again use the same thread (with 1ms task sleep) for updating the data on the analog input port we saw on with the  wire shark (as expected )  11,22,33,44..

    for this i understand that our limit is updating the data on thread every 1ms ..

    how can i decrease  the sleep time less than 1ms ? Is it the limit for updating the data on the ports? For the sleep task I use the function TASK_SLEEP (1*OS_TICKES_IN_MILLI_SEC)

    I did not find any other option

     

    Tsachy

    Tsachy

  • Hi,

    What version of Industrial SDK are you using?

    You can change Clock.tickPeriod = 100 in app.cfg. This will change sleep interval to 100us, Then you need to adjust OS_TICKES_IN_MILLI_SEC for all the tasks that need to sleep for milli sec duration. However this is not the only way.

    You can also read analog interrupt from a timer interrupt task or any thing equivalent for example...

     

  • Hi

    thank you , i will try it and i will update on the fourm

    Tsachy

  • thank you for your professional  help !!!

    it work without any problems

    Tsachy