How to setup Position Error Delay

From SoftMC-Wiki
Revision as of 10:33, 26 January 2024 by Hallel (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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