, ,
(1.中國海洋大學(xué)工程學(xué)院,山東 青島 266100;2.煙臺森科特智能儀器有限公司,山東 煙臺 264100)
基于CAN總線的海洋水文氣象觀測系統(tǒng)設(shè)計
綦聲波1,沈翔1,于敬東2
(1.中國海洋大學(xué)工程學(xué)院,山東 青島 266100;2.煙臺森科特智能儀器有限公司,山東 煙臺 264100)
CAN[1]是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò),它的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò)。以往的氣象或水文儀器多采取傳感器接口和中心控制器直接連接的方式。對于多參數(shù)系統(tǒng),隨著參數(shù)的增多,數(shù)據(jù)量的增大,這種封閉的集中控制方式的弊端逐漸顯現(xiàn),可維護(hù)性變差,無法滿足正常穩(wěn)定高效的工作要求。為此,采用將傳感器的連接和數(shù)據(jù)處理基于CAN總線進(jìn)行模塊化處理,不同的傳感器具有相同的架構(gòu)和CAN接口,并規(guī)劃了具有通用性的CAN總線應(yīng)用層協(xié)議[2]。在軟件開發(fā)方面,結(jié)合系統(tǒng)的硬件特點,設(shè)計了可移植性強(qiáng)的軟件層架構(gòu),并且基于μC/OSⅡ操作系統(tǒng)和狀態(tài)機(jī)完成系統(tǒng)的開發(fā)。
1.1 系統(tǒng)設(shè)備總體規(guī)劃
系統(tǒng)從整體上看,分為現(xiàn)場采集系統(tǒng)和岸站接收系統(tǒng)2部分。系統(tǒng)所涉及的傳感器分為氣象部分和水文部分,包括風(fēng)速風(fēng)向傳感器、溫濕度傳感器、氣壓傳感器,水位傳感器、海流傳感器、波浪傳感器和溫鹽度傳感器等,檢測要素包括風(fēng)速和風(fēng)向、空氣溫濕度、大氣壓、特定水深的流速和流向、波浪參數(shù)及特定水深的溫度和鹽度等。
圖1虛線框內(nèi)為主控模塊和傳感器模塊的CAN總線系統(tǒng)結(jié)構(gòu),其節(jié)點[3]分為2類:一類是主控處理模塊節(jié)點,另一類是傳感器模塊節(jié)點。前者完成整個系統(tǒng)的監(jiān)測控制、狀態(tài)顯示、參數(shù)設(shè)置以及組態(tài);后者采集各傳感器的實時信息,并根據(jù)所得信息發(fā)送給控制模塊。兩者共享的公共資源只有CAN總線,減小了系統(tǒng)的耦合性??紤]到功能擴(kuò)展,每個傳感器以單獨的模塊掛載在CAN總線上,擁有自己獨立的ID號。
圖1 系統(tǒng)設(shè)備總體規(guī)劃
在硬件組成方面,系統(tǒng)采用了ST公司的具有Cortex-M3內(nèi)核的STM32F103[4]作為傳感器處理模塊和主控模塊的主控芯片,芯片的串口、12位ADC、CAN和SPI總線等滿足了傳感器和外接設(shè)備的應(yīng)用需求。同時芯片內(nèi)部擁有CAN控制器,自帶bx-CAN協(xié)議,它支持CAN協(xié)議2.0A和2.0B,以最小的CPU負(fù)荷來高效處理大量收到的報文,也支持報文發(fā)送的優(yōu)先級要求(優(yōu)先級特性可軟件配置),為系統(tǒng)設(shè)計省去了復(fù)雜的電路設(shè)計。
1.2 傳感器模塊硬件設(shè)計
傳感器模塊,其特點是只需要將數(shù)據(jù)處理電路根據(jù)傳感器的數(shù)據(jù)類型,設(shè)計相應(yīng)的處理電路,其他硬件設(shè)計保持不變。時鐘芯片PCF8563的設(shè)計是為了提供數(shù)據(jù)上傳的時間節(jié)點,保證數(shù)據(jù)的實時性。在一個由CAN總線構(gòu)成的單一網(wǎng)絡(luò)中,理論上可以掛接無數(shù)個節(jié)點,但在實際應(yīng)用中,節(jié)點數(shù)目受網(wǎng)絡(luò)硬件的電氣特性所限制,系統(tǒng)中使用Philips PCA82C250作為CAN收發(fā)器,同一網(wǎng)絡(luò)中允許掛接110個節(jié)點。
由于每個傳感器在與 CAN 總線相連時都采用了統(tǒng)一的標(biāo)準(zhǔn)和相同的方式,所以在系統(tǒng)看來,任何一個傳感器都是一個節(jié)點,沒有什么不同。每個節(jié)點向總線發(fā)送的數(shù)據(jù)中包含著它的屬性,主控模塊通過這些數(shù)據(jù)就可以判斷是什么類型的傳感器。較之傳統(tǒng)的傳感器專用接口的設(shè)計,系統(tǒng)的設(shè)計有很強(qiáng)的可替換性。傳感器模塊化設(shè)計如圖2所示。
圖2 傳感器模塊化設(shè)計
1.3 主控模塊硬件設(shè)計
主控模塊設(shè)計如圖3所示。SD卡作為存儲傳感器數(shù)據(jù)的存儲設(shè)備;MCGS顯示屏用于傳感器數(shù)據(jù)的實時顯示和歷史數(shù)據(jù)的查詢;GPS模塊提供精確的時間信息用于時間校準(zhǔn);打印機(jī)用于歷史數(shù)據(jù)的打印讀??;GPRS模塊進(jìn)行數(shù)據(jù)遠(yuǎn)程傳輸和報警。主控模塊與傳感器模塊通過CAN總線聯(lián)系在一起,這樣主控模塊就對傳感器模塊起到了調(diào)度和監(jiān)控的作用。
圖3 主控模塊設(shè)計
參考基于CAN總線的工業(yè)應(yīng)用層協(xié)議,根據(jù)海洋水文氣象觀測系統(tǒng)的實際情況,制定了開放式的CAN應(yīng)用層協(xié)議,采用CAN總線架構(gòu)的海洋水文氣象觀測系統(tǒng)和類似的傳感器節(jié)點通訊網(wǎng)絡(luò),都可以參考這一協(xié)議。
CAN總線的數(shù)據(jù)幀[5]類型分為標(biāo)準(zhǔn)幀和擴(kuò)展幀,標(biāo)準(zhǔn)幀的長度為11位,相當(dāng)于擴(kuò)展幀基本ID,最高位是ID28,最低位是ID18,這些位按照由高到低的順序發(fā)送;擴(kuò)展幀分為11位的基本ID(定義擴(kuò)展幀的基本優(yōu)先權(quán))和18位的擴(kuò)展ID。
CAN總線的數(shù)據(jù)幀結(jié)構(gòu)如圖4所示。
圖4 數(shù)據(jù)幀組成
圖4中,SOF(幀起始)、CRC場及ACK(應(yīng)答場)和幀結(jié)束等,都是由CAN的底層協(xié)議來完成的,不需要用戶的干預(yù);而仲裁場、控制場和數(shù)據(jù)場則是與用戶的應(yīng)用息息相關(guān)的。在報文格式定義中,重點考慮的一個方面是信息標(biāo)識符(ID)的分配和定義,因為標(biāo)識符是唯一標(biāo)識該網(wǎng)絡(luò)設(shè)備的類型和在通訊網(wǎng)絡(luò)中位置的識別碼。協(xié)議通過標(biāo)識符來區(qū)分通訊數(shù)據(jù)的不同功能,并反映出通訊數(shù)據(jù)的優(yōu)先級、信息源地址(身份ID)和信息目的地址[6]。合理、高效的信息標(biāo)識符ID分配方案是充分發(fā)揮CAN總線性能的前提條件。
優(yōu)先級的安排可避免傳感器模塊數(shù)據(jù)發(fā)送沖突,由于擴(kuò)展幀基本ID的高7位不能全為隱形(禁止設(shè)定ID=1111111XXXX),所以定義0x00的優(yōu)先級最高,0x1E的優(yōu)先級最低。優(yōu)先級高的,優(yōu)先獲得CAN總線的控制權(quán),廣播幀的優(yōu)先級定義為0x1E。傳感器模塊根據(jù)氣象參數(shù)的特點,合理分配各個數(shù)據(jù)的傳送時間和優(yōu)先級,采樣時間短的優(yōu)先級越高,同理,數(shù)據(jù)波動性小的采樣優(yōu)先級低。
源節(jié)點編號和目的節(jié)點編號,在傳輸過程中通過對這2個ID的查詢,來確定數(shù)據(jù)的來源和目的地。節(jié)點編號的長度可以根據(jù)設(shè)備掛載的情況來設(shè)計,在系統(tǒng)中采用5位ID節(jié)點編號,范圍在0x00到0x1F之間,主控模塊的節(jié)點編號為0x00,各個傳感器的編號依次排列。這些節(jié)點編號就可以作為識別主控模塊和各個傳感器模塊的身份ID,本協(xié)議中最多可以掛載的傳感器模塊為16個,基本滿足了對于現(xiàn)有觀測的需求和功能擴(kuò)展的要求。
功能碼是為軟件實現(xiàn)服務(wù)的,依據(jù)數(shù)據(jù)傳輸?shù)念愋筒煌瑒澐郑?x00握手(主控模塊判斷節(jié)點處是否有傳感器模塊掛載);0x01瞬時數(shù)據(jù)上傳(根據(jù)傳感器數(shù)據(jù)特性設(shè)定時間節(jié)點);0x02統(tǒng)計數(shù)據(jù)上傳(以半小時作為時間節(jié)點);0x03通道標(biāo)定(對于模擬量數(shù)據(jù)需要進(jìn)行數(shù)據(jù)的標(biāo)定),不同的傳感器通道以通道號的不同進(jìn)行區(qū)分。本協(xié)議功能碼空間預(yù)留,因此,還可以針對不同的應(yīng)用場合進(jìn)行相應(yīng)的功能擴(kuò)展。
主控模塊對于數(shù)據(jù)是否存儲根據(jù)ID6的值進(jìn)行判斷,當(dāng)值為0時,則表示數(shù)據(jù)需要存儲,當(dāng)值為1時,則表示數(shù)據(jù)不存儲。SegFlag判斷是否分段發(fā)送,也就是多幀連續(xù)發(fā)送的標(biāo)志,當(dāng)SegFlag=00時,表示不分段發(fā)送;而其他的值表示分段發(fā)送,01表示開始,10表示中間,11表示結(jié)束。SegNum是分段發(fā)送計數(shù)器,幀加1其值加1。
CAN 總線通訊采用廣播模式,即各傳感器模塊的報文只由主控節(jié)點接收(點對點模式),主控模塊的報文所有子節(jié)點均可接收。
CAN總線的通訊由主控模塊發(fā)起,首先明確要調(diào)取的數(shù)據(jù)是什么要素的數(shù)據(jù),接下來確定數(shù)據(jù)來源于哪個傳感器模塊,然后控制報文格式,將遠(yuǎn)程幀發(fā)送到總線上,等待傳感器模塊的應(yīng)答。主控模塊對于傳感器模塊在CAN總線上的調(diào)度,主要通過優(yōu)先級和傳感器采樣時間節(jié)點屬性來決定。如風(fēng)傳感器的采樣時間節(jié)點最短,每3 s廣播1幀遠(yuǎn)程幀。根據(jù)傳感器特性進(jìn)行合理的分配,完成了主控模塊對于各個傳感器模塊的調(diào)度。
3.1 系統(tǒng)軟件架構(gòu)
海洋水文氣象觀測系統(tǒng)的軟件開發(fā)基于μC/OSⅡ操作系統(tǒng)[7],主控模塊和傳感器模塊采用相同的軟件架構(gòu)。系統(tǒng)軟件架構(gòu)包括系統(tǒng)調(diào)度層、功能任務(wù)層和驅(qū)動層。
系統(tǒng)調(diào)度層是軟件架構(gòu)的最高層,主要完成對外部設(shè)備的調(diào)用、讀取和管理。大致可分為以下的功能:CAN總線的調(diào)度,將數(shù)據(jù)信息和電源信息,按照格式存儲在共享內(nèi)存;存儲,共享內(nèi)存中的數(shù)據(jù)按照格式,備份在SD卡中,文件類型分為瞬時數(shù)據(jù)和統(tǒng)計數(shù)據(jù),在主控模塊中,根據(jù)數(shù)據(jù)對應(yīng)傳感器模塊的不同,相應(yīng)的存儲地址也不同;GPRS通信,從共享內(nèi)存中調(diào)取數(shù)據(jù),遠(yuǎn)程傳輸和報警;打印機(jī),從共享內(nèi)存中或者SD卡中調(diào)取數(shù)據(jù),完成自動打印或者手動打??;電壓值的A/D采樣,用于監(jiān)控設(shè)備的運行狀況;計算,對于采樣值進(jìn)行規(guī)范化處理,按照水文氣象格式進(jìn)行存儲;看門狗復(fù)位處理;低功耗管理。
功能任務(wù)層主要負(fù)責(zé)各個模塊功能過程的實現(xiàn),即CAN總線收發(fā)、串口中斷收發(fā)、A/D采樣、SPI總線通訊、RTC時鐘讀寫功能和EEPROM讀寫功能等。
驅(qū)動層負(fù)責(zé)實現(xiàn)系統(tǒng)各個功能單元的設(shè)備驅(qū)動,包括CAN驅(qū)動程序、串口驅(qū)動程序、A/D驅(qū)動程序、SD卡驅(qū)動程序、看門狗驅(qū)動程序和IIC驅(qū)動程序等。主控模塊軟件架構(gòu)如圖5所示。傳感器模塊軟件架構(gòu)如圖6所示。
圖5 主控模塊軟件架構(gòu)
圖6 傳感器模塊軟件架構(gòu)
3.2 傳感器模塊建模
傳感器模塊軟件行為主要表現(xiàn)為,在不同的條件下跳轉(zhuǎn)到不同的狀態(tài),并在各個狀態(tài)下進(jìn)行相應(yīng)的工作。UML建模的狀態(tài)圖最為適合描述這種行為。系統(tǒng)的頂層狀態(tài)如圖7所示。
在上電之后,傳感器模塊自動進(jìn)入初始化狀態(tài),在該狀態(tài)中,軟件要完成的工作有初始化硬件,an>初始化中斷向量表,時鐘調(diào)節(jié),操作系統(tǒng)初始化,讀取EEPROM中的工作參數(shù)等。初始化完成之后,根據(jù)讀出的工作模式參數(shù),決定下一步的跳轉(zhuǎn)。
圖7 傳感器模塊頂層狀態(tài)
如果是首次初始化,傳感器模塊需要主控模塊對其采樣參數(shù)進(jìn)行配置,所以會進(jìn)行判斷,正常情況下直接進(jìn)入啟動采樣狀態(tài),等待進(jìn)入采樣狀態(tài)。
在采樣狀態(tài)之下,存在著數(shù)據(jù)采樣和數(shù)據(jù)存儲2個子狀態(tài)。數(shù)據(jù)采樣狀態(tài)下,傳感器模塊會啟動各個采樣進(jìn)程,通過選擇串口、A/D和脈沖3種硬件通道獲取傳感器反饋的數(shù)據(jù)??紤]到各個傳感器自身協(xié)議的復(fù)雜度和系統(tǒng)的層次性,3種通道可以設(shè)計為數(shù)據(jù)采樣狀態(tài)下的子狀態(tài)機(jī)。當(dāng)數(shù)據(jù)采樣周期結(jié)束之后,數(shù)據(jù)采樣狀態(tài)將會跳轉(zhuǎn)為數(shù)據(jù)處理和存儲狀態(tài)。數(shù)據(jù)處理和存儲狀態(tài)結(jié)束之后,將會重新跳轉(zhuǎn)到數(shù)據(jù)采樣狀態(tài),以開始一個新的采樣周期。
當(dāng)CAN通訊中斷發(fā)生之后,系統(tǒng)的狀態(tài)會從采樣狀態(tài)跳轉(zhuǎn)到CAN通訊狀態(tài),以配合主控模塊進(jìn)行數(shù)據(jù)傳輸和參數(shù)配置。CAN通訊結(jié)束之后,系統(tǒng)會重新回到采樣狀態(tài)中的深度歷史狀態(tài)。
系統(tǒng)處于不斷的循環(huán)工作狀態(tài)下,只有斷電才會進(jìn)入結(jié)束狀態(tài)。
3.3 系統(tǒng)測試
系統(tǒng)在實地和實驗室同時測試。實驗室測試為了提高數(shù)據(jù)的可操作性,使用了自行設(shè)計的傳感器模擬裝置來代替?zhèn)鞲衅鞯男盘栞敵觯盘柛袷酵耆ヅ鋫鞲衅鞯妮敵鲂盘枴?/p>
數(shù)據(jù)顯示格式按照水文氣象參數(shù)要求進(jìn)行編譯,經(jīng)過試驗,數(shù)據(jù)傳輸高效、穩(wěn)定,系統(tǒng)運行正常,數(shù)據(jù)存儲穩(wěn)定,可直接查詢、存儲和顯示歷史數(shù)據(jù)。
基于CAN總線的海洋水文氣象觀測系統(tǒng),充分利用了CAN總線的優(yōu)越性,提高了系統(tǒng)可操作性和容錯性,有利于未來系統(tǒng)的改進(jìn)和升級。在系統(tǒng)設(shè)計過程中,提出了模塊化管理的思路,縮短了設(shè)計周期,強(qiáng)化了設(shè)備的兼容性。系統(tǒng)已經(jīng)成功試運行半年左右,功能穩(wěn)定,其各項指標(biāo)均已達(dá)到了預(yù)期目標(biāo)。因此,所涉及的CAN應(yīng)用層協(xié)議和軟件架構(gòu),對其他類似項目有著借鑒意義。
[1] 饒運濤,鄒繼軍,王進(jìn)宏,等.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].2版.北京:北京航空航天大學(xué)出版社,2006.
[2] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,1996.
[3] 萬 麗,寧克焱.基于CAN總線的軍用車輛數(shù)據(jù)采集部件節(jié)點研究[J].車輛與動力技術(shù),2005(3):1-4.
[4] 劉同法,肖志剛,彭繼衛(wèi).ARM Cortex-M3內(nèi)核微控制器快速入門與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2009.
[5] 鐘 勇,鐘志華,余群明,等.電動汽車CAN總線通用協(xié)議的應(yīng)用研究[J].汽車工程,2006,28(5):422-426,438.
[6] 王曉燕,裴 亮,付 曉.基于CAN總線的浮標(biāo)數(shù)據(jù)采集系統(tǒng)設(shè)計[J].嵌入式網(wǎng)絡(luò)技術(shù)應(yīng)用,2008,24(14):20-21.
[7] Labrosse J J.嵌入式實時操作系統(tǒng)μC /OS-II[M].邵貝貝,譯.2版.北京:北京航空航天大學(xué)出版社,2003.
Design of Marine Hydrological and Meteorological Observation System Based on CAN Bus
QIShengbo1,SHENXiang1,YUJingdong
2
(1.College of Engineering,Ocean University of China,Qingdao 266100,China;2.Sencott Intelligent Instruments
Corporation of Yantai,Yantai 264100,China)
設(shè)計了海洋水文氣象觀測系統(tǒng),將傳感器和主控器通過CAN總線聯(lián)系起來,設(shè)備之間的擬合度較小,具有了更高的開放性、可維護(hù)性和穩(wěn)定性。系統(tǒng)對硬件電路進(jìn)行模塊化設(shè)計,傳感器模塊采用了通用化設(shè)計,可搭載不同傳感器,并根據(jù)相關(guān)規(guī)范定時采集傳感器數(shù)據(jù);主控模塊配備MCGS顯示屏、GPRS無線傳輸模塊和微型打印機(jī),通過CAN總線收集傳感器信息,并定時發(fā)送到岸站系統(tǒng)。在CAN2.0 A/B協(xié)議的基礎(chǔ)上,設(shè)計規(guī)劃出適合于水文氣象系統(tǒng)的CAN應(yīng)用層協(xié)議,并以STM32為主控MCU實現(xiàn)了該協(xié)議;制定編寫了分層的軟件架構(gòu),并使用UML狀態(tài)圖對系統(tǒng)頂層結(jié)構(gòu)進(jìn)行了狀態(tài)設(shè)計,明確了處理數(shù)據(jù)采樣任務(wù)和輔助任務(wù)之間的接口和跳轉(zhuǎn)關(guān)系。
海洋觀測;水文氣象;CAN總線;應(yīng)用層協(xié)議;UML
The design of marine hydrological and meteorological observation system,which connected the sensor and the main controller,based on CAN bus.The modular design was used for the hardware circuit of the observation.The device was divided into control part and sensor part.They connected through CAN bus.The sensor part was designed universally,so the device could carry on different sensors.Then the data was collected based on relevant specifications.The control part was equipped with a MCGS,a GPRS module and a small printer.It collected the data from sensor part through CAN bus,and transmitted the data to the station on time.According to the work,the application layer protocol of CAN,adapt to Meteorological and oceanographic observations,had been designed. It was based on CAN2.0 A/B protocols and used STM32 as the main chip.What’s more,the layered architecture of software had been designed,and the top structure had been designed through UML.
ocean observation;hydrology and meteorology;CAN bus;application layer protocol;UML
2013-12-30
TP23
A
1001-2257(2014)07-0035-04
綦聲波(1970-),男,山東平度人,博士研究生,副教授,研究方向為嵌入式儀器儀表、汽車電子;沈翔(1988-),男,安徽合肥人,碩士研究生,研究方向為嵌入式系統(tǒng)、智能儀器儀表。