王志海
(93707部隊(duì) 河北 張家口 075000)
現(xiàn)代飛行模擬座艙由計(jì)算機(jī)系統(tǒng)和飛行模擬器其他系統(tǒng)組成,計(jì)算機(jī)內(nèi)部都是數(shù)字量信號(hào),通過(guò)外部接口設(shè)備將數(shù)字信號(hào)轉(zhuǎn)換為電壓信號(hào)控制系統(tǒng)的外部硬件設(shè)備,這種外部接口設(shè)備也稱為過(guò)程通道。計(jì)算機(jī)輸出的數(shù)字量信號(hào),經(jīng)過(guò)過(guò)程通道變成電壓信號(hào),控制儀表顯示、座艙燈光等,從而實(shí)現(xiàn)反應(yīng)座艙內(nèi)飛行狀態(tài),仿真時(shí)機(jī)飛行的功能[1]。在某型飛機(jī)飛行模擬器的設(shè)計(jì)實(shí)現(xiàn)上,采用了一種在電路級(jí)可擴(kuò)展的方案,較好的平衡了數(shù)字量輸出系統(tǒng)電路的成本控制與冗余設(shè)計(jì)。
某型飛機(jī)模擬仿真座艙在設(shè)計(jì)初期,鑒于此座艙的主要功能范圍和應(yīng)用面比較有針對(duì)性,主要集中在對(duì)部分座艙設(shè)備的功能實(shí)現(xiàn)上,因此對(duì)于數(shù)字量輸出系統(tǒng)的規(guī)模預(yù)估為62路數(shù)字信號(hào),5VTTL電平,10毫安電流,直接驅(qū)動(dòng)發(fā)光二極管、數(shù)碼管、三極管等小電流器件。但是為了在以后的使用過(guò)程中不斷的擴(kuò)充模擬座艙內(nèi)的設(shè)備及開發(fā)更多的功能,要求數(shù)字量輸出系統(tǒng)具備可擴(kuò)展的能力,在必要時(shí),只通過(guò)插接電路、升級(jí)軟件等簡(jiǎn)單的操作即可實(shí)現(xiàn)座艙升級(jí)。
某型模擬座艙的數(shù)字量輸出系統(tǒng)主要實(shí)現(xiàn)利用發(fā)光二極管實(shí)現(xiàn)艙內(nèi)燈光信號(hào)、利用數(shù)碼管顯示數(shù)字儀表指示、利用三級(jí)管控制大電流元件通斷及艙內(nèi)照明等功能。數(shù)字量輸出系統(tǒng)組成如圖1所示。

圖1 數(shù)字量輸出系統(tǒng)示意Fig.1 Digital output system schematic
模擬座艙控制計(jì)算機(jī)和單片機(jī)板之間通過(guò)RS232總線通訊,考慮到目前市面上的通用計(jì)算機(jī)很少帶有RS232接口,本方案使用USB轉(zhuǎn)TTL的元件PL2303,使用應(yīng)用更普遍的USB接口來(lái)連接單片機(jī)和計(jì)算機(jī)。單片機(jī)采用高性能、低功耗的AVR微處理器Atmega48,主頻20 MHz,充分利用其功能完備、資料充分、大多數(shù)指令為單個(gè)時(shí)鐘周期的特點(diǎn),滿足座艙數(shù)字信號(hào)的實(shí)時(shí)性要求[2]。
Atmega48微處理器有23路可編程I/O線,其中PD0、PD1用于RXD、TXD串口通信,PC6用于RESET,還剩余20條I/O線,如果直接用于控制數(shù)字量輸出,數(shù)量太少不夠使用,需要擴(kuò)展I/O口數(shù)量[3]。除使用專門的可編程接口芯片8255A,比較易于實(shí)現(xiàn)的方案就是使用串入并出移位寄存器。
74LS164是8位移位寄存器,頻率36 MH,功耗80 mW,芯片引腳定義如圖2所示[4]。
其中 Q0~Q7(QA~QH)為輸出端,A/B 為串行數(shù)據(jù)輸入端,CP為時(shí)鐘信號(hào)輸入,MR為數(shù)據(jù)清除控制,當(dāng)MR引腳為低電平時(shí),輸出全為低電平,CP時(shí)鐘信號(hào)為上升沿時(shí),A/B引腳數(shù)據(jù)串行輸入Q0,Q0~Q7引腳數(shù)據(jù)順序移位,真值表如表1所示。

圖2 74LS164引腳Fig.2 74LS164 Pin

表1 74LS164真值表Tab.1 1 74LS164 truth table
其中H為高電平,L為低電平,X為任意電平,為低電平到高電平跳變。芯片引腳電平跳變的傳輸延遲時(shí)間在20~30 ns,滿足飛行模擬座艙數(shù)字量輸出的時(shí)間要求。利用74LS164的串行移位的特性,可以使用多個(gè)74LS164串接起來(lái),單片機(jī)端只占用兩個(gè)I/O口,一個(gè)用于連接CP端作時(shí)鐘線控制,一個(gè)用于連接A/B端作數(shù)據(jù)輸入線,就可以擴(kuò)展出8*N(串行連接N個(gè)74LS164)個(gè)I/O口,由于串行連接的74LS164共用CP時(shí)鐘線,而將上一級(jí)芯片的Q7接入下一級(jí)的A/B作為數(shù)據(jù)輸入,在電路上的實(shí)現(xiàn)就較為簡(jiǎn)單了。
數(shù)字量輸出板使用40P排線與單片機(jī)板連接,另將單片機(jī)控制線串接到40P輸出接口,作為插接擴(kuò)展板的預(yù)留接口,板上使用6片74LS164,數(shù)字輸出能力為6*8=48路數(shù)字量信號(hào)。接口板電路如圖3所示。

圖3 數(shù)字輸出電路板Fig.3 Digital output circuit board
圖中接口板只占用單片機(jī)6*2=12條I/O線,每一個(gè)74LS164芯片輸出引腳直接連接了限流電阻,用于控制發(fā)光二極管,每個(gè)芯片單元的8個(gè)引腳也可以單獨(dú)連接一個(gè)共陽(yáng)數(shù)碼管。當(dāng)飛行模擬座艙的數(shù)字量輸出系統(tǒng)需要擴(kuò)容時(shí),只要將下一級(jí)的接口板40針輸入口串接到上一級(jí)接口板的40針擴(kuò)展口即可實(shí)現(xiàn)電路升級(jí)。
由于每一路單片機(jī)的Clock線和Data線上的單元都具備順序的地址,對(duì)于上位機(jī)軟件來(lái)地址空間是透明的,控制數(shù)字量輸出時(shí)只需要提供74LS164單元編號(hào)及I/O引腳位即可實(shí)現(xiàn)對(duì)任意單元上的8位I/O口的電壓進(jìn)行控制。比如上圖中的數(shù)字量輸出接口板,第一級(jí)板子的單元編號(hào)為0~5,位編號(hào)為0~39,第二級(jí)接口板的單元編號(hào)為6~11,位編號(hào)是40~87。上位機(jī)軟件中使用二維數(shù)組unsigned char BitStatus[6][接口板數(shù)量]來(lái)保存每一位數(shù)字量的電平狀態(tài)。在飛行仿真座艙的安裝過(guò)程中,只需要對(duì)接口板進(jìn)行編號(hào)標(biāo)記,既可以在軟件中將接線柱的對(duì)應(yīng)的單元地址和控制位編號(hào)保存成配置文件,實(shí)現(xiàn)對(duì)外部數(shù)字信號(hào)的精確控制[5]。
上位機(jī)程序流程如圖4所示。

圖4 上位機(jī)程序流程Fig.4 PC program flow
下位機(jī)接收上位機(jī)的查詢命令,返回所連接的數(shù)字接口板的I/O數(shù)量;接收上位機(jī)的控制命令,改變指定的單元號(hào)、位編號(hào)上的電平狀態(tài),從而控制座艙內(nèi)的燈光信號(hào)及數(shù)字儀表。下位機(jī)程序使用WinAvr20100110編譯,通過(guò)在代碼中修改預(yù)定義的單元數(shù)即可實(shí)現(xiàn)接口板擴(kuò)充[6]:



文中使用的數(shù)字量輸出接口方案已經(jīng)應(yīng)用于某型飛機(jī)模擬座艙,經(jīng)實(shí)際應(yīng)用證明,該方案設(shè)計(jì)簡(jiǎn)單、兼容性好、電路及數(shù)字量輸出規(guī)模擴(kuò)充方便,完全滿足模擬座艙的數(shù)字信號(hào)控制要求。
[1]王行仁.飛行實(shí)時(shí)仿真系統(tǒng)及技術(shù)[M].北京:航空航天大學(xué)出版社,1998.
[2]吳正毅.測(cè)試技術(shù)與測(cè)試信號(hào)處理[M].北京:清華大學(xué)出版社,1991.
[3]ATMEL.ATmega48/88/168[EB/OL].[2011-05-01].http://www.atmel.com/images/doc2545.pdf.
[4]ON Semiconductor.SN74LS164[EB/OL].[2006-07-01].http://www.onsemi.cn/pub_link/Collateral/SN74LS164-D.PDF.
[5]張明,李訓(xùn)濤.計(jì)算機(jī)測(cè)控技術(shù)[M].北京:國(guó)防工業(yè)出版社,2010.
[6]劉海成.AVR單片機(jī)原理及測(cè)控工程應(yīng)用:基于ATmega48/ATmega16[M].北京:航空航天大學(xué)出版社,2008.