Difference between revisions of "How to setup Position Error Delay"

From SoftMC-Wiki
Jump to: navigation, search
(Created page with "= How to SetUp Position Error Delay = == First Step == * set PEDEL to 1 (minimum value) * Run the axis back and forth and record PE and VCMD as : [[Image:PE_VCMD.PNG |800px...")
 
 
(17 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
= How to SetUp Position Error Delay =
 
= How to SetUp Position Error Delay =
 +
 +
 +
{{Note/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 ==
 
== First Step ==
  
* set PEDEL to 1 (minimum value)
+
*set [[MC-Basic:element.POSITIONERRORDELAY|PEDEL]] to 1 (minimum value)  
* Run the axis back and forth and record PE and VCMD as :
+
*set high value in PeMax
 +
*Run the axis back and forth and record PE and VCMD as :  
  
[[Image:PE_VCMD.PNG |800px]]<br>
+
[[File:PE VCMD.PNG|800px|PE VCMD.PNG]]<br/> Command Velocity recordings<br/> <br/> <br/> [[File:PE PEDEL1.PNG|800px|PE PEDEL1.PNG]]<br/> Position Error recordings
Command Velocity recordings
 
<br>
 
[[Image:PE_PEDEL1.PNG|800px]]<br>
 
Position Error recordings
 
  
 +
Compute [[MC-Basic:element.POSITIONERRORDELAY|PEDEL]] as PE/VCMD, in this case it will be:
 +
<pre>PE/VCMD = 0.94/57.74*1000 = 16.2 ms
 +
16.2[ms]/4[ms/cycle] = 4.05[cycles]
 +
</pre>
  
Compute PEDEL as PE/VCMD, in this case it will be:
+
Taking into account the used value of [[MC-Basic:element.POSITIONERRORDELAY|PEDEL]] (1) and the sampling time of 4ms we get the new [[MC-Basic:element.POSITIONERRORDELAY|PEDEL]] value of 5, e.i. '''PEDEL = 1 + 4 = 5'''
  
<pre>
+
Note: in case of a simulated axis the same procedure will work, typically results will show round cycle of 1. e.g.:
PE/VCMD = 0.94/57.74*1000 = 16.2 ms
+
<pre>PE/VCMD = 0.4 / 100.0 * 1000.0 = 4 ms = 1 bus cycle</pre>
</pre>
 
  
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'''<br>
 
  
 
== Second Step ==
 
== Second Step ==
  
Change the PEDEL(5) to the integer value estimated before and run the test again:
+
Change the [[MC-Basic:element.POSITIONERRORDELAY|PEDEL]](5) to the integer value estimated before and run the test again:
  
[[Image:PE_PEDEL5.PNG|800px]]<br>
+
[[File:PE PEDEL5.PNG|800px|PE PEDEL5.PNG]]
  
 
again estimate the error:
 
again estimate the error:
 
+
<pre>PE/VCMD = 0.18/57.74*1000 = 0.317 ms
<pre>
 
PE/VCMD = 0.18/57.74*1000 = 0.317 ms
 
 
</pre>
 
</pre>
  
{{Note/Important|This means the non-integer communication delay of the drive is '''317 micro-seconds'''.}}
+
{{Note/Important|This means the non-integer communication delay of the drive is '''317 micro-seconds'''.}}<br/> <br/> &nbsp;
<br><br><br>
 
  
which is in units of one sample equal:
+
which is in units of one sample equal:
<pre>
+
<pre>0.317[ms]/4[ms/cycle] = 0.078[cycles]
317/4000 = 0.078
 
 
</pre>
 
</pre>
  
 +
==Final ==
 +
 +
So setting '''[[MC-Basic:element.POSITIONERRORDELAY|PEDEL]] to 5.078''' we get:<br><br>
  
So setting 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>
 +
 +
 +
= Expected Values For Different Devices =
 +
{{Note| These values are approximations to the values expected to be obtained with the script provided, and the values may vary depending on the system settings used.}}
 +
 +
{|class="wikitable" style="text-align: center"
 +
|'''Drivel Model'''
 +
|'''PEDEL'''  <br><sub>[Motion-Bus cycle times]</sub>
 +
|'''Derive Version'''
 +
|-
 +
|CDHD CAN
 +
|5.23
 +
|1.41.17
 +
|-
 +
|CDHD ETH
 +
|4.11
 +
|1.41.17
 +
|-
 +
|CDHD2 ETH
 +
|4.404
 +
|2.15.3a9.2.22
 +
|-
 +
|DDHD CAN
 +
|5.06
 +
|1.41.16L0.0.58BOCHU
 +
|-
 +
|stepIM CAN
 +
|4.37
 +
|23: 0.0.3.38
 +
|}

Latest revision as of 10:33, 26 January 2024

How to SetUp Position Error Delay

WARNING.svgWARNING
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 :

PE VCMD.PNG
Command Velocity recordings


PE PEDEL1.PNG
Position Error recordings

Compute PEDEL as PE/VCMD, in this case it will be:

PE/VCMD = 0.94/57.74*1000 = 16.2 ms
16.2[ms]/4[ms/cycle] = 4.05[cycles]

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. e.g.:

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:

PE PEDEL5.PNG

again estimate the error:

PE/VCMD = 0.18/57.74*1000 = 0.317 ms
IMPORTANT.svgIMPORTANT
This means the non-integer communication delay of the drive is 317 micro-seconds.


 

which is in units of one sample equal:

0.317[ms]/4[ms/cycle] = 0.078[cycles]

Final

So setting PEDEL to 5.078 we get:

PE PEDEL5078.PNG

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


Expected Values For Different Devices

NOTE-Info.svgNOTE
These values are approximations to the values expected to be obtained with the script provided, and the values may vary depending on the system settings used.
Drivel Model PEDEL
[Motion-Bus cycle times]
Derive Version
CDHD CAN 5.23 1.41.17
CDHD ETH 4.11 1.41.17
CDHD2 ETH 4.404 2.15.3a9.2.22
DDHD CAN 5.06 1.41.16L0.0.58BOCHU
stepIM CAN 4.37 23: 0.0.3.38