李相迎, 唐福杰, 雒建軍, 趙向陽, 周曉凡
(1.中國人民解放軍63610部隊, 新疆 庫爾勒 841000;2.巴州翱翔無人飛行器科技有限公司,新疆 庫爾勒 841000)
航天發射需要對飛行器進行準確的跟蹤測量與控制[1],要求地面各測量站之間、測量站內部各測控設備之間以及主控站與飛行器之間有一個統一的時間基準[2],這個時間基準就是起飛零時(簡稱T0信號)。為了檢測這一信號,需要T0信號檢控臺采集起飛時的脈沖信號,并將時間信息按一定格式發送給測控系統。T0信號檢控臺是連接靶場發控系統、測控系統和通信系統的關鍵設備,它能提供陣地發控系統所需的牽動信號和觸點信號的饋電電源,使之形成點火、起飛的脈沖信號,同時對觸點脈沖信號進行檢測,形成起飛時間信息后發送給中心計算機;中心計算機再向各測控站進行轉發,以統一各測控設備對飛行器的跟蹤和測量基準。此外,T0信號檢控臺還向調度系統提供起飛時刻的蜂音指揮信號。
隨著軍民融合在航天發射領域的不斷深入,各種發射任務逐步增加,高密度、多點位并行開展發射準備工作已成為常態。一方面,新研設備可以彌補現有T0信號檢控臺在數量上的不足;另一方面,傳統的T0信號檢控設備大多由工控機或基于早期單片機(8031或8051)研制的多塊功能板卡集合而成,體積較大、價格較高、電路復雜、操作和維護不夠靈活方便,通過新研的基于先進微控制器技術的T0信號檢控臺可以實現對現有設備的技術更新和產品換代。
近年來,STM32微控制器以其高性能、低成本、低功耗的特性被廣泛應用于嵌入式產品設計[3-5]中,所設計的產品集成度和可靠性高,易于開發,在各領域得到了廣泛應用。通過對國內外現有文獻進行查詢發現,迄今為止有關基于STM32的T0信號檢測的研究鮮有報道。文獻[6]設計實現了基于工控機的起飛零時控制系統,該系統基于PCI接口電路,需要安裝驅動程序和應用軟件;文獻[7]針對采用激光測量導彈起飛零時的系統,提出了一種基于激光脈沖編碼、相關檢測的自適應門限控制方法,主要目的是解決強背景光干擾問題;文獻[8]實現了基于圖像處理的起飛零時信號檢測方法,該方法受觀測距離限制,且圖像檢測給出的起飛時間存在一定誤差。
為此,本文以STM32F407開發板為平臺開展基于STM32的T0信號檢控臺設計,其優點是可以簡化開發過程,縮短開發周期。通過對目標系統進行功能分解,首先利用Keil編程環境搭建主程序框架,以開發板的示例程序為參考完成部分軟件功能的調試;其次,在選定的外圍功能模塊的基礎上實現與STM32微控制器的互聯互通測試,采用邊調試邊完善的方法,把系統功能集成在一塊電路板上,實現一種小型化、低成本、易操作的起飛信號檢控設備。
起飛零時檢測設備由STM32微控制器及其外圍電路實現,其架構如圖1所示,主要功能包括:
① 2路觸點輸入觸發信號,每一路可單獨設置常開/常閉觸發方式。
② 1路手動觸發方式,可手動按鍵觸發T0,供系統聯調使用。
③ 1路倒計時觸發輸入,設置倒計時時間,觸發T0后進入正計時。
④ 輸入選擇功能,可選擇使用GPS/BD或BDC碼作為時鐘源,具備自動守時功能。
⑤ T0信號輸出,采用UDP協議,RJ45網口輸出。
⑥ 參數設置與信息顯示,通過觸摸屏與設備面板實現。

圖1 設備架構圖
設備工作時,通過外部提供的B碼(DC碼)和GPS/BD時間信號,任選一路作為時間源,當系統捕獲到起飛觸點(或倒計時、手動觸發)信號時,信息處理模塊將時間信號和相關的參數打包,通過網絡對外發送。
設備核心采用了STM32F407芯片,其外圍電路主要包括GPS接收模塊、B(DC)碼電平轉換電路、光電隔離電路、觸摸屏、網絡傳輸模塊等。STM32F407芯片提供了豐富的I/O接口、定時器、中斷控制等資源,支持RS232/RS422/RS485接口通信,自帶以太網模塊,豐富的片內資源為實現高集成化和高可靠性的T0檢控設備提供了有力支持。
T0檢控設備的硬件設計主要是指STM32F407芯片外圍電路與接口的開發,包括時間解碼、起飛觸點信號檢測、網絡接口和人機操作接口幾個部分。
T0檢控設備的時鐘源包括IRIG-B(DC)碼和GPS/BD時間。B(DC)碼的輸入采用RS485或RS422接口協議。差分傳輸是RS485數據信號傳輸的方式,它采用雙絞線進行信號傳輸,邏輯電平通過雙絞線兩端的電壓差得到。由于STM32只支持TTL電平,因此需要對輸入的B(DC)碼信號進行電平轉換,選用的器件為MAX1487。MAX1487采用的通信接口形式為RS485和RS422,功耗較低。圖2為電平轉換的電路原理圖。
圖2中B(DC)碼從J2輸入至U12的A、B端,轉換后從RO端輸出TTL電平的B(DC)時間編碼脈沖,進入STM32芯片進行解碼。

圖2 RS422/RS485電平轉換電路
GPS時間信號由 ATK-S1216F8-BD模塊提供。該模塊電平為5 V和3.3 V,與單片機系統保持兼容,體積小,性能優異,可通過串口進行各種參數設置,并可保存在內部Flash中。模塊自帶可充電后備電池,掉電后可以保持星歷數據。它與STM32的連接關系如圖3所示。

圖3 ATK-S1216F8-BD模塊與STM32連接示意圖
模塊的數據收發通過串口與微控制器連接。在硬件設計中,該模塊與STM32連接的5根線分別為數據發送(TXD)、數據接收(RXD)、秒脈沖(PPS)、電源(VCC)和地(GND)。PPS信號可以提供精確的秒脈沖信號,脈沖前沿為整秒時刻,導航定位信息(時間信息)在秒脈沖之后通過串口輸出。STM32芯片的定時器具有脈沖輸入捕獲功能,可以在程序初始化時進行設置,因此,在設計中將GPS模塊的PPS信號與定時器輸入端口連接,以獲取精確的整秒時刻。
火箭發射時,通過點火或彈射方式與發射架分離。無論采用哪種方式,都會送出一個開關量信號。觸點檢測電路的作用是實現對這一信號的檢測并發送給STM32進行處理。通常,發射架距離起飛信號檢測系統較遠,需要的電壓和電流也比較大,為了保護微控制器,需要進行光電隔離;起飛信號通過光電轉換,變成TTL脈沖信號進入STM32微控制器。例如,采用點火方式時,通過火箭點火熔斷裝置形成起飛信號,此時的起飛信號檢測電路如圖4所示。

圖4 起飛信號檢測原理
熔斷絲導通時,導通電流經R1使光耦的發光二極管發光,光耦三極管的集電極與發射極處于飽和導通狀態,集電極輸出低電平;火箭點火起飛使熔斷絲斷開后,光耦的二極管不發光,三極管截止,集電極輸出高電平,通過上拉電阻經整形電路進入STM32的GPIO端口。這種從低電平到高電平的跳變信號經STM32捕獲后進入中斷處理程序進行處理。在電路設計中,為了使電平跳變信號更接近于理想矩形脈沖,通常使用施密特觸發器電路進行脈沖整形。
手動T0的觸發方式與起飛觸點檢測的原理類似,通過按鍵產生TTL電平的脈沖跳變信號,整形后從STM32的GPIO端口輸入,所以無須光電隔離。
STM32F407芯片自帶以太網模塊,該模塊包括帶專用 DMA 控制器的基于IEEE 802.3的MAC(介質訪問控制)控制器,支持介質獨立接口 (Media Independent Interface,MII) 和簡化介質獨立接口 (Reduced Media Independent Interface,RMII)。信息發送時,必須外接以太網接口芯片(PHY 層芯片),本設計中采用了LAN8720A進行網絡通信。STM32F407 通過 RMII 接口與 PHY 層芯片的連接示意圖如圖5所示。

圖5 STM32F407 RMII與 PHY 層芯片的連接示意圖
LAN8720A 為以太網接口芯片,對應于協議PHY 層,具有低功耗特性,網絡速率為 10/100 Mbit/s, 該芯片可以通過 RMII 接口與以太網 MAC 層通信,具有符合IEEE 802.3-2005 標準的I/O 引腳電壓。LAN8720A 可以通過自協商的方式選擇與目的主機以最佳的方式(速度和雙工模式)連接,支持 HP Auto-MDIX 自動翻轉功能,無須更換網線即可將連接更改為直連或交叉連接。
為了使T0檢測設備易于設置和操作,選用了觸摸屏作為操控界面。觸摸屏為組態串口屏,通過串口與STM32進行通信,其交互原理如圖6所示。

圖6 觸摸屏與STM32的通信連接
組態串口屏的特點是可以使用圖形化的方式進行界面設計,內置了豐富的顯示和控制組件,通過特定的命令集與STM32的串口進行通信,其自帶的驅動函數庫負責命令的解釋與分發。觸摸屏與STM32的數據交互為雙向通信,因此需要兩根數據線連接。
軟件開發環境為Keil μVision 5,采用C語言編程。下面簡要介紹各功能模塊的軟件實現。
IRIG(Inter Range Instrumentation Group)碼,稱為“美國靶場儀器組碼”,是美國靶場司令委員會制定的一種時間標準,現廣泛應用于軍事、商業、工業等諸多領域。IRIG 碼共有4 種并行二進制時間碼格式和6 種串行二進制時間碼格式,其中最常用的是IRIG-B 時間碼格式,其以每秒一次的頻率發送時間信息,不僅包含秒脈沖信息,而且還有包括年、天、時、分、秒、二進制秒計日等在內的絕對時間信息[9]。
IRIG-B(DC) 時間碼結構如圖7所示。它是每秒一幀的串行時間碼,每個碼元總寬度為10 ms,一個時幀周期包括100個碼元,為脈寬編碼。每個碼元又有二進制“0”和“1”以及位置標識符共3種碼型,分成3字段編碼:第1字段為年時間(年、天、時、分、秒);第2字段為控制功能字段;第3字段為直接用二進制秒符號表示的一天中的時間信息,每24 h循環1次。碼元的“準時”參考點是其脈沖前沿,時幀的參考標志由一個位置識別標志和相鄰的參考碼元組成,其脈寬均為8 ms;每10個碼元有一個位置識別標志,因此1 s內共10個位置識別標志,即P1,P2,P3,…,P9,P0,它們均為8 ms脈寬;PR為幀參考點;二進制“1”和“0”的脈寬分別為5 ms和2 ms。
對B 碼進行解碼就是將B 碼中所包含的時、分、秒信息提取出來,轉換成計算機能夠識別的形式。解碼的關鍵在于檢測B 碼中各個碼元的高電平寬度,首先要檢測連續兩個8 ms 寬的碼元出現的位置,然后再檢測隨后的30個碼元脈沖寬度,以確定時、分、秒。

圖7 IRIG-B(DC) 時間碼示意圖
檢測高電平寬度的方法為:設置STM32的相關定時器模式為脈沖捕獲,將B 碼送入定時器輸入引腳,在引腳由低電平變為高電平時,啟動內部定時器T0,開始計數;在引腳由高變低時(即下降沿),觸發中斷,讀取計數器的值,脈沖寬度等于計數值乘以計數周期。
依據B(DC)碼的編碼結構[10-12],采用軟件方法提取時間信息的流程如圖8所示。
GPS的授時信息從其導航報文中獲取。導航報文采用NMEA-0183 協議傳輸[13],符合NMEA-0183標準的GPS接收機的硬件接口能夠兼容計算機或單片機的RS232C串口協議,因此,可以通過串口編程實現GPS時間碼的接收。由于導航報文中時間信息在秒脈沖之后通過串口輸出,因此,秒脈沖到達時的準確時間應該用串口接收的時間信息加1 s。由于T0控制臺還需要毫秒信息,所以需要通過定時器對相鄰兩個秒脈沖之間進行毫秒計數。GPS時間獲取的原理圖如圖9所示。

圖8 B(DC)軟件解碼程序流程

圖9 GPS時間獲取原理
NMEA-0183 協議采用 ASCII 碼來傳遞 GPS 定位信息,稱之為幀,它具有形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF) 的幀格式。$GNRMC為程序設計中接收的定位信息幀,只需要提取其中的UTC時間信息即可。
為保證時間信息處理的實時性,對B(DC)和GPS時間碼的采集均在中斷處理函數中完成。當檢測到B(DC)碼的整秒時刻的上升沿時,軟件中設置一個I/O口進行電平翻轉,在該I/O口中斷處理函數中記錄B(DC)碼的整秒時間,然后啟動預先設置的定時器進行毫秒(或微妙)計數,以便獲取T0發生時刻的B(DC)碼毫秒信息。由于GPS模塊的1PPS輸出線與STM32的一個定時器輸入相連接,因此,GPS整秒時刻的采集可以在該定時器的中斷處理函數中完成;毫秒信息的產生與B(DC)碼的方法一致。
設備的T0產生方式包括觸點、手動和倒計時3種,其中觸點和手動方式原理基本一致,即通過STM32的中斷引腳檢測電平翻轉的脈沖信號,STM32響應外部中斷,進入中斷程序,在中斷程序中將GPS或B(DC)碼時間信息打包,按規定的協議格式通過網絡發送T0時間信息。
在中斷處理函數中,首先判斷當前設置的時間源(GPS或B(DC)),然后從對應的結構體中取出時、分、秒、毫秒信息,根據協議格式將數據打包,調用網絡發送函數對外發送。T0產生后,通常要求T0控制臺連續對外發送10~20 s,因此,在中斷函數中還需開啟一個定時器,時間結束后停止發送。
在使用倒計時方式產生T0時,軟件讀取觸摸屏設置的倒計時時間(分為絕對時和相對時),計算出距離當前時刻的整秒數,存入一個倒計時變量;開啟一個定時器,設置為秒中斷,在定時器中斷處理函數中,對存儲的倒計時變量遞減,當遞減到0時,讀取當前GPS或B(DC)碼時間,發送過程與前面介紹的觸點和手動中斷處理函數中的操作基本一致。
為了實現觸摸屏與STM32通信,需調用觸摸屏驅動代碼,并遵循一定的程序設計規范[14]。觸摸屏對觸摸控件進行唯一編號,操作時控件編號和命令信息通過串口發送給STM32,STM32的處理程序對命令解碼,或者對設備進行參數設置,亦或者將設備信息回傳給觸摸屏進行顯示。STM32與觸摸屏通信軟件結構如圖10所示。

圖10 STM32與觸摸屏通信軟件結構
在程序的主循環中,采用輪詢的方式檢查指令隊列中有無指令到達,若指令有效則對指令進行解析。指令類型分為畫面切換通知、觸摸坐標通知和控件通知,均通過對應的子程序進行處理。畫面切換指令負責觸摸屏的信息顯示和參數設置畫面切換,在本系統中包括主界面和參數設置界面,按鈕和文本作為主要控件負責實現參數傳遞、信息顯示和狀態選擇與確認功能,本設計中未涉及觸摸坐標的使用。
STM32使用LwIP作為網絡通信的協議棧。LwIP是瑞典計算機科學院的Adam Dunkels等開發的一個小型開源的TCP/IP協議棧,有無操作系統都可以運行,它實現的重點是在保持TCP/IP協議主要功能的基礎上減少對RAM的占用,只需十幾KB的RAM和40 KB左右的ROM即可以運行,因而適合在嵌入式系統中使用。LwIP的庫函數提供了API調用接口,在完成必要的初始化設置后,當需要數據發送時可以直接調用。
在本設計中,T0信息輸出使用UDP協議,在UDP的數據域使用包交換協議[15],進一步封裝設備通信所需的地址、數據時標、包序號、數據長度和數據內容等信息。
測試時通過網線將設備與計算機連接。在設備端,通過觸摸屏設置本地和遠端的IP地址、端口號和數據包的相關參數;在計算機端運行網絡接收程序,設置好T0檢控臺的IP地址和端口號,等待接收數據。測試內容包括:
① 接入B(DC) 碼,GPS收星正常,通過觸摸屏切換時間源,查看屏上顯示時間的正確性。
② 設置倒計時T0觸發參數,當倒計時為0時,觀察計算機接收到的UDP數據包內容。
③ 分別設置手動T0和觸點觸發T0方式,通過外部開關模擬,觀察計算機接收到的UDP數據包內容。
④ 測試其他輔助功能,例如信息顯示、蜂音信號輸出、自動守時等。
圖11為T0檢控臺參數設置屏,圖12為產生T0信號時的設備主屏;圖13為使用GPS作為時鐘源,在手動產生T0信號時收到的數據包內容截屏。

圖11 T0檢控臺參數設置屏

圖12 產生T0信號時的設備主屏

圖13 計算機接收的UDP數據包信息
從獲取的數據包內容可以得到T0檢控臺設置的參數和發送的T0信息如下(字段括號內的數字為字節序號):
VER(0):80, MID(1~2):2038, SID(3~6):12345678,DID(7~10):1234ABCD, BID(11~14):00010101, FLAG(19):00,發送日期(24~25):1F51,發送時間(26~29):21FD2C00,數據長度(30~31):0004,數據內容(32~35):21FBD404
其中,發送日期1F51為十進制8017,表示從2000年1月1日到當前設置日期的天數。發送時間21FD2C00為十進制570240000,表示發送時刻的北京時間量化為0.1 ms的計數值,即15時50分24秒。數據內容21FBD404為十進制數570151940,表示T0時間量化為0.1 ms的計數值,經轉換后,T0時間為15時50分15秒194毫秒。在軟件中,設置了連續發送10 s的T0信息,數據包中的發送時間保持整秒變化,而T0信息不變。分析結果表明,解析的參數與設置值一致, T0信息與設備產生的T0一致。
針對航天測控需求現狀,研制了一種基于通用STM32微控制器的航天發射場T0檢控設備。為了更好地適應當前測發與測控系統的技術現狀,精簡了傳統T0控制臺的一些不常用的功能(如HDLC通信、B(AC)碼的接收與解調、打印輸出等)。經測算,新研設備成本小于原設備的1/10,質量小于原設備的1/3,板卡尺寸僅為15 cm×8 cm。設備經過多次測試和發射任務的檢驗,工作穩定可靠,實現了小型化、低成本和高可靠性的設計目標,滿足使用要求。