Back to top

Position Scaling for AKD drive with EtherCAT Communication

This article discusses AKD EtherCAT scaling for Position command and Actual Position

PP = Profile Position

IP = Interpolated Position

CSP = Cyclic Synchronous Position

 

You have two choices for defining the position scaling for EtherCAT:

Option A: Specify the scaling based on user unit via AKD parameters (Workbench)

Option B: Specify the scaling via DS402  objects for Feed Constant and Gear Ratio (CAN/EtherCAT)

 

Summary - by mode of operation

The following tables list the AKD parameters/objects that define the number of units per motor revolution.  The preferred methods are highlighted in red.

IP mode:

FBUS.PARAM05 bits 60C1h sub1 6063h PDO 6063h SDO 6064h PDO 6064h SDO
Bit4=0, Bit9=0 2^FB1.PSCALE 2^FB1.PSCALE N/A UNIT.PIN* UNIT.PIN/UNIT.POUT**
Bit4=0, Bit9=1 (512) 2^FB1.PSCALE 2^FB1.PSCALE 2^FB1.PSCALE UNIT.PIN* UNIT.PIN/UNIT.POUT**
Bit4=1, Bit9=0 (16) 2^FB1.PSCALE 2^FB1.PSCALE N/A 6092h/6091h 6092h/6091h
Bit4=1, Bit9=1 (528) 2^FB1.PSCALE 2^FB1.PSCALE 2^FB1.PSCALE 6092h/6091h 6092h/6091h

CSP mode:

FBUS.PARAM05 bits 607Ah PDO 6063h PDO 6063h SDO 6064h PDO 6064h SDO
Bit4=0, Bit9=0 UNIT.PIN* 2^FB1.PSCALE N/A UNIT.PIN* UNIT.PIN/UNIT.POUT**
Bit4=0, Bit9=1 (512) UNIT.PIN* 2^FB1.PSCALE 2^FB1.PSCALE UNIT.PIN* UNIT.PIN/UNIT.POUT**
Bit4=1, Bit9=0 (16) 6092h/6091h 2^FB1.PSCALE N/A 6092h/6091h 6092h/6091h
Bit4=1, Bit9=1 (528) 6092h/6091h 2^FB1.PSCALE 2^FB1.PSCALE 6092h/6091h 6092h/6091h

PP mode:

FBUS.PARAM05 bits 607Ah PDO 607Ah SDO 6063h PDO 6063h SDO 6064h PDO 6064h SDO
Bit4=0, Bit9=0 UNIT.PIN* UNIT.PIN/UNIT.POUT** 2^FB1.PSCALE N/A UNIT.PIN* UNIT.PIN/UNIT.POUT**
Bit4=0, Bit9=1 (512) UNIT.PIN* UNIT.PIN/UNIT.POUT** 2^FB1.PSCALE 2^FB1.PSCALE UNIT.PIN* UNIT.PIN/UNIT.POUT**
Bit4=1, Bit9=0 (16) 6092h/6091h 6092h/6091h 2^FB1.PSCALE N/A 6092h/6091h 6092h/6091h
Bit4=1, Bit9=1 (528) 6092h/6091h 6092h/6091h 2^FB1.PSCALE 2^FB1.PSCALE 6092h/6091h 6092h/6091h

* Note: The PDO values for 607Ah and 6064h use UNIT.PIN regardless of UNIT.POUT, UNIT.PROTARY, and UNIT.PLINEAR.

** Note: The SDO values for 607Ah and 6064h use UNIT.PIN/UNIT.POUT only for UNIT.PROTARY = "3-Custom (mechanics dependent)" or UNIT.PLINEAR = "3-Custom (mechanics dependent)".  For other units selections, they will use the specific scaling for those selections.  For example: "Counts 16bit" will use 65536 counts/rev; "Degrees" will use 360 degrees/rev, regardless of UNIT.PIN and UNIT.POUT.

Note: 6091h and 6092h sub 1 and 2 are not PDO mappable.  They must be set using SDO’s or drive parameters.

Note: DS402 scaling defined by 6092h/6091h is actually:

  • 1 gearbox rev = (6092h sub 1 / 6092h sub2) / (6091h sub 1 / 6091h sub2), or
  • 1 gearbox rev = (6092h sub 1 * 6091h sub2) / (6091h sub 1 * 6092h sub2)

 

Default Values:

  • Default value of FBUS.PARAM05 = 0 (Bit4=0, Bit9=0).
  • Default value of FB1.PSCALE = 20, so 2^FB1.PSCALE = 2^20 or 1048576.
  • Default values of 6091h and 6092h subindexes 1 and 2 all =1, so these need to be set appropriately for the mechanical system.

 

Option A: Specify the scaling based on user units via AKD parameters (Workbench)

Set FBUS.PARAM05 bit4=0

Target position is 607A (CSP and PP modes) or 60C1 Sub 1 (IP mode)

Actual position is 6063 or 6064 (All modes)

 

Object 607A: Target Position (CSP and PP modes)

PDO:

PDO value = Target in user units, based on 1 rev = UNIT.PIN (UNIT.POUT does not apply)

In relation to PL.CMD,

PDO value = PL.CMD, if UNIT.POUT = 1

SDO:

For CSP mode: Does not apply.

For PP mode: SDO value = Target in user units, based on 1 rev = UNIT.PIN / UNIT.POUT

 

Object 60C1 Subindex 1: Target Position (IP mode)

PDO:

PDO value = Target position, based on 1 rev = 2^(FB1.PSCALE)

PDO value = (number of revs) * 2^(FB1.PSCALE)

  1. In relation to PL.CMD, PDO value = PL.CMD * UNIT.POUT * 2^(FB1.PSCALE) / UNIT.PIN

Or, PL.CMD = (PDO value) * UNIT.PIN / (UNIT.POUT * 2^(FB1.PSCALE))

  1. In terms of physical units, (number of revs) = (PDO value) / 2^(FB1.PSCALE)

Or, (number of inches) = (Physical in/rev) * (PDO value) / 2^(FB1.PSCALE)

SDO: Does not apply.

 

Object 6063: Actual Position (CSP, PP, IP modes)

For FBUS.PARAM05 = 0 (bit9=0):

PDO:

PDO value = Feedback position, based on 1 rev = 2^(FB1.PSCALE)

PDO value = (number of revs) * 2^(FB1.PSCALE)

  1. In relation to PL.FB, PDO value = PL.FB * UNIT.POUT * 2^(FB1.PSCALE) / UNIT.PIN

Or, PL.FB = (PDO value) * UNIT.PIN / (UNIT.POUT * 2^(FB1.PSCALE))

  1. In terms of physical units, (number of revs) = (PDO value) / 2^(FB1.PSCALE)

Or, (number of inches) = (Physical in/rev) * (PDO value) / 2^(FB1.PSCALE)

SDO: Does not apply.

 

For FBUS.PARAM05 = 512 (bit9=1):

PDO: Same as FBUS.PARAM05 = 0 (bit9=0)

SDO: Same as PDO.

 

Object 6064: Actual Position (CSP, PP, IP modes)

PDO:

PDO value = Feedback position in user units, based on 1 rev = UNIT.PIN (UNIT.POUT does not apply)

SDO:

SDO value = Target in user units, based on 1 rev = UNIT.PIN / UNIT.POUT

 

 

Option B: Specify the scaling via DS402 objects for Feed Constant and Gear Ratio (CAN/EtherCAT)

Set FBUS.PARAM05 = 16 (bit4=1):

Target position is 607A (CSP and PP modes) or 60C1 Sub 1 (IP mode)

Actual position is 6063 or 6064 (Actual Position)

 

Object 607A: Target Position (CSP and PP modes)

PDO and SDO:

Fieldbus value is in "counts" or "physical units" (mm, inches, etc.) based on feed constant and gear ratio.  Meaning, the feed constant and gear ratio define the number of units per motor rev.

Scaling is in units of (feed constant) / (gear ratio).

Fieldbus value = number of physical units

Or, Fieldbus value = number of revs * (feed constant) / (gear ratio)

Or, (number of revs) = Fieldbus value * (gear ratio) / (feed constant)

Feed constant is 6092sub1 / 6092sub2.

Gear ratio is 6091sub1 / 6091sub2.

(The gear ratio can be ignored.  Set gear ratio to 1 (6091sub1 = 1 and 6091sub2 = 1).  Set feed constant to the number of units per rev you want to use.)

 

Example:

Feed constant = 10 mm / 1 rev : 6092h sub1 = 10, 6092h sub2 = 1

Gear ratio = 5:1 : 6091h sub1 = 5, 6091h sub2 = 1

Scaling is in 10mm/5revs.

For a Physical Target Position of 2mm: Set the Fieldbus value to 2.

Number of revs = 2mm * 5revs / (10mm/rev) = 1 rev

 

Object 60C1 Subindex 1: Target Position (IP mode)

PDO: Same as for FBUS.PARAM05 = 0 (bit4=0).

SDO: Does not apply.

 

Object 6063: Actual Position (IP mode)

For FBUS.PARAM05 = 16 (bit4=1, bit9=0):

PDO: Same as for FBUS.PARAM05 = 0 (bit4=0, bit9=0).

SDO: Does not apply.

 

For FBUS.PARAM05 = 528 (bit4=1, bit9=1):

PDO: Same as for FBUS.PARAM05 = 512 (bit4=0, bit9=1).

SDO: Same as for FBUS.PARAM05 = 512 (bit4=0, bit9=1).

 

Object 6064: Actual Position (CSP, PP, IP modes)

PDO and SDO:

Fieldbus value is in "counts" or "physical units" (mm, inches, etc.) based on feed constant and gear ratio.  Meaning, the feed constant and gear ratio define the number of units per motor rev.

Scaling is in units of (feed constant) / (gear ratio).

Physical Feedback Position = Fieldbus value

Or, Fieldbus value = number of revs * (feed constant) / (gear ratio)

Or, (number of revs) = PDO value * (gear ratio) / (feed constant)

Feed constant is 6092sub1 / 6092sub2.

Gear ratio is 6091sub1 / 6091sub2.

 

Example:

Feed constant = 10 mm / 1 rev : 6092h sub1 = 10, 6092h sub2 = 1

Gear ratio = 5:1 : 6091h sub1 = 5, 6091h sub2 = 1

Scaling is in 10mm/5revs.

For a Fieldbus Feedback value of 2: Physical Feedback Position = 2mm

Number of revs = 2mm * 5revs / (10mm/rev) = 1 rev

 

Note: In TwinCAT, the NC actual position and target position are scaled using the “Encoder Scaling”.  This setting is found under Axis 1 / Axis 1_Enc / Parameter tab / Encoder Evaluation / Scaling Factor.  Set this scaling factor to 1 to make the NC position values have the same scaling as the 607A and 6064 PDO values.