M1M3 Support System
Loading...
Searching...
No Matches
FaultCodes.h
1/*
2 * This file is part of LSST M1M3 support system package.
3 *
4 * Developed for the Vera C. Rubin Telescope and Site System.
5 * This product includes software developed by the LSST Project
6 * (https://www.lsst.org).
7 * See the COPYRIGHT file at the top-level directory of this distribution
8 * for details of code ownership.
9 *
10 * This program is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
24#ifndef FAULTCODES_H_
25#define FAULTCODES_H_
26
27#include <cstdint>
28
29constexpr int32_t _MASK_AIR = 0x1 << 16;
30constexpr int32_t _MASK_DISPLACEMENT = 0x2 << 16;
31constexpr int32_t _MASK_INCLINOMETER = 0x3 << 16;
32constexpr int32_t _MASK_INTERLOCK = 0x4 << 16;
33constexpr int32_t _MASK_FORCE_CONTROLLER = 0x5 << 16;
34constexpr int32_t _MASK_CELL_LIGHT = 0x6 << 16;
35constexpr int32_t _MASK_POWER_CONTROLLER = 0x7 << 16;
36constexpr int32_t _MASK_TIMEOUTS = 0x8 << 16;
37constexpr int32_t _MASK_FORCE_ACTUATOR = 0x9 << 16;
38constexpr int32_t _MASK_HARDPOINT = 0xA << 16;
39constexpr int32_t _MASK_TMA = 0xB << 16;
40constexpr int32_t _MASK_USER = 0xC << 16;
41
46struct FaultCodes {
47 enum Type {
48 NoFault = 0x00000000,
49 AirControllerCommandOutputMismatch = _MASK_AIR | 0x01,
50 AirControllerCommandSensorMismatch = _MASK_AIR | 0x02,
51 DisplacementSensorReportsInvalidCommand = _MASK_DISPLACEMENT | 0x01,
52 DisplacementSensorReportsCommunicationTimeoutError = _MASK_DISPLACEMENT | 0x02,
53 DisplacementSensorReportsDataLengthError = _MASK_DISPLACEMENT | 0x03,
54 DisplacementSensorReportsNumberOfParametersError = _MASK_DISPLACEMENT | 0x04,
55 DisplacementSensorReportsParameterError = _MASK_DISPLACEMENT | 0x05,
56 DisplacementSensorReportsCommunicationError = _MASK_DISPLACEMENT | 0x05,
57 DisplacementSensorReportsIDNumberError = _MASK_DISPLACEMENT | 0x07,
58 DisplacementSensorReportsExpansionLineError = _MASK_DISPLACEMENT | 0x08,
59 DisplacementSensorReportsWriteControlError = _MASK_DISPLACEMENT | 0x09,
60 DisplacementResponseTimeoutError = _MASK_DISPLACEMENT | 0x0A,
61 DisplacementInvalidLength = _MASK_DISPLACEMENT | 0x0B,
62 DisplacementUnknownCommand = _MASK_DISPLACEMENT | 0x0C,
63 DisplacementUnknownProblem = _MASK_DISPLACEMENT | 0x0D,
64 DisplacementInvalidResponse = _MASK_DISPLACEMENT | 0x0E,
65 InclinometerResponseTimeout = _MASK_INCLINOMETER | 0x01,
66 InclinometerInvalidCRC = _MASK_INCLINOMETER | 0x02,
67 InclinometerUnknownAddress = _MASK_INCLINOMETER | 0x03,
68 InclinometerUnknownFunction = _MASK_INCLINOMETER | 0x04,
69 InclinometerInvalidLength = _MASK_INCLINOMETER | 0x05,
70 InclinometerSensorReportsIllegalDataAddress = _MASK_INCLINOMETER | 0x06,
71 InclinometerSensorReportsIllegalFunction = _MASK_INCLINOMETER | 0x07,
72 InclinometerUnknownProblem = _MASK_INCLINOMETER | 0x08,
73 InterlockHeartbeatStateOutputMismatch = _MASK_INTERLOCK | 0x01,
74 InterlockCriticalFaultStateOutputMismatch = _MASK_INTERLOCK | 0x02,
75 InterlockMirrorLoweringRaisingStateOutputMismatch = _MASK_INTERLOCK | 0x03,
76 InterlockMirrorParkedStateOutputMismatch = _MASK_INTERLOCK | 0x04,
77 InterlockPowerNetworksOff = _MASK_INTERLOCK | 0x05,
78 InterlockThermalEquipmentOff = _MASK_INTERLOCK | 0x06,
79 InterlockLaserTrackerOff = _MASK_INTERLOCK | 0x07,
80 InterlockAirSupplyOff = _MASK_INTERLOCK | 0x08,
81 InterlockGISEarthquake = _MASK_INTERLOCK | 0x09,
82 InterlockGISEStop = _MASK_INTERLOCK | 0x0A,
83 InterlockTMAMotionStop = _MASK_INTERLOCK | 0x0B,
84 InterlockGISHeartbeatLost = _MASK_INTERLOCK | 0x0C,
85 ForceControllerSafetyLimit = _MASK_FORCE_CONTROLLER | 0x01,
86 ForceControllerXMomentLimit = _MASK_FORCE_CONTROLLER | 0x02,
87 ForceControllerYMomentLimit = _MASK_FORCE_CONTROLLER | 0x03,
88 ForceControllerZMomentLimit = _MASK_FORCE_CONTROLLER | 0x04,
89 ForceControllerNearNeighborCheck = _MASK_FORCE_CONTROLLER | 0x05,
90 ForceControllerMagnitudeLimit = _MASK_FORCE_CONTROLLER | 0x06,
91 ForceControllerFarNeighborCheck = _MASK_FORCE_CONTROLLER | 0x07,
92 ForceControllerElevationForceClipping = _MASK_FORCE_CONTROLLER | 0x08,
93 ForceControllerAzimuthForceClipping = _MASK_FORCE_CONTROLLER | 0x09,
94 ForceControllerThermalForceClipping = _MASK_FORCE_CONTROLLER | 0x0A,
95 ForceControllerBalanceForceClipping = _MASK_FORCE_CONTROLLER | 0x0B,
96 ForceControllerAccelerationForceClipping = _MASK_FORCE_CONTROLLER | 0x0C,
97 ForceControllerActiveOpticNetForceCheck = _MASK_FORCE_CONTROLLER | 0x0D,
98 ForceControllerActiveOpticForceClipping = _MASK_FORCE_CONTROLLER | 0x0E,
99 ForceControllerStaticForceClipping = _MASK_FORCE_CONTROLLER | 0x0F,
100 ForceControllerOffsetForceClipping = _MASK_FORCE_CONTROLLER | 0x10,
101 ForceControllerVelocityForceClipping = _MASK_FORCE_CONTROLLER | 0x11,
102 ForceControllerForceClipping = _MASK_FORCE_CONTROLLER | 0x12,
103 ForceControllerMeasuredXForceLimit = _MASK_FORCE_CONTROLLER | 0x13,
104 ForceControllerMeasuredYForceLimit = _MASK_FORCE_CONTROLLER | 0x14,
105 ForceControllerMeasuredZForceLimit = _MASK_FORCE_CONTROLLER | 0x15,
106 CellLightOutputMismatch = _MASK_CELL_LIGHT | 0x01,
107 CellLightSensorMismatch = _MASK_CELL_LIGHT | 0x02,
108 PowerControllerPowerNetworkAOutputMismatch = _MASK_POWER_CONTROLLER | 0x01,
109 PowerControllerPowerNetworkBOutputMismatch = _MASK_POWER_CONTROLLER | 0x02,
110 PowerControllerPowerNetworkCOutputMismatch = _MASK_POWER_CONTROLLER | 0x03,
111 PowerControllerPowerNetworkDOutputMismatch = _MASK_POWER_CONTROLLER | 0x04,
112 PowerControllerAuxPowerNetworkAOutputMismatch = _MASK_POWER_CONTROLLER | 0x05,
113 PowerControllerAuxPowerNetworkBOutputMismatch = _MASK_POWER_CONTROLLER | 0x06,
114 PowerControllerAuxPowerNetworkCOutputMismatch = _MASK_POWER_CONTROLLER | 0x07,
115 PowerControllerAuxPowerNetworkDOutputMismatch = _MASK_POWER_CONTROLLER | 0x08,
116 RaiseOperationTimeout = _MASK_TIMEOUTS | 0x01,
117 LowerOperationTimeout = _MASK_TIMEOUTS | 0x02,
118 ILCCommunicationTimeout = _MASK_TIMEOUTS | 0x03,
119 ModbusIRQTimeout = _MASK_TIMEOUTS | 0x04,
120 ForceActuatorFollowingErrorCounting = _MASK_FORCE_ACTUATOR | 0x01,
121 ForceActuatorFollowingErrorImmediate = _MASK_FORCE_ACTUATOR | 0x02,
122 HardpointActuator = _MASK_HARDPOINT | 0x01,
123 HardpointActuatorLoadCellError = _MASK_HARDPOINT | 0x02,
124 HardpointActuatorMeasuredForceError = _MASK_HARDPOINT | 0x03,
125 HardpointHighTension = _MASK_HARDPOINT | 0x04,
126
133 HardpointActuatorAirPressureHigh = _MASK_HARDPOINT | 0x04,
134
140 HardpointActuatorAirPressureLow = _MASK_HARDPOINT | 0x05,
141
148 HardpointActuatorAirPressureOutside = _MASK_HARDPOINT | 0x06,
149
154 HardpointActuatorLimitLowError = _MASK_HARDPOINT | 0x07,
155
160 HardpointActuatorLimitHighError = _MASK_HARDPOINT | 0x08,
161
166 HardpointActuatorFollowingError = _MASK_HARDPOINT | 0x09,
167
172 HardpointUnstableError = _MASK_HARDPOINT | 0x0A,
173
174 TMAAzimuthTimeout = _MASK_TMA | 0x01,
175 TMAElevationTimeout = _MASK_TMA | 0x02,
176 TMAInclinometerDeviation = _MASK_TMA | 0x04,
177
178 UserPanic = _MASK_USER | 0x01,
179 };
180};
181
182#endif /* FAULTCODES_H_ */
Fault codes.
Definition FaultCodes.h:46
Type
Definition FaultCodes.h:47
@ HardpointActuatorFollowingError
Triggered when encoder counts don't match queued steps.
Definition FaultCodes.h:166
@ HardpointActuatorAirPressureOutside
Triggered when pressure as measured inside hardpoint breakway mechanism is outside of HardpointActuat...
Definition FaultCodes.h:148
@ HardpointUnstableError
Triggered when hardpoint cannot reach given encoder position during FinePositioning.
Definition FaultCodes.h:172
@ HardpointActuatorAirPressureHigh
Triggered when pressure as measured inside hardpoint breakway mechanism is above of HardpointActuator...
Definition FaultCodes.h:133
@ HardpointActuatorAirPressureLow
Triggered when pressure as measured inside hardpoint breakway mechanism is below of HardpointActuator...
Definition FaultCodes.h:140
@ HardpointActuatorLimitLowError
Triggered when hardpoint actuator is being commanded to move below low limit switch.
Definition FaultCodes.h:154
@ HardpointActuatorLimitHighError
Triggered when hardpoint actuator is being commanded to move above low limit switch.
Definition FaultCodes.h:160