吳第旻,劉千壽,李 俊,朱云博
(武漢軍械士官學(xué)校, 武漢 430075)
基于ARM的某型火箭炮角限位器模擬系統(tǒng)設(shè)計(jì)
吳第旻,劉千壽,李 俊,朱云博
(武漢軍械士官學(xué)校, 武漢 430075)
為減少裝備損耗,展現(xiàn)某型火箭炮角限位器工作過程和常見故障,設(shè)計(jì)了基于ARM的角限位器模擬訓(xùn)練系統(tǒng);以TX2440A開發(fā)板為基礎(chǔ),設(shè)計(jì)了高低角限位器模擬裝置、方向角限位器模擬裝置和輸入輸出控制顯示電路;采用Linux C++多線程編程技術(shù)和QT技術(shù),設(shè)計(jì)了硬件驅(qū)動(dòng)程序,驅(qū)動(dòng)調(diào)用程序和軟件操作界面,實(shí)現(xiàn)了兩種角限位器工作過程和常見故障的模擬;實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)能準(zhǔn)確、實(shí)時(shí)地反映角限位器的工作狀態(tài)和故障現(xiàn)象,為教學(xué)訓(xùn)練提供了可靠的平臺(tái)。
ARM;QT;多線程編程;模擬訓(xùn)練;故障設(shè)置
某型火箭炮武器系統(tǒng)自動(dòng)化程度高、快速反應(yīng)能力強(qiáng)、射程遠(yuǎn)、精度高、火力猛,擔(dān)負(fù)著遠(yuǎn)程精確打擊的重任。該炮能夠?qū)崿F(xiàn)自動(dòng)、半自動(dòng)和手動(dòng)等多種方式調(diào)炮瞄準(zhǔn)。其中,在自動(dòng)和半自動(dòng)調(diào)炮過程中,火力系統(tǒng)采用角限位器在某些極限位置進(jìn)行安全限位,并在一些特殊位置使操瞄傳動(dòng)系統(tǒng)完成一些特殊功能(如減速、定位等)。
角限位器分為高低角限位器和方向角限位器,分別用于對(duì)高低和方向進(jìn)行限位、指示。理解角限位器的工作原理及其在整個(gè)火箭炮火力系統(tǒng)中的作用,了解常見的故障現(xiàn)象并進(jìn)行故障分析與排除,是軍械士官必須掌握的專業(yè)技能之一。
ARM處理器以其體積小、成本低、性能高、兼容性好等優(yōu)點(diǎn)在工業(yè)控制[1-2]、無線通訊[3]、成像和安全產(chǎn)品[4]、網(wǎng)絡(luò)應(yīng)用[5]、消費(fèi)類電子產(chǎn)品[6]等多個(gè)領(lǐng)域得到廣泛應(yīng)用。QT是一個(gè)標(biāo)準(zhǔn)的C++框架,被用于高性能的跨平臺(tái)軟件開發(fā)[7]。線程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行單元,是CPU調(diào)度和分配的基本單位。應(yīng)用多線程可最大限度地利用計(jì)算機(jī)資源,提高工作效率[8]。
由于某型火箭炮造價(jià)高昂,因此部隊(duì)和院校配備的裝備數(shù)量都非常有限。在平時(shí)訓(xùn)練過程中,存在著裝備少、訓(xùn)練不好開展的問題。為減少裝備損耗,提高教學(xué)效果,直觀地展現(xiàn)角限位器的工作過程,方便介紹其工作原理,并能設(shè)置常見故障,以供故障分析排除,本文擬設(shè)計(jì)一種基于ARM9控制器的模擬訓(xùn)練系統(tǒng),并采用QT4和Linux C++多線程編程技術(shù)來進(jìn)行程序設(shè)計(jì)。
1.1 高低角限位器模擬裝置
高低角限位器模擬裝置由機(jī)械部分與導(dǎo)電部分組成。機(jī)械部分由傳動(dòng)軸、鎖緊螺釘、主動(dòng)輪、從動(dòng)輪、傳動(dòng)帶等組成。導(dǎo)電部分由導(dǎo)電盤、滑動(dòng)架等組成。主動(dòng)輪裝配在傳動(dòng)軸上,滑動(dòng)架裝配在從動(dòng)輪上。主、從動(dòng)輪通過傳動(dòng)帶進(jìn)行傳動(dòng)。松開鎖緊螺釘后,可調(diào)整傳動(dòng)軸,動(dòng)力通過主動(dòng)輪、從動(dòng)輪,帶動(dòng)滑動(dòng)架在導(dǎo)電盤上運(yùn)動(dòng),接觸不同的銅箔,輸出不同的位置信號(hào)。高低角限位器導(dǎo)電盤上共有四塊銅箔(即圖1(a)中導(dǎo)電盤上四段圓弧,其中1、2、3都是短圓弧,4是長(zhǎng)圓弧),分別對(duì)應(yīng)輸出插座的1、2、4、5號(hào)端子,3號(hào)端子接地。
1.2 方向角限位器模擬裝置
方向角限位器模擬裝置也是由機(jī)械部分與導(dǎo)電部分組成。機(jī)械部分由傳動(dòng)齒輪、鎖緊螺釘、主動(dòng)輪、從動(dòng)輪、傳動(dòng)帶等組成。導(dǎo)電部分由導(dǎo)電盤、滑動(dòng)架等組成。主動(dòng)輪與傳動(dòng)齒輪共軸,滑動(dòng)架裝配在從動(dòng)輪上。主、從動(dòng)輪通過傳動(dòng)帶進(jìn)行傳動(dòng)。松開鎖緊螺釘后,可調(diào)整傳動(dòng)齒輪,動(dòng)力通過主動(dòng)輪、從動(dòng)輪,帶動(dòng)滑動(dòng)架在導(dǎo)電盤上運(yùn)動(dòng),接觸不同的銅箔,輸出不同的位置信號(hào)。方向角限位器導(dǎo)電盤上共有五塊銅箔(即圖1(b)中導(dǎo)電盤上五段圓弧,其中2、3、4為短圓弧,1、5為長(zhǎng)圓弧),分別對(duì)應(yīng)輸出插座的1、2、3、5、6號(hào)端子,4號(hào)端子接地。
圖1 高低角和方向角限位器模擬裝置
1.3 輸入輸出控制與顯示電路
以郭天祥團(tuán)隊(duì)的TX2440A開發(fā)板為基礎(chǔ),采用S3C2440A作為主控制器,7寸液晶顯示屏作為控制平臺(tái),6個(gè)LED指示燈作為輸出。指示燈排列順序與角限位器輸出接口一致。從高低角限位器模擬裝置和方向角限位器模擬裝置引出的信號(hào)線,分別與TX2440A開發(fā)板的GPIO端口GPF0-3和GPG0-3、6相連。輸出指示燈與GPF4-7以及GPB0、1相連。開發(fā)板與模擬裝置共地。
圖2 控制界面和輸出指示
角限位器模擬訓(xùn)練系統(tǒng)的工作過程如下:轉(zhuǎn)動(dòng)角限位器下方傳動(dòng)軸,滑動(dòng)架在導(dǎo)電盤上運(yùn)動(dòng),接觸到不同銅箔時(shí),將接通信號(hào)傳遞給ARM控制器,ARM控制器根據(jù)輸入信號(hào),控制輸出指示燈點(diǎn)亮和熄滅。該過程與裝備上角限位器的工作過程類似,指示燈點(diǎn)亮表示角限位器相應(yīng)輸出管腳接地?;鹂叵到y(tǒng)接收到電信號(hào)后,隨即根據(jù)該信號(hào)控制火力系統(tǒng)動(dòng)作。
2.1 硬件驅(qū)動(dòng)程序
硬件驅(qū)動(dòng)程序采用C語言進(jìn)行設(shè)計(jì),它加載在Linux內(nèi)核中,用于直接操作硬件,主要功能是根據(jù)兩種角限位器的輸出信號(hào)來控制輸出指示燈的亮滅。此外,程序還能響應(yīng)自檢、故障設(shè)置等指令。
首先將所有管腳設(shè)置為輸出模式,然后初始化各輸入管腳。然后再編寫不同指令的響應(yīng)程序。主要的指令有:點(diǎn)亮任意一盞燈,熄滅任意一盞燈,點(diǎn)亮所有燈,熄滅所有燈,依次打開、熄滅所有燈,模擬高低角限位器,模擬方向角限位器,設(shè)置高低角限位器任意一根電線脫焊,設(shè)置高低角限位器任意一塊銅箔損壞,設(shè)置高低角限位器滑架松動(dòng),設(shè)置方向角限位器任意一根電線脫焊,設(shè)置方向角限位器任意一塊銅箔損壞,設(shè)置方向角限位器滑架松動(dòng)。
電線脫焊與銅箔損壞的區(qū)別是,電線直接與指示燈一一對(duì)應(yīng),而銅箔比指示燈少,不是一一對(duì)應(yīng)的?;芩蓜?dòng)則滑架與銅箔不能可靠接觸,銅箔無法接地。
在模擬角限位器工作和設(shè)置角限位器故障時(shí),需要讀取各輸入管腳的值,故先將需要讀取的管腳設(shè)置為輸入模式,再讀取該管腳的值,然后判斷其值,最后根據(jù)判斷的結(jié)果寫各輸出管腳,點(diǎn)亮相應(yīng)的指示燈。在設(shè)置故障時(shí),忽略模擬故障信號(hào)的管腳的輸入,直接將相應(yīng)的輸出管腳置零。
圖3給出了模擬高低角限位器子程序的流程。由于高低角限位器只有5個(gè)輸出管腳信號(hào)有效,故模擬它時(shí)只需要5個(gè)指示燈,所以首先要關(guān)閉6號(hào)燈。接下來打開表示地線的3號(hào)燈。其他各燈需根據(jù)讀入的相應(yīng)管腳值進(jìn)行設(shè)置。
圖3 模擬高低角限位器程序流程圖
在圖3中,為了簡(jiǎn)化代碼,采用了循環(huán)控制,將1、2號(hào)燈和4、5號(hào)燈分開進(jìn)行處理。過程如下:首先設(shè)置與該指示燈對(duì)應(yīng)的管腳(也就是與導(dǎo)電盤對(duì)應(yīng)銅箔相連的管腳)為輸入模式;然后讀取該管腳值到整數(shù)變量J;再判斷J是否為0,若為0,則認(rèn)為其接地,否則認(rèn)為其沒有接地,將J置1;接下來對(duì)J取反,并將該信號(hào)輸出到該指示燈連接的管腳;然后重復(fù)該循環(huán),直至所有指示燈設(shè)置完畢。
模擬方向角限位器子程序與圖3類似。
圖4給出了設(shè)置方向角限位器某根電線脫焊程序的流程。方向角限位器4號(hào)端子接地,不依賴對(duì)應(yīng)管腳的輸入值,因此單獨(dú)處理。如果它就是故障燈(對(duì)應(yīng)的電線脫焊),直接關(guān)閉該燈;如果不是,則打開該燈。對(duì)其他指示燈,如果它就是故障燈(對(duì)應(yīng)的電線脫焊),那么直接關(guān)閉該燈;如果不是,則根據(jù)對(duì)應(yīng)管腳的輸入進(jìn)行設(shè)置。
圖4 設(shè)置方向角限位器電線脫焊故障程序流程圖
在圖4中,為了簡(jiǎn)化代碼,采用了循環(huán)控制,將1、2、3號(hào)燈,4號(hào)燈和5、6號(hào)燈分開進(jìn)行處理。過程如下:首先設(shè)置與該指示燈對(duì)應(yīng)的管腳(也就是與導(dǎo)電盤對(duì)應(yīng)銅箔相連的管腳)為輸入模式;然后讀取該管腳值到整數(shù)變量J;再判斷J是否為0,若為0,則認(rèn)為其接地,否則認(rèn)為其沒有接地,將J置1;接下來再判斷該燈是否為故障燈,如果是,直接關(guān)閉該指示燈,否則對(duì)J取反,并將該信號(hào)輸出到該指示燈連接的管腳;然后重復(fù)該循環(huán),直至所有指示燈設(shè)置完畢。
其它故障設(shè)置的程序流程與圖4類似。
2.2 驅(qū)動(dòng)調(diào)用程序
驅(qū)動(dòng)調(diào)用程序的功能是根據(jù)用戶的操作,選擇合適的參數(shù)調(diào)用硬件驅(qū)動(dòng)程序。操作指令的編碼,故障燈號(hào)的設(shè)置都在此程序中進(jìn)行??紤]到故障具有隨機(jī)性,為使故障模擬更真實(shí),模擬訓(xùn)練系統(tǒng)的故障位置對(duì)用戶來說是不可預(yù)知的。
程序的主要流程如下:首先打開驅(qū)動(dòng)文件,然后根據(jù)指令調(diào)用硬件驅(qū)動(dòng)程序。為了讓程序?qū)崟r(shí)響應(yīng)傳動(dòng)軸(或滑動(dòng)架)的轉(zhuǎn)動(dòng),除全開、全關(guān)、模擬高低角限位器滑架松動(dòng)和模擬方向角限位器滑架松動(dòng)外,其他指令都設(shè)置while循環(huán),循環(huán)控制標(biāo)志可通過界面操作程序進(jìn)行設(shè)置。設(shè)置角限位器故障時(shí),需隨機(jī)生成故障信號(hào)的編號(hào),然后傳遞給驅(qū)動(dòng)程序。為防止驅(qū)動(dòng)調(diào)用程序獨(dú)占系統(tǒng)資源,每次響應(yīng)驅(qū)動(dòng)程序后,驅(qū)動(dòng)調(diào)用程序休眠0.5 ms,等待界面操作程序指令。指令執(zhí)行完畢,關(guān)閉驅(qū)動(dòng)文件,退出線程。
2.3 軟件操作界面
軟件界面采用QT技術(shù),方便在計(jì)算機(jī)上編程,編譯,然后在開發(fā)板上的嵌入式系統(tǒng)中運(yùn)行。程序運(yùn)行界面如圖5所示。系統(tǒng)能實(shí)現(xiàn)自檢、工作模擬和故障模擬3種功能。其中,(1)自檢中的“跑馬燈”是指指示燈依次點(diǎn)亮、熄滅,可用于確定指示燈序號(hào);(2)工作模擬和故障模擬又分高低角限位器和方向角限位器兩種情況。
程序采用信號(hào)槽機(jī)制,每個(gè)單選按鈕都能響應(yīng)鼠標(biāo)左鍵。當(dāng)某個(gè)按鈕被選中時(shí),先設(shè)置驅(qū)動(dòng)調(diào)用程序循環(huán)控制停止標(biāo)志,然后等待5 ms,等驅(qū)動(dòng)調(diào)用程序運(yùn)行完畢后,再設(shè)置循環(huán)控制啟動(dòng)標(biāo)志以及指令標(biāo)志,啟動(dòng)新線程,執(zhí)行驅(qū)動(dòng)調(diào)用程序。
圖5 軟件操作界面
3.1 場(chǎng)景設(shè)置
1)高低角限位器模擬裝置設(shè)置:如圖6(a)所示,高低角限位器滑架與1、3號(hào)銅箔接觸。1號(hào)銅箔與1號(hào)燈對(duì)應(yīng),3號(hào)銅箔與4號(hào)燈對(duì)應(yīng),3號(hào)燈接地。輸出指示燈點(diǎn)亮表示高低角限位器輸出插座相應(yīng)管腳接通車體地。因此,正常情況下,應(yīng)該是1、3、4號(hào)燈點(diǎn)亮。當(dāng)某根電線脫焊時(shí),對(duì)應(yīng)的燈無法點(diǎn)亮。同理,當(dāng)某個(gè)銅箔損壞時(shí),對(duì)應(yīng)的燈無法點(diǎn)亮。而當(dāng)滑架松動(dòng)時(shí),除接地?zé)敉?,其他燈由于不接地,都無法點(diǎn)亮。
2)方向角限位器模擬裝置設(shè)置:如圖6(b)所示,方向角限位器滑架與2、5號(hào)銅箔接觸。2號(hào)銅箔與2號(hào)燈對(duì)應(yīng),5號(hào)銅箔與6號(hào)燈對(duì)應(yīng),4號(hào)燈接地。輸出指示燈點(diǎn)亮表示方向角限位器輸出插座相應(yīng)管腳接通車體地。因此,正常情況下,應(yīng)該是2、4、6號(hào)燈點(diǎn)亮。當(dāng)某根電線脫焊時(shí),對(duì)應(yīng)的燈無法點(diǎn)亮。同理,當(dāng)某個(gè)銅箔損壞時(shí),對(duì)應(yīng)的燈無法點(diǎn)亮。而當(dāng)滑架松動(dòng)時(shí),除接地?zé)敉猓渌麩粲捎诓唤拥?,都無法點(diǎn)亮。
圖6 高低和方向角限位器模擬裝置導(dǎo)電盤狀態(tài)
3.2 模擬高低角限位器
1)正常情況:選中圖5中第2個(gè)選項(xiàng)卡中的“模擬高低角限位器”,結(jié)果如圖7(a)所示。此時(shí)1、3、4號(hào)燈亮,表示1號(hào)和4號(hào)端子接地,也就是滑動(dòng)架搭在1號(hào)和3號(hào)銅箔上,與圖6(a)吻合。
2)電線脫焊:選中圖5中第3個(gè)選項(xiàng)卡中的“電線脫焊”,結(jié)果如圖7(b)所示。此時(shí)1、4號(hào)燈亮,3號(hào)燈不亮,通過與3.2.1進(jìn)行對(duì)比,可以推斷地線脫焊。
3)銅箔損壞:選中圖5中第3個(gè)選項(xiàng)卡中的“銅箔損壞”,結(jié)果如圖7(c)所示。此時(shí)1、3號(hào)燈亮,4號(hào)燈不亮,通過與3.2.1進(jìn)行對(duì)比,可以推斷3號(hào)銅箔損壞。
4)滑架松動(dòng):選中圖5中第3個(gè)選項(xiàng)卡中的“滑架松動(dòng)”,結(jié)果如圖7(d)所示。此時(shí)除3號(hào)燈點(diǎn)亮外,其他指示燈不亮,表明1號(hào)和3號(hào)銅箔都沒有接地,這是滑架松動(dòng)的故障現(xiàn)象。此時(shí)如果轉(zhuǎn)動(dòng)滑架,仍然只有3號(hào)燈亮。
圖7 模擬高低角限位器時(shí),不同情況下指示燈狀態(tài)
3.3 模擬方向角限位器
1)正常情況:選中圖5中第2個(gè)選項(xiàng)卡中的“模擬方向角限位器”,結(jié)果如圖8(a)所示。此時(shí)2、4、6號(hào)燈亮,表示2號(hào)和6號(hào)端子接地,也就是滑動(dòng)架搭在2號(hào)和5號(hào)銅箔上,與圖6(b)吻合。
2)電線脫焊:選中圖5中第4個(gè)選項(xiàng)卡中的“電線脫焊”,結(jié)果如圖8(b)所示。此時(shí)4、6號(hào)燈亮,2號(hào)燈不亮,通過與3.3.1對(duì)比,可以推斷連接2號(hào)端子的電線脫焊。
3)銅箔損壞:選中圖5中第4個(gè)選項(xiàng)卡中的“銅箔損壞”,結(jié)果如圖8(c)所示。此時(shí)2、4號(hào)燈亮,6號(hào)燈不亮,通過與3.3.1進(jìn)行對(duì)比,可以推斷5號(hào)銅箔損壞。
4)滑架松動(dòng):選中圖5中第4個(gè)選項(xiàng)卡中的“滑架松動(dòng)”,結(jié)果如圖8(d)所示。此時(shí)除4號(hào)燈點(diǎn)亮外,其他指示燈不亮,表明2號(hào)和5號(hào)銅箔都沒有接地。這是由于滑架松動(dòng),無法可靠接觸銅箔造成的。此時(shí)如果轉(zhuǎn)動(dòng)滑架,仍然只有4號(hào)燈亮。
圖8 模擬方向角限位器時(shí),不同情況下指示燈狀態(tài)
本文設(shè)計(jì)了一種基于ARM的某型火箭炮模擬訓(xùn)練系統(tǒng),給出了硬件和軟件的設(shè)計(jì)思路。該系統(tǒng)采用了QT和Linux多線程編程技術(shù),實(shí)現(xiàn)了對(duì)高低和方向兩種角限位器的模擬。結(jié)果表明,該系統(tǒng)不僅能模擬兩種角限位器正常工作情況,還能模擬它們的常見故障狀態(tài)。模擬角限位器工作過程有助于分析它的工作原理,提高教學(xué)效果。模擬故障現(xiàn)象,對(duì)分析故障原因和排除故障都有重要的指導(dǎo)意義。
[1] 張 姝,王 濱,鞠洪濤,等. 基于ARM9和CAN總線的TIG焊機(jī)器人示教盒設(shè)計(jì) [J]. 電焊機(jī),2012,42 (6):102-104.
[2] 閆廣續(xù),袁縱橫,周小林,等. 基于ARM嵌入式Linux的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì) [J]. 計(jì)算機(jī)測(cè)量與控制,2015,23 (5):1724-1727.
[3] 曾明如,羅 浩,徐小勇,等. 基于ARM和nRF905組網(wǎng)的智能家居系統(tǒng)設(shè)計(jì) [J]. 計(jì)算機(jī)測(cè)量與控制,2015,23 (4):1418-1420.
[4] 王文特. 基于FPGA和ARM的分布式光纖振動(dòng)傳感系統(tǒng)信號(hào)處理模塊的研制 [D]. 南京:東南大學(xué),2015.
[5] 茍志堅(jiān). 基于ARM的遠(yuǎn)程視頻監(jiān)控系統(tǒng)的研究與設(shè)計(jì) [D]. 長(zhǎng)沙:湖南大學(xué),2014.
[6] 趙亞齊. 基于ARM的嵌入式網(wǎng)絡(luò)收音機(jī)的設(shè)計(jì) [D]. 鄭州:鄭州大學(xué),2013.
[7] 王 浩,陳邦瓊. 嵌入式Qt開發(fā)項(xiàng)目教程 [M]. 北京:中國(guó)水利水電出版社,2014.
[8] 陳冠軍. 零點(diǎn)起飛學(xué)Linux C編程 [M]. 北京:清華大學(xué)出版社,2013.
Design of Some Rocket Launcher Angle Retainer Simulator Based on ARM
Wu Dimin, Liu Qianshou, Li Jun, Zhu Yunbo
(Wuhan Mechanical Technology College, Wuhan 430075, China)
An angle retainer training simulator of some rocket launcher is designed based on ARM to reduce equipment depreciation, and to display operating principle and common fault. The TX2440A development board is adopted to design simulators of altitude and direction angle retainer, as well as an I/O control and display circuit. Moreover, the Linux C++ multithread programming technology and the QT technology are utilized to develop hardware driver, driver caller, and operation interface. Consequently, operating principle and common fault simulation of both angle retainers are realized. Experiments show that both the work state and the fault phenomenon of those angle retainers can be revealed precisely in real time, providing a reliable platform for teaching and training.
ARM; QT; multithread programming; training simulation; failure setting
2017-01-13;
2017-02-21。
吳第旻(1982-),湖南華容人,博士,講師,主要從事某型火箭炮武器系統(tǒng)教學(xué)方向的研究。
1671-4598(2017)07-0140-03
10.16526/j.cnki.11-4762/tp.2017.07.035
TP23
A