Details
-
Type:
Story
-
Status: Done
-
Resolution: Done
-
Fix Version/s: None
-
Component/s: ts_main_telescope
-
Labels:
-
Story Points:4
-
Epic Link:
-
Sprint:TSSW Sprint - Jun 21 - Jul 05, TSSW Sprint - Jul 05 - Jul 19
-
Team:Telescope and Site
-
Urgent?:No
Description
If there is a fault condition such as an e-stop pressed then the clearError command oscillates between the "FAULT" and "STANDBY" state forever. I think it should got to FAULT and stay in FAULT.
I observed this in today's testing. I believe the sequence was:
- Use the EUI to put the controller into DDS mode
- Use the hexapod commander to issue "enterControl" to the CSC
- The state goes to FAULT
- Use the hexapod commander to issue "clearError" to the CSC
- The state oscillates between FAULT and STANDBY. I see no sign that it will ever stop doing this.
That's the core of the problem above. But we continued as follows:
- Use the hexapod commander to issue "exitControl" to the CSC. The oscillation stopped.
- Use the EUI to issue "clearError". The oscillation resumed (as reported to the commander).
Attachments
Issue Links
- relates to
-
DM-29931 The camera hexapod starts to move when DDS control is switched on.
- To Do
-
DM-28695 The MTHexapod is mis-handling configuration changes
- Invalid
-
DM-29975 Please make the STOP command more reliable in the hexapod
- To Do
-
DM-30814 Have the Rotator Send Exactly the Same Telemetry and Config Data to the EUI and CSC
- Done
-
DM-29720 Support the Command Queue in Low-Level Hexapod Controller
- Invalid
Checked the starting point of oscillation of states:
Jul 12 16:10:46 localhost systemd: Starting Stop Read-Ahead Data Collection...
Jul 12 16:10:46 localhost systemd: Started Stop Read-Ahead Data Collection.
Jul 12 16:10:52 localhost journal: LSST Wrapper: new mode= 3.000000
Jul 12 16:10:52 localhost journal: LSST Wrapper: max time in callback = 367132
Jul 12 16:10:52 localhost journal: LSST Wrapper: max time in callback = 399842
Jul 12 16:10:52 localhost journal: LSST Wrapper: max time in callback = 429827
Jul 12 16:10:52 localhost journal: LSST Wrapper: max time in callback = 431242
Jul 12 16:10:54 localhost journal: LSST Wrapper: max time in callback = 446342
Jul 12 16:11:03 localhost journal: LSST Wrapper: max time in callback = 447674
Jul 12 16:11:04 localhost journal: LSST Wrapper: max time in callback = 462521
Jul 12 16:11:32 localhost journal: LSST Wrapper: processed State Cmd: 0x5555, 0x8000, counter=2, parameter1 = 7.000000.
Jul 12 16:11:32 localhost journal: LSST Wrapper: new mode= 0.000000
Jul 12 16:11:32 localhost journal: LSST Wrapper: max time in callback = 498838
Jul 12 16:11:32 localhost journal: LSST Wrapper: new mode= 4.000000
Jul 12 16:11:46 localhost journal: LSST Wrapper: max time in callback = 506773
Jul 12 16:13:56 localhost journal: LSST Wrapper: max time in callback = 592167
Jul 12 16:17:46 localhost journal: LSST Wrapper: Clearing drive faults.
Jul 12 16:17:46 localhost journal: LSST Wrapper: processed State Cmd: 0x5555, 0x8000, counter=3, parameter1 = 6.000000.
Jul 12 16:17:46 localhost journal: LSST Wrapper: STO interlock open
Jul 12 16:17:46 localhost journal: LSST Wrapper: new mode= 0.000000
Jul 12 16:17:46 localhost journal: LSST Wrapper: new mode= 4.000000
Jul 12 16:17:46 localhost journal: LSST Wrapper: new mode= 0.000000
Jul 12 16:17:46 localhost journal: LSST Wrapper: new mode= 4.000000
Jul 12 16:17:46 localhost journal: LSST Wrapper: new mode= 0.000000
Jul 12 16:17:46 localhost journal: LSST Wrapper: new mode= 4.000000
This means the hexapod was in the OfflineState (new mode = 3) first, received the state transition command (0x8000) of EnterControl ( parameter1 = 7), and transitioned to the StandbyState (new mode = 0). After this, there was the interlock error and transitioned to the FaultState (new mode = 4). Then, the ClearError command (parameter1 = 6) is issued. After this, the system began to oscillate between the new modes of StandbyState (0) and FaultState (4).
This behavior is expected as long as the fault is persistent and the ClearError is triggered based on the Simulink state machine (see the transition between the StandbyState and FaultState):