Difference between revisions of "How to setup Position Error Delay"
(example file) |
|||
Line 4: | Line 4: | ||
* set [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 1 (minimum value) | * set [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 1 (minimum value) | ||
+ | * 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 44: | Line 45: | ||
So setting [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 5.078 we get:<br> | So setting [[MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 5.078 we get:<br> | ||
[[Image:PE_PEDEL5078.PNG|800px]]<br> | [[Image:PE_PEDEL5078.PNG|800px]]<br> | ||
+ | |||
+ | |||
+ | == Example File == | ||
+ | |||
+ | |||
+ | '''PDLtune.prg''' | ||
+ | <syntaxhighlight lang="vb"> | ||
+ | |||
+ | ' | ||
+ | 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 | ||
+ | |||
+ | </syntaxhighlight> |
Revision as of 16:40, 31 May 2015
How to SetUp Position Error Delay
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
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
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