Difference between revisions of "How to setup Position Error Delay"
(→Second Step) |
|||
Line 7: | Line 7: | ||
== First Step == | == First Step == | ||
− | * set [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 1 (minimum value) | + | * set [[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 1 (minimum value) |
* set high value in PeMax | * set high value in PeMax | ||
* Run the axis back and forth and record PE and VCMD as : | * Run the axis back and forth and record PE and VCMD as : | ||
Line 18: | Line 18: | ||
− | Compute [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] as PE/VCMD, in this case it will be: | + | Compute [[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] as PE/VCMD, in this case it will be: |
<pre> | <pre> | ||
Line 24: | Line 24: | ||
</pre> | </pre> | ||
− | Taking into account the used value of [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] (1) and the sampling time of 4ms we get the new [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] value of 5, e.i. '''PEDEL = 1 + 4 = 5'''<br> | + | Taking into account the used value of [[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] (1) and the sampling time of 4ms we get the new [[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] value of 5, e.i. '''PEDEL = 1 + 4 = 5'''<br> |
{{Note| in case of a simulated axis the same procedure will work, typically results will show round cycle of 1. | {{Note| in case of a simulated axis the same procedure will work, typically results will show round cycle of 1. | ||
Line 35: | Line 35: | ||
== Second Step == | == Second Step == | ||
− | Change the [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]](5) to the integer value estimated before and run the test again: | + | Change the [[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]](5) to the integer value estimated before and run the test again: |
[[Image:PE_PEDEL5.PNG|800px]]<br> | [[Image:PE_PEDEL5.PNG|800px]]<br> | ||
Line 55: | Line 55: | ||
==Final == | ==Final == | ||
− | So setting '''[[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 5.078''' we get:<br><br> | + | So setting '''[[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 5.078''' we get:<br><br> |
[[Image:PE_PEDEL5078.PNG|800px]]<br> | [[Image:PE_PEDEL5078.PNG|800px]]<br> |
Revision as of 07:06, 14 August 2017
Contents
How to SetUp Position Error Delay
WARNING | |
If working with CDHD Servotronix family of drives over EtherCAT pay attention that in order to get position proper error values it is extremely important to switch off the CDHD's smoothing feature by setting MOVESMOOTHMODE to 0. The CDHD's position smoothing is obsolete in applications with SoftMC as the SoftMC already smoothenizes its output (PCMD values). |
First Step
- set PEDEL to 1 (minimum value)
- set high value in PeMax
- Run the axis back and forth and record PE and VCMD as :
Command Velocity recordings
Position Error recordings
Compute PEDEL as PE/VCMD, in this case it will be:
PE/VCMD = 0.94/57.74*1000 = 16.2 ms
Taking into account the used value of PEDEL (1) and the sampling time of 4ms we get the new PEDEL value of 5, e.i. PEDEL = 1 + 4 = 5
NOTE | |
in case of a simulated axis the same procedure will work, typically results will show round cycle of 1.
eg, PE/VCMD = 0.4 / 100.0 * 1000.0 = 4 ms = 1 bus cycle |
Second Step
Change the PEDEL(5) to the integer value estimated before and run the test again:
again estimate the error:
PE/VCMD = 0.18/57.74*1000 = 0.317 ms
IMPORTANT | |
This means the non-integer communication delay of the drive is 317 micro-seconds. |
which is in units of one sample equal:
317/4000 = 0.078
Final
So setting PEDEL to 5.078 we get:
Example File
PDLtune.prg
'
common shared Ax as generic Axis
program
dim i as long
Ax = A1
with Ax
Attach
Pedel = 1 ' first run
Pedel = 1 + round(1.68 / 100.0 * 1000.0 / (bus[0].cycleTime/1000)) ' 2nd run. extracted from recordings
Pedel = Pedel + 0.075 / 100.0 * 1000.0 / (bus[0].cycleTime/1000) ' 3rd run. extracted from recordings
PeMax = 10
En=1
Sleep 100
Move 0 Vcruise=100 Abs=TRUE
call waitMotion
Record ax_PE.rec 100000 Gap=1 RecData = Ax.Pe, Ax.Vcmd
RecordOn
Sleep 100
for i = 1 to 3
Move 100 Vcruise=100 Abs=TRUE
call waitMotion
Sleep 100
Move 0 Vcruise=100 Abs=TRUE
call waitMotion
Sleep 100
next
RecordClose
En=FALSE
Sleep 100
PeMax = 0.1
Detach
end with
terminate program
sub waitMotion
while Ax.IsMoving
Sleep 1
end while
end sub