Primary Mirror Cell
digraph G {
rankdir=LR
node[shape=box,style=filled]
subgraph cluster_tcs {
label="tcs1, tcs2"
TCS[fillcolor=gray]
PMC[fillcolor=lightblue]
}
subgraph cluster_VX {
label="VxWorks"
"VxWorks PMC" [fillcolor=gold]
}
subgraph cluster_HW {
style=invis
node[fillcolor=lightyellow]
Hardpoints
Accuators[shape=box3d]
}
TCS->PMC
PMC->"VxWorks PMC"
"VxWorks PMC"->Hardpoints
"VxWorks PMC"->Accuators[color="black:invis:black:invis:black"]
}
The Primary Mirror Cell subsystem is responsible for the control of the primary mirror position and figure. It sends high-level commands to a VxWorks based real-time control program which provides all hardware related control activities. These include control of all air pressures, calculating and sending forces to the mirror support actuators based on six PID servo loops for forces and moments, calculating and sending positions to the hardpoints, monitoring all forces, positions, and temperatures, and performing mirror support force safety checks. An operator interface (GUI) is provided that allows the operator complete control over all facets of the VxWorks program, as well as all the higher-level operations.
The mirror will not raise if two actuators are disabled next to each other, or if more than 5 actuators are bad/disabled. To determine where an actuator is in relation to another, consult the map.
PMC can auto-disable bad actuators.
PMC documentation includes
- VxWorks Software wiki page
- T481s00041 PMC Software Reference Manual
- T481s00042 PMC Software user's Manual
- T481s00043 PMC Actuator Control Board Firmware Reference Manual
- T481s00044 PMC Hardpoint Control Board Firmware Reference Manual
Bump Testing
Bump test can only be executed if the mirror is down. The entire cell can be bump tested, or a single air loop, or a single actuator. When a single actuator is being replaced, it's better to bump only that actuator.
There's a long history of how and why bump tests were done. Earlier telescopes always did a bump test of the entire cell on every raise. That takes a long time, and our actuators are way more reliable than the earlier designs. So a long time ago the code was modified to stop the mandatory bump test every raise. However, the test at raise time that checks whether any actuators failed their last bump test was not removed. So
it's necessary to not have any outstanding failed bump results when trying to raise the mirror.
Another problem is some of the status messages do not appear as events, but show up in the single line message box on the main GUI form (like "invalid disabled actuator set"). All things some enthusiastic person could fix.
The only way to clear old bump results is to restart the VxWorks program or reboot the computer (open telnet to
VxWorks (from PMCGUI), issue "reboot" command).
The
PMC VxWorks crates boot using FTP from web.mountain from /lbt/vxworks. Look on webserver settings/SELinux settings if it cannot boot.
Task list captured 20190821:
Trying 192.168.18.100...
Connected to 192.168.18.100.
Escape character is '^]'.
-> i
NAME ENTRY TID PRI STATUS PC SP ERRNO DELAY
---------- ------------ -------- --- ---------- -------- -------- ------- -----
tExcTask excTask 1dffe150 0 PEND 209264 1dffe030 3006b 0
tLogTask logTask 1dffb5b0 0 PEND 209264 1dffb4a0 0 0
tShell shell 1df60ea0 1 READY 202afc 1df60a60 8800dd 0
tWdbTask wdbTask 1df7e950 3 PEND 1fd89c 1df7e820 0 0
tNetTask netTask 1dfbd3c0 50 PEND 1fd89c 1dfbd2d0 0 0
tPortmapd portmapd 1df846e0 54 PEND 1fd89c 1df84480 3d0002 0
tTelnetd telnetd 1df81b60 55 PEND 1fd89c 1df819f0 0 0
tTelnetOut_telnetOutTas 1df4bbf0 55 READY 1fd89c 1df4b8d0 0 0
tTelnetIn_1telnetInTask 1df49a90 55 READY 1fd6e8 1df49710 0 0
tc_adc adc_task 1df52670 131 READY 1fd89c 1df525a0 0 0
tc_outer outer_task 1df514b0 132 PEND 1fd89c 1df513b0 22 0
tc_diag diag_task 1df502f0 133 PEND 1fd89c 1df50220 0 0
tc_chaser chaser_task 1df4f130 134 PEND 1fd89c 1df4f060 0 0
tc_fast fast_task 1df4df70 135 PEND 1fd89c 1df4dea0 0 0
tc_mon mon_task 1df4cdb0 136 PEND 1fd89c 1df4cc80 0 0
tc_net0 net0_task 1df53830 137 PEND 1fd89c 1df535e0 3d0002 0
tc_jobber jobber_task 1df54220 138 PEND 1fd89c 1df54150 0 0
tc_timeout timeout_task 1df75c80 139 PEND 1fd89c 1df75bb0 0 0
tc_act_pic 1dd1fc34 1fffd3d0 140 PEND 1fe0c8 1fffd250 0 0
tc_act_pic 1dd1fc34 1fffc1b0 140 PEND 1fe0c8 1fffc030 0 0
tc_act_pic 1dd1fc34 1df5be60 140 PEND 1fe0c8 1df5bce0 0 0
tc_act_pic 1dd1fc34 1df5aca0 140 PEND 1fe0c8 1df5ab20 0 0
tc_act_pic 1dd1fc34 1df59ae0 140 PEND 1fe0c8 1df59960 0 0
tc_act_pic 1dd1fc34 1df58920 140 PEND 1fe0c8 1df587a0 0 0
tc_act_pic 1dd1fc34 1df57760 140 PEND 1fe0c8 1df575e0 0 0
tc_act_pic 1dd1fc34 1df565a0 140 PEND 1fe0c8 1df56420 0 0
tc_hp_pic 1dd61cb4 1df553e0 140 PEND 1fe0c8 1df55270 0 0
tPhyTask 107660 1dfb9e20 150 PEND 1fd89c 1dfb9d50 0 0
value = 0 = 0x0
->