, ,
(1.中國海洋大學工程學院,山東 青島 266100;2.煙臺森科特智能儀器有限公司,山東 煙臺 264100)
基于CAN總線的海洋水文氣象觀測系統設計
綦聲波1,沈翔1,于敬東2
(1.中國海洋大學工程學院,山東 青島 266100;2.煙臺森科特智能儀器有限公司,山東 煙臺 264100)
CAN[1]是一種有效支持分布式控制或實時控制的串行通信網絡,它的應用范圍遍及從高速網絡到低成本的多線路網絡。以往的氣象或水文儀器多采取傳感器接口和中心控制器直接連接的方式。對于多參數系統,隨著參數的增多,數據量的增大,這種封閉的集中控制方式的弊端逐漸顯現,可維護性變差,無法滿足正常穩定高效的工作要求。為此,采用將傳感器的連接和數據處理基于CAN總線進行模塊化處理,不同的傳感器具有相同的架構和CAN接口,并規劃了具有通用性的CAN總線應用層協議[2]。在軟件開發方面,結合系統的硬件特點,設計了可移植性強的軟件層架構,并且基于μC/OSⅡ操作系統和狀態機完成系統的開發。
1.1 系統設備總體規劃
系統從整體上看,分為現場采集系統和岸站接收系統2部分。系統所涉及的傳感器分為氣象部分和水文部分,包括風速風向傳感器、溫濕度傳感器、氣壓傳感器,水位傳感器、海流傳感器、波浪傳感器和溫鹽度傳感器等,檢測要素包括風速和風向、空氣溫濕度、大氣壓、特定水深的流速和流向、波浪參數及特定水深的溫度和鹽度等。
圖1虛線框內為主控模塊和傳感器模塊的CAN總線系統結構,其節點[3]分為2類:一類是主控處理模塊節點,另一類是傳感器模塊節點。前者完成整個系統的監測控制、狀態顯示、參數設置以及組態;后者采集各傳感器的實時信息,并根據所得信息發送給控制模塊。兩者共享的公共資源只有CAN總線,減小了系統的耦合性。考慮到功能擴展,每個傳感器以單獨的模塊掛載在CAN總線上,擁有自己獨立的ID號。

圖1 系統設備總體規劃
在硬件組成方面,系統采用了ST公司的具有Cortex-M3內核的STM32F103[4]作為傳感器處理模塊和主控模塊的主控芯片,芯片的串口、12位ADC、CAN和SPI總線等滿足了傳感器和外接設備的應用需求。同時芯片內部擁有CAN控制器,自帶bx-CAN協議,它支持CAN協議2.0A和2.0B,以最小的CPU負荷來高效處理大量收到的報文,也支持報文發送的優先級要求(優先級特性可軟件配置),為系統設計省去了復雜的電路設計。
1.2 傳感器模塊硬件設計
傳感器模塊,其特點是只需要將數據處理電路根據傳感器的數據類型,設計相應的處理電路,其他硬件設計保持不變。時鐘芯片PCF8563的設計是為了提供數據上傳的時間節點,保證數據的實時性。在一個由CAN總線構成的單一網絡中,理論上可以掛接無數個節點,但在實際應用中,節點數目受網絡硬件的電氣特性所限制,系統中使用Philips PCA82C250作為CAN收發器,同一網絡中允許掛接110個節點。
由于每個傳感器在與 CAN 總線相連時都采用了統一的標準和相同的方式,所以在系統看來,任何一個傳感器都是一個節點,沒有什么不同。每個節點向總線發送的數據中包含著它的屬性,主控模塊通過這些數據就可以判斷是什么類型的傳感器。較之傳統的傳感器專用接口的設計,系統的設計有很強的可替換性。傳感器模塊化設計如圖2所示。

圖2 傳感器模塊化設計
1.3 主控模塊硬件設計
主控模塊設計如圖3所示。SD卡作為存儲傳感器數據的存儲設備;MCGS顯示屏用于傳感器數據的實時顯示和歷史數據的查詢;GPS模塊提供精確的時間信息用于時間校準;打印機用于歷史數據的打印讀取;GPRS模塊進行數據遠程傳輸和報警。主控模塊與傳感器模塊通過CAN總線聯系在一起,這樣主控模塊就對傳感器模塊起到了調度和監控的作用。

圖3 主控模塊設計
參考基于CAN總線的工業應用層協議,根據海洋水文氣象觀測系統的實際情況,制定了開放式的CAN應用層協議,采用CAN總線架構的海洋水文氣象觀測系統和類似的傳感器節點通訊網絡,都可以參考這一協議。
CAN總線的數據幀[5]類型分為標準幀和擴展幀,標準幀的長度為11位,相當于擴展幀基本ID,最高位是ID28,最低位是ID18,這些位按照由高到低的順序發送;擴展幀分為11位的基本ID(定義擴展幀的基本優先權)和18位的擴展ID。
CAN總線的數據幀結構如圖4所示。

圖4 數據幀組成
圖4中,SOF(幀起始)、CRC場及ACK(應答場)和幀結束等,都是由CAN的底層協議來完成的,不需要用戶的干預;而仲裁場、控制場和數據場則是與用戶的應用息息相關的。在報文格式定義中,重點考慮的一個方面是信息標識符(ID)的分配和定義,因為標識符是唯一標識該網絡設備的類型和在通訊網絡中位置的識別碼。協議通過標識符來區分通訊數據的不同功能,并反映出通訊數據的優先級、信息源地址(身份ID)和信息目的地址[6]。合理、高效的信息標識符ID分配方案是充分發揮CAN總線性能的前提條件。
優先級的安排可避免傳感器模塊數據發送沖突,由于擴展幀基本ID的高7位不能全為隱形(禁止設定ID=1111111XXXX),所以定義0x00的優先級最高,0x1E的優先級最低。優先級高的,優先獲得CAN總線的控制權,廣播幀的優先級定義為0x1E。傳感器模塊根據氣象參數的特點,合理分配各個數據的傳送時間和優先級,采樣時間短的優先級越高,同理,數據波動性小的采樣優先級低。
源節點編號和目的節點編號,在傳輸過程中通過對這2個ID的查詢,來確定數據的來源和目的地。節點編號的長度可以根據設備掛載的情況來設計,在系統中采用5位ID節點編號,范圍在0x00到0x1F之間,主控模塊的節點編號為0x00,各個傳感器的編號依次排列。這些節點編號就可以作為識別主控模塊和各個傳感器模塊的身份ID,本協議中最多可以掛載的傳感器模塊為16個,基本滿足了對于現有觀測的需求和功能擴展的要求。
功能碼是為軟件實現服務的,依據數據傳輸的類型不同劃分,如0x00握手(主控模塊判斷節點處是否有傳感器模塊掛載);0x01瞬時數據上傳(根據傳感器數據特性設定時間節點);0x02統計數據上傳(以半小時作為時間節點);0x03通道標定(對于模擬量數據需要進行數據的標定),不同的傳感器通道以通道號的不同進行區分。本協議功能碼空間預留,因此,還可以針對不同的應用場合進行相應的功能擴展。
主控模塊對于數據是否存儲根據ID6的值進行判斷,當值為0時,則表示數據需要存儲,當值為1時,則表示數據不存儲。SegFlag判斷是否分段發送,也就是多幀連續發送的標志,當SegFlag=00時,表示不分段發送;而其他的值表示分段發送,01表示開始,10表示中間,11表示結束。SegNum是分段發送計數器,幀加1其值加1。
CAN 總線通訊采用廣播模式,即各傳感器模塊的報文只由主控節點接收(點對點模式),主控模塊的報文所有子節點均可接收。
CAN總線的通訊由主控模塊發起,首先明確要調取的數據是什么要素的數據,接下來確定數據來源于哪個傳感器模塊,然后控制報文格式,將遠程幀發送到總線上,等待傳感器模塊的應答。主控模塊對于傳感器模塊在CAN總線上的調度,主要通過優先級和傳感器采樣時間節點屬性來決定。如風傳感器的采樣時間節點最短,每3 s廣播1幀遠程幀。根據傳感器特性進行合理的分配,完成了主控模塊對于各個傳感器模塊的調度。
3.1 系統軟件架構
海洋水文氣象觀測系統的軟件開發基于μC/OSⅡ操作系統[7],主控模塊和傳感器模塊采用相同的軟件架構。系統軟件架構包括系統調度層、功能任務層和驅動層。
系統調度層是軟件架構的最高層,主要完成對外部設備的調用、讀取和管理。大致可分為以下的功能:CAN總線的調度,將數據信息和電源信息,按照格式存儲在共享內存;存儲,共享內存中的數據按照格式,備份在SD卡中,文件類型分為瞬時數據和統計數據,在主控模塊中,根據數據對應傳感器模塊的不同,相應的存儲地址也不同;GPRS通信,從共享內存中調取數據,遠程傳輸和報警;打印機,從共享內存中或者SD卡中調取數據,完成自動打印或者手動打印;電壓值的A/D采樣,用于監控設備的運行狀況;計算,對于采樣值進行規范化處理,按照水文氣象格式進行存儲;看門狗復位處理;低功耗管理。
功能任務層主要負責各個模塊功能過程的實現,即CAN總線收發、串口中斷收發、A/D采樣、SPI總線通訊、RTC時鐘讀寫功能和EEPROM讀寫功能等。
驅動層負責實現系統各個功能單元的設備驅動,包括CAN驅動程序、串口驅動程序、A/D驅動程序、SD卡驅動程序、看門狗驅動程序和IIC驅動程序等。主控模塊軟件架構如圖5所示。傳感器模塊軟件架構如圖6所示。

圖5 主控模塊軟件架構

圖6 傳感器模塊軟件架構
3.2 傳感器模塊建模
傳感器模塊軟件行為主要表現為,在不同的條件下跳轉到不同的狀態,并在各個狀態下進行相應的工作。UML建模的狀態圖最為適合描述這種行為。系統的頂層狀態如圖7所示。
在上電之后,傳感器模塊自動進入初始化狀態,在該狀態中,軟件要完成的工作有初始化硬件,an>初始化中斷向量表,時鐘調節,操作系統初始化,讀取EEPROM中的工作參數等。初始化完成之后,根據讀出的工作模式參數,決定下一步的跳轉。

圖7 傳感器模塊頂層狀態
如果是首次初始化,傳感器模塊需要主控模塊對其采樣參數進行配置,所以會進行判斷,正常情況下直接進入啟動采樣狀態,等待進入采樣狀態。
在采樣狀態之下,存在著數據采樣和數據存儲2個子狀態。數據采樣狀態下,傳感器模塊會啟動各個采樣進程,通過選擇串口、A/D和脈沖3種硬件通道獲取傳感器反饋的數據。考慮到各個傳感器自身協議的復雜度和系統的層次性,3種通道可以設計為數據采樣狀態下的子狀態機。當數據采樣周期結束之后,數據采樣狀態將會跳轉為數據處理和存儲狀態。數據處理和存儲狀態結束之后,將會重新跳轉到數據采樣狀態,以開始一個新的采樣周期。
當CAN通訊中斷發生之后,系統的狀態會從采樣狀態跳轉到CAN通訊狀態,以配合主控模塊進行數據傳輸和參數配置。CAN通訊結束之后,系統會重新回到采樣狀態中的深度歷史狀態。
系統處于不斷的循環工作狀態下,只有斷電才會進入結束狀態。
3.3 系統測試
系統在實地和實驗室同時測試。實驗室測試為了提高數據的可操作性,使用了自行設計的傳感器模擬裝置來代替傳感器的信號輸出,信號格式完全匹配傳感器的輸出信號。
數據顯示格式按照水文氣象參數要求進行編譯,經過試驗,數據傳輸高效、穩定,系統運行正常,數據存儲穩定,可直接查詢、存儲和顯示歷史數據。
基于CAN總線的海洋水文氣象觀測系統,充分利用了CAN總線的優越性,提高了系統可操作性和容錯性,有利于未來系統的改進和升級。在系統設計過程中,提出了模塊化管理的思路,縮短了設計周期,強化了設備的兼容性。系統已經成功試運行半年左右,功能穩定,其各項指標均已達到了預期目標。因此,所涉及的CAN應用層協議和軟件架構,對其他類似項目有著借鑒意義。
[1] 饒運濤,鄒繼軍,王進宏,等.現場總線CAN原理與應用技術[M].2版.北京:北京航空航天大學出版社,2006.
[2] 鄔寬明.CAN總線原理和應用系統設計[M].北京:北京航空航天大學出版社,1996.
[3] 萬 麗,寧克焱.基于CAN總線的軍用車輛數據采集部件節點研究[J].車輛與動力技術,2005(3):1-4.
[4] 劉同法,肖志剛,彭繼衛.ARM Cortex-M3內核微控制器快速入門與應用[M].北京:北京航空航天大學出版社,2009.
[5] 鐘 勇,鐘志華,余群明,等.電動汽車CAN總線通用協議的應用研究[J].汽車工程,2006,28(5):422-426,438.
[6] 王曉燕,裴 亮,付 曉.基于CAN總線的浮標數據采集系統設計[J].嵌入式網絡技術應用,2008,24(14):20-21.
[7] Labrosse J J.嵌入式實時操作系統μ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)
設計了海洋水文氣象觀測系統,將傳感器和主控器通過CAN總線聯系起來,設備之間的擬合度較小,具有了更高的開放性、可維護性和穩定性。系統對硬件電路進行模塊化設計,傳感器模塊采用了通用化設計,可搭載不同傳感器,并根據相關規范定時采集傳感器數據;主控模塊配備MCGS顯示屏、GPRS無線傳輸模塊和微型打印機,通過CAN總線收集傳感器信息,并定時發送到岸站系統。在CAN2.0 A/B協議的基礎上,設計規劃出適合于水文氣象系統的CAN應用層協議,并以STM32為主控MCU實現了該協議;制定編寫了分層的軟件架構,并使用UML狀態圖對系統頂層結構進行了狀態設計,明確了處理數據采樣任務和輔助任務之間的接口和跳轉關系。
海洋觀測;水文氣象;CAN總線;應用層協議;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-),男,安徽合肥人,碩士研究生,研究方向為嵌入式系統、智能儀器儀表。