王德清,丁 旭,倫寶利,王傳軍,范玉峰,和壽圣,辛玉新,余曉光
(1. 中國科學院云南天文臺,云南 昆明 650011;2. 中國科學院大學,北京 100049;3. 中國科學院天體結(jié)構(gòu)與演化重點實驗室,云南 昆明 650011)
天文圓頂應(yīng)滿足在光學望遠鏡工作時,能讓天體輻射自由而盡量少畸變地進入接收器,并盡量減小風振動、溫度變化等外界不利因素的影響[1]。傳統(tǒng)圓頂如我國2.16 m望遠鏡圓頂室[2]封閉性較好,但通風性較差,會引起圓頂內(nèi)外的溫差。后來大多數(shù)望遠鏡吸取了前期圓頂建造的經(jīng)驗:如甚大望遠鏡(Very Large Telescope, VLT)在圓頂下部設(shè)置大面積通風口;4.2 m的威廉·赫歇爾望遠鏡(William Herschel Telescope, WHT)增加大面積的百頁窗,可根據(jù)外界風力、風向控制窗口開合與方向;斯隆巡天望遠鏡以及一米紅外太陽望遠鏡[3]的擋阻風板對減小風振起到較好的作用。
麗江2.4 m望遠鏡通過預(yù)留大面積多組側(cè)窗進行熱控制(圖1)。原來設(shè)計的16扇大面積側(cè)窗,需通過人工搖動機械搖柄拉動細鋼絲開關(guān)側(cè)窗,操作平臺較高且費時,有安全隱患,另外細鋼絲易絞合到一起且易斷(圖2(a))?,F(xiàn)階段側(cè)窗要么全開,要么全關(guān),僅依靠人為經(jīng)驗,未考慮降水、云量、風速、濕度等外界氣象因素的影響且沒有氣象預(yù)警[4]。風速對望遠鏡的擾動會影響觀測,通常天文望遠鏡只能在四級風以下正常工作[5]??紤]到上述實際情況,本文開發(fā)了圓頂側(cè)窗的自動化控制系統(tǒng),能夠?qū)崿F(xiàn)自動、多通道控制,并依據(jù)氣象條件智能化控制側(cè)窗的開合。在滿足所有氣象設(shè)定閾值且風速較小的情況下,側(cè)窗全部打開;一旦超過某一氣象閾值,側(cè)窗全部關(guān)閉;滿足閾值且風速較大的情況下,迎風面關(guān)閉,只打開背風面?zhèn)却?,能極大地降低對望遠鏡的擾動。通過精確的自動化控制,系統(tǒng)運行穩(wěn)定可靠,提高了望遠鏡的安全操作性能與觀測效率。
側(cè)窗有多種不同的改造形式,在目前較小改動的情況下,一方面要實現(xiàn)側(cè)窗的自動化控制,另一方面要考慮不影響圓頂整體結(jié)構(gòu)與外觀。曾考慮過不需要改動原側(cè)窗僅用電機驅(qū)動鋼絲的方案,但存在細鋼絲絞合到一起的可能,也考慮過改造為可調(diào)風閥的百葉窗形式,但密封性較差。最后選用依靠固有的圓頂鋼架與龍骨,在圓頂外側(cè)依照圓頂曲率搭建曲面滑動導軌(圖2(b)),側(cè)窗在導軌上向兩側(cè)開合,然后利用電機連接鏈輪驅(qū)動鏈條。
圖1 麗江2.4 m望遠鏡圓頂結(jié)構(gòu)[6]
Fig.1 The structure of dome at Lijiang 2.4m telescope[6]
圖2(a) 原來的側(cè)窗;(b) 改造后的側(cè)窗外觀
Fig.2(a)The old Windows-Blinds; (b) profile of new Windows-Blinds
目前側(cè)窗共有16扇,每個節(jié)點控制兩扇側(cè)窗,分8組控制側(cè)窗的開關(guān),這樣能減少控制網(wǎng)絡(luò)的負荷。麗江2.4 m望遠鏡的超半球圓頂內(nèi)徑達13 m,因此若選用串口線或有線以太網(wǎng)長度至少為20 m,且線纜過多,因此根據(jù)圓頂結(jié)構(gòu)選用無線網(wǎng)絡(luò)進行控制。除一對一控制外,還要解決一對多控制、單獨控制與整體控制的問題。針對現(xiàn)場調(diào)試與維護的問題,除遠程網(wǎng)絡(luò)控制外,還要考慮其他控制通道、網(wǎng)絡(luò)穩(wěn)定性以及掉電等,并能有效根據(jù)電機調(diào)節(jié)步長與速度。因此,側(cè)窗的控制系統(tǒng)架構(gòu)采用基于STM32的嵌入式控制板現(xiàn)場控制、無線網(wǎng)絡(luò)通信的方式,可通過USB轉(zhuǎn)串口或者手柄實現(xiàn)本地調(diào)試與控制。它包括上位機模塊、WiFi模塊、CH340G模塊、手柄控制模塊、主控芯片、電機驅(qū)動模塊和電機模塊,以及外圍輔助電路等幾大模塊。上位機即遠程控制主機,它作為服務(wù)器端發(fā)送命令和接收下位機的狀態(tài)信息,同時在網(wǎng)絡(luò)上調(diào)用氣象與望遠鏡數(shù)據(jù)庫,解析字符串與比較閾值,自動控制圓頂及側(cè)窗的開關(guān),并提供警報便于人工干預(yù),系統(tǒng)架構(gòu)如圖3。
圖3 側(cè)窗自動化控制構(gòu)架圖
Fig.3 The architecture of Side-Windows control system
下位機電路的主控芯片采用基于ARM Cortex-M 內(nèi)核的32位微控制器STM32F103C8T6[7],它有3個串口端,分別采用串口1通過CH340G和計算機通信,串口3和WiFi模塊相連,通過中斷GPIO口和手柄電路相連,通過PWM口、普通GPIO口和電機驅(qū)動模塊相連。WiFi使用ESP8266模塊[注]https://www.espressif.com/zh-hans/products/hardware/esp8266ex/overview,它內(nèi)置了TCP/IP協(xié)議棧,通過串口USART3與STM32通信。如圖4 ESP826模塊有STA,AP,STA+AP 3種模式,本文選用STA模式。ESP8266模塊通過路由器連接到網(wǎng)絡(luò),實現(xiàn)無線網(wǎng)絡(luò)通信。
圖4 ESP8266控制模塊
Fig.4 ESP866 control module
CH340G為USB轉(zhuǎn)串口模塊,通過它將下位機程序燒錄到STM32板卡中。手柄模塊包含手柄電路、RJ11、PC817光耦電路幾部分,起手柄電壓轉(zhuǎn)換與信號隔離的作用,并將控制信號穩(wěn)定地連接到STM32的輸入輸出口。
如圖5,電機驅(qū)動模塊通過DRV8825芯片驅(qū)動兩個步進電機,通過電機步數(shù)調(diào)節(jié)側(cè)窗到位與否。STM32通過PWM口、普通GPIO口和電機驅(qū)動模塊相連。STEP引腳產(chǎn)生脈沖供給驅(qū)動芯片,脈沖由STM32內(nèi)部PWM生成。M0,M1,M2為細分設(shè)置引腳,DRVEN連接至STM32做使能設(shè)置,DIR為驅(qū)動方向控制。電機采用軸徑為8 mm、電流為2.5A的插線式兩相四線57BYGH步進電機,電機走一步是1.8°,一圈為200步,采用全步進方式驅(qū)動,通過調(diào)節(jié)PWM的時鐘頻率與脈沖數(shù)調(diào)節(jié)電機的速度與步長。
圖5 步進電機驅(qū)動DRV8255模塊
Fig.5 The DRV8255 stepper driver
下位機軟件利用STM32庫函數(shù)V3.5來開發(fā)。側(cè)窗控制板的軟件主要包含GPIO、串口、定時器、中斷等基本設(shè)置,WiFi模塊連接、電機驅(qū)動底配置、協(xié)議定義、網(wǎng)絡(luò)通信等控制。
下位機軟件中自定義數(shù)據(jù)幀格式為 “:F*#”,其中 “:F” 表示幀頭; “#” 表示幀尾;“*” 表示幀內(nèi)容。接收到上位機的第1個字符是 “:”,表示接收到有效數(shù)據(jù);最后一個結(jié)束的是 “#”,表示一幀數(shù)據(jù)傳輸完成,等待下一幀數(shù)據(jù)傳輸。解析第3個字符并執(zhí)行相關(guān)指令與內(nèi)部調(diào)用的函數(shù),控制指令如表1。
表1 指令控制集Table 1 The instruction set of Side-Windows control
WiFi設(shè)置界面用于下位機,主要是將服務(wù)器端的IP、端口、路由、密碼這些字符串轉(zhuǎn)換為相關(guān)格式寫入閃存(Flash),利用聯(lián)合體共享內(nèi)存和內(nèi)存長度為其最大成員的內(nèi)存長度這兩個特點,即使斷電也不會丟失這些信息,在聯(lián)合體中包含結(jié)構(gòu)體,結(jié)構(gòu)體中含有WiFi設(shè)置界面的Name,Code,IP 3個變量,通過指針將上位機傳遞到聯(lián)合體,其長度為最大成員長度,然后利用Flash接口函數(shù)寫入。
控制軟件首先對GPIO、時鐘、定時器、中斷、串口引腳與串口通信設(shè)置參數(shù),完成初始化設(shè)置,再對兩個DRV8255引腳進行設(shè)置。完成這些基本設(shè)置后,程序?qū)Υ?、3的布爾類型的數(shù)據(jù)幀標志位bFlagRun,bMoterRun分別設(shè)置初始值為false,然后兩個串口等待數(shù)據(jù)的到來。接收到一幀數(shù)據(jù)時,數(shù)據(jù)幀標志位設(shè)置為true,接著解析數(shù)據(jù)幀內(nèi)容,如果符合自定義指令,則執(zhí)行相應(yīng)操作,如果不符合則直接清除緩存并把標志位設(shè)置為false。最后檢測到數(shù)據(jù)幀尾為 “#”,完成整個數(shù)據(jù)幀的處理,將緩存清除并設(shè)置標志位為false,然后等待下一幀數(shù)據(jù)??刂屏鞒炭驁D如圖6。
STM32控制板通過WiFi模塊ESP8266與上位機采用TCP通信。STM32板即下位機作為客戶端,上位機作為服務(wù)端,一個主機控制8塊STM32板。上位機軟件在Win7下采用C#4.0編寫,使用Visual Studio 2010集成環(huán)境開發(fā)。
上位機主動通過執(zhí)行及查詢指令到STM32板,STM32板執(zhí)行相應(yīng)的指令動作,把實時狀態(tài)反饋回上位機。如圖7(a)控制板自動通過AP獲取該網(wǎng)段的IP,考慮到WiFi的IP會因斷電或信號強弱等改變,使用字典(Dictionary<>)將連接的相關(guān)字符串(String)與套接字(Socket)綁定,同時每一個字符串String對應(yīng)一個線程,通過哈希表的鍵值映射實現(xiàn)[8]。8個節(jié)點通過8個線程管理,每一個節(jié)點的斷開與連接不影響其他節(jié)點。
圖6 控制流程框圖
Fig.6 The control flow of STM32 board
如圖7(b),上位機服務(wù)器端界面啟動后,在線列表中列出連接到下位機客戶端的IP情況,每一個套接字有對應(yīng)的線程管理。主界面主要包含狀態(tài)查詢與命令發(fā)送,可以控制一個板卡節(jié)點單獨開關(guān)側(cè)窗,也可通過遍歷字符串綁定套接字發(fā)送開關(guān)指令到每一個節(jié)點??赡芤蚬?jié)點IP的變動,要通過節(jié)點查詢指令 “:F?#” 的反饋字符串 “:FN#” 的 “N” 值截取來判斷IP對應(yīng)的側(cè)窗編號。
圖7(a) WiFi設(shè)置界面;(b) 上位機控制界面
Fig.7(a) WiFi setting interface; (b) the host computer interface
側(cè)窗有4種控制模式:手柄控制、本地串口控制、遠程控制和自動控制。上文介紹了前3種控制模式,而自動控制調(diào)用了望遠鏡及氣象數(shù)據(jù)庫:降雨、云量、濕度、風速、風向等氣象參數(shù)都影響圓頂天窗、側(cè)窗的開合與天文觀測。利用已有的望遠鏡及氣象數(shù)據(jù)表TCSStatusNow[9],通過定時器每5 min讀取一次最新氣象參數(shù)以及望遠鏡方位值。如果望遠鏡方位值為null,表示望遠鏡沒有開啟或者出錯,執(zhí)行自動關(guān)閉。在望遠鏡方位有數(shù)值的情況下,通過云量、降水、濕度、風速等氣象參數(shù)設(shè)定開啟和關(guān)閉的閾值,自動判斷側(cè)窗的開關(guān),一旦上述任何一個氣象參數(shù)值超過設(shè)定關(guān)閉閾值就自動關(guān)閉側(cè)窗,且在天窗打開時通過蜂鳴器報警,便于人工對望遠鏡進行保護操作。滿足以上所有開啟閾值(無降雨、云量低、濕度低、風速 < 4 m/s),將打開所有側(cè)窗。其他條件符合且風速適中(4 m/s 大天窗編號為0,側(cè)窗節(jié)點編號順時針從1到8,則第N個節(jié)點對應(yīng)的角度θN為 θN=Az+45N. 因為氣象參數(shù)風向范圍為0°~360°,而望遠鏡方位為-180°~360°,為了保證范圍一致,需要把θN轉(zhuǎn)換為0~360°,反求出最靠近風向的節(jié)點N,再根據(jù)查詢節(jié)點編號 “:FN#” 的N值執(zhí)行迎風面和背風面的側(cè)窗開合。 圓頂側(cè)窗自動控制系統(tǒng)解決了側(cè)窗的機械改造與驅(qū)動、自動控制和多組控制、智能判斷等問題。該系統(tǒng)通過WiFi模塊、CH340G、手柄實現(xiàn)側(cè)窗的多通道控制,調(diào)用氣象與望遠鏡數(shù)據(jù)庫及閾值判斷,實現(xiàn)了麗江2.4 m望遠鏡圓頂?shù)膫?cè)窗自動化與智能化控制,并有效減少風對望遠鏡的振動。經(jīng)過兩個月的試運行,該系統(tǒng)穩(wěn)定、可靠,能滿足側(cè)窗的自主運行與人為控制。 致謝:感謝張瑞龍老師、業(yè)凱老師在圓頂側(cè)窗機械設(shè)計與安裝上給予的幫助。6 結(jié)果和討論