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