======= Rotator ======= Commands -------- configureAcceleration ~~~~~~~~~~~~~~~~~~~~~ **Description**: Limit the minimum and maximum acceleration level of the rotator to be set within the global limit of +/- 1 deg/s2. :Subsystem: Rotator :EFDB_Topic: Rotator_command_configureAcceleration alimit ****** :IDL_Type: double :Units: deg/s2 :Count: 1 **Description**: acceleration limit configureVelocity ~~~~~~~~~~~~~~~~~ **Description**: The configure Velocity command limits the minimum and maximum velocity level of the rotator to be set within the global limit of +/- 3.5 deg/s. :Subsystem: Rotator :EFDB_Topic: Rotator_command_configureVelocity vlimit ****** :IDL_Type: double :Units: deg/s :Count: 1 **Description**: Velocity limit move ~~~~ **Description**: Move the rotator to the specified position and stop. During the move the enabled substate will be MovingPointToPoint, then it will return to Stationary. :Subsystem: Rotator :EFDB_Topic: Rotator_command_move position ******** :IDL_Type: double :Units: deg :Count: 1 **Description**: Desired position. track ~~~~~ **Description**: Specify desired rotator position and velocity "slewing or tracking" mode, which is started with the trackStart command and concluded with the stop command. :Subsystem: Rotator :EFDB_Topic: Rotator_command_track angle ***** :IDL_Type: double :Units: deg :Count: 1 **Description**: Desired position at the time specified by "tai". velocity ******** :IDL_Type: double :Units: deg/second :Count: 1 **Description**: Desired velocity at the time specified by "tai". tai *** :IDL_Type: double :Units: second :Count: 1 **Description**: TAI time of the "position" and "velocity" fields. trackStart ~~~~~~~~~~ **Description**: Enter slewing/tracking mode (enabled substate SlewingOrTracking): follow a path specified by repeated track commands. Issue the stop command when you are done tracking. :Subsystem: Rotator :EFDB_Topic: Rotator_command_trackStart state ***** :IDL_Type: boolean :Units: unitless :Count: 1 **Description**: state clearError ~~~~~~~~~~ **Description**: Clear the Fault state, sending the controller into Offline substate PublishOnly. You must use the engineering user interface to transition from that to Offline substate Available before the CSC can control the rotator. :Subsystem: Rotator :EFDB_Topic: Rotator_command_clearError state ***** :IDL_Type: boolean :Units: unitless :Count: 1 **Description**: state stop ~~~~ **Description**: Stop the rotator and go to enabled substate Stationary. :Subsystem: Rotator :EFDB_Topic: Rotator_command_stop state ***** :IDL_Type: int :Units: unitless :Count: 1 **Description**: Not used. Events ------ * ControllerState_Standby=0 * ControllerState_Disabled=1 * ControllerState_Enabled=2 * ControllerState_Offline=3 * ControllerState_Fault=4 * OfflineSubstate_PublishOnly=0 * OfflineSubstate_Available=1 * EnabledSubstate_Stationary = 0 * EnabledSubstate_MovingPointToPoint=1 * EnabledSubstate_SlewingOrTracking=2 * EnabledSubstate_ControlledStopping=3 * EnabledSubstate_Initializing=4 * EnabledSubstate_Relative=5 * EnabledSubstate_ConstantVelocity=6 * ApplicationStatus_HEX_FOLLOWING_ERROR_MASK=0x00000001 * ApplicationStatus_HEX_MOVE_COMPLETE_MASK=0x00000002 * ApplicationStatus_COMMAND_REJECT_MASK=0x00000020 * ApplicationStatus_SAFTEY_INTERLOCK=0x00000040 * ApplicationStatus_EXTEND_LIMIT_SWITCH=0x00000080 * ApplicationStatus_RETRACT_LIMIT_SWITCH=0x00000100 * ApplicationStatus_ETHERCAT_PROBLEM=0x00000200 * ApplicationStatus_DDS_COMMAND_SOURCE=0x00000400 * ApplicationStatus_MOTION_TIMEOUT=0x00000800 * ApplicationStatus_DRIVE_FAULT=0x00002000 * ApplicationStatus_SIMULINK_FAULT=0x00004000 * ApplicationStatus_ENCODER_FAULT=0x00008000 controllerState ~~~~~~~~~~~~~~~ **Description**: State reported by the low level controller. All values except applicationStatus are 1 greater than those reported by the controller for temporary and historical reasons. :Subsystem: Rotator :EFDB_Topic: Rotator_logevent_controllerState controllerState *************** :IDL_Type: long :Units: unitless :Count: 1 **Description**: Basic state. A ControllerState enumeration value. The state names and meanings are the same as standard CSC summaryState, but the numeric values are ordered differently. We report the controller state in addition to summaryState because we need to report a summaryState even when the controller is not connected, and to aid diagnostics, e.g. in case the controller reports an unrecognized state. offlineSubstate *************** :IDL_Type: long :Units: unitless :Count: 1 **Description**: Substate in OFFLINE mode. An OfflineSubstate enumeration value. enabledSubstate *************** :IDL_Type: long :Units: unitless :Count: 1 **Description**: Substate in ENABLED mode. An EnabledSubstate enumeration value. applicationStatus ***************** :IDL_Type: long :Units: unitless :Count: 1 **Description**: Application state. A bitmask of ApplicationStatus enumeration values. connected ~~~~~~~~~ **Description**: State of TCP/IP connection to the low level controller. :Subsystem: Rotator :EFDB_Topic: Rotator_logevent_connected command ******* :IDL_Type: boolean :Units: unitless :Count: 1 **Description**: Is the command socket connected (true=yes, false=no)? telemetry ********* :IDL_Type: boolean :Units: unitless :Count: 1 **Description**: Is the telemetry/config socket connected (true=yes, false=no)? interlock ~~~~~~~~~ **Description**: Rotator interlock: This event is generated when safety interlock is engaged or disengaged :Subsystem: Rotator :EFDB_Topic: Rotator_logevent_interlock detail ****** :IDL_Type: string :IDL_Size: 256 :Units: unitless :Count: 1 **Description**: detail target ~~~~~~ **Description**: Commanded target position, velocity and time. :Subsystem: Rotator :EFDB_Topic: Rotator_logevent_target position ******** :IDL_Type: double :Units: deg :Count: 1 **Description**: Target position at the time specified by "tai". velocity ******** :IDL_Type: double :Units: deg/second :Count: 1 **Description**: Target velocity at the time specified by "tai". tai *** :IDL_Type: double :Units: second :Count: 1 **Description**: TAI time of the "position" and "velocity" fields. tracking ~~~~~~~~ **Description**: Specify whether the rotator is tracking. :Subsystem: Rotator :EFDB_Topic: Rotator_logevent_tracking tracking ******** :IDL_Type: boolean :Units: unitless :Count: 1 **Description**: Is the rotator tracking? True whenever 3 consecutive 50 ms track commands have been applied. lost **** :IDL_Type: boolean :Units: unitless :Count: 1 **Description**: Did tracking fail? True if system tracks into a limit or we do not receive a new track command within 150ms (three iterations) following the last track command. inPosition ~~~~~~~~~~ **Description**: Event to indicate rotator is in position or not :Subsystem: Rotator :EFDB_Topic: Rotator_logevent_inPosition inPosition ********** :IDL_Type: boolean :Units: unitless :Count: 1 **Description**: Rotator in position configuration ~~~~~~~~~~~~~ **Description**: Rotator configuration. :Subsystem: Rotator :EFDB_Topic: Rotator_logevent_configuration positionAngleUpperLimit *********************** :IDL_Type: double :Units: deg :Count: 1 **Description**: Position difference between the commanded position and the actual position that triggers system to switch between slew mode and track mode. Positive range limit (must be less than +90) velocityLimit ************* :IDL_Type: double :Units: deg/s :Count: 1 **Description**: Velocity limit accelerationLimit ***************** :IDL_Type: double :Units: deg/s2 :Count: 1 **Description**: Acceleration limit positionErrorThreshold ********************** :IDL_Type: double :Units: deg :Count: 1 **Description**: Position error threshold positionAngleLowerLimit *********************** :IDL_Type: double :Units: deg :Count: 1 **Description**: Position difference between the commanded position and the actual position that triggers system to switch between slew mode and track mode. Negative range limit (must be greater than -90) followingErrorThreshold *********************** :IDL_Type: double :Units: deg :Count: 1 **Description**: Deviation between commanded position and actual rotator position that triggers following error event/fault trackingSuccessPositionThreshold ******************************** :IDL_Type: double :Units: deg :Count: 1 **Description**: RMS deviation over 150ms interval between position command and actual rotator position for triggering tracking and tracklost events trackingLostTimeout ******************* :IDL_Type: double :Units: s :Count: 1 **Description**: Duration between receiving slewing and tracking commands over DDS before tracklost event/fault is declared commandableByDDS ~~~~~~~~~~~~~~~~ **Description**: Can the CSC can control the rotator? :Subsystem: Rotator :EFDB_Topic: Rotator_logevent_commandableByDDS state ***** :IDL_Type: boolean :Units: unitless :Count: 1 **Description**: If true the CSC can control the rotator; else the Engineering User Interface has control. Telemetry --------- Application ~~~~~~~~~~~ **Description**: Commanded and actual rotator position. Note: this will be renamed to "application" once we can update the camera cable wrap system. :Subsystem: Rotator :EFDB_Topic: Rotator_Application Demand ****** :IDL_Type: double :Units: deg :Count: 1 **Description**: Commanded rotator position. Position ******** :IDL_Type: double :Units: deg :Count: 1 **Description**: Actual rotator position. Error ***** :IDL_Type: double :Units: deg :Count: 1 **Description**: Rotator following error. electrical ~~~~~~~~~~ :Subsystem: Rotator :EFDB_Topic: Rotator_electrical copleyStatusWordDrive ********************* :IDL_Type: unsigned short :Units: unitless :Count: 2 **Description**: Copley drive status word. copleyLatchingFaultStatus ************************* :IDL_Type: unsigned short :Units: unitless :Count: 2 **Description**: Copley latching fault status register. motors ~~~~~~ **Description**: Encoder readings from each rotator motor :Subsystem: Rotator :EFDB_Topic: Rotator_motors calibrated ********** :IDL_Type: double :Units: deg :Count: 2 **Description**: Encoder readings scaled to degrees of motion of the rotator. raw *** :IDL_Type: double :Units: unitless :Count: 2 **Description**: Encoder readings in raw counts.