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

From SoftMC-Wiki
Jump to: navigation, search
(AXY: new links)
Line 7: Line 7:
 
== First Step ==
 
== First Step ==
  
* set [[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 1 (minimum value)
+
* set [[MC-Basic:element.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 [[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] as PE/VCMD, in this case it will be:
+
Compute [[MC-Basic:element.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 [[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>
+
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'''<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 [[AXY:MC-Basic:axis.POSITIONERRORDELAY|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>
 
[[Image:PE_PEDEL5.PNG|800px]]<br>
Line 55: Line 55:
 
==Final ==
 
==Final ==
  
So setting '''[[AXY:MC-Basic:axis.POSITIONERRORDELAY|PEDEL]] to 5.078''' we get:<br><br>
+
So setting '''[[MC-Basic:element.POSITIONERRORDELAY|PEDEL]] to 5.078''' we get:<br><br>
  
 
[[Image:PE_PEDEL5078.PNG|800px]]<br>
 
[[Image:PE_PEDEL5078.PNG|800px]]<br>

Revision as of 11:57, 13 September 2017

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

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-Info.svgNOTE
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:

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:

317/4000 = 0.078

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