4.2.1 Overview
Motor controllers are used in a wide variety of applications: As direct drive, with follow-on gear, for linear drive, etc. To permit easy parameter setting, the motor controller can be parametrised with the help of the factor group so that the user can specify or read out all variables, such as speed, directly in the desired units at the output (e.g. with a linear axis position value in millimetres and speeds in millimetres per second). The motor controller then uses the factor group to calculate the entries in its internal units of measurement.
For each physical variable, (position, speed and acceleration), there is a conversion factor available to adapt the user units to the own application. The units set through the factor group are generally designated position_units, speed_units or acceleration_units.
The following sketch illustrates the function of the factor group:
Fig. 4.2 Factor group
All parameters are stored in the motor controller in its internal units and only converted with the help of the factor group when being written in or read out.
For that reason, the factor group should be set before the first parameter setting and not changed during parameter setting.
The factor group is set to the following units by default:
Size Designation Unit of measure Explanation
Length position_units Increments 65536 increments per revolution Speed speed_units min-1 Revolutions per minute
Acceleration acceleration_units (min-1)/s Rotational speed increase per second
4.2.2 Description of the Objects
Objects treated in this chapter
Index Object Name Type Attr.
6093h ARRAY position_factor UINT32 rw
6094h ARRAY velocity_encoder_ factor UINT32 rw
6097h ARRAY acceleration_factor UINT32 rw
607Eh VAR Polarity UINT8 rw
Object 6093
h: position_factor
The object position_factor converts all length units of the application from position_units into the internal unit increments (65536 increments equal 1 revolution). It consists of numerator and denominator.
Fig. 4.3 Overview: Factor group
Index 6093h
Name position_factor Object Code ARRAY
No. of Elements 2 Data Type UINT32
Sub-Index 01h
Description Numerator Access rw PDO Mapping yes
Units -- Value Range --
Default Value 1
Sub-Index 02h Description Divisor Access rw PDO Mapping yes
Units -- Value Range --
Default Value 1
The following parameters are involved in the calculation formula of the position_factor:
gear_ratio Gear ratio between revolutions at the drive-in (RIN) and revolutions at the drive-out (ROUT)
feed_constant Ratio between revolutions at the drive-out (ROUT) and movement in position_units(e.g. 1 rev. = 360 degrees)
The position_factors is calculated using the following formula:
ant feed_const
65536 gear_ratio divisor
numerator actor
position_f ⋅
=
=
The position_factor must be written to the motor controller separated into numerators and denominators. This can make it necessary to bring the fraction up to whole integers by expanding it accordingly.
EXAMPLE
First, the desired unit (column 1) and the desired decimal positions (DP) must be determined along with the gear factor and, if applicable, the feed constant of the application. This feed constant is then depicted in the desired position units (column 2).
Finally, all values can be placed in the equation and the fraction calculated:
1.) Desired unit at the drive-out (position_units)
2.) feed_constant: How much position_units are 1 revolution (ROUT) 3.) Gear Ratio (gear_ratio): revsIN per revsOUT
4.) Insert values into equation
1. 2. 3. 4. RESULT
6094
h: velocity_encoder_factor
The object velocity_encoder_factor converts all speed values of the application from speed_unitsinto the internal unit revolutions per 4096 minutes. It consists of numerator and denominator.
Index 6094h
Name velocity_encoder_factor Object Code ARRAY
No. of Elements 2 Data Type UINT32
Sub-Index 01h
Description Numerator Access rw PDO Mapping yes
Units -- Value Range --
Default Value 1
Sub-Index 02h Description Divisor Access rw PDO Mapping yes
Units -- Value Range --
Default Value 1
Calculation of the velocity_encoder_factor consists in principle of two parts: a conversion factor from internal length units into position_units, and a conversion factor from internal time units into user-defined time units (e.g. from seconds into minutes). The first part corresponds to the calculation of the position_factor; for the second part, an additional factor is added to the calculation:
time_factor_v Ratio between internal time unit and user-defined time unit.
(e.g. 1 min = 1/4096 4096 min)
gear_ratio Gear ratio between revolutions at the drive-in (RIN) and revolutions at the drive-out (ROUT)
feed_constant Ratio between revolutions at the drive-out (ROUT) and movement in position_units(e.g. 1 rev. = 360 degrees)
The calculation of the velocity_encoder_factor uses the following equation:
ant feed_const
r_v time_facto gear_ratio
divisor numerator tor
ncoder_fac
velocity_e = = ⋅
Like the position_factor, the velocity_encoder_factor also has to be written to the motor controller separated into numerators and denominators. This can make it necessary to bring the fraction up to whole integers by expanding it accordingly.
EXAMPLE
First, the desired unit (column 1) and the desired decimal positions (DP) must be determined along with the gear factor and, if applicable, the feed constant of the application. This feed constant is then depicted in the desired position units (column 2). Then the desired time unit is converted into the time unit of the motor controller (column 3).
Finally, all values can be placed in the equation and the fraction calculated:
1.) Desired unit at the drive-out (speed_units)
2.) feed_constant: How much position_units are 1 revolution (ROUT)?
3.) time_factor_v: Requested time unit per internal time unit 4.) Gear factor (gear_ratio) RIN per ROUT
5.) Insert values into equation
1. 2. 3. 4. 5. RESULT
Object 6097
h: acceleration_factor
The object acceleration_factor converts all acceleration values of the application from acceleration_units into the internal unit Revolutions per minute per 256 seconds.
It consists of numerator and denominator.
Index 6097h
Name acceleration_factor Object Code ARRAY
No. of Elements 2 Data Type UINT32
Sub-Index 01h
Description Numerator Access rw PDO Mapping yes
Units -- Value Range --
Default Value 1
Sub-Index 02h Description Divisor Access rw PDO Mapping yes
Units -- Value Range --
Default Value 1
Calculation of the acceleration_factor consists of two parts: a conversion factor from internal length units into position_units, and a conversion factor from internal time units squared into user-defined time units squared (e.g. from seconds2 into minutes2).
The first part corresponds to the calculation of the position_factor; for the second part, an additional factor is added:
time_factor_a Ratio between internal times units squared and user-defined time unit squared (e.g. 1 min2 = 1 min⋅1 min = 60 s ⋅1 min = 60/256 256 min ⋅s)
gear_ratio Gear ratio between revolutions at the drive-in (RIN) and revolutions at the drive-out (ROUT)
feed_constant Ratio between revolutions at the drive-out (ROUT) and movement in position_units(e.g. 1 rev. = 360 degrees)
The acceleration_factors is calculated using the following formula:
ant feed_const
r_a time_facto gear_ratio
divisor numerator on_factor
accelerati = = ⋅
The acceleration_factor is also written into the motor controller separated by numerator and denominator, so it may have to be expanded.
EXAMPLE
First, the desired unit (column 1) and the desired decimal positions (DP) must be determined along with the gear factor and, if applicable, the feed constant of the application. This feed constant is then depicted in the desired position units (column 2). Then the desired time unit2 is converted into the time unit2 of the motor controller (column 3). Finally, all values can be placed in the equation and the fraction calculated:
1.) Desired unit at the drive-out (acceleration_units)
2.) feed_constant: How much position_units are 1 revolution (ROUT)?
3.) time_factor_a: Desired time unit2 per internal time unit2 4.) Gear factor (gear_ratio) RIN per ROUT
5.) Insert values into equation
1. 2. 3. 4. 5. RESULT
Object 607E
h: polarity
The algebraic sign of the position and speed values of the motor controller can be set with the corresponding polarity_flag. This can serve to invert the motor's direction of rotation with the same setpoint values.
In most applications, it makes sense to set the position_polarity_flag and the velocity_polarity_flag to the same value.
Setting of the polarity_flag influences only parameters when reading and writing.
Parameters already present in the motor controller are not changed.
Index 607Eh Name polarity Object Code VAR Data Type UINT8 Access rw PDO Mapping yes
Units -- Value Range 40h, 80h, C0h Default Value 0
bit Value Name Significance
6 40h velocity_polarity_flag 0: multiply by 1 (default) 1: multiply by –1 (invers) 7 80h position_polarity_flag 0: multiply by 1 (default)
1: multiply by –1 (invers)
Object 6091
h: gear_ratio
A gear can be set via this object.Index 6091h Name gear_ratio Object Code RECORD No. of Elements 2
Sub-Index 01h
Description motor_revolutions Data Type UINT32
Access rw PDO Mapping no
Units -- Value Range 1 ... FFFFFFFFh Default Value 1
Sub-Index 02h
Description shaft_revolutions Data Type UINT32
Access rw PDO Mapping no
Units -- Value Range 1 ... FFFFFFFFh Default Value 1
Object 6092
h: feed_constant
The feed per motor revolution can be set over this object.
Index 6092h
Name feed_constant Object Code RECORD No. of Elements 2
Sub-Index 01h Description feed Data Type UINT32 Access rw PDO Mapping no
Units -- Value Range 1 ... FFFFFFFFh Default Value 1
Sub-Index 02h
Description shaft_revolutions Data Type UINT32
Access rw PDO Mapping no
Units -- Value Range 1 ... FFFFFFFFh Default Value 1