,
(海軍工程大學(xué) 電氣與信息工程學(xué)院 武漢 430033)
傳統(tǒng)消磁系統(tǒng)認(rèn)為艦船固定磁場在一定范圍內(nèi)是不發(fā)生變化的,所以只采用開環(huán)控制方式,即只給出一個固定的電流來補(bǔ)償固定磁場。但是,實(shí)踐證明,固定磁場可以隨著地球磁場的長期作用、海浪對艦船的沖擊、艦船上設(shè)備的改變、武器發(fā)射等情況發(fā)生變化。因此,隨著磁性水雷的精度越來越高,國外磁性探潛設(shè)備對潛艇搜尋能力的提高,傳統(tǒng)的開環(huán)消磁系統(tǒng)已不能滿足艦船磁場隱身的要求。閉環(huán)消磁系統(tǒng)能實(shí)時測量艦船固定磁場的變化,并通過測得的變化量實(shí)時改變閉環(huán)消磁系統(tǒng)中的電流大小,以達(dá)到補(bǔ)償固定磁場的目的。這樣可以進(jìn)一步減小艦船磁場,從而使磁性水雷失效,或者超出磁性探潛設(shè)備對潛艇的搜尋范圍。本文對閉環(huán)消磁系統(tǒng)的核心部分閉環(huán)消磁電流控制儀進(jìn)行開發(fā)和調(diào)試。
系統(tǒng)的硬件組成見圖1。
圖1 硬件組成
本文采用ARM2748作為閉環(huán)消磁電流控制儀的主控芯片,用周立功公司生產(chǎn)的SmartARM2400工控開發(fā)平臺進(jìn)行開發(fā)。以太網(wǎng)訪問控制器(MAC)已經(jīng)在LPC2478中集成,是一個功能齊全的10/100 Mb/s以太網(wǎng)MAC。以太網(wǎng)PHY收發(fā)器采用KSZ8041NL單芯片以太網(wǎng)物理層收發(fā)器,它具有功耗低、體積小、波形穩(wěn)定、價格便宜等特點(diǎn)。片外存儲器采用16位存儲器(NORFlash)SST39VF1601,其大小為1 Mb[1]。
閉環(huán)消磁電流控制儀主要完成3個功能:采集內(nèi)部磁場、計(jì)算外部磁場和計(jì)算外部補(bǔ)償電流。其主要工作流程如下。
首先從測磁儀讀取磁場值,計(jì)算出潛艇內(nèi)部磁場變化量,通過內(nèi)外磁場換算法計(jì)算出外部磁場變化量;然后算出外部補(bǔ)償電流的變化量,將該變化量發(fā)送給數(shù)控電源,數(shù)控電源輸出對應(yīng)的電流,達(dá)到補(bǔ)償磁場變化量的目的。
本文采用uC/OS-Ⅱ嵌入式操作系統(tǒng)進(jìn)行軟件開發(fā)。
實(shí)驗(yàn)使用的是uCOS-ⅡV2.52版本,其嵌入式實(shí)時操作系統(tǒng)與硬件的關(guān)系見圖2。
圖2 uC/OS-Ⅱ體系結(jié)構(gòu)
通過裁剪之后的uC/OS-Ⅱ微小內(nèi)核源代碼分為3部分[2]。
1)內(nèi)核代碼。內(nèi)核代碼僅提供了4個微小內(nèi)核,分別位于sourceSOURCE1、sourceSOURCE2、sourceSOURCE3和sourceSOURCE4。它們的功能依次增強(qiáng),代碼也依次增大。
2)移植代碼。將uC/OS-Ⅱ移植到LPC2478處理器上,需要修改四個與ARM體系有關(guān)的文件。分別為OS_CPU_C.C,OS_CPU_a.S, OS_CPU.H和IRQ.INC。
①OS_CPU_C.C:移植代碼C語言部分;
②OS_CPU_a.S:移植代碼匯編語言部分;
③OS_CPU.H:移植代碼頭文件;
④RQ.INC:移植代碼與芯片無關(guān)的中斷處理接口程序。
3)配置文件。配置文件是每個uC/OS-Ⅱ程序必備的文件,而且不同的程序一般不一樣,但大小基本上相同。配置文件分別為INCLUDES.H和OS_CFG.H。
①INCLUDES.H:內(nèi)核需要的頭文件,對于特定的移植,一般不需要改變;
②OS_CFG.H:內(nèi)核配置的頭文件,一般需要根據(jù)程序的需求修改其常量的內(nèi)容。
uC/OS-Ⅱ是實(shí)時多任務(wù)操作系統(tǒng),可以獨(dú)立并行執(zhí)行多個任務(wù)。通常將獨(dú)立且并行執(zhí)行的程序稱為任務(wù),也就是說任務(wù)是可以被分割為獨(dú)立的且可并行執(zhí)行的基本邏輯單位程序。一個任務(wù)的程序是順序執(zhí)行的,而不同任務(wù)的程序卻是并行執(zhí)行的。因此要把一個程序稱為任務(wù),必須滿足兩個條件:獨(dú)立、并行執(zhí)行。
獨(dú)立的具體含義是指任務(wù)不能彼此直接調(diào)用,也不能直接進(jìn)行數(shù)據(jù)交換。
如圖3所示,task0和task1之間沒有相互直接調(diào)用,之間的數(shù)據(jù)交換是通過內(nèi)核來完成的,這時可以把task0和task1作為任務(wù)。任務(wù)在宏觀上是并行執(zhí)行的,一個任務(wù)需要另一個任務(wù)協(xié)助時,需將自己的請求通過系統(tǒng)調(diào)用提交給內(nèi)核,另一個任務(wù)可以通過系統(tǒng)調(diào)用從內(nèi)核獲得這些請求,然后完成這個請求。
圖3 獨(dú)立的任務(wù)結(jié)構(gòu)
圖4 任務(wù)的并行執(zhí)行
見圖4,如果左側(cè)圖中每個任務(wù)都存在一個CPU,則所有的任務(wù)都可以實(shí)現(xiàn)并行處理,但這是不可能實(shí)現(xiàn)的。真實(shí)的情況如右側(cè)圖所示,CPU只有一個,但可以認(rèn)為uC/OS-Ⅱ?yàn)槊總€任務(wù)虛擬了一個CPU。因此在對多任務(wù)進(jìn)行編程時,應(yīng)該時刻注意這個細(xì)節(jié)。
綜上所述,任務(wù)是指程序員編寫的應(yīng)用軟件程序,它與以往編寫的程序沒有太大的區(qū)別,但它是在內(nèi)核下被分割為獨(dú)立且可并行執(zhí)行的基本邏輯單位的程序,這是它的最大特點(diǎn)。
由于uC/OS-Ⅱ是多任務(wù)操作系統(tǒng),因此需要建立幾個關(guān)鍵的任務(wù)。
1)建立兩個按鍵任務(wù),分別是Start_Stop和Rerserve_Data。其中開始和暫停功能在Start_Stop任務(wù)中描述。
2)將接收的數(shù)據(jù)保存到片外存儲器NORFlah中的功能在Rerserve_Data任務(wù)中實(shí)現(xiàn)。
3)建立一個UDP接收數(shù)據(jù)的任務(wù)UDP_test,這個任務(wù)的功能是采集磁場,即等待磁場數(shù)據(jù)通過以太網(wǎng)傳輸過來,然后對數(shù)據(jù)進(jìn)行相應(yīng)的操作,以便下一步將數(shù)據(jù)寫入NORFlash中。
4)建立一個初始化任務(wù),分別對ARM的IP地址、端口號,UDP協(xié)議,ARP協(xié)議,以太網(wǎng)底層功能等進(jìn)行初始化。
5)建立一個計(jì)算補(bǔ)償電流的任務(wù)Count_I,這個任務(wù)的功能是計(jì)算外部磁場的變化量和計(jì)算外部補(bǔ)償電流的變化量。
采用文獻(xiàn)[3]所介紹的內(nèi)外磁場換算算法來計(jì)算外部磁場變化量,用到的公式為[3]
SF=(ΔNTΔN)-1ΔNT(ΔHn)h+1
(1)
(△Hw)h+1=△W×SF
(2)
式中:△N——內(nèi)部磁場變化量矩陣,這個矩陣的數(shù)據(jù)已經(jīng)存入磁場數(shù)據(jù)庫中;
△W——外部磁場變化量矩陣,已經(jīng)存入磁場數(shù)據(jù)庫中;
△Hn——單次內(nèi)部磁場變化量矩陣,可以通過改變潛艇磁場獲得;
△Hw——單次外部磁場變化量矩陣,就是最后需要的數(shù)據(jù)。
計(jì)算外部補(bǔ)償電流變化量時,用到的公式為
G×I=-b
(3)
式中:G——線圈效率矩陣;
I——線圈電流矩陣;
b——外部各個測量點(diǎn)的磁場矩陣。
由于測量點(diǎn)數(shù)大于可以通的電流數(shù),相當(dāng)于求解一個不相容的方程組。因此采用矩陣形式的最小二乘法來求解[4]。
設(shè)已給不相容實(shí)系數(shù)線性方程組(即無解的線性方程組)
A×X=B
(4)
那么它的最小二乘解所滿足的代數(shù)方程為
AT×A×X=AT×B
(5)
式(5)是一個線性方程組,系數(shù)矩陣為ATA,常數(shù)項(xiàng)為ATB。
將式(3)代入式(4),然后按照式(5)計(jì)算,就可以得到各個線圈中應(yīng)該通的電流大小。計(jì)算外部補(bǔ)償電流的變化量時,只需把式(1) 的△Hn代入式(3)中的b即可。
具體軟件流程見圖5。
線圈效率已經(jīng)測量出來。因?yàn)槠獯鎯ζ?NORFlash)SST39VF1601是16位存儲器,因此在寫入數(shù)據(jù)時要注意存儲地址及數(shù)據(jù)的存儲位置。比如,LPC2478是小端存儲器系統(tǒng),16位數(shù)據(jù)的高8位存儲在高地址,低8位存儲在低地址。
經(jīng)過實(shí)際操作,磁場數(shù)據(jù)的采集和存儲可以很順利地完成,外部補(bǔ)償電流也能實(shí)時輸出,并且可以實(shí)時根據(jù)外部磁場的變化,外部補(bǔ)償電流實(shí)時發(fā)生變化,實(shí)時性基本達(dá)到了要求。補(bǔ)償后的磁場也在很小的范圍內(nèi),達(dá)到了閉環(huán)消磁的技術(shù)要求。
圖5 閉環(huán)消磁過程流程
實(shí)踐證明,系統(tǒng)實(shí)時性達(dá)到了要求,補(bǔ)償誤差都在10%以內(nèi)。而且加入了uC/OS-Ⅱ操作系統(tǒng),使得軟件編程簡化,程序模塊化和可視化程度增強(qiáng)。后期準(zhǔn)備加入液晶顯示模塊,可以很方便地實(shí)時觀察測得的磁場數(shù)據(jù)以及補(bǔ)償后的效果等。
[1] 周立功.深入淺出ARM7-LPC2400[M].上冊.廣州:廣州致遠(yuǎn)電子有限公司,2008.
[2] 周立功.uC/OS-Ⅱ微小內(nèi)核分析與程序設(shè)計(jì)-基于LPC2400[M].廣州:廣州致遠(yuǎn)電子有限公司,2008.
[3] 王 鯨,劉勝道,蘇廣東.一種潛艇內(nèi)外磁場換算算法的實(shí)驗(yàn)驗(yàn)證[J].海軍工程大學(xué)學(xué)報,2010,22(1):83-86.
[4] 羅家洪,方衛(wèi)東.矩陣分析引論[M].4版.廣州:華南理工大學(xué)出版社,2006.