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