# Check the Possibility to Bypass the Linear Encoder Fault in Rotator Controller

XMLWordPrintable

#### Details

• Type: Story
• Status: Done
• Resolution: Done
• Fix Version/s: None
• Component/s:
• Labels:
• Story Points:
0
• Sprint:
TSSW Sprint - Nov 07 - Nov 21
• Team:
Telescope and Site
• Urgent?:
No

#### Description

Check the possibility to bypass the linear encoder fault in rotator controller. This is related to FRACAS-130. The log file is 2022_11_17_22_48_04.log

#### Attachments

1. 2022_11_17_22_48_04.log
3.01 MB
2. data_rotator.mat
3.54 MB
3. feedbackError.png
57 kB
4. linearEncoder1_10192022.jpg
61 kB
5. LinearEncoder1Fault.jpg
65 kB
6. linearEncoderFault.jpg
96 kB
7. motorEncoder1.jpg
61 kB
8. stickyEventStatus.png
61 kB

#### Activity

Hide
Te-Wei Tsai added a comment - - edited

Reformat the data to mat file for the analysis: data_rotator.mat

Linear Encoder Fault:

Linear Encode 1 Value:

We can see the significant fluctuation. This happens for the linear encoder 2 as well.

Compared with this, the motor encoder 1 and 2 looks smooth:

Compared with the above data, I have a data at 10/19/2022 (DM-35339) that shows the linear encoder data should be smooth:

Show
Te-Wei Tsai added a comment - - edited Reformat the data to mat file for the analysis: data_rotator.mat Linear Encoder Fault: Linear Encode 1 Value: We can see the significant fluctuation. This happens for the linear encoder 2 as well. Compared with this, the motor encoder 1 and 2 looks smooth: Compared with the above data, I have a data at 10/19/2022 ( DM-35339 ) that shows the linear encoder data should be smooth:
Hide
Te-Wei Tsai added a comment - - edited

The code to check the linear encoder fault is:

 void actuator_check_linear_encoder_fault(actuator_t *actuator) {    uint32_t linearEncFault = 0;    // This is only reset by the clearError command from GUI or DDS  linearEncFault |= (drive_get_copley_status(actuator->drive[1], 0) & 0x20);  linearEncFault |= (drive_get_copley_status(actuator->drive[1], 1) & 0x20);  if (linearEncFault) {  gLinearEncFault = 1;  } } 

Copley drive status reads the following memory object:

The 0x20 means the bit 5 here:

Show
Te-Wei Tsai added a comment - - edited The code to check the linear encoder fault is: void actuator_check_linear_encoder_fault(actuator_t *actuator) {   uint32_t linearEncFault = 0;   // This is only reset by the clearError command from GUI or DDS linearEncFault |= (drive_get_copley_status(actuator->drive[1], 0) & 0x20); linearEncFault |= (drive_get_copley_status(actuator->drive[1], 1) & 0x20); if (linearEncFault) { gLinearEncFault = 1; } } Copley drive status reads the following memory object: The 0x20 means the bit 5 here:
Hide
Te-Wei Tsai added a comment - - edited

I think we could bypass the error checking at actuator_update() for the linear encoder fault. We can put this bypass option to the configuration file.

I think it might be dangerous to bypass this because it looks like the reading values of linear encoders are not smooth. The fluctuation of linear encoder values will give the Simulink model wrong idea of trajectory generator for the feedback values (and the result is unpredictable). It is noted that the execution frequency of trajectory generator is 4000 Hz.

Show
Te-Wei Tsai added a comment - - edited I think we could bypass the error checking at actuator_update() for the linear encoder fault. We can put this bypass option to the configuration file. I think it might be dangerous to bypass this because it looks like the reading values of linear encoders are not smooth. The fluctuation of linear encoder values will give the Simulink model wrong idea of trajectory generator for the feedback values (and the result is unpredictable). It is noted that the execution frequency of trajectory generator is 4000 Hz.
Hide
Te-Wei Tsai added a comment -

Please help to review this ticket based on the data analysis in the comment. If you want me to implement the code to bypass the error checking, please issue me another ticket instead. But you could see I would not recommend to bypass this as I explained in the comment. Thanks!

Show
Te-Wei Tsai added a comment - Please help to review this ticket based on the data analysis in the comment. If you want me to implement the code to bypass the error checking, please issue me another ticket instead. But you could see I would not recommend to bypass this as I explained in the comment. Thanks!
Hide
Bruno Quint added a comment -

Hi Te-Wei, thank you very much for confirming that we can bypass the Linear Encoder Fault.

However, I agree that we should avoid doing so since it can be dangerous. Let's leave the system as it is now and find out a better solution for the FRACAS-130 ticket.

Ticket approved!

Show
Bruno Quint added a comment - Hi Te-Wei, thank you very much for confirming that we can bypass the Linear Encoder Fault. However, I agree that we should avoid doing so since it can be dangerous. Let's leave the system as it is now and find out a better solution for the FRACAS-130 ticket.  Ticket approved!

#### People

Assignee:
Te-Wei Tsai
Reporter:
Te-Wei Tsai
Reviewers:
Bruno Quint
Watchers:
Bruno Quint, Felipe Daruich, Te-Wei Tsai
0 Vote for this issue
Watchers:
3 Start watching this issue

#### Dates

Created:
Updated:
Resolved:

#### Jenkins

No builds found.