Difference between revisions of "AXY:Element Synchronization/Design"
m (Miborich moved page Axystems:Element Synchronization/Design to AXY:Element Synchronization/Design: internal document) |
|||
(14 intermediate revisions by 2 users not shown) | |||
Line 15: | Line 15: | ||
Is done in MotionManager task, initiated by message sent from SyncStart/All commands: | Is done in MotionManager task, initiated by message sent from SyncStart/All commands: | ||
− | In case of SyncStart we sperately execute MotCalc on every element from the sync-list: | + | In case of SyncStart we sperately execute MotCalc on every element from the '''sync-list''': (el<sub>1</sub> , el<sub>2</sub> , el<sub>3</sub> , ... el<sub>n</sub> ): |
<pre> | <pre> | ||
Line 23: | Line 23: | ||
</pre> | </pre> | ||
− | In case of SyncAll it is little bit more complicated, every element is pre-calculated in order to estimate | + | In case of SyncAll it is little bit more complicated, every element is pre-calculated in order to estimate its own max profile values: |
+ | <pre> | ||
+ | FOR element FROM sync-list | ||
+ | element->MotCalc() ==> Li , Vi , Ai , Di , Jai , Jdi | ||
+ | NEXT | ||
+ | </pre> | ||
+ | And then generate a master profile with the following parameters: | ||
− | + | === Master Profile === | |
− | |||
− | |||
− | + | The master profile data-structure will be copied to the profile-data-structure of all other elements. Master profile: | |
+ | <math>L</math> , <math>min(V_i \cdot \frac{L_i} {L})</math> , <math>min(A_i \cdot \frac{L_i} {L})</math> , <math>min(D_i \cdot \frac{L_i} {L})</math> , <math>min(Ja_i \cdot \frac{L_i} {L})</math> , <math>min(Jd_i \cdot \frac{L_i} {L})</math> | ||
− | |||
+ | where <math>L = \sqrt{\sum L_i ^2}</math> | ||
The master profile data-structure will be copied to the profile-data-structure of all other elements. | The master profile data-structure will be copied to the profile-data-structure of all other elements. | ||
+ | The complete system of the sync-list motion profiles will be executed together just be scaling each of them by the factor of: <math>\frac{L_i}{\sqrt{\sum L_i ^2}}</math> | ||
+ | |||
+ | <math>TShort = min(TShort _i)</math><br/> | ||
+ | |||
+ | <math>TAccMin = max(TAccMin_i)</math><br/> | ||
+ | |||
+ | <math>TDecMin = max(TDecMin_i)</math> | ||
+ | |||
+ | {{Note| The global profile type is defined according to the longest (in time) movement}} | ||
− | + | {{Note| Stopping profile continues the global profile. So in case of Proceed command this profile will be used.}} | |
− | + | {{Note/Caution| What happens if profiler changes its type?}} | |
− | + | {{Note/Caution| What happens in case of extremely short motions?}} | |
+ | |||
+ | <center> | ||
+ | <gallery widths= 400px heights= 300px> | ||
+ | Image:AXY;MasterProfiler.png|''Master profiler'' | ||
+ | Image:AXY;MasterProfilerAcceleration.png|''Master profiler accleration'' | ||
+ | </gallery> | ||
+ | </center> | ||
− | |||
− | + | <gallery widths= 700px heights= 600px> | |
+ | Image:AXY;SyncAllPreclaculation.jpg|'' Sync All pre-calculation algorithm "" | ||
+ | Image:AXY;SyncListProfiles.png|''Sync List profiles'' | ||
+ | </gallery> |
Latest revision as of 13:07, 12 May 2014
Element Synchronization Design
Common algorithms to both SyncStart and SyncAll:
Pre-Calculation
Is done in MotionManager task, initiated by message sent from SyncStart/All commands:
In case of SyncStart we sperately execute MotCalc on every element from the sync-list: (el1 , el2 , el3 , ... eln ):
FOR element FROM sync-list element->MotCalc() NEXT
In case of SyncAll it is little bit more complicated, every element is pre-calculated in order to estimate its own max profile values:
FOR element FROM sync-list element->MotCalc() ==> Li , Vi , Ai , Di , Jai , Jdi NEXT
And then generate a master profile with the following parameters:
Master Profile
The master profile data-structure will be copied to the profile-data-structure of all other elements. Master profile:
, , , , ,
where
The master profile data-structure will be copied to the profile-data-structure of all other elements.
The complete system of the sync-list motion profiles will be executed together just be scaling each of them by the factor of:
NOTE | |
The global profile type is defined according to the longest (in time) movement |
NOTE | |
Stopping profile continues the global profile. So in case of Proceed command this profile will be used. |
CAUTION | |
What happens if profiler changes its type? |
CAUTION | |
What happens in case of extremely short motions? |