M1M3 Support System
Loading...
Searching...
No Matches
LSST::M1M3::SS::SafetyController Class Reference

Controls mirror safety. More...

#include <SafetyController.h>

Public Member Functions

 SafetyController (SafetyControllerSettings *safetyControllerSettings)
 
void clearErrorCode ()
 
void airControllerNotifyCommandOutputMismatch (bool conditionFlag, bool commanded, bool sensed)
 
void airControllerNotifyCommandSensorMismatch (bool conditionFlag)
 
void displacementNotifySensorReportsInvalidCommand (bool conditionFlag)
 
void displacementNotifySensorReportsCommunicationTimeoutError (bool conditionFlag)
 
void displacementNotifySensorReportsDataLengthError (bool conditionFlag)
 
void displacementNotifySensorReportsNumberOfParametersError (bool conditionFlag)
 
void displacementNotifySensorReportsParameterError (bool conditionFlag)
 
void displacementNotifySensorReportsCommunicationError (bool conditionFlag)
 
void displacementNotifySensorReportsIDNumberError (bool conditionFlag)
 
void displacementNotifySensorReportsExpansionLineError (bool conditionFlag)
 
void displacementNotifySensorReportsWriteControlError (bool conditionFlag)
 
void displacementNotifyResponseTimeoutError (bool conditionFlag)
 
void displacementNotifyInvalidLength (bool conditionFlag)
 
void displacementNotifyInvalidResponse (bool conditionFlag)
 
void displacementNotifyUnknownCommand (bool conditionFlag)
 
void displacementNotifyUnknownProblem (bool conditionFlag)
 
void inclinometerNotifyResponseTimeout (bool conditionFlag)
 
void inclinometerNotifyInvalidCRC (bool conditionFlag)
 
void inclinometerNotifyUnknownAddress (bool conditionFlag)
 
void inclinometerNotifyUnknownFunction (bool conditionFlag)
 
void inclinometerNotifyInvalidLength (bool conditionFlag)
 
void inclinometerNotifySensorReportsIllegalDataAddress (bool conditionFlag)
 
void inclinometerNotifySensorReportsIllegalFunction (bool conditionFlag)
 
void inclinometerNotifyUnknownProblem (bool conditionFlag)
 
void interlockNotifyHeartbeatStateOutputMismatch (bool conditionFlag)
 
void interlockNotifyAuxPowerNetworksOff (bool conditionFlag)
 
void interlockNotifyThermalEquipmentOff (bool conditionFlag)
 
void interlockNotifyAirSupplyOff (bool conditionFlag)
 
void interlockNotifyCabinetDoorOpen (bool conditionFlag)
 
void interlockNotifyTMAMotionStop (bool conditionFlag)
 
void interlockNotifyGISHeartbeatLost (bool conditionFlag)
 
void forceControllerNotifySafetyLimit (bool conditionFlag)
 
void forceControllerNotifyXMomentLimit (bool conditionFlag, std::string failed)
 
void forceControllerNotifyYMomentLimit (bool conditionFlag, std::string failed)
 
void forceControllerNotifyZMomentLimit (bool conditionFlag, std::string failed)
 
void forceControllerNotifyNearNeighborCheck (bool conditionFlag, std::string failed, float nominalZ, float nominalZWarning)
 
void forceControllerNotifyMagnitudeLimit (bool conditionFlag, float globalForce)
 
void forceControllerNotifyFarNeighborCheck (bool conditionFlag, std::string failed)
 
void forceControllerNotifyElevationForceClipping (bool conditionFlag)
 
void forceControllerNotifyAzimuthForceClipping (bool conditionFlag)
 
void forceControllerNotifyThermalForceClipping (bool conditionFlag)
 
void forceControllerNotifyBalanceForceClipping (bool conditionFlag)
 
void forceControllerNotifyAccelerationForceClipping (bool conditionFlag)
 
void forceControllerNotifyActiveOpticNetForceCheck (bool conditionFlag)
 
void forceControllerNotifyActiveOpticForceClipping (bool conditionFlag)
 
void forceControllerNotifyStaticForceClipping (bool conditionFlag)
 
void forceControllerNotifyOffsetForceClipping (bool conditionFlag)
 
void forceControllerNotifyVelocityForceClipping (bool conditionFlag)
 
void forceControllerNotifyForceClipping (bool conditionFlag)
 
void forceControllerNotifyMeasuredXForceLimit (int actuatorId, float xForce, bool conditionFlag)
 
void forceControllerNotifyMeasuredYForceLimit (int actuatorId, float yForce, bool conditionFlag)
 
void forceControllerNotifyMeasuredZForceLimit (int actuatorId, float zForce, bool conditionFlag)
 
void positionControllerNotifyLimitLow (int hp, bool conditionFlag)
 
void positionControllerNotifyLimitHigh (int hp, bool conditionFlag)
 
void positionControllerNotifyUnstable (int hp, int32_t unstableCount, int32_t deltaEncoder)
 
void positionControllerHighTension (int hp, float weightSupportedPercent)
 
void cellLightNotifyOutputMismatch (bool conditionFlag, bool commanded, bool sensed)
 
void cellLightNotifySensorMismatch (bool conditionFlag, bool commanded, bool sensed)
 
void powerControllerNotifyPowerNetworkAOutputMismatch (bool conditionFlag)
 
void powerControllerNotifyPowerNetworkBOutputMismatch (bool conditionFlag)
 
void powerControllerNotifyPowerNetworkCOutputMismatch (bool conditionFlag)
 
void powerControllerNotifyPowerNetworkDOutputMismatch (bool conditionFlag)
 
void powerControllerNotifyAuxPowerNetworkAOutputMismatch (bool conditionFlag)
 
void powerControllerNotifyAuxPowerNetworkBOutputMismatch (bool conditionFlag)
 
void powerControllerNotifyAuxPowerNetworkCOutputMismatch (bool conditionFlag)
 
void powerControllerNotifyAuxPowerNetworkDOutputMismatch (bool conditionFlag)
 
void raiseOperationTimeout (bool conditionFlag)
 
void lowerOperationTimeout (bool conditionFlag)
 
void ilcCommunicationTimeout (bool conditionFlag)
 
void modbusIRQTimeout (uint32_t timeout, uint32_t irqs)
 
void forceActuatorFollowingError (int actuatorId, int actuatorDataIndex, bool countingWarning, bool immediateFault)
 
void hardpointActuatorBreakawayFault (int actuatorDataIndex, bool conditionFlag)
 
void hardpointActuatorMeasuredForce (int actuatorDataIndex, bool warningFlag, bool faultFlag)
 Triggers hardpoint measured force warning and faults.
 
void hardpointActuatorAirPressure (int actuatorDataIndex, int conditionFlag, float airPressure)
 Checks hardpoint breakway air pressure.
 
void hardpointActuatorFollowingError (int hp, double fePercent)
 
void tmaAzimuthTimeout (double currentTimeout)
 
void tmaElevationTimeout (double currentTimeout)
 
void tmaInclinometerDeviation (double currentDeviation)
 
void userPanic ()
 
States::Type checkSafety (States::Type preferredNextState)
 Check if mirror safety rules are fulfilled.
 

Detailed Description

Controls mirror safety.

Sets _errorCodeData->errorCode to the first detected fault. checkSafety() method then sends mirror to fault state if any fault is detected.

This is a layer above computational layer. Its either check some safety rules, or is signaled safety rules violation. If mirror safety rules are violated, checkSafety() method sends the mirror to a fault state.

Member Function Documentation

◆ checkSafety()

States::Type SafetyController::checkSafety ( States::Type preferredNextState)

Check if mirror safety rules are fulfilled.

When safety rules are not fulfilled, returns States::LoweringFaultState.

Parameters
preferredNextStatereturns this state if mirror safety is not violated
Returns
preferredNextState if mirror safety is not violated, States::LoweringFaultState otherwise.
Here is the call graph for this function:

◆ hardpointActuatorAirPressure()

void SafetyController::hardpointActuatorAirPressure ( int actuatorDataIndex,
int conditionFlag,
float airPressure )

Checks hardpoint breakway air pressure.

Triggers fault if pressure is outside of bounds for more than SafetyControllerSettings/ILC.AirPressureCountThreshold.

Parameters
actuatorDataIndexHP actuator index (0-5)
conditionFlag-1 if bellow low, 1 if above high, 0 for in bounds
airPressurecurrent air pressure

◆ hardpointActuatorMeasuredForce()

void SafetyController::hardpointActuatorMeasuredForce ( int actuatorDataIndex,
bool warningFlag,
bool faultFlag )

Triggers hardpoint measured force warning and faults.

Parameters
actuatorDataIndexhardpoint actuator index (0 based)
warningFlagif true, warning was detected
faultFlagif true, fault was detected

The documentation for this class was generated from the following files: