陳林(中國船舶重工集團公司第七一○研究所,湖北 宜昌 443003)
CAN通信技術在半實物主機燃油粘度控制系統上的應用
陳林(中國船舶重工集團公司第七一○研究所,湖北宜昌443003)
本文內容為CAN通信技術在半實物主機燃油粘度控制系統上的一種應用。包括CAN通信工具、嵌入式開發平臺和開發環境、硬件接口設計原理、軟件設計方法和通信協議等。
CAN通信;控制;軟件;通信協議
CAN 通信技術在性能和可靠性方面表現異常突出,在船舶、工業自動化、工業設備、醫療設備等行業有著非常多的應用。本半實物主機燃油粘度控制系統,上位機(主控計算機)和下位機(燃油粘度控制器)之間的通信方式選用的是CAN通信,本文介紹了CAN通信技術在半實物粘度控制系統上的一種應用。
2.1CAN通信技術介紹
CAN 通信技術從最開始就被各個應用行業所看重,歸功于其特別的設計思想、性能和可靠性方面的突出表現。其國際標準更加促進了它的發展,基于該技術的應用如雨后春筍般出現。在大型儀器設備、工業數據采集和監控系統等方面都有其廣泛的應用。目前,國際上百余家公司的產品支持CAN 通信,比如 Intel、NEC、Philips、Honeywell 、Siemens、Silioni等等。目前CAN 總線的應用研究在眾多技術人員的努力下繼續發展,它的應用范圍也將越來越大,前途非常廣闊。
2.2半實物控制系統介紹
半實物主機燃油粘度控制系統采用由真實控制儀器/儀表與仿真計算機組成的半實物仿真系統,設備的主要功能包括:過程控制訓練、正常操作訓練及系統動態特性分析、PID等參數的工程整定訓練、故障分析和排除訓練、新型控制技術的研究等。
半實物控制系統硬件組成如圖1所示,仿真系統主要參數如表1所示。

圖1 半實物主機燃油粘度控制系統

表1 仿真系統主要參數名稱
本半實物控制系統設計,控制器要實現“操作模式”、“控制方式”、“開關量”、“數據量”等方面數據的顯示和控制,也要能夠實現對報警復位操作。與上位機(主控計算機)的通信選擇具有CAN接口的開發工具。
3.1嵌入式網路模塊“EM9260”(如圖2所示)

圖2 嵌入式網絡模塊“EM9260”
我們以英創公司的“EM9260”嵌入式網絡產品為基礎完成控制器的開發。“EM9260”是英創公司推出的在工業自動化行業大有用途的性價比比較高的嵌入式網絡產品,AT91SAM9260作為其CPU內核,完全能滿足工業級的應用,該產品預裝Windows CE5.0嵌入式操作系統,Microsoft提供的eVC(+SP4)可以用來作為開發工具,在“EM9260”上開發自己的應用程序。英創針對“EM9260”提供了整套的低層驅動程序和全面的應用程序示例,用戶可以在學習示例的基礎上方便快速地開發自己需要的應用程序和產品。
CAN接口:“EM9260”產品的CAN通信功能屬于選配,“EM9260”僅僅包含了CAN控制器,CAN接口的物理較簡單,在“EM9260”產品的評估底板配置,用戶自己在設計應用底板時可參考。應當注意到CAN接口收發信號和一個USB信號復用的管腳,如果不使用CAN通信,管腳配置為USB。該CAN接口能支持CAN2.0B。把該CAN口與CAN接口卡信號線連接,即可實現節點間的通信。

圖3 CAN接口定義
“EM9260”產品安裝了操作系統WinCE,WinCE是微軟公司嵌入式平臺系統的基礎系統,它是一個可升級的操作系統,且是開放的,為32位系統。WinCE是有多任務優先級的嵌入式操作系統,它能夠支持多重任務和進程,在相同時間系統中WinCE能夠支持32 位的同步進程。
軟件開發平臺為eVC,eVC是微軟公司為嵌入式操作系統提供的開發平臺,它的功能完善而且能夠免費獲取,它與大名鼎鼎的PC 平臺普遍應用的開發工具VC有高度的一致性,而且能夠考慮C/C++的執行效率問題,所以eVC最適合作為“EM9260”產品的應用程序的開發工具。eVC開發環境和VC非常相像,用戶能夠通過大量VC資料來進行eVC編程方面知識的學習。但是用eVC和VC開發應用的區別有一些,最明顯的是VC開發的應用程序在普通的PC機上運行;eVC所開發的應用程序是要在目標機上運行,而不是在PC機上運行。這一區別是廣大VC使用者和剛接觸嵌入式操作系統WinCE的用戶所不熟悉的。
搭建了英創公司“EM9260”產品所需要的開發環境,包括硬件環境和軟件環境,用以太網將開發用的主機和英創“EM9260”產品連接后,用戶便能夠用eVC開發調試自己的應用程序了。
3.2“USBCAN-2A”智能CAN接口卡(如圖4所示)
我公司使用的是ZLG公司生產的“USBCAN-2A”智能CAN接口卡,其是集成了2路CAN-BUS的智能型PC-CAN接口卡,兩個CAN接口均集成有電氣隔離保護電路,且相互獨立。CAN接口卡是通過PC的USB口與CAN網絡連接,構成CAN-BUS節點。能夠支持5kbps~1Mbps之間波特率。其ZLGCANTest工具可以實現對CAN接口卡的控制和操作。

圖4 USBCAN接口卡
為實現“USBCAN-2A”接口卡和 CAN-BUS 總線的連接,將兩個 CAN_L 連接,兩個CAN_H信號連接便可。對于分支上的連接,其信號線長度應在3米以內。網絡節點連接如圖5所示。

圖5 CAN-BUS 網絡
為了增強CAN-BUS通信的可靠性,CAN-BUS結構為直線拓撲結構,總線端點需要匹配120?的終端匹配電阻;若節點數多于2,中間的節點不需要匹配120的終端匹配電阻。“USBCAN-2A”接口卡使用的是PCA82C251收發器,若CAN-BUS網絡上的其他節點的收發器不同,那么終端電阻要重新計算。“USBCAN-2A”接口卡內未集成 120?的終端匹配電阻;在CAN-BUS網絡端點上的“USBCAN-2A”接口卡,需要配備120?終端匹配電阻,如圖6所示在“R-”引腳與“R+”引腳間并聯終端匹配電阻。

圖6 “USBCAN-2A” 位于網絡終端時的連接方法
在許多操作系統下“USBCAN-2A”智能 CAN 接口卡均可使用,比如 Win9x/Me、Win2000/XP 等操作系統,同時Linux2.4、Linux2.6版本的操作系統也支持。“USBCAN-2A”隨機資料中有程序編程接口和應用示范代碼,在許多比較通用的開發環境均有示范,比如VC、Delphi、VB和 C++Builder 等開發平臺均有示范,極大地方便了各種用戶進行各自應用程序的開發。隨機資料中的ZLGCANTest通用測試工具,方便用戶在開發過程中的數據收發調試,有CAN-BUS報文的監測功能,CAN通信調試界面如圖7所示。

圖7 CAN通信調試界面
4.1CAN報文的幀格式
以標識符的長度不同可以將CAN2.0B幀格式分為標準幀和擴展幀,標準幀有11 位標識符,擴展幀有29 位標識符。
4.1.1CAN2.0B 標準幀
CAN標準幀為11個字節,包括信息和數據兩部分。前3個字節為信息部分,如表2所示。

表2 CAN2.0B 標準幀格式
4.1.2CAN2.0B擴展幀
CAN擴展幀為13個字節,包括信息和數據兩部分。前5個字節為信息部分,如表3所示。
4.2CAN通信應用協議
在了解了CAN通信數據格式后,便需要結合應用對象進行應用協議的制定,以便上位機和下位機按照同一個協議進行數據的操作。由于CAN通信數據量大,使用方式多變,在此僅僅給出一種通信應用協議舉例。

表4 CAN通信應用協議表

4.3啟動CAN 通信接口
CAN 通信的驅動程序采用了(StreamDevice Driver),另外為客戶封裝了一套實用性非常強的API函數。can_api.h中有函數的定義,每個API函數均有解釋。在使用API函數時,需要調用CreateFile(…)來得到CAN 接口設備的句柄(handle)。例如使用CAN1 ,可使用:m_hCAN=CreateFile(_ T(“CAN1:”),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);對于CAN2通信口,只需將其中的名稱換成:_T(“CAN2:”)即可。創建CAN設備,并返回有效的句柄(handle)后,然后便可調用can_api.h中定義的函數來啟動CAN接口,BOOL CAN_StartChip(HANDLE hDevice);CAN接口進入工作模式。
4.4設置CAN參數
為了使用CAN接口進行通信,要進行設置CAN接口的參數,如CAN通信的波特率和接收過濾器。BOOL CAN_ SetBaudRate(HANDLE hDevice,BYTE *index);函數可以用來設置波特率,波特率設置的范圍為:10kbps到1Mbps。can_api.h文件中對函數的注釋更加具體。用戶開發時可調用下列函數來設置接收過濾器:
BOOL CAN_SetGlobalAcceptanceFilter(HANDLE hDevice,BYTE *AcceptanceFilter,BYTE size)
4.5CAN通信接口的數據收發
在CAN通信中,CAN數據的收發均采用中斷方式,驅動程序中包含數據的收發,以及CAN接收和發送緩沖區的管理。用戶開發應用只要調用英創公司API函數中的收發函數便可以實現數據的收發。
需要說明的是在進行CAN數據收發的開發過程中 ,有兩種方式能夠實現CAN數據接收:一種是定時查詢,即以一定頻率調用函數CAN_GetNextReceivedFrame(…);一種是利用系統的消息機制,用事件響應方式,當硬件接收到數據報文,底層驅動接收程序自動讀取報文數據,同時發送接收事件。應用程序的接收線程得到該事件便調用CAN_GetNextReceivedFrame(…),進行CAN數據的讀取。執行一次CAN_GetNextReceivedFrame,僅僅得到一幀CAN報文,若應用程序要把最新數據全部接收,需要反復調用此函數,直至函數的返回值為FALSE。在讀取了一幀CAN 數據后,需要將數據中的值按照預先的協議進行賦值,利用結構體和聯合體可以進行該關鍵部分的數據賦值工作。CAN數據幀結構體和聯合體使用代碼舉例:

發送CAN報文相對容易,應用程序中調用函數CAN_ SendFrame(…)便可以。
本文介紹了CAN通信技術的相關知識,以及CAN通信技術在半實物主機燃油粘度控制系統上的應用,并詳細介紹了嵌入式模塊和“USBCAN-2A”智能CAN接口卡的開發方法,以及CAN數據幀應用層協議舉例,對有意使用CAN通信技術的讀者有一定的借鑒意義。
;
[1]張婷婷.基于ARM的智能瓦斯傳感器的研究[D].西安:西安科技大學,2010.
[2]賴昊,薛君英,陳星,等.CAN總線技術及其系統實現[J].微處理機,2000,(1):28-30.
[3]鄭建彬,楊亞莉.以太網和CAN現場總線網間的嵌入式網關設計[J].信息技術,2002,(11):14-17.
[4]胡在華.實時嵌入式系統的研究與應用[D].湖南大學,2002.
[5]張琪君.基于面向對象的嵌入式系統軟件開發方法研究及其應用[D].山東:山東大學,2006.
[6]蔡建平.關于嵌入式應用開發技術[J].單片機與嵌入式系統應用,2001,(03):5-11.
[7]Sung Su Yoon,Jea Chul Lee,Seong Jin Cho,Jae Wook Jeon.Gateway between high-performance Fieldbus and serial communication[D].北京:Control Automation and Systems(ICCAS),2010.
The Application of CAN Communication Technology in the Control System of Semi-physical Engine Oil Viscosity
This paper introduces the application of the CAN communication technology in the control system of semi-physical engine oil viscosity,which includes the CAN communication tools,the embedded development platform and the development environment,the hardware interface design principles,the software design methods and the communication protocols,etc.
CAN;Control;Software;Communication protocol
B
1003-0492(2016)07-0074-04
TP29
陳林(1987-)男,河北人,工程師,碩士研究生,現就職于中國船舶重工第七一〇研究所,主要研究方向為船舶自動化。