Readme for PIasyn - EPICS support for PI GCS2 stages
========================================================

The PIasyn driver is written to support PI motion controllers which
support GCS2 (General Command Set) as commanding language.
Currently this is implemented with different C++ classes where the
differences and specialties are handled. This can be implemented
by querying the controller what features are supported. So in future
developments these classes may disappear.

 Homing
========

a) stages with absolute sensors
Some PI stages, mostly piezo stages, use an absolute position sensor.
The correct absolute position is known to the controller immediately after power up.
For these stages homing is not necessary and thus not supported.
These stages will ignore HOMF and HOMR.
The HOME flag of the MSTA field is meaningless for these stages
and HOMED is always true,

b) stages with incremental sensors
Some PIStages needs to be referenced after controller power up. The state
is reflected by the HOMED flag of MSTA. There are different ways to home
a stage. The default is by using the reference switch. If a stage has
a reference switch HOMF and HOMR will move to this switch. The direction is
determined by the controller. The reference signal is edge based, so the controller
can find out on which side of the reference the stage is and can move using
the shortest path. HOMF and HOMR will trigger the same move. If the stage has
no reference switch the built in limit switches can be used to determine the absolute
position. In this case HOMF will send the stage to its positive limit switch and
HOMR to its negative limit switch. As the reference is edge based or not present the
HOME bit of the MSTA field is meaningless for these stages.

c) setting the homing velocity
Reducing the velocity used for homing is usually done to improve the accuracy.
PI controllers reach the reference every time from the same "side". So only this
last approach is performed with the homing velocity set with HVEL. The coarse move
to the proximity of the reference is done with the a velocity limited by the current
velocity (set with VELO) and the maximum possible velocity to decelerate in case of
hitting a limit switch.

 "Motion Errors"
=================

If the controller detects a "motion error", i.e. the difference between target and
current position is greater than some given limit (also known as "following error"),
the driver will set the PROBLEM bit in MSTA. Servo control is also switched off.
The EA_POSITION bit of MSTA will reflect the "servo control" state. To re-enable
servo control use CNEN.  


 C-702
=======

The C-702 controller uses an older "dialect" of GCS1.
That's why at some points different parameter IDs are used and why there is no communication
during homing. So the position cannot be updated during homing and will "jump" to the final
position after homing is finished.


