Difference between revisions of "AXY:Element Synchronization/Design"

From SoftMC-Wiki
Jump to: navigation, search
 
(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 it's own max profile values:
+
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:
  
FOR element FROM sync-list<br>
+
=== Master Profile ===
element->MotCalc() ==> L<sub>i</sub> , V<sub>i</sub> , A<sub>i</sub> , D<sub>i</sub> , Ja<sub>i</sub> ,  Jd<sub>i</sub> <br>
 
NEXT<br>
 
  
And then generate a master profile with the following parameters:
+
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>
  
<math>\frac{L_i}{\sqrt{\sum L_i ^2}}</math> , <math>\frac{L_i}{\sqrt{\sum V_i ^2}}</math> ,  <math>\frac{A_i}{\sqrt{\sum A_i ^2}}</math> , <math>\frac{D_i}{\sqrt{\sum D_i ^2}}</math> , <math>\frac{Ja_i}{\sqrt{\sum Ja_i ^2}}</math> , <math>\frac{Jd_i}{\sqrt{\sum Jd_i ^2}}</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}}
  
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>
+
{{Note| Stopping profile continues the global profile. So in case of Proceed command this profile will be used.}}
  
Master profile:
+
{{Note/Caution| What happens if profiler changes its type?}}
  
L,
+
{{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>
  
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:
+
<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-Info.svgNOTE
The global profile type is defined according to the longest (in time) movement
NOTE-Info.svgNOTE
Stopping profile continues the global profile. So in case of Proceed command this profile will be used.
CAUTION.svgCAUTION
What happens if profiler changes its type?
CAUTION.svgCAUTION
What happens in case of extremely short motions?