孔祥通,王春平,孫書鷹,劉江義
(軍械工程學(xué)院,河北 石家莊 050003)
CAN總線作為國際上應(yīng)用最為廣泛的現(xiàn)場總線之一,具有可靠性高、通信實時性好以及可擴展性強等諸多特點,在工業(yè)現(xiàn)場控制、信號采集系統(tǒng)等眾多領(lǐng)域中得到了廣泛應(yīng)用[1]?;鹂叵到y(tǒng)是控制火炮瞄準和發(fā)射的系統(tǒng),火控計算機是火控系統(tǒng)的核心,在完成火控解算進而引導(dǎo)高炮射擊時具有重要作用。由于火控系統(tǒng)信號眾多,狀態(tài)復(fù)雜,對其關(guān)鍵信號采集測試就顯得尤為重要[2]。
基于以上原因,設(shè)計了一種基于CAN總線的某型高炮火控裝備信號采集監(jiān)控設(shè)備,該設(shè)備具有模擬、數(shù)字信號的實時、定時采集功能,通過CAN網(wǎng)絡(luò),可完成多節(jié)點信號采集。
系統(tǒng)采用以ARM Cortex-M4為內(nèi)核的新型STM32F4微控制器作為控制核心,配以信號調(diào)理電路、通信接口電路等外設(shè)電路實現(xiàn)。系統(tǒng)工作原理為:STM32F407為控制核心,主要完成外設(shè)擴展和數(shù)據(jù)處理、通信功能。對于模擬量的采集,需要將信號首先經(jīng)調(diào)理電路處理后由專用A/D轉(zhuǎn)換芯片處理后送入MCU內(nèi);數(shù)字信號則經(jīng)電平轉(zhuǎn)換后直接輸入MCU的GPIO,采集節(jié)點和方式由軟件統(tǒng)一管理。CAN模塊用于組建CAN網(wǎng)絡(luò),便于實現(xiàn)整網(wǎng)數(shù)據(jù)節(jié)點的采集處理。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 信號采集監(jiān)控系統(tǒng)硬件結(jié)構(gòu)圖
STM32F4微控制器是由意法半導(dǎo)體生產(chǎn)的基于ARM Cortex-M4內(nèi)核的新型低成本微控制器,性能優(yōu)越[3]。下面主要說明選用此型號MCU的原因:
(1)內(nèi)核架構(gòu)先進,性能優(yōu)越。此型號MCU特有的ART技術(shù)使得程序零等待執(zhí)行,提高了執(zhí)行效率,主頻為168 MHz且可適當(dāng)超頻,具有較高的運算能力及數(shù)據(jù)處理功能。
(2)片內(nèi)多達1MB Flash,可以實現(xiàn)在不加外部存儲器的情況下實現(xiàn)大量數(shù)據(jù)的存儲,降低了開發(fā)成本。
(3)具有日歷功能的32位實時時鐘(RTC),計時精度達到1s,在系統(tǒng)工作時可實時得到數(shù)據(jù)采集時間,通過調(diào)用實時時鐘中斷,可實現(xiàn)定時采集功能。
(4)通信接口豐富,可方便完成功能擴展。STM32F4內(nèi)部集成CAN控制器,通過外接相關(guān)的CAN收發(fā)芯片可方便實現(xiàn)CAN網(wǎng)絡(luò)通信。此外,其具有高速串口、SPI等通信接口,支持多種通信方式及外設(shè)擴展。
模擬信號采集電路主要由信號調(diào)理電路和A/D轉(zhuǎn)換電路兩部分組成。信號調(diào)理電路完成模擬信號的預(yù)處理,將輸入信號調(diào)理按比例放大(縮?。榉螦/D轉(zhuǎn)換處理范圍的信號;A/D轉(zhuǎn)換電路將調(diào)理后的待采集模擬信號經(jīng)A/D轉(zhuǎn)換芯片轉(zhuǎn)換為數(shù)字信號后經(jīng)SPI總線送入MCU內(nèi),供MCU處理。
1.2.1 信號調(diào)理電路
由于待采集模擬信號不一定符合A/D轉(zhuǎn)換芯片所能夠處理的電壓范圍,因此需要對其調(diào)理轉(zhuǎn)變?yōu)榭商幚淼男盘?。圖2為模擬信號調(diào)理電路,它將設(shè)備輸出的模擬信號進行濾波及放大處理。圖中電容C50用來濾除一些來自地端的高頻串?dāng)_;R37為電位器,可用于靈活調(diào)整信號輸出大??;2V穩(wěn)壓二極管可用于保護運放LF412不被損壞。另外,LF412使用雙電壓模式,具有較高的轉(zhuǎn)換速率,較為適合完成某些變化速率較快的信號處理工作。
圖2 信號調(diào)理電路原理圖
1.2.2 A/D轉(zhuǎn)換電路
MAX1270是MAXIM公司生成的8通道、12位串行高速A/D轉(zhuǎn)換芯片,與MCU通過SPI(三線制)方式通信,高達110 kS/s采樣率[4],通道選擇可通過軟件編程實現(xiàn),適合完成設(shè)計需要任務(wù)。使用時,首先對芯片及通信端口進行初始化,然后通過unsigned short SPI1_SendByte(u8 channel_number)函數(shù)發(fā)送其通道代碼,返回值即此通道A/D轉(zhuǎn)換數(shù)值,channel_number 為:0x88、0x98、0xa8、0xb8、0xc8、0xd8、0xe8、0xf8,依次表示0~7號通道。
控制器局域網(wǎng)CAN能夠以最小的CPU負荷來高效處理大量收到的報文,可用軟件配置報文發(fā)送的優(yōu)先級特性。由于此MCU自帶有CAN總線控制器,外圍只需要接一塊總線接口芯片即可實現(xiàn)CAN總線功能。圖2為CAN總線收發(fā)器65HVD290接口電路,CAN總線的物理連接分為CANH和CANL兩根線,以差分形式輸出。該器件具有較強的抗寬范圍共模干擾、電磁干擾的能力,可用于高干擾環(huán)境下[5]。綜合通信距離和性能,CAN網(wǎng)絡(luò)通信波特率設(shè)為500kB。
CAN協(xié)議只是定義了物理層和數(shù)據(jù)鏈路層,這樣就為根據(jù)實際需要制定與系統(tǒng)適應(yīng)的CAN協(xié)議提供方便[6-7]?,F(xiàn)在較為成功的定制協(xié)議主要有CAN-open協(xié)議和DeviceNet協(xié)議,但其主要應(yīng)用于大型系統(tǒng),對本系統(tǒng)不適合[8]。系統(tǒng)傳遞的信息主要有模擬信號采集值、數(shù)字信號采集值以及時間信息,因此采用自定義的CAN擴展協(xié)議格式,一個數(shù)據(jù)幀共31字節(jié)。具體含義及規(guī)定如表1所示。
系統(tǒng)采用的是CAN標(biāo)準幀格式,ID為11位。表2為ID功能分配表。
表1 CAN擴展協(xié)議格式
表2 ID功能分配表
使用Keil開發(fā)平臺,利用C語言進行源程序開發(fā),通過J-Link進行下載調(diào)試,ST公司提供大量庫函數(shù),開發(fā)簡單方便[9]。程序采用模塊化結(jié)構(gòu)開發(fā),各模塊相對獨立,包括系統(tǒng)初始化、模擬數(shù)據(jù)采集模塊、數(shù)字信號采集模塊、CAN節(jié)點初始化模塊、報文發(fā)送模塊、報文接收模塊等,具有易于維護、簡化代碼的優(yōu)點。
系統(tǒng)上電后,首先完成系統(tǒng)初始化,如:時鐘初始化、A/D轉(zhuǎn)換初始化、通信接口(包括SPI、串口、CAN等)初始化,然后根據(jù)上位機指示完成實時時間設(shè)置,從而可以實現(xiàn)實時采集和定時采集功能。
2.2.1 數(shù)據(jù)采集軟件設(shè)計
數(shù)據(jù)采集分為模擬量和數(shù)字量兩部分,模擬量采集主要由MCU通過SPI接口控制A/D轉(zhuǎn)換芯片MAX1270完成;數(shù)字量的采集通過STM32的輸入引腳進行實時狀態(tài)捕獲實現(xiàn)。
模擬量采集時,首先對ADC進行初始化,確定采樣時間設(shè)定、轉(zhuǎn)換時鐘設(shè)定等;然后啟動ADC,對經(jīng)過調(diào)理信號進行采集,采樣結(jié)果為8次連續(xù)采樣的平均值;A/D轉(zhuǎn)換結(jié)束后,轉(zhuǎn)入相應(yīng)服務(wù)程序。其信號采集流程如圖4所示。
圖3 CAN接口電路
對于數(shù)字信號采集電路設(shè)計時,要注意將被測信號先進行同步及電平轉(zhuǎn)換,即接入一片74HCT245,然后將此管腳對應(yīng)的輸出信號接至MCU數(shù)據(jù)手冊中標(biāo)注FT(容忍5V)的管腳上。
在完成采集后,需要調(diào)用CanMessage_Assemble()函數(shù)將數(shù)據(jù)組合為符合通信協(xié)議的數(shù)據(jù)幀。
2.2.2 CAN軟件設(shè)計
CAN總線部分的程序主要包括初始化部分、接收子程序、發(fā)送子程序3個部分。初始化程序主要包括裝載標(biāo)識符和屏蔽碼及設(shè)置波特率等工作[10]。數(shù)據(jù)發(fā)送時,首先將待發(fā)送數(shù)據(jù)寫入發(fā)送緩沖器,待發(fā)送請求得到回應(yīng)后即可完成數(shù)據(jù)發(fā)送。數(shù)據(jù)接收時首先檢查是否有接收中斷;若有,則調(diào)用中斷,進而讀出接收緩沖器中數(shù)據(jù)并存儲,等待下一步處理。數(shù)據(jù)發(fā)送和接收流程如圖5所示。
圖4 模擬數(shù)據(jù)采集流程
采用4個節(jié)點對系統(tǒng)進行實驗,主控節(jié)點設(shè)為節(jié)點1,每個節(jié)點對應(yīng)一臺裝備。通過主控節(jié)點發(fā)送被檢測的設(shè)備節(jié)點號及命令,預(yù)設(shè)被采集的設(shè)備模擬通道采用30V測試源,數(shù)字信號狀態(tài)均為高電平,時間為當(dāng)前系統(tǒng)時間,測試程序如圖5所示。
圖5 CAN發(fā)送和接收流程圖
為對系統(tǒng)性能有更全面的了解,對于30V穩(wěn)壓電源為輸入測試源,結(jié)果如表3所示??梢钥闯?,采集值最小為29.93V,平均值為29.956V,最大誤差為0.23%,采用更多次測量結(jié)果也基本符合上述規(guī)律。數(shù)字信號高低電平采集結(jié)果經(jīng)測試也均為正確值。
表3 30V測試源實測數(shù)據(jù)
介紹了基于CAN總線的某裝備嵌入式監(jiān)控采集系統(tǒng),具有可靠性高,通信網(wǎng)絡(luò)結(jié)構(gòu)簡單,適用性較好等優(yōu)點,充分利用了現(xiàn)場總線的技術(shù)優(yōu)勢。設(shè)計采用了性能優(yōu)越的ARM內(nèi)核和STM32F4芯片,極大提高了系統(tǒng)的性能和可擴展性。經(jīng)實踐表明,整個系統(tǒng)工作穩(wěn)定,實時性高,節(jié)點和功能易于擴展,可有效實現(xiàn)某型裝備重點信號的監(jiān)控采集功能。
[1]韓鑫,鮑可進.CAN總線網(wǎng)絡(luò)層協(xié)議棧開發(fā)測試[J].計算機工程,2011,37(15):232.
[2]周建平.火控計算機多功能板設(shè)計與實現(xiàn)[D].西安:電子科技大學(xué),2008:1-5.
[3]意法半導(dǎo)體.STM32F4參考手冊[Z].http://www.st.com/,2011:1-3.
[4]Maxim Inc.MAX1270/MAX1271 Datasheet[R].www.maxim-ic.com/,2004:1-3.
[5]姜飛.基于CAN通信適配器硬件設(shè)計與軟件驅(qū)動編程[J].計算機測量與控制,2011,19(8):2033-2034.
[6]李霞,蔡啟仲,陳文輝.基于CAN的嵌入式PLC和監(jiān)控系統(tǒng)通信設(shè)計[J].儀表技術(shù)與傳感器,2011(10):41-42.
[7]李軍民,祝紅軍,夏添.基于CAN總線的嵌入式Linux網(wǎng)關(guān)設(shè)計[J].西華大學(xué)學(xué)報:自然科學(xué)版,2007,26(6):4-6.
[8]王泓.CAN總線的消息機制[J].中國測試技術(shù),2006,32(1):130-131.
[9]孫書鷹,陳志佳,寇超.新一代嵌入式微處理器STM32F103開發(fā)與應(yīng)用[J].微計算機應(yīng)用,2010,31(12):59-61.
[10]喻金錢,喻斌.STM32F系列ARM Corex-M3核微控制器開發(fā)與應(yīng)用[M].北京:清華大學(xué)出版社,2011:400-427.