2.1. FaulhaberMCS#
Summary: |
FaulhaberMCS |
Type: |
Actuator |
License: |
Licensed under LGPL. |
Platforms: |
Windows, Linux |
Devices: |
Faulhaber MCS 3242 BX4 ET |
Author: |
J. Krauter, TRUMPF SE + Co. KG |
2.1.1. Overview#
This plugin is an actuator plugin to control servo motors from Faulhaber.
It was implemented for RS232 communication and tested with:
Serie MCS 3242: https://www.faulhaber.com/de/produkte/serie/mcs-3242bx4-et/
Homing options:
‘setOrigin’ function of the plugin uses the homing method ‘37’ to set the current position to 0.
‘homing’ execFunction can be used for the other homing methods which needs more input parameters.
2.1.2. Initialization#
The following parameters are mandatory or optional for initializing an instance of this plugin:
- serialIOInstance: Union[itom.dataIO, itom.actuator]
An opened serial port of ‘SerialIO’ plugin instance.
Only plugin “SerialIO” is allowed
- nodeID: int
Node ID of device. Register ‘0x2400.03’.
Value range: [1, 255], Default: 1
2.1.3. Parameters#
These parameters are available and can be used to configure the FaulhaberMCS
instance.
Many of them are directly initialized by the parameters of the constructor.
During the runtime of an instance, the value of these parameters is obtained by
the method getParam, writeable parameters can be changed using setParam.
- acceleration: int
Acceleration in 1/s². Register ‘0x6083.00’.
Value range: [1, 30000], Default: 4250
- async: int, read-only
Asynchronous move (1), synchronous (0) [default]. Only synchronous operation is implemented.
Value range: [0, 1], Default: 0
- current: int, read-only
Actual value of the current in relative scaling. Register ‘0x6078.00’.
Value range: [-32768, 32767], Default: 10
- deceleration: int
Deceleration in 1/s². Register ‘0x6084.00’.
Value range: [1, 30000], Default: 1280
- deviceID: int
Explicit device ID. Register ‘0x2400.08’
Value range: [0, 65535], Default: 0
- deviceName: str, read-only
Name of device. Register ‘0x1008.00’.
Match: “”, Default: “MCS 3242 BX4 ET”
- fault: int, read-only
1: Error present, 0: No error present (Bit 3).
Value range: [0, 1], Default: 0
- firmware: str, read-only
Firmware version. Register ‘0x100A.00’
Match: “”, Default: “0111.02N”
- fluxGainControl: int
Flux control gain parameter [mOm]. Register ‘0x2342.01’.
Value range: [-1, 0], Default: 1835
- fluxIntegralTimeControl: int
Flux control integral time control parameter [µs]. Register ‘0x2342.01’.
Value range: [150, 2600], Default: 150
- followingError: int, read-only
1: Permissible range for the following error exceeded, 0: The actual position follows the instructions without a following error (Bit 13).
Value range: [0, 1], Default: 0
- homed: int, read-only
homed (1) or not homed (0).
Value range: [0, 1], Default: 0
- internalLimitActive: int, read-only
1: Internal range limit (e.g. limit switch reached), 0: Internal range limit not reached (Bit 11).
Value range: [0, 1], Default: 0
- maxMotorSpeed: int
Max motor speed in 1/min. Register ‘0x6080.00’.
Value range: [1, 32767], Default: 32767
- maxTorqueLimit: int, read-only
Maximum torque limit in relative scaling. 1000 = motor rated torque. Register ‘0x6072.00’.
Value range: [1, 30000], Default: 2000
- moveTimeout: int
Timeout for movement in ms.
Value range: [0, inf], Default: 60000
- name: str, read-only
FaulhaberMCS
- netMode: int
RS232 net mode. Register ‘0x2400.05’.
Value range: [0, 1], Default: 0
- nodeID: int
Node number. Register ‘0x2400.03’.
Value range: [0, 255], Default: 1
- operation: int
Enable (1) or Disable (0) operation.
Value range: [0, 1], Default: 1
- operationEnabled: int, read-only
1: Operation enabled, 0: Operation disabled (Bit 2).
Value range: [0, 1], Default: 1
- operationMode: int, read-only
Operation Mode. -4: ATC, -3: AVC, -2: APC, -1: Voltage mode, 0: Controller not activated, 1: PP (default), 3: PV, 6: Homing, 8: CSP, 9: CSV, 10: CST. Register ‘0x6060.00’.
Value range: [-4, 10], Default: 1
- positionLimits: Sequence[int]
Lower/ upper limit of the position range in userdefined uints. Register lower limit ‘0x607D.01’, upper limit ‘0x607D.02’.
Allowed number of values: 0 - 18446744073709551615, All values allowed, Default: [-inf, inf]
- power: int
Enable (1) or Disable (0) device power.
Value range: [0, 1], Default: 1
- productCode: str, read-only
Product code number. Register ‘0x1018.02’.
Match: “”, Default: “11601”
- profileVelocity: int
Profile velocity in 1/min. Register ‘0x6081.00’.
Value range: [1, 32767], Default: 4000
- quickStop: int, read-only
1: Quick stop enabled, Quick stop disabled (Bit 5).
Value range: [0, 1], Default: 1
- quickStopDeceleration: int
Quickstop deceleration in 1/s². Register ‘0x6085.00’.
Value range: [1, 32750], Default: 30000
- readyToSwitchOn: int, read-only
1: Ready to switch ON, 0: Not ready to switch ON (Bit 0).
Value range: [0, 1], Default: 1
- revisionNumber: str, read-only
Revision number. Register ‘0x1018.03’
Match: “”, Default: “14”
- serialNumber: str, read-only
Serial number of device. Register ‘0x2400.03’.
Match: “”, Default: “492300001”
- setPointAcknowledged: int, read-only
1: New set-point has been loaded, 0: Previous set-point being changed or already reached (Bit 12).
Value range: [0, 1], Default: 0
- switchOnDisabled: int, read-only
1: Switch on disabled, 0: Switch on enabled (Bit 6).
Value range: [0, 1], Default: 0
- switchedOn: int, read-only
1: Drive is in the ‘Switched ON’ state, 0: No voltage present (Bit 1).
Value range: [0, 1], Default: 1
- targetReached: int, read-only
1: Target has reached, 0: is moving (Bit 10).
Value range: [0, 1], Default: 1
- targetTorque: int
Set target value of the torque in relative scaling. Register ‘0x6071.00’.
Value range: [-32768, 32767], Default: 0
- temperatureCPU: int, read-only
CPU temperature in [°C]. Register ‘0x2326.01’.
Value range: [0, 32767], Default: 44
- temperaturePowerStage: int, read-only
Power stage temperature in [°C]. Register ‘0x2326.02’.
Value range: [0, 32767], Default: 30
- temperatureWinding: int, read-only
Winding temperature in [°C]. Register ‘0x2326.03’.
Value range: [0, 32767], Default: 29
- torque: int, read-only
Actual value of the torque in relative scaling. Register ‘0x6077.00’.
Value range: [-32768, 32767], Default: 0
- torqueGainControl: int
Torque control gain parameter [mOm]. Register ‘0x2342.01’.
Value range: [-1, 0], Default: 1835
- torqueIntegralTimeControl: int
Torque control integral time control parameter [µs]. Register ‘0x2342.01’.
Value range: [150, 2600], Default: 150
- torqueLimits: Sequence[int]
Negative/ positive torque limit values in relative scaling. 1000 = motor rated torque. Register negative limit ‘0x60E1.00’, positive limit ‘0x60E0.00’.
Allowed number of values: 0 - 18446744073709551615, Value range: [0, 6000], Default: [6000, 6000]
- velocityDeviationThresholdControl: int
Velocity deviation threshold control parameter. Register ‘0x2344.03’.
Value range: [0, 65535], Default: 65535
- velocityDeviationTimeControl: int
Velocity deviation time control parameter. Register ‘0x2344.04’.
Value range: [0, 65535], Default: 100
- velocityGainControl: int
Velocity gain control parameter [As 1e-6]. Register ‘0x2342.01’.
Value range: [-1, 0], Default: 1835
- velocityIntegralPartOption: int
Velocity integral part option. Configuration of the speed control loop. ‘0’: integral component active, ‘1’: stopped integral component in the position windoed (in PP mode), ‘2’: integral component deactivated. Register ‘0x2344.06’.
Value range: [0, 2], Default: 0
- velocityIntegralTimeControl: int
Velocity integral time control parameter [µs]. Register ‘0x2344.02’.
Value range: [0, 65535], Default: 23
- velocityWarningThresholdControl: int
Velocity warning threshold control parameter. Register ‘0x2344.05’.
Value range: [0, 65535], Default: 30000
- vendorID: str, read-only
Vendor ID of device. Register ‘0x1018.01’.
Match: “”, Default: “327”
- voltageEnabled: int, read-only
1: Power supply enabled, 0: Power supply disabled (Bit 4).
Value range: [0, 1], Default: 0
- warning: int, read-only
1: One of the monitored temperatures has exceeded at least the warning threshold, 0: No raised temperatures (Bit 7).
Value range: [0, 1], Default: 0
2.1.4. Additional functions (exec functions)#
By using the following execFunctions you execute homing according the homing methods.
- instance.exec('homing', method[, offset, switchSeekVelocity, homingSpeed, acceleration, limitCheckDelayTime, torqueLimits])#
In most of the cases before position control is to be used, the drive must perform a reference run to align the position used by the drive to the mechanic setup.
- Parameters:
method (int) – Homing method. Methods 1âŠ34: A limit switch or an additional reference switch is used as reference. Method 37: The position is set to 0 without reference run. Methods â1âŠâ4: A mechanical limit stop is set as reference. Register ‘0x6098.00’.
offset (int - optional) – Offset of the zero position relative to the position of the reference switch in userdefined units. Register ‘0x607C.00’.
switchSeekVelocity (int - optional) – Speed during search for switch. Register ‘0x6099.01’.
homingSpeed (int - optional) – Speed during search for zero. Register ‘0x6099.02’.
acceleration (int - optional) – Speed during search for zero. Register ‘0x609A.00’.
limitCheckDelayTime (int - optional) – Delay time until blockage detection [ms]. Register ‘0x2324.02’.
torqueLimits (Sequence[int] - optional) – Upper/ lower limit values for the reference run in 1/1000 of the rated motor torque. Register negative limit ‘0x2350.00’, positive limit ‘0x2351.00’.
2.1.5. Exemplary usage from Python#
In the following examples, it is shown how to use this Plugin.
First an instance must be initialized using the SerialIO
Plugin.
from itom import actuator, dataIO
com = dataIO("SerialIO", 6, 115200, "\n") # adapt COM port number
mot = actuator("FaulhaberMCS", com, 1)
The current position can be set to zero by using the setOrigin
method of the plugin:
mot.setOrigin(0)
The relative position can be set to a specific value by using the setPosRel
method of the plugin:
mot.setPosRel(0, 4096)
The absolute position can be set to a specific value by using the setPosAbs
method of the plugin:
mot.setPosAbs(0, 4096)
Additional homing methods can be executed by using the exec
method of the plugin:
mot.exec("homing", -3, torqueLimits=[300, 300]) # mechanical limit stop is set as reference
Parameters can be read by using the getParam
method of the plugin:
print(mot.getParam("positionLimits"))
Parameters can be set by using the setParam
method of the plugin:
mot.setParam("profileVelocity", 2000)
Motor can be turned off setting parameter operation
:
mot.setParam("operation", 0) # turn off motor
mot.setParam("operation", 1) # turn on motor
The motor voltage is turned off setting parameter power
:
mot.setParam("power", 0) # turn off motor voltage
# To turn it on again, first it must be shut down
mot.setParam("operation", 0)
mot.setParam("operation", 1) # turn on motor
For long movement operations, the timeout can be set:
mot.setParam("moveTimeout", 60000) # set timeout to 60s
The torque control parameter are changed by the plugin parameter:
mot.setParam("torqueGainControl", 1835)
mot.setParam("torqueIntegralTimeControl", 150)
The flux control parameter are changed by the plugin parameter:
mot.setParam("fluxGainControl", 1835)
mot.setParam("fluxIntegralTimeControl", 150)
The velocity control parameter are changed by the plugin parameter:
mot.setParam("velocityGainControl", 1835)
mot.setParam("velocityIntegralTimeControl", 23)
mot.setParam("velocityDeviationThresholdControl", 65535)
mot.setParam("velocityDeviationTimeControl", 100)
mot.setParam("velocityWarningThresholdControl", 30000)
mot.setParam("velocityIntegralPartOption", 0)
2.1.6. Changelog#
itom setup 4.3.0 - v1.0.0: Initial version