cancel
Showing results for 
Search instead for 
Did you mean: 
SOLVED

EAL Motion Delay Times

EAL Motion Delay Times

GoHawks
Established Member

During our testing with the Easy Automation Library (EAL), we see an added communciation delay time while waiting for a move around 150ms. This added delay is in addition to the motion profile, and since the Movement.Wait command is tied to the drive's internal motion interpolator (S437 bit 0), it should not have anything to do with settling time on the axis.

Is there a way to improve this?

Regular read/write request for non motion commands take less than 5ms.

I should mention our tests were running with a straight connection from our PC to the drive, no ethernet switch, and the application is very minimum:

GoHawks_0-1623257743399.png

 

EAL SDK 2.0

MPB20V28 Firmware

Thank you in advance,

Nate

 

2 REPLIES 2

Robert_
Member

I performed some additional tests with the EAL library. As a correction of the reporting of Nate, I do use a GB switch between the PC and the drive. And I use the .NET library (just like our customer).

I adapted the code for an absolute move to also measure the duration of the motion command:

Robert__0-1623285672913.png

And I made a Move absolute that polls S-0-0342 (Is the same as S-0-0437 bit 0, but this one does not require any bit-masking to check a single bit).

Robert__1-1623285672920.png

The this.TargetPositionAttained is a property of my axis class, it actually reads parameter S-0-0342 and returns a true value when this parameter is equal to 1.

The results are:

  • Movements without jerk will result into the MoveAbsolute duration of around 57ms
  • When I poll the target position attained parameter, the time I am polling is very close to the actual motion time (around 1ms higher
    > It seems that the MoveAbsolute method returns when the axis motion has started
    > The total overhead on a move is mainly the duration of the MoveAbsolute (98%) -> The preparation of the move…
  • When I use the Movement.Wait mechanism to synchronize, the Wait duration is around 25ms longer as the actual motion time
    > The total overhead is now increased

  • Movements with jerk will result into a MoveAbsolute duration of around 60ms
  • When I poll the target position attained parameter, the time I am polling is now around 28ms longer as the motion time
    > When I look into the scope data, I can see the axis profile going into a constant velocity of zero for 28ms before accelerating
    > The MoveAbsolute method still returns when the axis motion has started (with velocity zero though)
    > Again, the polling does not add much overhead (1ms)
  • When I use the Movement.Wait mechanism to synchronize, the Wait duration is around 50ms longer as when polling
    > The overhead is now increased to around 140ms

 

So if there is a way in reducing the overhead, it has to come from:

  • Optimizing the MoveAbsolute -> average time is around 60 ms
  • Optimizing the Movement.Wait -> average time depends on type of move, but at least 25ms (Polling can reduce this to 1ms!)
  • Optimizing the jerk profile generation
    -> This may be move profile dependent
    -> 28 ms for the short move I used for testing (dx=2mm, v=100mm/s, a=1000mm/s^2, j=10000mm/s^3)

 

 

RexCode
Long-established Member

Hello,
I guess there is no possibility to improve this behavior because a move absolute is not only a single write parameter command. Its more a sequence with lots of parameters which needs to be written.

Also keep in mind EAL is using a non real time communication, so your measured time can be correct for today but tomorrow when there is i.e. more traffic on your network the time can change.
So if you need a real time communication we recommend to use a fielbus like EtherCAT or Sercos.

Best regards,

Christoph

Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist