Development status:
Released,
Release: Release_1_71
Information status: Updated
Repository:
http://svn.code.sf.net/p/tango-ds/code/DeviceClasses/Motion/MotorControllers/OmsVme58
Contact:
Class Description
Stepping motor
Families: Motion
Key words:
Platform: Unix Like
Language: Cpp
Contact:
Hardware
Manufacturer: none
Bus: VME
Class interface
Attributes:
Name | Description |
---|---|
AccelerationScalar: DevLong | the acceleration |
BaseRateScalar: DevLong | the motor starts to move with this rate, then accelerates |
ConversionScalar: DevDouble | the conversion factor, steps = conversion*units |
FlagCalibrationDefinedScalar: DevLong | set to 1, when the calibration is defined |
FlagCalibrationUserDefinedScalar: DevLong | set to 1, when the user calibration is defined |
FlagConversionDefinedScalar: DevLong | set to 1, when the conversion is defined |
SettleTimeScalar: DevDouble | used by completeMove to wait after a motor comes to \nrest |
SlewRateScalar: DevLong | the motor speed |
SlewRateMaxScalar: DevLong | the maximum slew rate |
SlewRateMinScalar: DevLong | the minumum slew rate |
StepBacklashScalar: DevLong | backlash is used for movements which have NOT\n (steps > 0 && StepBacklash) > 0 ||\n (steps < 0 && StepsBacklash) < 0 |
StepCalibrationScalar: DevLong | see the description of unitCalibration |
StepCalibrationUserScalar: DevLong | this value may be changed by the user, it is an offset to\nstepCalibration, see the explanations at unitCalibration |
StepLimitMaxScalar: DevLong | corresponds to the upper unit limit, changing on affects the other |
StepLimitMinScalar: DevLong | corresponds to unit limit min, changing one affects the other |
StepPositionInternalScalar: DevLong | the internal (Software) position |
StepPositionControllerScalar: DevLong | the controller (Software) position |
UnitBacklashScalar: DevDouble | this value corresponds to stepBacklash, changing one\nchanges the other, see the explanations given \nfor stepBacklash |
UnitCalibrationScalar: DevDouble | the calibration point is specified by a unit position and\nthe corresponding step position, the formular for\nunits2steps is then: \n\nsteps = stepsCalibration + conversion*( unit - unitCalibration) |
UnitCalibrationUserScalar: DevDouble | this value may be changed by the user, an offset to the\nunitCalibration, see the explanation there |
UnitLimitMaxScalar: DevDouble | the upper motor limit |
UnitLimitMinScalar: DevDouble | the lower limit of a motor |
DerivativeGainScalar: DevDouble | — |
IntegralGainScalar: DevDouble | — |
ProportionalGainScalar: DevDouble | — |
TotalMoveTimeScalar: DevFloat | — |
RemainingTimeScalar: DevFloat | — |
CwLimitScalar: DevLong | — |
CcwLimitScalar: DevLong | — |
FlagProtectedScalar: DevLong | Protection mask |
MagnitudeScalar: DevLong | — |
FlagMotorReadyScalar: DevLong | — |
FlagBacklashScalar: DevLong | Internally set to 1 if a backlash compensation will be performed at the end of the current movement. It shows always 0 if the motor is not moving or a backlash will not be added at the end of the started movement. |
PositionScalar: DevDouble | — |
AccuLimitMinScalar: DevLong | — |
AccuLimitMaxScalar: DevLong | — |
FlagEncoderConversionDefinedScalar: DevLong | 1 if the conversion factor of the encoder was defined |
FlagEncoderHomeDefinedScalar: DevLong | 1 if the encoder home position was defined |
FlagEncoderHomedScalar: DevLong | 1 if the encoder went through a homing procedure. Can be set\nafter a server restart, if VME stayed on. |
ConversionEncoderScalar: DevDouble | the encoder conversion factor |
HomePositionScalar: DevDouble | the unit position of the encoder home switch |
PositionEncoderScalar: DevDouble | the motor postition calculated from the encoder reading,\nthe encoder conversion and the encoder home position |
FlagUseEncoderPositionScalar: DevLong | if 1, the server returns the encoder position when asked \nfor the motor position |
PositionEncoderRawScalar: DevDouble | the raw value from the encoder, does not involve a home position,\na homing procedure, etc. |
FlagClosedLoopScalar: DevLong | closed loop stepping mode on/off |
SlewRateCorrectionScalar: DevLong | the maximum slew used in closed loop corrections |
StepDeadBandScalar: DevLong | dead band in encoder counts (steps * encConv/Conv) |
CorrectionGainScalar: DevLong | [1,32000], SlewCorr = CorrGain*PositionError (but\n< SlewRateCorrection) |
SlipToleranceScalar: DevLong | slit tolerance, in encoder units, [0,65535] |
CutOrMapScalar: DevDouble | the value of the cut/mapping point, for explanations\nsee flagCutOrMap |
FlagInvertEncoderDirectionScalar: DevLong | — |
EncoderRatioScalar: DevDouble | the output of the ER? command |
FlagCutOrMapScalar: DevLong | mirror the state of the FlagCutOrMap property, \nread-only |
HomeStatusBitsScalar: DevLong | represents the status of the home switch bits |
FlagCheckZMXActivatedScalar: DevLong | if the property ZMXDevice is defined and FlagCheckZMXActivated == 1: before each move (also vvc) it is asserted that the Deactivation ZMX attribute is 0. |
UnitLimitMaxExpertScalar: DevDouble | the expert value of the upper motor limit, purpose: overwrite changes to unitLimitMax made by the user |
UnitLimitMinExpertScalar: DevDouble | the expert value of the lower limit of a motor, the purpose is to overwrite the changes to unitLimitMin made by a user |
RecentWritesSpectrum: DevString | A debugging tool. This array contains records about the \nrecent write operations to the server. |
Commands:
Name | Description |
---|---|
StateInput: DevVoid Output: State State Code |
This command gets the device state (stored in its <i>device_state</i> data member) and returns it to the caller. |
StatusInput: DevVoid Output: ConstDevString Status description |
This command gets the device status (stored in its <i>device_status</i> data member) and returns it to the caller. |
CheckMoveInput: DevVoid Output: DevLong return value |
the function returns 1, if the motor is moving |
CompleteMoveInput: DevVoid Output: DevLong return status of execution |
waits for the move to be finished, does the backlash, if FlagBacklash |
GetRegisterInput: DevVoid Output: DevLong the register contents |
returns the stepper controller register contents, hardware |
GetPositionInput: DevVoid Output: DevDouble the position |
— |
SetRegisterInput: DevLong the new register contents Output: DevLong completion status |
loads the motor register with a value, the hardware |
SetupStepMoveInput: DevLong final position, in steps Output: DevLong completion status |
prepares a move, takes backlash into account, sets FlagMotorReady |
SetupUnitMoveInput: DevDouble final position, in units Output: DevLong completion status |
prepares a move, calulates the new step position from the argument, the calibration value and the conversion factor, takes backlash into account, sets FlagMotorReady |
StartMoveInput: DevVoid Output: DevLong completion status |
a motor with FlagMotorReady is started, the function returns immediately |
StopMoveInput: DevVoid Output: DevLong completion status |
stop a movement, return immediately, don't wait for de-acceleation, don't do backlash |
MoveInput: DevDouble Final position, in units Output: DevLong Completion status |
Setup motor, start move, complete move. |
GetStepPositionInput: DevVoid Output: DevLong Position in steps |
Returns the motor position in steps in case the internal and the controller stored positions agree. In other case it gives an error. |
SetStepPositionInput: DevLong argin is stored in the internal and controller registers, changing the motor position, if internal == controller. To resolve conflicts, write directly to the internal or controller register Output: DevLong Completion status |
If StepPositonInternal != StepPositionController, an exception is thrown |
ResetMotorInput: DevVoid Output: DevLong Completion status |
Reset the motor |
CalibrateInput: DevDouble Value to be calibrated Output: DevLong Completion status |
Calibrate the motor: current position is calibrated to be the value given as an argument |
UserCalibrateInput: DevDouble Value to be calibrated Output: DevLong Completion status |
User an user calibration for calibrating the motor keeping the general one. |
SetStepRegisterInput: DevLong argin is stored in the internal and controller registers, if internal == controller. The motor unit position is unchanged. To resolve conflicts, write directly to the internal or controller registers. Output: DevLong Completion status |
This command changes the internal value and the controller. The unit position remains unchanged |
MoveHomeInput: DevVoid Output: DevLong completion status |
executes the encoder homing procedure |
CalibrateEncoderInput: DevVoid Output: DevVoid |
Uses the current motor unit position and the encoder home position to load the encoder raw position. |
WriteReadInput: DevString Output: DevString |
Sends a command to the controller and returns the answer. The axis specification is automatically added to the command. |
MoveToCwLimitInput: DevVoid Output: DevLong completion status |
Moves the motor until the CW limit is reached (positive step direction, MA214700000). Software limits are ignored. StopMove works. |
MoveToCcwLimitInput: DevVoid Output: DevLong completion status |
Moves the motor until the CCW limit is reached (negative step direction, MA-214700000). Software limits are ignored. StopMove works. |
ThreadActionInput: DevVoid Output: DevVoid |
Allows threads to execute preselected actions in the main thread |
movevvcInput: DevVarStringArray a list of strings representing the segments: ``slew:50000, position: 0.1``, ``slew: 30000, position: 0.2``, ``slew: 40000, position: 0.3`` Output: DevLong 1, if the setup was OK and the move could be started |
executes a move using the variable velocity feature - the end positions of the segments have to be ordered - the current position has to comply with the order of the segments - no backlash is executed - the motor must not be in a limit - the motor must not be in closed loop - at the end of the last segment, the motor is decelerated to base - the collision check is done for the end position of the last segment |
MoveLoopInput: DevString A command containing a loop, e.g. AA;LS10;MA0;GO;MA10000;GO;MR,5000;GO;LE;MA0;ID - X is moved to 0 then to 10000 - Y is rel-moved by 5000 - X is moved to 0 after the loop expired - teh DONE flag is set at the end Output: DevLong 1 for success |
The input string is sent to a MaxV card, the state() is set to MOVING and the MoveThread takes control. |
copyExpertLimitsToUserLimitsInput: DevVoid Output: DevVoid |
copy the unitLimitMaxExpert, ~min to unitLimitMax, ~min thereby overwriting the changes made by a user |
copyUserLimitsToExpertLimitsInput: DevVoid Output: DevVoid |
copy the unitLimitMax, ~min to unitLimitMaxExpert, ~min thereby saving the current user mode values to the expert values |
Pipes:
Properties:
Name | Description |
---|---|
BaseDevULong | vme base address |
ChannelDevULong | channel number |
AccuMaxDevLong | the maximum step register value |
AccuMinDevLong | minimum step register value |
SlewRateMinHwDevLong | the minumal slew rate, hardware |
SlewRateMaxHwDevLong | the maximum slew rate, hardware |
AccelerationMinHwDevULong | minimum acceleration, hardware |
AccelerationMaxHwDevULong | the maximum acceleration |
TypeDevUShort | Motor type. 0 -> StepperMotor 1 -> Servo |
SimulationModeDevULong | 0 real mode, 1 simulation mode |
MaxVSerieDevShort | 0 not MaxV 1 MaxV |
IgnoreLimitSwDevULong | set to 1: the server will ignore any limit switch signals, so you can move a motor with no switches connected set to 0: the server will honour limit switch signals |
FlagEncoderDevLong | 1 if an encoder Rnishaw rgh24 is connected 2 if an SSI encoder is connected |
FlagUseCollisionsSensorDevLong | Set to 1 for using CollisionsSensor Server for checking possible collisions. |
CollisionsSensorDSDevString | Name of the CollisionsSensor Device Server to be connected to. |
CollisionsSensorBLDevString | Beamline identification as string, needs for sending to CollisionsSensor. |
ZMXDeviceDevString | Name of the zmx device connected to this motor. If this property is set: - the connection will be tested during server startup. FlagCheckZMX == -1 if the connection fails - Before moves are executed: + FlagCheckZMX != -1 is tested + the state() of the ZMX is tested |
FlagSendDataToCollisionsSensorDevLong | If one limits are send to the collision sensor before checking the movement. It is necessary if any attribute of this server has to be used in the check routine. |
FlagCutOrMapDevLong | 0 - ignore, 1 - cut, 2 - map Cutting point: cannot be passed through, the position stays in [cut, cut+360[ Mapping point: the position is kept in [map, map+360[, automatic re-calibrations |
AbsoluteEncoderOffsetDevLong | SSI absolute encoder difference (in counts) between absolute encoder zero and your desired zero position |
AbsoluteEncoderResolutionDevShort | SSI encoder resolution in bits |
AbsoluteEncoderFrequencyDevULong | SSI encoder data rate in Hz. Valid rates are 31250, 62500, 125000, 250000, 500000, 1000000, 2000000 and 4000000 |
HomeDefinitionDevString | EHhiba h home i index b phase a phase |
HomeIndexDefinitionDevString | 1 - enables encoder index, phase A and B 0 - disables I, A, B |
VmeCardDevULong | identifies the VME card, can be 0 or 1, default: 0 |
Please log in to comment.
Generated
README
b'\n./ivp.py -x\n for a complete IVP for the Oms Server\n\n./ivp.py -x -n \n for a complete IVP for the Oms Server, no prompts\n\n./VVC.py -x\n to perform the variable velocity contouring test\n (this test is also in ivp.py)\n '
Updated:
The device class has been updated.
You can see previous version here .
19 May 2018, DS Admin
Updated:
The device class has been updated.
You can see previous version here .
31 Mar 2018, DS Admin
Updated:
A device class has been added.
You can see previous version here .
31 Mar 2018, DS Admin
Updated:
The device class has been updated.
You can see previous version here .
17 Feb 2018, DS Admin
Updated:
The device class has been updated.
You can see previous version here .
5 Jan 2018, DS Admin
Updated:
The device class has been updated.
You can see previous version here .
9 Sep 2017, Piotr Goryl
Updated:
The device class has been updated.
You can see previous version here .
20 Apr 2017, Piotr Goryl
Updated:
The device class has been updated.
You can see previous version here .
23 Feb 2017, Piotr Goryl
Updated:
The device class has been updated.
You can see previous version here .
19 Jan 2017, Piotr Goryl
Updated:
The device server has been updated.
You can see previous version here .
2 Jan 2017, Piotr Goryl
Created:
The device server has been added to catalogue.