從CAN總線到VXI總線的數(shù)據(jù)傳輸_第1頁(yè)
從CAN總線到VXI總線的數(shù)據(jù)傳輸_第2頁(yè)
從CAN總線到VXI總線的數(shù)據(jù)傳輸_第3頁(yè)
從CAN總線到VXI總線的數(shù)據(jù)傳輸_第4頁(yè)
從CAN總線到VXI總線的數(shù)據(jù)傳輸_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、從CAN總線到VXI總線數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)彭琪琪, 陳 光(電子科技大學(xué)自動(dòng)化學(xué)院CAT實(shí)驗(yàn)室,四川 成都 610054)摘要:在VXI總線系統(tǒng)中,為了能夠獲得大量實(shí)時(shí)數(shù)據(jù),需要利用CAN總線快速可靠的傳輸數(shù)據(jù)的性能,設(shè)計(jì)一種混合VXI總線和CAN總線的系統(tǒng)。在這種混合系統(tǒng)中要實(shí)現(xiàn)CAN總線上各個(gè)節(jié)點(diǎn)采集并傳輸實(shí)時(shí)數(shù)據(jù),采用VXI-CAN這樣一個(gè)消息基模塊完成數(shù)據(jù)到VXI總線上的傳輸。通過(guò)這種VXI總線和CAN總線互相通訊獲得實(shí)時(shí)數(shù)據(jù)的基本原理和方法,實(shí)現(xiàn)了實(shí)時(shí)數(shù)據(jù)的采集。這種數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)為VXI總線系統(tǒng)的設(shè)計(jì)拓寬了新的思路。關(guān)鍵詞:CAN總線;VXI總線;數(shù)據(jù)傳輸;VXI-CAN模塊1 引言控

2、制器局部網(wǎng)(CANController Area Network)是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。自從它的問(wèn)世以來(lái),由于其高速通信速率、高可靠性、連接方便和高的性?xún)r(jià)比等突出優(yōu)點(diǎn)成為工業(yè)應(yīng)用領(lǐng)域的生力軍。其應(yīng)用已從最開(kāi)始的汽車(chē)工業(yè)擴(kuò)展到農(nóng)業(yè)機(jī)械、醫(yī)療器械等各個(gè)領(lǐng)域。由于,CAN總線上的數(shù)據(jù)占用總線時(shí)間很短,能夠保證通信的實(shí)時(shí)性;CAN協(xié)議中規(guī)定數(shù)據(jù)傳遞有錯(cuò)誤處理功能,能夠保證通信的可靠性。因此在我們所研究的VXI總線系統(tǒng)中,將CAN總線作為實(shí)時(shí)數(shù)據(jù)采集傳輸線,發(fā)揮了其獨(dú)有的優(yōu)勢(shì),彌補(bǔ)了VXI總線的局限。一條CAN總線上可以有256個(gè)節(jié)點(diǎn),每一個(gè)節(jié)點(diǎn)都可以從CAN總線上接收數(shù)據(jù),

3、也可以向CAN總線發(fā)送數(shù)據(jù)。由于CAN總線的系統(tǒng)靈活,其節(jié)點(diǎn)可以在不要求所有現(xiàn)存節(jié)點(diǎn)及其應(yīng)用層改變?nèi)魏诬浖蛴布那闆r下,接入CAN網(wǎng)絡(luò)。對(duì)于一個(gè)VXI總線的實(shí)時(shí)系統(tǒng)來(lái)說(shuō),想增添或減少一個(gè)VXI模塊必須重新初始化模塊。又由于一個(gè)VXI機(jī)箱的槽數(shù)很有限,若采用VXI總線則采集模塊個(gè)數(shù)也就受到限制了,但是若采用CAN總線傳輸實(shí)時(shí)數(shù)據(jù),節(jié)點(diǎn)數(shù)量則大大增加。因此,要構(gòu)造一個(gè)實(shí)時(shí)的多數(shù)據(jù)采集傳輸系統(tǒng),選擇CAN總線作為實(shí)時(shí)數(shù)據(jù)的傳輸總線也不失為一種實(shí)際有效的方法。2 VXI總線與CAN總線數(shù)據(jù)傳輸?shù)谋容^2.1 傳輸速率VXI總線有較大的數(shù)據(jù)吞吐量,傳輸速率可達(dá)40Mbps,而CAN總線的位速率只有1Mb

4、ps。雖然CAN總線作為串行數(shù)據(jù)通信總線已有較高的傳輸速率,但相對(duì)于VXI總線來(lái)說(shuō),它仍然只能算作低速總線。2.2 傳輸協(xié)議在VXI總線系統(tǒng)中,實(shí)現(xiàn)命令者-從者的通訊和控制遵循“字串行協(xié)議”。 “字串行協(xié)議”是串行地從一個(gè)固定地址向另一個(gè)固定地址傳送數(shù)據(jù)的通訊協(xié)議。這個(gè)協(xié)議是消息基器件最基本的通訊方法,所有的消息基器件都應(yīng)實(shí)現(xiàn)這個(gè)協(xié)議。而在CAN總線中,數(shù)據(jù)傳輸則遵循CAN技術(shù)規(guī)范2.0。該版本包括A、B兩部分,A描述了報(bào)文格式,B中描述了標(biāo)準(zhǔn)格式和擴(kuò)展格式。在技術(shù)規(guī)范2.0版中規(guī)定了發(fā)送報(bào)文的4種幀格式:數(shù)據(jù)幀、遠(yuǎn)程幀、出錯(cuò)幀以及超載幀。每種幀格式都有各自不同的位場(chǎng),通過(guò)每一個(gè)位場(chǎng)上位的標(biāo)識(shí)

5、,來(lái)控制該幀傳輸?shù)男畔⒓皞鬏敺绞?。要?shí)現(xiàn)這兩種數(shù)據(jù)傳輸速率、傳輸協(xié)議完全不同的兩種總線上的數(shù)據(jù)傳輸,下面介紹了一種切實(shí)可行的方法。3 數(shù)據(jù)傳輸?shù)幕驹硗ㄟ^(guò)上面的比較,數(shù)據(jù)在CAN總線與VXI總線上傳輸分別遵循不同的規(guī)約,同時(shí)又存在低速總線與高速總線之間數(shù)據(jù)緩沖處理的問(wèn)題。因此要使數(shù)據(jù)在兩條總線上暢通有效地進(jìn)行傳輸,這里引入了一個(gè)VXI消息基器件VXI-CAN模塊。整個(gè)系統(tǒng)結(jié)構(gòu)如下圖: 圖1 VXI總線和CAN總線混合系統(tǒng)結(jié)構(gòu)其中零槽控制機(jī)是采用的NI公司的872B嵌入式的零槽控制機(jī),所裝系統(tǒng)為Windows 2000,并且在該操作系統(tǒng)上已經(jīng)安裝了NI的VISA庫(kù),能夠支持基于VISA庫(kù)函數(shù)的

6、編程。4路CAN-VXI卡是一個(gè)VXI消息基器件,它的每一個(gè)接口都可以連一條CAN總線,故該模塊允許連接4條CAN總線。CAN總線上用一個(gè)仿真計(jì)算機(jī)作為CAN的一個(gè)節(jié)點(diǎn),它與CAN總線的接口是一塊PCI-CAN卡。在上面的VXI系統(tǒng)中,基本傳輸原理如下圖。仿真計(jì)算機(jī)PCI-CAN卡 背板總線 CAN PCI 零槽控制機(jī)VXI總線接口電路CAN總線接口控制電路控制數(shù)據(jù)緩沖及數(shù)據(jù)讀寫(xiě)的單片機(jī) 總線 總線 圖2 數(shù)據(jù)傳輸硬件結(jié)構(gòu)當(dāng)零槽控制機(jī)想通過(guò)CAN總線向CAN節(jié)點(diǎn)發(fā)送命令或數(shù)據(jù)時(shí),數(shù)據(jù)或命令首先通過(guò)背板總線到VXI-CAN模塊(圖2虛線框內(nèi)部分)。為了支持字串行協(xié)議,在該消息基模塊中包含了VXI

7、總線接口電路(可采用專(zhuān)用的接口芯片如:Interface IT9010M,也可以采用可編程邏輯器件自行設(shè)計(jì))。通過(guò)這種專(zhuān)用I/O電路,從硬件上完成了對(duì)字串行命令譯碼。獲得字串行協(xié)議的譯碼后,再采用80C196來(lái)控制CAN總線控制器(PHILIPS的SJA1000)。SJA1000是一種支持CAN協(xié)議2.0B的芯片,帶有驗(yàn)收濾波器,可支持11位和29位的標(biāo)識(shí)符的濾波。通過(guò)該CAN總線接口電路最后完成向CAN總線幀格式的轉(zhuǎn)化。接著數(shù)據(jù)或命令再通過(guò)CAN總線到達(dá)各個(gè)CAN節(jié)點(diǎn)。在上面的結(jié)構(gòu)中即數(shù)據(jù)到達(dá)PCI-CAN卡的接收數(shù)據(jù)緩沖區(qū),仿真計(jì)算機(jī)讀取緩沖區(qū)數(shù)據(jù)即可。同樣,若仿真計(jì)算機(jī)想通過(guò)CAN總線向

8、VXI總線的零槽控制機(jī)發(fā)送數(shù)據(jù),則將經(jīng)過(guò)仿真計(jì)算機(jī)發(fā)送數(shù)據(jù)幀到PCI-CAN卡發(fā)送數(shù)據(jù)緩沖區(qū),CAN總線將數(shù)據(jù)幀串行送入VXI-CAN模塊的CAN總線接口電路進(jìn)行解析,存儲(chǔ)到模塊雙口RAM中,最后通過(guò)零槽控制機(jī)控制消息基模塊的命令,讀取緩沖區(qū)數(shù)據(jù)的過(guò)程。根據(jù)CAN協(xié)議2.0B,數(shù)據(jù)傳輸有兩種幀格式,標(biāo)準(zhǔn)幀和擴(kuò)展幀。二者不同僅僅在于標(biāo)識(shí)符的長(zhǎng)度,所以下面只具體介紹采用擴(kuò)展幀發(fā)送數(shù)據(jù),而不再描述標(biāo)準(zhǔn)幀的傳輸了。就發(fā)送數(shù)據(jù)而言,若以擴(kuò)展幀格式發(fā)送數(shù)據(jù)幀,包括一個(gè)RTR位和一個(gè)29位的標(biāo)識(shí)符。RTR位用來(lái)區(qū)別標(biāo)準(zhǔn)格式或是擴(kuò)展格式。29位標(biāo)識(shí)符標(biāo)識(shí)了不同數(shù)據(jù)幀的含義,可以用來(lái)區(qū)別一條CAN總線上256個(gè)

9、不同節(jié)點(diǎn)發(fā)送的不同數(shù)據(jù)。就接收數(shù)據(jù)而言,CAN協(xié)議2.0B分別為標(biāo)準(zhǔn)幀和擴(kuò)展幀提供了兩種濾波方式。SJA1000支持CAN協(xié)議2.0B,它提供了4個(gè)8位的驗(yàn)收碼寄存器(ACR0ACR3)和驗(yàn)收屏蔽寄存器(AMR0AMR3)用以完成報(bào)文濾波,實(shí)現(xiàn)對(duì)帶有特定標(biāo)識(shí)符的數(shù)據(jù)幀的接收。其濾波方式如圖3所示。ACR2ACR3ACR1ACR0ACR0ACR0ACR0AMR0擴(kuò)展幀29位標(biāo)識(shí)符 濾 波 器RTR18位標(biāo)識(shí)符11位標(biāo)識(shí)符OR 接收,放入數(shù)據(jù)緩沖區(qū)圖3 CAN協(xié)議的單濾波方式 因此在編寫(xiě)程序?qū)崿F(xiàn)數(shù)據(jù)傳輸?shù)臅r(shí)候,數(shù)據(jù)發(fā)送設(shè)置的標(biāo)識(shí)符和數(shù)據(jù)接收設(shè)置的接收碼和屏蔽碼也是完成數(shù)據(jù)傳輸?shù)囊粋€(gè)關(guān)鍵。4 數(shù)據(jù)傳

10、輸?shù)某绦蛟O(shè)計(jì)4.1 數(shù)據(jù)傳輸系統(tǒng)描述VXI總線按照上面所講的數(shù)據(jù)傳輸基本原理,編寫(xiě)程序完成如圖4的一個(gè)數(shù)據(jù)傳輸系統(tǒng)。完成由CAN總線1上節(jié)點(diǎn)A發(fā)送數(shù)據(jù)到零槽控制機(jī),在由零槽控制機(jī)將數(shù)據(jù)處理后發(fā)送到CAN總線2上的節(jié)點(diǎn)B。同時(shí)CAN總線2上節(jié)點(diǎn)A直接通過(guò)轉(zhuǎn)發(fā)將數(shù)據(jù)發(fā)送到該總線上節(jié)點(diǎn)B。接收VXI總線命令及數(shù)據(jù)向VXI總線發(fā)送命令及數(shù)據(jù) VXI-CAN模塊 接收CAN總線命令及數(shù)據(jù)向CAN總線發(fā)送命令及數(shù)據(jù) CAN 總 線 1 CAN總線節(jié)點(diǎn)2-ACAN總線節(jié)點(diǎn)2-BCAN總線節(jié)點(diǎn)1-BCAN總線節(jié)點(diǎn)1-A CAN 總 線 2 圖4 數(shù)據(jù)傳輸結(jié)構(gòu)完成上述數(shù)據(jù)傳輸,其方式主要有以下3種:CAN總線1

11、上的節(jié)點(diǎn)A向VXI總線零槽發(fā)送數(shù)據(jù)。所發(fā)數(shù)據(jù)幀中29位標(biāo)識(shí)符對(duì)應(yīng)的4個(gè)識(shí)別碼分別為00H、01H、00H、00H。識(shí)別碼2用來(lái)區(qū)別這條CAN總線上256個(gè)不同節(jié)點(diǎn)。因此在不和其他節(jié)點(diǎn)識(shí)別碼沖突時(shí),當(dāng)然可以用00HffH中任意數(shù)字表示該節(jié)點(diǎn)。將設(shè)置好的4個(gè)識(shí)別碼作為發(fā)送數(shù)據(jù)函數(shù)的參數(shù),調(diào)用PCI-CAN卡的驅(qū)動(dòng)函數(shù),將數(shù)據(jù)發(fā)送到VXI-CAN的數(shù)據(jù)接收緩沖區(qū)。當(dāng)它接收到含有這樣識(shí)別碼的幀時(shí),則將該幀所含的8個(gè)數(shù)據(jù)再通過(guò)VXI接口電路發(fā)到VXI上,指定零槽控制機(jī)接收。這一過(guò)程可由中斷和查詢(xún)兩種方式完成。若采用中斷則將識(shí)別碼4設(shè)置為50H,VXI-CAN將自動(dòng)解析,并控制中斷線產(chǎn)生中斷。若采用查詢(xún)方

12、式,則調(diào)用VXI-CAN模塊的函數(shù)查詢(xún)接收緩沖區(qū)是否有數(shù)據(jù)。VXI總線上的零槽控制機(jī)向CAN總線上某一節(jié)點(diǎn)發(fā)送數(shù)據(jù)(如向CAN總線2上的節(jié)點(diǎn)B)。則零槽控制機(jī)程序調(diào)用VXI-CAN模塊的驅(qū)動(dòng)函數(shù),將數(shù)據(jù)發(fā)送到VXI-CAN模塊上的CAN總線2對(duì)應(yīng)的數(shù)據(jù)緩沖區(qū)內(nèi),直到節(jié)點(diǎn)B執(zhí)行接收命令將數(shù)據(jù)從緩沖區(qū)內(nèi)取回。另外,若此時(shí)CAN總線2上其他節(jié)點(diǎn)也希望接收到數(shù)據(jù),只需要直接向緩沖區(qū)發(fā)送讀取數(shù)據(jù)的命令即可。CAN總線2上的節(jié)點(diǎn)A向該總線上其他站點(diǎn)發(fā)送數(shù)據(jù)。則所發(fā)數(shù)據(jù)幀中標(biāo)識(shí)符對(duì)應(yīng)的識(shí)別碼分別為02H、01H、00H、02H。識(shí)別碼1的02H代表CAN總線2上的節(jié)點(diǎn)B,識(shí)別碼2的 01H代表CAN總線2上

13、的節(jié)點(diǎn)A,識(shí)別碼4的02H標(biāo)示CAN總線2。因初始化VXI-CAN模塊設(shè)置接收參數(shù)并允許中斷有 是否有中斷無(wú)等待中斷執(zhí)行中斷服務(wù)程序 收取VXI-CAN模塊數(shù)據(jù)緩沖區(qū)內(nèi)數(shù)據(jù)調(diào)用VXI-CAN模塊發(fā)送數(shù)據(jù)函數(shù),發(fā)送數(shù)據(jù)到CAN總線2上節(jié)點(diǎn)A的緩沖區(qū)圖5 零槽控制機(jī)的程序流程此最后一個(gè)識(shí)別碼01H04H對(duì)應(yīng)得就是4個(gè)CAN接口。同樣地,仿真計(jì)算機(jī)通過(guò)調(diào)用PCI-CAN卡的驅(qū)動(dòng)函數(shù),將帶有這4個(gè)識(shí)別碼的數(shù)據(jù)發(fā)送到VXI-CAN的數(shù)據(jù)接收緩沖區(qū)。當(dāng)VXI-CAN的數(shù)據(jù)接收緩沖區(qū)接收到含有這樣識(shí)別碼的幀時(shí),則不再向VXI總線發(fā)送接收數(shù)據(jù)的信息,而直接將數(shù)據(jù)送到識(shí)別碼指定的另一節(jié)點(diǎn)。在接收數(shù)據(jù)時(shí)要考慮報(bào)文

14、濾波,在編程時(shí)用兩個(gè)數(shù)組來(lái)對(duì)應(yīng)ACR0ACR3和AMR0AMR3寄存器。在以下的編程中,我們將4個(gè)屏蔽碼全設(shè)為0。接收碼與發(fā)送數(shù)據(jù)幀中的識(shí)別碼一致就可以了。初始化節(jié)點(diǎn)A設(shè)置發(fā)送參數(shù)發(fā)送指定標(biāo)識(shí)碼的幀a) 零槽控制機(jī)及各節(jié)點(diǎn)仿真計(jì)算機(jī)程序流程如圖5所示。圖6 CAN總線1上節(jié)點(diǎn)A的程序流程初始化節(jié)點(diǎn)A設(shè)置接收參數(shù)無(wú)數(shù)據(jù)在緩沖區(qū)查詢(xún)緩沖區(qū)接收數(shù)據(jù)標(biāo)志 有數(shù)據(jù)在緩沖區(qū)接收在緩沖區(qū)的幀 圖7 CAN總線2上節(jié)點(diǎn)B的程序流程b) 核心程序 零槽控制機(jī)程序若采用監(jiān)聽(tīng)模式接收數(shù)據(jù),主要代碼如下:int main () int canname4 = 1,0,0,0; int acceptcode4 = 0,1

15、,0,0; /用數(shù)組表示4個(gè)接收碼 int screen4 = 0,0,0,0; /用數(shù)組表示4個(gè)屏蔽碼 AMC3401_init(VXI0:224:INSTR,1,0,&AMC3401); /初始化VXI-CAN模塊 AMC3401_reset(AMC3401,canname); AMC3401_UpdataFre(AMC3401,canname,41920); AMC3401_inceptcode(AMC3401,0,acceptcode,screen); /設(shè)置屏蔽碼和接收碼while (n!=1) n=AMC3401_receiveFlag(AMC3401,0,&n); /監(jiān)聽(tīng)是否有數(shù)

16、據(jù)接收 AMC3401_receive(AMC3401,0,&recelength,rececode,receNumb,&receflag,&recedatanum);/接收數(shù)據(jù)若采用中斷模式接收數(shù)據(jù),主要代碼如下:int main () int canname4 = 1,0,0,0; int acceptcode4 = 0,1,0,80; int screen4 = 0,0,0,0; AMC3401_init(VXI0:224:INSTR,1,0,&AMC3401); /初始化VXI-CAN模塊 AMC3401_reset(AMC3401,canname); AMC3401_UpdataFr

17、e(AMC3401,canname,41920); AMC3401_inceptcode(AMC3401,0,acceptcode,screen); /設(shè)置屏蔽碼和接收碼 AMC3401_enableInter(AMC3401,intercallback); /安裝中斷句柄 ViStatus _VI_FUNCH intercallback(ViSession vi,ViEventType etype,ViEvent event,ViAddr userHandle) AMC3401_Interruptreceive(AMC3401,0,&interrecelength,interrececode

18、,interreceNumb,&interreceflag,&interrecedatanum); /接收數(shù)據(jù) 在編寫(xiě)零槽控制機(jī)程序時(shí),由于使用到了VXI-CAN模塊收發(fā)數(shù)據(jù),需要調(diào)用該模塊的動(dòng)態(tài)鏈接庫(kù)加入到程序工程中,并在程序中加載其頭文件及庫(kù)函數(shù)。通過(guò)以上兩種模式的編程的比較,可見(jiàn),采用中斷模式程序編寫(xiě)更為清晰,使用更為方便。 CAN總線2上節(jié)點(diǎn)B的程序struct PORT_STRUCT ptrStruct; struct PORT_CONFIG ptrConfig;struct CAN_PACKET transPacket;DWORD WINAPI thrdfunc(LPVOID)HA

19、NDLE hthrd;int main () ptrStruct.card = 0; ptrConfig.workMode = 0x01; ptrConfig.filterMode = 0x0; ptrConfig.accMask = 0x00000000; /設(shè)置屏蔽碼 ptrConfig.accCode = 0x00002002; /設(shè)置接收碼 ptrConfig.timer0 = 0x0; ptrConfig.timer1 = 0x14; ptrConfig.control = 0x01; transPacket.rtr = 0x0; /設(shè)置RTR位 transPacket.CAN_ID = 0x01000020; /設(shè)置29位標(biāo)識(shí)符 transPacket.length = 0x8; a=CAN_Trans(&ptrStruct,&transPacket); /發(fā)送數(shù)據(jù) hthrd=CreateThread(NULL,0,thrdfunc,0,0,&hthrdid2); /創(chuàng)建監(jiān)聽(tīng)數(shù)據(jù)的線程DWORD WINAPI thrdfunc(LPVOID)while(receiveallow!=1|count=0) receiveallow=CAN_Inquiry_Rece(&ptrStruct); count=CAN_Get_RxB

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論