周 崗,陳永冰,孟云飛,徐務農
(1.海軍工程大學 電氣與信息工程學院,武漢430033;2.海軍902廠,上海200083)
傳統的自動操舵儀內部通信方式并不靈活,也不利于實現全船的網絡化。國內自動舵的研究側重于理論方面較多,很少針對性地解決工程實際應用中出現的問題,大部分自動舵成品通信線路復雜。因此本文對通信總線采用CAN總線進行設計。CAN總線能夠靈活地、實時地進行通信,為自動舵實現模塊化結構、易于擴展、實現全船網絡[1]化打下基礎。CAN總線工作于多主方式,構成的網絡節點之間的數據通信實時性強,提高系統的可靠性和靈活性,而RS-485構成主從結構系統,通信方式以主站輪詢的方式進行,系統的實時性差。本文重點分析自動舵信息傳遞的幾種形式,設計以C8051F500為核心的智能通信節點,將多種信號通過智能節點發送到CAN網上,實現CAN網絡節點通信以及數據共享。

圖1 系統工作原理
傳統自動舵系統結構復雜,難于擴展,給檢修帶來了很多不便,采用CAN總線易于實現全船網絡互連、數據共享,具有很好的應用前景。其系統的基本結構見圖2。羅經、GPS、計程儀、VDR、顯示部件等設備節點掛接在總線上,將數據發送總線,需求信息的部件通過設置標識符讀取總線上信息,實現了數據共享。

圖2 系統結構原理圖
在CAN總線終端并聯兩個電阻是為了實現阻抗匹配,保證驅動能力,且可以防止信號反射。CAN總線的引入,把船舶集中式控制系統向分散式系統進行轉化。CAN智能節點掛接在總線上、作為網絡節點的智能設備連接為網絡系統,為進一步構成自動化系統,實現控制、報警、顯示、監控、優化及管控一體化的綜合自動化功能打下基礎。
系統選取C8051F500芯片進行智能節點設計,C8051F500具有CAN控制器,用CAN協議進行串行通信。Silicon Labs CAN控制器符合Bosch規范2.0A和2.0B,方便在CAN網絡上通信。
CAN控制器包含一個CAN核、消息RAM(獨立于CIP-51的RAM)、消息處理狀態機和模塊接口構成[3]。CAN核用于協議控制和消息串并轉換,消息處理器用于控制CAN核和消息RAM之間的數據傳輸,模塊接口用于CPU與整個CAN控制器交換數據。C8051F500的CAN控制器有32個消息對象,可以被配置為發送或接收數據。CAN控制器原理框圖見圖3。

圖3 CAN控制器原理
使用CAN控制器的重點和難點是對CAN控制器的寄存器的實用,其內部寄存器的分類及其主要功能如下。
CAN控制器協議寄存器:CAN控制、中斷、錯誤控制、總線狀態、測試方式。這些寄存器是:CAN控制寄存器(CAN0CN)、CAN時鐘配置寄存器(CAN0CFG)、CAN狀態寄存器(CAN0STA)、CAN測試寄存器(CAN0TST)、錯誤計數寄存器、位定時寄存器及波特率預分頻(BRP)擴展寄存器。
消息對象接口寄存器,用于配置向CAN總線發送和從CAN總線接收數據的32個消息對象。消息對象可以被配置為發送或接收,并被分配消息標識,以便所有CAN節點進行接收過濾。消息對象保存在消息RAM中,用消息對象接口寄存器對其訪問和配置。
消息處理寄存器為只讀寄存器,消息處理寄存器提供中斷、錯誤、發送/接收請求和新數據信息。
在改革開放四十周年之際,再次回顧這段歷史不難發現,中心城市大學的崛起,實際上是中國高等教育體制改革的先聲,給我國高等教育帶來諸多方面的影響。這些新辦院校在辦學體制上突破了中央、省兩級政府辦學的模式,開啟了中心城市發展高等教育的先河;在機制上引入了董事會制度、教師管理制度、招生就業制度、人才培養制度,并且形成了辦學經費多元的資金籌措模式。中心城市大學運動也成為我國高等教育改革實踐進程中有意義的探索,為1998年擴招以后第二階段新大學的創立提供了有益的經驗。
CAN總線收發器提供了CAN控制器與物理總線之間的接口,是影響網絡系統安全性、可靠性和電磁兼容性的主要內容。本系統采用收發器PC82C250,它最初是為汽車中的高速應用而設計的。82C250驅動電路內部具有限流電路,可防止發送輸出級對電源、地或負載短路,但不至于使輸出級損壞。若溫度超過160℃,則兩個發送器輸出斷極限電流將減小。由于發送器是功耗的主要部分,因而限制了芯片的升溫,器件的所有其它部分將繼續工作。82C250采用雙線差分驅動,有助于抑制惡劣環境下的瞬變干擾。
羅經、舵角、氣象儀、計程儀、組合導航定位系統、VDR等相關智能設備送來的信息與系統主控模板之間實現信息的輸入和輸出,通信總線采用傳統的RS-485或RS-422總線。485或者422總線與主控模板通信,線路布局復雜,造成了資源的浪費,同時也增大了電磁干擾。因此將串口信號通過智能節點發送到CAN總線上,實現數據的共享[4]。這里以航向信號分析CAN報文的發送。
實際的航向信息是由羅經得到的,由羅經得到的航向信息轉換成為數字信號,送給智能節點1。其數據輸出的格式為$CSHDT,XXX.X,T*hh,數據的輸出格式中,$為起始符,HDT表示艏向,XXX.X為航向信息,傳輸航向信息時,提取其中的XXXX四位數據信息,配置CAN寄存器后發送出去。RS-422A接口是異步標準串口,接口采用的是負邏輯,其邏輯電平與TTL電平不兼容。因此為了實現與TTL電路連接,必須進行電平轉換。這里采用的芯片為MAX488,轉換的硬件框圖見圖4。

圖4 CAN/RS422A轉換模塊硬件電路
自動舵的開關量信號包括裝載情況、海況、工作模式轉換、泵組選擇等。以某型號為例,其裝載情況包括滿、中、空,這里用兩位數據就可以代表裝載的情況,海況為好、中、差,兩位即可,工作模式用三位,泵組選擇用兩位。CAN一幀數據可以發送八個字節,數據配置格式見表1。

表1 信息段編碼定義
C8051F500實時的采集開關量,開關量發生變化后,配置成CAN數據幀格式,將數據發送到總線上。由于一個數據幀就可以將數據量發送完,所以進行發送初始化。設置命令掩碼寄存器CAN0IF1CM=0x00b3,WR/RD=1將選中的消息緩沖寄存器中的數據發送到命令請求寄存器尋址的消息對象。設置消息控制寄存器CAN0IF1MC=0x0088,EOB=1數據塊結束,如果兩個節點之間希望一次傳輸更多的數據,則可以將多個消息對象組成數據傳送,而EOB指示數據塊是否結束。
單片機檢測脈沖信號,通過處理檢測到的脈沖信號,將處理結果通過CAN發送到總線上,硬件電路見圖5。

圖5 脈沖信號與CAN總線通信模塊硬件電路
例如航程儀發出可以反映船舶速度的脈沖信號,200個脈沖代表1 n mile,脈沖信號經單片機采集后換算成航速,又可以根據時間計算出航程,將速度和航程的信息發送到CAN總線上,顯示單元讀取CAN總線上的速度信息,能夠實時掌握船舶的航行信息。
電平信號是自動舵中眾多信號中的一種,有些艦船上的舵角指令以及反饋舵角的信息都是電位計產生的,電位計輸出的是電平信號。將得到的信號經過芯片內嵌的A/D轉換模塊,轉化成數字信號,而后通過CAN控制部件將信息發到總線上,控制單元設置同樣的標識符讀取總線上的舵角信息。其硬件電路圖見圖6。

圖6 電平信號與CAN總線通信模塊硬件電路
信號經過隔離放大、跟隨,而后被C8051F500芯片采集,將采集到的電壓信號通過配置CAN寄存器發送出去。
軟件由CAN控制器初始化、CAN總線數據的發送和數據的接收三部分組成。通過用硬件或軟件重置的方法對CAN控制寄存器中的Init位進行設置來開始軟件的初始化。設置了Init位以后,所有在CAN總線上進行的消息傳輸都被停止,CAN總線的輸出CANTX位是隱性電平,錯誤管理邏輯計數器保持不變。
初始化流程圖見圖7。

圖7 CAN初始化流程
在傳輸的信息中大部分信息都不超過8個字節,CAN的一個數據幀最多可以傳輸8個字節,因此一個數據幀足夠用。然而某些信息的信息量比較大,如某個時刻的CPS經緯度信息為3 115.454 4,N和12 132.767 8,E。經度的信息超過了8位。將數據格式轉化為十六進制,然后再進行傳輸,一個數據幀能夠滿足要求。經度信息為12 132.767 8,再將數據12 132.767 8×10 000=121 327 678,轉化為十六進制為73B503E,用數據幀的7個字節就可以將經度信息傳送出去,接收后轉化為十進制,而后再除以10 000,即得到原來的經度信息。
模塊的軟件設計主要包括串口通信程序和CAN通信程序,串口的數據格式為一個起始位,8個數據位,一個停止位,其波特率為9 600 bit/s。CAN總線的傳輸波特率為500 kbit/s,采用標準數據幀格式,有效數據位0~8個字節。軟件程序流程見圖8。

圖8 串口與CAN通信流程
在CAN系統中,以ID來標識數據的含義,ID決定了信息的優先權和等待時間,同時也影響信息濾波。因而高效、合理的信息標識符分配方案是實現CAN性能的首要條件。CAN2.0規范定義了兩種幀格式,即標準幀和擴展幀,在標準幀中格式中標識符有11位,擴展幀有29位。由于自動舵所需的信號傳輸量不大,這里采用11位的標準幀格式,其格式見表2。

表2 系統信息標識符分配表
高6位表示節點號,即總線上最多可以接64個節點,對于自動舵而言,信息數量足夠用了,低5位代表具體信息的含義,同一個節點,可以產生不同的信息內容。為了方便以后設備的擴展,分配采用節點優先級和信息優先級相結合,詳細劃分報文優先權。這樣分配標識符既方便識別,又確保了編碼的惟一性。
以某艦船為例,將標識符分配如下。
節點號,0x00-報警單元,0x01-舵角單元,0x02-航向單元,0x03-操縱單元,0x04-羅經單元,0x05-計程儀單元,0x06-GPS單元,0x07-顯示單元,……
數據場,00000-反饋舵角,00001-反饋航向,00010-舵角指令,00011-航向指令,00100-開關量,00101-實時速度,00110-艦船位置,……。
文中設計的基于C8051F500CAN總線的通信接口,實用性比較強。制作一個通用的電路板,硬件設計結構簡單緊湊,實現即插即用,同時也降低了硬件的復雜度,抗干擾能力比較強,大大降低了系統設計成本。易于形成網絡化系統,總線數據共享,也可為實現舵的模塊化結構奠定基礎。
[1]ISAACPROCHE,HENRY WILLIS.Framework for quantifying uncertainty in electric ship desing[R].RAND national defense research institute,2004:1-75.
[2]周永余,許江寧,高敬東.艦船導航系統[M].北京:國防工業出版社,2006.
[3]張培仁,孫 力.基于C語言的C8051F系列微控制器原理與應用[M].北京:清華大學出版社,2007:338-378.
[4]陳永冰,李文魁,劉 勇.CAN總線及其在艦船測量組合系統中的應用[J].艦船電子工程,2005(3):46-48.