??? 摘? 要: 介紹了ISO11783通信協(xié)議的基本特點(diǎn),,并給出了一種基于TMS320F2812 DSP實(shí)現(xiàn)的ISO11783總線(xiàn)ECU通信節(jié)點(diǎn)的軟硬件設(shè)計(jì)方案,。
??? 關(guān)鍵詞: 通信技術(shù)? ISO11783? TMS320F2812? ECU? 農(nóng)業(yè)機(jī)械
?
??? 隨著拖拉機(jī)與自走式農(nóng)業(yè)機(jī)械" title="農(nóng)業(yè)機(jī)械">農(nóng)業(yè)機(jī)械向電子化方向發(fā)展,,目前農(nóng)林車(chē)輛上的電子裝置也越來(lái)越多,,而給農(nóng)業(yè)機(jī)械添加電子設(shè)備的必然結(jié)果是:要求這些電子設(shè)備之間能夠?qū)崿F(xiàn)相互通信。例如,,拖拉機(jī)上的牽引力控制器可以和傳動(dòng)機(jī)構(gòu)以及發(fā)動(dòng)機(jī)的控制器之間進(jìn)行通信,,從而達(dá)到優(yōu)化性能的目的。電子通信用來(lái)協(xié)調(diào)車(chē)輛上的各個(gè)部件,,允許信息在各部件之間共享,,從而實(shí)現(xiàn)分布式控制。增加通信的費(fèi)用只占整個(gè)電子化開(kāi)發(fā)成本的一小部分,,但卻可以給車(chē)輛帶來(lái)功能,、生產(chǎn)效率和性能方面的重大改進(jìn)[1]。
?? ?農(nóng)林車(chē)輛傳統(tǒng)的電氣系統(tǒng)大多采用點(diǎn)對(duì)點(diǎn)的單通信方式,,相互之間少有聯(lián)系,,其結(jié)果是造成龐大的布線(xiàn)系統(tǒng)[2]。有鑒于此,,國(guó)際標(biāo)準(zhǔn)化組織根據(jù)現(xiàn)代農(nóng)業(yè)機(jī)械發(fā)展的需要,,特別是精密農(nóng)業(yè)領(lǐng)域未來(lái)的發(fā)展趨勢(shì),制定了農(nóng)林機(jī)械,、拖拉機(jī)串行控制和數(shù)據(jù)通信的網(wǎng)絡(luò)總線(xiàn)協(xié)議標(biāo)準(zhǔn),,即ISO11783標(biāo)準(zhǔn)(通常稱(chēng)為ISOBUS)。這個(gè)標(biāo)準(zhǔn)為在拖拉機(jī)為農(nóng)具之間統(tǒng)一交換數(shù)據(jù)和控制指令提供了技術(shù)可能,,滿(mǎn)足了車(chē)輛各種電氣設(shè)備信息共享的要求,,并對(duì)關(guān)于農(nóng)業(yè)機(jī)械的各種變量參數(shù)的定義和表示進(jìn)行了規(guī)范,從而使不同原始設(shè)備制造商所開(kāi)發(fā)的設(shè)備能夠做到互通互聯(lián),。本文主要對(duì)實(shí)現(xiàn)ISO11783總線(xiàn)通信的最小系統(tǒng)以及采用TI公司的TMS320F2812 DSP作為微處理器的ECU通信節(jié)點(diǎn)的軟硬件設(shè)計(jì)方案進(jìn)行探討,。
1 ISO11783總線(xiàn)特點(diǎn)
ISO11783參照SAE J1939,、DIN 9684標(biāo)準(zhǔn),以控制器局域網(wǎng)總線(xiàn)協(xié)議(即CAN 2.0B)作為網(wǎng)絡(luò)協(xié)議支持,,規(guī)定了在拖拉機(jī)或農(nóng)具上懸掛或安裝的各種不同設(shè)備(如:任務(wù)管理器,、虛擬終端、設(shè)備控制器,、傳感器和執(zhí)行器)之間進(jìn)行信息傳輸交換的方法和格式,。
ISO11783的物理層標(biāo)準(zhǔn)用來(lái)實(shí)現(xiàn)電子控制單元(ECU)和網(wǎng)絡(luò)總線(xiàn)部分的電氣連接,與ISO11898規(guī)范兼容并采用符合該規(guī)范的CAN控制器及收發(fā)器,。總線(xiàn)段最大長(zhǎng)度為40米,,數(shù)據(jù)傳輸率為250Kbps,。ECU連接總數(shù)受限于總線(xiàn)的電氣負(fù)載能力,按照ISO11783物理層電氣參數(shù)規(guī)定,,每段最多連接30個(gè)ECU,。傳輸介質(zhì)為四芯雙絞線(xiàn),其中兩條導(dǎo)線(xiàn)分別為CAN_H和CAN_L,,由通信信號(hào)驅(qū)動(dòng),;另外兩條導(dǎo)線(xiàn)為T(mén)BC_PWR和TBC_RTN,為總線(xiàn)段上的終端偏置電路(TBC)供電線(xiàn),。整個(gè)11783總線(xiàn)至少被分成兩個(gè)部分:應(yīng)用于拖拉機(jī)上自身各個(gè)功能器件之間通信的拖拉機(jī)總線(xiàn)及用于拖拉機(jī)所安裝的各個(gè)附加功能設(shè)備(如虛擬終端,、任務(wù)控制器和GPS等)以及各個(gè)農(nóng)具ECU之間實(shí)現(xiàn)通信的設(shè)備總線(xiàn)[3]。其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,。
???????????????????????
??? ISO11783協(xié)議在CAN 2.0B協(xié)議的基礎(chǔ)上具體實(shí)現(xiàn)了應(yīng)用層" title="應(yīng)用層">應(yīng)用層,, 將CAN 擴(kuò)展幀封裝成一個(gè)單一的協(xié)議數(shù)據(jù)單元(PDU)。ISO11783PDU數(shù)據(jù)格式由七個(gè)部分構(gòu)成:優(yōu)先權(quán),、保留位,、數(shù)據(jù)頁(yè)、PDU格式,、特定PDU(目標(biāo)地址,、組擴(kuò)展或?qū)S茫⒃吹刂泛蛿?shù)據(jù)域,,如表1所示,。這些域的信息由應(yīng)用層提供。在傳輸過(guò)程中,,先將PDU分隔成一個(gè)或多個(gè)CAN 數(shù)據(jù)幀,,然后通過(guò)物理介質(zhì)傳輸?shù)狡渌W(wǎng)絡(luò)掛接設(shè)備上。
????????????????????????
優(yōu)先權(quán)用于總線(xiàn)傳輸中優(yōu)化數(shù)據(jù)延遲,,保留位留待將來(lái)擴(kuò)展使用,,數(shù)據(jù)頁(yè)為選擇參數(shù)組擴(kuò)展的輔助頁(yè)位,,PDU格式(PF)有PDU1和PDU2兩種,用來(lái)確定數(shù)據(jù)域?qū)?yīng)參數(shù)組編號(hào),。特定PDU(PS)的定義取決于PDU格式,,若PF域的值小于240,則PS域是目標(biāo)地址;若PF域的值在240~255之間,。則PS為組擴(kuò)展(GE)值,。當(dāng)PF=239時(shí),為專(zhuān)用PDU1格式,;PF=255時(shí),,為專(zhuān)用PDU2格式。使用兩種PDU 格式,,不但能實(shí)現(xiàn)定向到特定目標(biāo)地址的通信,,還能提供盡可能多的參數(shù)組編號(hào)組合。已定義的專(zhuān)用PDU格式因制造商而異,。源地址為消息發(fā)送設(shè)備在總線(xiàn)網(wǎng)絡(luò)中的地址[4],。
2 總體設(shè)計(jì)
??? 典型的基于DSP的ISO11783通信系統(tǒng)結(jié)構(gòu)框圖如圖2所示。每個(gè)節(jié)點(diǎn)均由物理層接口CAN總線(xiàn)收發(fā)器模塊,、DSP控制器模塊,、應(yīng)用層模塊組成??偩€(xiàn)的每個(gè)終端需接抑制信號(hào)反射的終端電阻,,其阻值應(yīng)與總線(xiàn)介質(zhì)的特性阻抗相匹配,使用雙絞線(xiàn)時(shí)一般取Rr=100~200Ω,。
?????????????????
2.1 硬件設(shè)計(jì)
主控芯片CPU采用TI公司的TMS320F2812 DSP作為微處理器,,它內(nèi)部集成了完全支持CAN2.0B協(xié)議的增強(qiáng)型控制器局域網(wǎng)(eCAN)模塊,有32個(gè)郵箱,,每個(gè)郵箱具有獨(dú)立可編程的接收過(guò)濾屏蔽,,且都可用標(biāo)準(zhǔn)的或擴(kuò)展的標(biāo)識(shí)符配置為發(fā)送或接收郵箱,支持?jǐn)?shù)據(jù)幀和遠(yuǎn)程幀,,對(duì)發(fā)送和接收的超時(shí)現(xiàn)象可采用一種可編程的中斷操作,。所有進(jìn)行數(shù)據(jù)傳輸和接收濾波的協(xié)議功能都由eCAN控制器執(zhí)行,通過(guò)DSP內(nèi)的特殊功能寄存器可配置CAN控制器訪(fǎng)問(wèn)接收到的數(shù)據(jù)以及傳輸數(shù)據(jù)[5],。因此,,TMS320F2812可以完成ISO11783總線(xiàn)協(xié)議的數(shù)據(jù)鏈路層和應(yīng)用層的所有功能。
CAN收發(fā)器采用SN65HVN230作為CAN協(xié)議控制器和物理總線(xiàn)之間的接口,,與ISO11898標(biāo)準(zhǔn)完全兼容,,可提供對(duì)總線(xiàn)的差動(dòng)發(fā)送能力和對(duì)控制器的差動(dòng)接收能力,可編程輸出轉(zhuǎn)換時(shí)間,,有助于減小電磁干擾,,從而提高系統(tǒng)可靠性,;同時(shí),還具有可編程斜率控制和休眠功能,可進(jìn)一步降低系統(tǒng)功耗,;SN65HVN230的工作電壓為3.3V,,因此無(wú)需電平轉(zhuǎn)換即可實(shí)現(xiàn)與TMS320F2812的有效連接。具體連接電路如圖3所示,。
???????????????????
2.2 軟件設(shè)計(jì)
通信節(jié)點(diǎn)的主要功能是通過(guò)ISO11783實(shí)現(xiàn)各ECU之間的相互通信,,發(fā)送接收命令、信息,、對(duì)象池等,,實(shí)現(xiàn)總線(xiàn)數(shù)據(jù)的共享,從而提高各自的控制性能和運(yùn)行效率,并對(duì)來(lái)自總線(xiàn)的干擾進(jìn)行隔離,,保證ECU的可靠工作,。ISO11783總線(xiàn)的每個(gè)節(jié)點(diǎn)(ECU)都有自己的網(wǎng)絡(luò)地址和名稱(chēng)相對(duì)應(yīng)。地址是ECU在網(wǎng)絡(luò)上發(fā)送或接收數(shù)據(jù)時(shí)用來(lái)識(shí)別自身的信息標(biāo)識(shí)符,,同時(shí)也可通過(guò)其網(wǎng)絡(luò)管理協(xié)議中的地址管理程序?qū)蝹€(gè)的源地址和特殊的ECU功能聯(lián)系起來(lái)。而名稱(chēng)則標(biāo)識(shí)了ECU的基本功能,。各個(gè)節(jié)點(diǎn)連續(xù)監(jiān)視總線(xiàn)上發(fā)出的各種數(shù)據(jù),,當(dāng)所收到的數(shù)據(jù)地址值與自身地址相吻合時(shí),就接收并處理數(shù)據(jù),然后根據(jù)相關(guān)數(shù)據(jù)類(lèi)型做出回應(yīng),。這樣可以有效避免多個(gè)ECU節(jié)點(diǎn)同時(shí)傳輸數(shù)據(jù)時(shí)所引起的混亂,。
基于DSP的ECU節(jié)點(diǎn)通信程序是在TI公司的CCS2000集成化開(kāi)發(fā)環(huán)境下編寫(xiě)的,其C編譯器支持標(biāo)準(zhǔn)的ANSI C語(yǔ)言,,因此,,可以利用高級(jí)語(yǔ)言的特性降低編程的難度,提高程序的可維護(hù)性和縮短開(kāi)發(fā)時(shí)間,。程序主要包括eCAN模塊的初始化,、中斷接收處理以及信息發(fā)送等程序。
2.2.1 eCAN模塊初始化
eCAN模塊使用前必須初始化,,按照ISO11783物理層標(biāo)準(zhǔn)要求設(shè)置適當(dāng)?shù)木W(wǎng)絡(luò)位定時(shí)參數(shù),,其流程圖如圖4所示。首先要設(shè)置主控制寄存器" title="控制寄存器">控制寄存器(CANMC)的改變配置請(qǐng)求位(CCR),,當(dāng)其為1時(shí),eCAN才處于配置模式,;然后等待錯(cuò)誤狀態(tài)寄存器(CANES)的改變配置使能位(CCE)置位" title="置位">置位,當(dāng)其為1時(shí),初始化操作才能被執(zhí)行,;最后就可以對(duì)位定時(shí)器配置寄存器(CANBTC)的相應(yīng)位進(jìn)行設(shè)置,,以達(dá)到所要求的總線(xiàn)傳輸速率。
???????????????????????????????????? ?????
2.2.2 信息發(fā)送
??? 信息的發(fā)送程序由郵箱配置和發(fā)送信息兩部分組成,。CPU把要發(fā)送的數(shù)據(jù)存儲(chǔ)在被配置為發(fā)送郵箱的某個(gè)郵箱中,。假設(shè)這個(gè)郵箱通過(guò)設(shè)置對(duì)應(yīng)的ME.n位已被使能,,那么在將數(shù)據(jù)和標(biāo)識(shí)符寫(xiě)到RAM以后,且對(duì)應(yīng)的TRS.n位已被置位,,則郵箱中的信息將被發(fā)送出去;如果同時(shí)有多個(gè)郵箱被設(shè)置為發(fā)送郵箱和多個(gè)相應(yīng)的TRS.n位被置位,,則會(huì)按照郵箱優(yōu)先級(jí)的高低,依次發(fā)送對(duì)應(yīng)的消息,。如果由于缺少仲裁或錯(cuò)誤使發(fā)送失敗,,則要重新嘗試發(fā)送。在此之前,,CAN模塊要檢驗(yàn)是否有其他的發(fā)送請(qǐng)示,,然后以最高的優(yōu)先級(jí)發(fā)送原來(lái)的消息。其信息發(fā)送流程如圖5所示,。
????????????????????????????????????????????
2.2.3 中斷接收程序
????通過(guò)使用合適的屏蔽,,將每一個(gè)接收消息的標(biāo)識(shí)符和接收郵箱中的標(biāo)識(shí)符進(jìn)行比較,如果相等,,則將接收到的標(biāo)識(shí)符,、控制位和數(shù)據(jù)字節(jié)寫(xiě)入到相應(yīng)的RAM區(qū)域,同時(shí),將相應(yīng)的接收消息未決位RMP.n置位,,并且將產(chǎn)生一個(gè)接收中斷(如果已被使能),。然后調(diào)用相應(yīng)的CAN郵箱中斷服務(wù)程序,讀取數(shù)據(jù)并復(fù)位RMP.n;反之,,若標(biāo)識(shí)符不相符,,則消息不被存儲(chǔ)。如果需要保護(hù)郵箱里的數(shù)據(jù)不被新的數(shù)據(jù)覆蓋,,則要置位覆蓋保護(hù)控制寄存器(CANOPC)的相應(yīng)位,,并要有其他郵箱用來(lái)存儲(chǔ)“溢出”的消息,否則可能會(huì)丟失消息而無(wú)任何提示,。其信息接收流程如圖6所示,。
??????????????????????????????????????????????????????????????????????????????????
3 軟件設(shè)計(jì)注意問(wèn)題
??? eCAN的控制和狀態(tài)寄存器要求以32位方式訪(fǎng)問(wèn)。在采用高級(jí)語(yǔ)言編寫(xiě)程序時(shí),,如果直接對(duì)寄存器的位進(jìn)行操作,,編譯器會(huì)把訪(fǎng)問(wèn)變?yōu)?6位的訪(fǎng)問(wèn)方式" title="訪(fǎng)問(wèn)方式">訪(fǎng)問(wèn)方式,但對(duì)高16位進(jìn)行寫(xiě)操作時(shí),,可能會(huì)破壞控制寄存器中的內(nèi)容,。解決的辦法是:使用1個(gè)32位的臨時(shí)寄存器,先把欲操作的整個(gè)寄存器的內(nèi)容讀入到臨時(shí)寄存器中,,此操作是32位的訪(fǎng)問(wèn)方式,。在臨時(shí)寄存器中對(duì)其中的某些位進(jìn)行操作,然后再把值以32位寫(xiě)的方式賦給eCAN控制寄存器,以此來(lái)強(qiáng)制實(shí)現(xiàn)32位訪(fǎng)問(wèn)方式[6],。實(shí)例如下:
??? struct ECAN_REGS ECanaShadow;
??? ECanaShadow.CANMC.all= ECanaRegs.CANMC.all;
??? ECanaShadow.CANMC.bit.CCR=1;????????? //Set CCR=1
??? ECanaRegs.CANMC.all= ECanaShadow.CANMC.all;
此外,,在中斷處理過(guò)程當(dāng)中,為了讓CPU內(nèi)核識(shí)別并處理CAN中斷,,在任何CAN中斷服務(wù)程序(ISR)中必須進(jìn)行如下操作:
??? (1)必須首先清除寄存器CANGIF0/CANGIF1中引起中斷的標(biāo)志位,。根據(jù)標(biāo)志類(lèi)型可通過(guò)寫(xiě)入1或?qū)ο嚓P(guān)寄存器的相應(yīng)位進(jìn)行寫(xiě)操作來(lái)清除。
??? (2)CAN模塊對(duì)應(yīng)的PIEACK位必須寫(xiě)入1,。其C語(yǔ)言實(shí)現(xiàn)為:
???????? PieCtrlRegs.PIEACK.bit.ACK9 =1,;? //使能PIE
??? (3)必須使能CAN模塊對(duì)應(yīng)的中斷線(xiàn)。
??? ????? IER |= 0x0100,;???????????????? //使能INT9
??? (4)必須通過(guò)清除INTM位來(lái)使CPU中斷處于全局使能,。其匯編語(yǔ)言實(shí)現(xiàn)為:asm('clrc INTM')。
??? 從國(guó)內(nèi)外發(fā)展來(lái)看,,ISO11783通信協(xié)議已成為當(dāng)前農(nóng)林機(jī)械信息化建設(shè)的一個(gè)最為重要的標(biāo)準(zhǔn)和依據(jù),,而基于此協(xié)議的ECU通信節(jié)點(diǎn)的設(shè)計(jì)在整個(gè)車(chē)輛網(wǎng)絡(luò)的構(gòu)建當(dāng)中是必不可少的。通過(guò)對(duì)拖拉機(jī)虛擬終端和變速器控制器之間的通信實(shí)驗(yàn)結(jié)果分析表明,,本文所提出的設(shè)計(jì)方案能夠正常實(shí)現(xiàn)符合ISO11783協(xié)議要求的通信功能,,并保證了系統(tǒng)運(yùn)行的穩(wěn)定性和可靠性。
參考文獻(xiàn)
[1] STONE M L, MCKEE K D, FORMWALT C W, et al.?ISO11783: An electronic communications protocol for?agricultural equipment[A]. Agricultural Equipment Technology Conference (Louisville, Kentucky, USA). ASAE?Publication Number 913C1798, 1999.
[2] 程軍,茍凱英.車(chē)輛控制系統(tǒng)總線(xiàn)通信和控制協(xié)議SAEJ 1939[J].世界汽車(chē),2000,(2):19-21.
[3]?FELLMETH P. CAN-based tractor-agricultural implement?communication ISO11783 [EB/OL]. 2003-09.
?? ?http://www.can-cia.org/j1939based/iso11783/isobus.pdf.
[4] ISO11783: Tractors and machinery for agriculture and?forestry-serial control and communications data network[S].2004.
[5]?張衛(wèi)寧.TMS320C28x系列DSP的CPU與外設(shè)[M].北京:清華大學(xué)出版社,,2005:561-613.
[6] TI.Programming examples for the TMS320F281x eCAN[M],2003.