IcePAP
Configuring an IcePAP motor controller¶
This chapter explains how to configure an IcePAP motor controller.
Supported features¶
Encoder | Shutter | Trajectories | Linked axes |
---|---|---|---|
YES | YES | YES | YES |
Specific IcePAP controller parameters¶
- host: controller hostname or IP address
Specific IcePAP axis parameters¶
- address: int, motor input channel
- autopower: bool, automatically switch on/off power on axis
YAML configuration file example¶
controller:
class: icepap
host: iceid2322
axes:
- name: mbv4mot
address: 1
steps_per_unit: 817
velocity: 0.3
acceleration: 3
- name: camx
address: 34
...
Note
Each controller:
line can be prepended with -
to configure multiple
controllers in the same YAML file.
Note
Beacon needs the emotion
configuration plugin for motor controller
YAML files interpretation.
It is common to add an init.yml file with: plugin: emotion
in the top directory of motors configuration YAML files. Another
possibility is to add plugin: emotion
directly in each motor controller
YAML configuration file.
Encoder configuration¶
Encoders directly plugged in the IcePAP controller can be configured directly in the YAML configuration file.
Note
An encoder can be defined on its own (Encoder
object), or can be associated
to an axis to add some extra checks when motion is done: for example, an exception
can be raised if final position does not correspond to encoder position.
Specific IcePAP encoder parameters¶
- type: to set which encoder to read.
ENCIN
: rear incremental encoderABSENC
: rear SSI interfaceINPOS
: front panel encoderMOTOR
: electrical phase of the motorAXIS
: nominal axis positionSYNC
: backplance SYNC input register
- address: encoder input channel
Note
See icepap documentation for more info. http://wikiserv.esrf.fr/bliss/index.php/ICEPAP#Documentation
Encoder YAML configuration example¶
controller:
class: icepap
host: iceid42
axes:
...
encoders:
- name: mbv1enc
address: 25
type: ENCIN
steps_per_unit: 1e5
More information about Encoder objects here
IcePAP Shutter configuration¶
The IcePAP controller can be put in shutter control mode (using IcePAP LIST MODE), to operate opening and closing of a shutter. This is done by moving back and forth a stepper motor between two pre-defined positions. The change is trigger by an external signal.
For details, see: Shutter configuration
Linked axis configuration¶
IcePAP controller can link several axes together, creating a new virtual axis managed directly by the controller itself. A linked axis applies motions to underlying linked motors. Linked motors are considered as real (as opposed to the virtual axis).
Note
icepapcms has to be used to create a linked axis in the controller
Specific IcePAP linked axis configuration¶
- class for axis has to be
LinkedAxis
- address is the name of the linked axis, has defined with icepapcms
Linked axis YAML configuration example¶
controller:
class: icepap
host: icebcu21
axes:
...
- name: linked_axis1
address: linked_axis_name
class: LinkedAxis
steps_per_unit: 200
velocity: 10
acceleration: 20
Linked axis info strings gives status on real axis as follow:
ICEPAP LINKED AXIS:
linked name: motlink
real axis: ADDR: 1 POWER: ON CLOOP: ON WARNING: NONE ALARM: NO
real axis: ADDR: 2 POWER: ON CLOOP: ON WARNING: NONE ALARM: NO
To get more details, like real motor positions/encoders, use:
BLISS [7]: motlink.real_axes_status()
VIRTUAL LINKED AXIS:
Virtual axis name : motlink
POWER : ON
Indexer steps : 10
Indexer in user unit : 0.05
REAL AXIS CONTROLLED BY LINKED AXIS:
Real axis address : 1
Real axis name : motor1
Home switch : YES
Homing : NOTFOUND
Control encoder : YES
Indexer steps : 10
Encoder steps : 10
Homepos steps : unavailable
Indexer user unit : 0.05
Encoder user unit : 0.05
Closed loop : ON
REAL AXIS CONTROLLED BY LINKED AXIS:
Real axis address : 2
Real axis name : motor2
Home switch : YES
Homing : NOTFOUND
Control encoder : YES
Indexer steps : 10
Encoder steps : 10
Homepos steps : unavailable
Indexer user unit : 0.05
Encoder user unit : 0.05
Closed loop : ON
Methods specific to linked axis:
sync(user_position)
: Synchronizes all real linked axes members to the given position. No motion will take place. The position is given in user units of the virtual axis.disprotected_move(real_axis, user_target_pos)
: Move one of the real axis to the given position. Real axis are accessible throughreal_axes
. Example:motlink.disprotected_move(motlink.real_axes.motor1, 0.1)
open_closed_loop()
: open closed loop on all real axesreset_closed_loop()
: reset closed loop on all real axes (ie. sync axis position with encoder one)reset()
: reset closed loop on all real axis. Then move each real to the mean position and finally set linked axis position to that position. This command implies that all axis can be moved independently. It is typically used to sync positions after brake release when real axis are in closed loop.