陳林(中國(guó)船舶重工集團(tuán)公司第七一○研究所,湖北 宜昌 443003)
CAN通信技術(shù)在半實(shí)物主機(jī)燃油粘度控制系統(tǒng)上的應(yīng)用
陳林(中國(guó)船舶重工集團(tuán)公司第七一○研究所,湖北宜昌443003)
本文內(nèi)容為CAN通信技術(shù)在半實(shí)物主機(jī)燃油粘度控制系統(tǒng)上的一種應(yīng)用。包括CAN通信工具、嵌入式開(kāi)發(fā)平臺(tái)和開(kāi)發(fā)環(huán)境、硬件接口設(shè)計(jì)原理、軟件設(shè)計(jì)方法和通信協(xié)議等。
CAN通信;控制;軟件;通信協(xié)議
CAN 通信技術(shù)在性能和可靠性方面表現(xiàn)異常突出,在船舶、工業(yè)自動(dòng)化、工業(yè)設(shè)備、醫(yī)療設(shè)備等行業(yè)有著非常多的應(yīng)用。本半實(shí)物主機(jī)燃油粘度控制系統(tǒng),上位機(jī)(主控計(jì)算機(jī))和下位機(jī)(燃油粘度控制器)之間的通信方式選用的是CAN通信,本文介紹了CAN通信技術(shù)在半實(shí)物粘度控制系統(tǒng)上的一種應(yīng)用。
2.1CAN通信技術(shù)介紹
CAN 通信技術(shù)從最開(kāi)始就被各個(gè)應(yīng)用行業(yè)所看重,歸功于其特別的設(shè)計(jì)思想、性能和可靠性方面的突出表現(xiàn)。其國(guó)際標(biāo)準(zhǔn)更加促進(jìn)了它的發(fā)展,基于該技術(shù)的應(yīng)用如雨后春筍般出現(xiàn)。在大型儀器設(shè)備、工業(yè)數(shù)據(jù)采集和監(jiān)控系統(tǒng)等方面都有其廣泛的應(yīng)用。目前,國(guó)際上百余家公司的產(chǎn)品支持CAN 通信,比如 Intel、NEC、Philips、Honeywell 、Siemens、Silioni等等。目前CAN 總線的應(yīng)用研究在眾多技術(shù)人員的努力下繼續(xù)發(fā)展,它的應(yīng)用范圍也將越來(lái)越大,前途非常廣闊。
2.2半實(shí)物控制系統(tǒng)介紹
半實(shí)物主機(jī)燃油粘度控制系統(tǒng)采用由真實(shí)控制儀器/儀表與仿真計(jì)算機(jī)組成的半實(shí)物仿真系統(tǒng),設(shè)備的主要功能包括:過(guò)程控制訓(xùn)練、正常操作訓(xùn)練及系統(tǒng)動(dòng)態(tài)特性分析、PID等參數(shù)的工程整定訓(xùn)練、故障分析和排除訓(xùn)練、新型控制技術(shù)的研究等。
半實(shí)物控制系統(tǒng)硬件組成如圖1所示,仿真系統(tǒng)主要參數(shù)如表1所示。
圖1 半實(shí)物主機(jī)燃油粘度控制系統(tǒng)
表1 仿真系統(tǒng)主要參數(shù)名稱
本半實(shí)物控制系統(tǒng)設(shè)計(jì),控制器要實(shí)現(xiàn)“操作模式”、“控制方式”、“開(kāi)關(guān)量”、“數(shù)據(jù)量”等方面數(shù)據(jù)的顯示和控制,也要能夠?qū)崿F(xiàn)對(duì)報(bào)警復(fù)位操作。與上位機(jī)(主控計(jì)算機(jī))的通信選擇具有CAN接口的開(kāi)發(fā)工具。
3.1嵌入式網(wǎng)路模塊“EM9260”(如圖2所示)
圖2 嵌入式網(wǎng)絡(luò)模塊“EM9260”
我們以英創(chuàng)公司的“EM9260”嵌入式網(wǎng)絡(luò)產(chǎn)品為基礎(chǔ)完成控制器的開(kāi)發(fā)?!癊M9260”是英創(chuàng)公司推出的在工業(yè)自動(dòng)化行業(yè)大有用途的性價(jià)比比較高的嵌入式網(wǎng)絡(luò)產(chǎn)品,AT91SAM9260作為其CPU內(nèi)核,完全能滿足工業(yè)級(jí)的應(yīng)用,該產(chǎn)品預(yù)裝Windows CE5.0嵌入式操作系統(tǒng),Microsoft提供的eVC(+SP4)可以用來(lái)作為開(kāi)發(fā)工具,在“EM9260”上開(kāi)發(fā)自己的應(yīng)用程序。英創(chuàng)針對(duì)“EM9260”提供了整套的低層驅(qū)動(dòng)程序和全面的應(yīng)用程序示例,用戶可以在學(xué)習(xí)示例的基礎(chǔ)上方便快速地開(kāi)發(fā)自己需要的應(yīng)用程序和產(chǎn)品。
CAN接口:“EM9260”產(chǎn)品的CAN通信功能屬于選配,“EM9260”僅僅包含了CAN控制器,CAN接口的物理較簡(jiǎn)單,在“EM9260”產(chǎn)品的評(píng)估底板配置,用戶自己在設(shè)計(jì)應(yīng)用底板時(shí)可參考。應(yīng)當(dāng)注意到CAN接口收發(fā)信號(hào)和一個(gè)USB信號(hào)復(fù)用的管腳,如果不使用CAN通信,管腳配置為USB。該CAN接口能支持CAN2.0B。把該CAN口與CAN接口卡信號(hào)線連接,即可實(shí)現(xiàn)節(jié)點(diǎn)間的通信。
圖3 CAN接口定義
“EM9260”產(chǎn)品安裝了操作系統(tǒng)WinCE,WinCE是微軟公司嵌入式平臺(tái)系統(tǒng)的基礎(chǔ)系統(tǒng),它是一個(gè)可升級(jí)的操作系統(tǒng),且是開(kāi)放的,為32位系統(tǒng)。WinCE是有多任務(wù)優(yōu)先級(jí)的嵌入式操作系統(tǒng),它能夠支持多重任務(wù)和進(jìn)程,在相同時(shí)間系統(tǒng)中WinCE能夠支持32 位的同步進(jìn)程。
軟件開(kāi)發(fā)平臺(tái)為eVC,eVC是微軟公司為嵌入式操作系統(tǒng)提供的開(kāi)發(fā)平臺(tái),它的功能完善而且能夠免費(fèi)獲取,它與大名鼎鼎的PC 平臺(tái)普遍應(yīng)用的開(kāi)發(fā)工具VC有高度的一致性,而且能夠考慮C/C++的執(zhí)行效率問(wèn)題,所以eVC最適合作為“EM9260”產(chǎn)品的應(yīng)用程序的開(kāi)發(fā)工具。eVC開(kāi)發(fā)環(huán)境和VC非常相像,用戶能夠通過(guò)大量VC資料來(lái)進(jìn)行eVC編程方面知識(shí)的學(xué)習(xí)。但是用eVC和VC開(kāi)發(fā)應(yīng)用的區(qū)別有一些,最明顯的是VC開(kāi)發(fā)的應(yīng)用程序在普通的PC機(jī)上運(yùn)行;eVC所開(kāi)發(fā)的應(yīng)用程序是要在目標(biāo)機(jī)上運(yùn)行,而不是在PC機(jī)上運(yùn)行。這一區(qū)別是廣大VC使用者和剛接觸嵌入式操作系統(tǒng)WinCE的用戶所不熟悉的。
搭建了英創(chuàng)公司“EM9260”產(chǎn)品所需要的開(kāi)發(fā)環(huán)境,包括硬件環(huán)境和軟件環(huán)境,用以太網(wǎng)將開(kāi)發(fā)用的主機(jī)和英創(chuàng)“EM9260”產(chǎn)品連接后,用戶便能夠用eVC開(kāi)發(fā)調(diào)試自己的應(yīng)用程序了。
3.2“USBCAN-2A”智能CAN接口卡(如圖4所示)
我公司使用的是ZLG公司生產(chǎn)的“USBCAN-2A”智能CAN接口卡,其是集成了2路CAN-BUS的智能型PC-CAN接口卡,兩個(gè)CAN接口均集成有電氣隔離保護(hù)電路,且相互獨(dú)立。CAN接口卡是通過(guò)PC的USB口與CAN網(wǎng)絡(luò)連接,構(gòu)成CAN-BUS節(jié)點(diǎn)。能夠支持5kbps~1Mbps之間波特率。其ZLGCANTest工具可以實(shí)現(xiàn)對(duì)CAN接口卡的控制和操作。
圖4 USBCAN接口卡
為實(shí)現(xiàn)“USBCAN-2A”接口卡和 CAN-BUS 總線的連接,將兩個(gè) CAN_L 連接,兩個(gè)CAN_H信號(hào)連接便可。對(duì)于分支上的連接,其信號(hào)線長(zhǎng)度應(yīng)在3米以內(nèi)。網(wǎng)絡(luò)節(jié)點(diǎn)連接如圖5所示。
圖5 CAN-BUS 網(wǎng)絡(luò)
為了增強(qiáng)CAN-BUS通信的可靠性,CAN-BUS結(jié)構(gòu)為直線拓?fù)浣Y(jié)構(gòu),總線端點(diǎn)需要匹配120?的終端匹配電阻;若節(jié)點(diǎn)數(shù)多于2,中間的節(jié)點(diǎn)不需要匹配120的終端匹配電阻?!癠SBCAN-2A”接口卡使用的是PCA82C251收發(fā)器,若CAN-BUS網(wǎng)絡(luò)上的其他節(jié)點(diǎn)的收發(fā)器不同,那么終端電阻要重新計(jì)算?!癠SBCAN-2A”接口卡內(nèi)未集成 120?的終端匹配電阻;在CAN-BUS網(wǎng)絡(luò)端點(diǎn)上的“USBCAN-2A”接口卡,需要配備120?終端匹配電阻,如圖6所示在“R-”引腳與“R+”引腳間并聯(lián)終端匹配電阻。
圖6 “USBCAN-2A” 位于網(wǎng)絡(luò)終端時(shí)的連接方法
在許多操作系統(tǒng)下“USBCAN-2A”智能 CAN 接口卡均可使用,比如 Win9x/Me、Win2000/XP 等操作系統(tǒng),同時(shí)Linux2.4、Linux2.6版本的操作系統(tǒng)也支持?!癠SBCAN-2A”隨機(jī)資料中有程序編程接口和應(yīng)用示范代碼,在許多比較通用的開(kāi)發(fā)環(huán)境均有示范,比如VC、Delphi、VB和 C++Builder 等開(kāi)發(fā)平臺(tái)均有示范,極大地方便了各種用戶進(jìn)行各自應(yīng)用程序的開(kāi)發(fā)。隨機(jī)資料中的ZLGCANTest通用測(cè)試工具,方便用戶在開(kāi)發(fā)過(guò)程中的數(shù)據(jù)收發(fā)調(diào)試,有CAN-BUS報(bào)文的監(jiān)測(cè)功能,CAN通信調(diào)試界面如圖7所示。
圖7 CAN通信調(diào)試界面
4.1CAN報(bào)文的幀格式
以標(biāo)識(shí)符的長(zhǎng)度不同可以將CAN2.0B幀格式分為標(biāo)準(zhǔn)幀和擴(kuò)展幀,標(biāo)準(zhǔn)幀有11 位標(biāo)識(shí)符,擴(kuò)展幀有29 位標(biāo)識(shí)符。
4.1.1CAN2.0B 標(biāo)準(zhǔn)幀
CAN標(biāo)準(zhǔn)幀為11個(gè)字節(jié),包括信息和數(shù)據(jù)兩部分。前3個(gè)字節(jié)為信息部分,如表2所示。
表2 CAN2.0B 標(biāo)準(zhǔn)幀格式
4.1.2CAN2.0B擴(kuò)展幀
CAN擴(kuò)展幀為13個(gè)字節(jié),包括信息和數(shù)據(jù)兩部分。前5個(gè)字節(jié)為信息部分,如表3所示。
4.2CAN通信應(yīng)用協(xié)議
在了解了CAN通信數(shù)據(jù)格式后,便需要結(jié)合應(yīng)用對(duì)象進(jìn)行應(yīng)用協(xié)議的制定,以便上位機(jī)和下位機(jī)按照同一個(gè)協(xié)議進(jìn)行數(shù)據(jù)的操作。由于CAN通信數(shù)據(jù)量大,使用方式多變,在此僅僅給出一種通信應(yīng)用協(xié)議舉例。
表4 CAN通信應(yīng)用協(xié)議表
4.3啟動(dòng)CAN 通信接口
CAN 通信的驅(qū)動(dòng)程序采用了(StreamDevice Driver),另外為客戶封裝了一套實(shí)用性非常強(qiáng)的API函數(shù)。can_api.h中有函數(shù)的定義,每個(gè)API函數(shù)均有解釋。在使用API函數(shù)時(shí),需要調(diào)用CreateFile(…)來(lái)得到CAN 接口設(shè)備的句柄(handle)。例如使用CAN1 ,可使用:m_hCAN=CreateFile(_ T(“CAN1:”),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);對(duì)于CAN2通信口,只需將其中的名稱換成:_T(“CAN2:”)即可。創(chuàng)建CAN設(shè)備,并返回有效的句柄(handle)后,然后便可調(diào)用can_api.h中定義的函數(shù)來(lái)啟動(dòng)CAN接口,BOOL CAN_StartChip(HANDLE hDevice);CAN接口進(jìn)入工作模式。
4.4設(shè)置CAN參數(shù)
為了使用CAN接口進(jìn)行通信,要進(jìn)行設(shè)置CAN接口的參數(shù),如CAN通信的波特率和接收過(guò)濾器。BOOL CAN_ SetBaudRate(HANDLE hDevice,BYTE *index);函數(shù)可以用來(lái)設(shè)置波特率,波特率設(shè)置的范圍為:10kbps到1Mbps。can_api.h文件中對(duì)函數(shù)的注釋更加具體。用戶開(kāi)發(fā)時(shí)可調(diào)用下列函數(shù)來(lái)設(shè)置接收過(guò)濾器:
BOOL CAN_SetGlobalAcceptanceFilter(HANDLE hDevice,BYTE *AcceptanceFilter,BYTE size)
4.5CAN通信接口的數(shù)據(jù)收發(fā)
在CAN通信中,CAN數(shù)據(jù)的收發(fā)均采用中斷方式,驅(qū)動(dòng)程序中包含數(shù)據(jù)的收發(fā),以及CAN接收和發(fā)送緩沖區(qū)的管理。用戶開(kāi)發(fā)應(yīng)用只要調(diào)用英創(chuàng)公司API函數(shù)中的收發(fā)函數(shù)便可以實(shí)現(xiàn)數(shù)據(jù)的收發(fā)。
需要說(shuō)明的是在進(jìn)行CAN數(shù)據(jù)收發(fā)的開(kāi)發(fā)過(guò)程中 ,有兩種方式能夠?qū)崿F(xiàn)CAN數(shù)據(jù)接收:一種是定時(shí)查詢,即以一定頻率調(diào)用函數(shù)CAN_GetNextReceivedFrame(…);一種是利用系統(tǒng)的消息機(jī)制,用事件響應(yīng)方式,當(dāng)硬件接收到數(shù)據(jù)報(bào)文,底層驅(qū)動(dòng)接收程序自動(dòng)讀取報(bào)文數(shù)據(jù),同時(shí)發(fā)送接收事件。應(yīng)用程序的接收線程得到該事件便調(diào)用CAN_GetNextReceivedFrame(…),進(jìn)行CAN數(shù)據(jù)的讀取。執(zhí)行一次CAN_GetNextReceivedFrame,僅僅得到一幀CAN報(bào)文,若應(yīng)用程序要把最新數(shù)據(jù)全部接收,需要反復(fù)調(diào)用此函數(shù),直至函數(shù)的返回值為FALSE。在讀取了一幀CAN 數(shù)據(jù)后,需要將數(shù)據(jù)中的值按照預(yù)先的協(xié)議進(jìn)行賦值,利用結(jié)構(gòu)體和聯(lián)合體可以進(jìn)行該關(guān)鍵部分的數(shù)據(jù)賦值工作。CAN數(shù)據(jù)幀結(jié)構(gòu)體和聯(lián)合體使用代碼舉例:
發(fā)送CAN報(bào)文相對(duì)容易,應(yīng)用程序中調(diào)用函數(shù)CAN_ SendFrame(…)便可以。
本文介紹了CAN通信技術(shù)的相關(guān)知識(shí),以及CAN通信技術(shù)在半實(shí)物主機(jī)燃油粘度控制系統(tǒng)上的應(yīng)用,并詳細(xì)介紹了嵌入式模塊和“USBCAN-2A”智能CAN接口卡的開(kāi)發(fā)方法,以及CAN數(shù)據(jù)幀應(yīng)用層協(xié)議舉例,對(duì)有意使用CAN通信技術(shù)的讀者有一定的借鑒意義。
;
[1]張婷婷.基于ARM的智能瓦斯傳感器的研究[D].西安:西安科技大學(xué),2010.
[2]賴昊,薛君英,陳星,等.CAN總線技術(shù)及其系統(tǒng)實(shí)現(xiàn)[J].微處理機(jī),2000,(1):28-30.
[3]鄭建彬,楊亞莉.以太網(wǎng)和CAN現(xiàn)場(chǎng)總線網(wǎng)間的嵌入式網(wǎng)關(guān)設(shè)計(jì)[J].信息技術(shù),2002,(11):14-17.
[4]胡在華.實(shí)時(shí)嵌入式系統(tǒng)的研究與應(yīng)用[D].湖南大學(xué),2002.
[5]張琪君.基于面向?qū)ο蟮那度胧较到y(tǒng)軟件開(kāi)發(fā)方法研究及其應(yīng)用[D].山東:山東大學(xué),2006.
[6]蔡建平.關(guān)于嵌入式應(yīng)用開(kāi)發(fā)技術(shù)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,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-)男,河北人,工程師,碩士研究生,現(xiàn)就職于中國(guó)船舶重工第七一〇研究所,主要研究方向?yàn)榇白詣?dòng)化。