??? 摘? 要: 介紹了ISO11783通信協(xié)議的基本特點(diǎn),并給出了一種基于TMS320F2812 DSP實(shí)現(xiàn)的ISO11783總線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)林車輛上的電子裝置也越來越多,而給農(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)化性能的目的。電子通信用來協(xié)調(diào)車輛上的各個(gè)部件,允許信息在各部件之間共享,從而實(shí)現(xiàn)分布式控制。增加通信的費(fèi)用只占整個(gè)電子化開發(fā)成本的一小部分,但卻可以給車輛帶來功能、生產(chǎn)效率和性能方面的重大改進(jìn)[1]。
?? ?農(nóng)林車輛傳統(tǒng)的電氣系統(tǒng)大多采用點(diǎn)對(duì)點(diǎn)的單通信方式,相互之間少有聯(lián)系,其結(jié)果是造成龐大的布線系統(tǒng)[2]。有鑒于此,國(guó)際標(biāo)準(zhǔn)化組織根據(jù)現(xiàn)代農(nóng)業(yè)機(jī)械發(fā)展的需要,特別是精密農(nóng)業(yè)領(lǐng)域未來的發(fā)展趨勢(shì),制定了農(nóng)林機(jī)械、拖拉機(jī)串行控制和數(shù)據(jù)通信的網(wǎng)絡(luò)總線協(xié)議標(biāo)準(zhǔn),即ISO11783標(biāo)準(zhǔn)(通常稱為ISOBUS)。這個(gè)標(biāo)準(zhǔn)為在拖拉機(jī)為農(nóng)具之間統(tǒng)一交換數(shù)據(jù)和控制指令提供了技術(shù)可能,滿足了車輛各種電氣設(shè)備信息共享的要求,并對(duì)關(guān)于農(nóng)業(yè)機(jī)械的各種變量參數(shù)的定義和表示進(jìn)行了規(guī)范,從而使不同原始設(shè)備制造商所開發(fā)的設(shè)備能夠做到互通互聯(lián)。本文主要對(duì)實(shí)現(xiàn)ISO11783總線通信的最小系統(tǒng)以及采用TI公司的TMS320F2812 DSP作為微處理器的ECU通信節(jié)點(diǎn)的軟硬件設(shè)計(jì)方案進(jìn)行探討。
1 ISO11783總線特點(diǎn)
ISO11783參照SAE J1939、DIN 9684標(biāo)準(zhǔn),以控制器局域網(wǎng)總線協(xié)議(即CAN 2.0B)作為網(wǎng)絡(luò)協(xié)議支持,規(guī)定了在拖拉機(jī)或農(nóng)具上懸掛或安裝的各種不同設(shè)備(如:任務(wù)管理器、虛擬終端、設(shè)備控制器、傳感器和執(zhí)行器)之間進(jìn)行信息傳輸交換的方法和格式。
ISO11783的物理層標(biāo)準(zhǔn)用來實(shí)現(xiàn)電子控制單元(ECU)和網(wǎng)絡(luò)總線部分的電氣連接,與ISO11898規(guī)范兼容并采用符合該規(guī)范的CAN控制器及收發(fā)器。總線段最大長(zhǎng)度為40米,數(shù)據(jù)傳輸率為250Kbps。ECU連接總數(shù)受限于總線的電氣負(fù)載能力,按照ISO11783物理層電氣參數(shù)規(guī)定,每段最多連接30個(gè)ECU。傳輸介質(zhì)為四芯雙絞線,其中兩條導(dǎo)線分別為CAN_H和CAN_L,由通信信號(hào)驅(qū)動(dòng);另外兩條導(dǎo)線為TBC_PWR和TBC_RTN,為總線段上的終端偏置電路(TBC)供電線。整個(gè)11783總線至少被分成兩個(gè)部分:應(yīng)用于拖拉機(jī)上自身各個(gè)功能器件之間通信的拖拉機(jī)總線及用于拖拉機(jī)所安裝的各個(gè)附加功能設(shè)備(如虛擬終端、任務(wù)控制器和GPS等)以及各個(gè)農(nóng)具ECU之間實(shí)現(xiàn)通信的設(shè)備總線[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ù)頁、PDU格式、特定PDU(目標(biāo)地址、組擴(kuò)展或?qū)S茫?、源地址和?shù)據(jù)域,如表1所示。這些域的信息由應(yīng)用層提供。在傳輸過程中,先將PDU分隔成一個(gè)或多個(gè)CAN 數(shù)據(jù)幀,然后通過物理介質(zhì)傳輸?shù)狡渌W(wǎng)絡(luò)掛接設(shè)備上。
????????????????????????
優(yōu)先權(quán)用于總線傳輸中優(yōu)化數(shù)據(jù)延遲,保留位留待將來擴(kuò)展使用,數(shù)據(jù)頁為選擇參數(shù)組擴(kuò)展的輔助頁位,PDU格式(PF)有PDU1和PDU2兩種,用來確定數(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í),為專用PDU1格式;PF=255時(shí),為專用PDU2格式。使用兩種PDU 格式,不但能實(shí)現(xiàn)定向到特定目標(biāo)地址的通信,還能提供盡可能多的參數(shù)組編號(hào)組合。已定義的專用PDU格式因制造商而異。源地址為消息發(fā)送設(shè)備在總線網(wǎng)絡(luò)中的地址[4]。
2 總體設(shè)計(jì)
??? 典型的基于DSP的ISO11783通信系統(tǒng)結(jié)構(gòu)框圖如圖2所示。每個(gè)節(jié)點(diǎn)均由物理層接口CAN總線收發(fā)器模塊、DSP控制器模塊、應(yīng)用層模塊組成??偩€的每個(gè)終端需接抑制信號(hào)反射的終端電阻,其阻值應(yīng)與總線介質(zhì)的特性阻抗相匹配,使用雙絞線時(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ú)立可編程的接收過濾屏蔽,且都可用標(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í)行,通過DSP內(nèi)的特殊功能寄存器可配置CAN控制器訪問接收到的數(shù)據(jù)以及傳輸數(shù)據(jù)[5]。因此,TMS320F2812可以完成ISO11783總線協(xié)議的數(shù)據(jù)鏈路層和應(yīng)用層的所有功能。
CAN收發(fā)器采用SN65HVN230作為CAN協(xié)議控制器和物理總線之間的接口,與ISO11898標(biāo)準(zhǔn)完全兼容,可提供對(duì)總線的差動(dòng)發(fā)送能力和對(duì)控制器的差動(dòng)接收能力,可編程輸出轉(zhuǎn)換時(shí)間,有助于減小電磁干擾,從而提高系統(tǒng)可靠性;同時(shí),還具有可編程斜率控制和休眠功能,可進(jìn)一步降低系統(tǒng)功耗;SN65HVN230的工作電壓為3.3V,因此無需電平轉(zhuǎn)換即可實(shí)現(xiàn)與TMS320F2812的有效連接。具體連接電路如圖3所示。
???????????????????
2.2 軟件設(shè)計(jì)
通信節(jié)點(diǎn)的主要功能是通過ISO11783實(shí)現(xiàn)各ECU之間的相互通信,發(fā)送接收命令、信息、對(duì)象池等,實(shí)現(xiàn)總線數(shù)據(jù)的共享,從而提高各自的控制性能和運(yùn)行效率,并對(duì)來自總線的干擾進(jìn)行隔離,保證ECU的可靠工作。ISO11783總線的每個(gè)節(jié)點(diǎn)(ECU)都有自己的網(wǎng)絡(luò)地址和名稱相對(duì)應(yīng)。地址是ECU在網(wǎng)絡(luò)上發(fā)送或接收數(shù)據(jù)時(shí)用來識(shí)別自身的信息標(biāo)識(shí)符,同時(shí)也可通過其網(wǎng)絡(luò)管理協(xié)議中的地址管理程序?qū)蝹€(gè)的源地址和特殊的ECU功能聯(lián)系起來。而名稱則標(biāo)識(shí)了ECU的基本功能。各個(gè)節(jié)點(diǎn)連續(xù)監(jiān)視總線上發(fā)出的各種數(shù)據(jù),當(dāng)所收到的數(shù)據(jù)地址值與自身地址相吻合時(shí),就接收并處理數(shù)據(jù),然后根據(jù)相關(guān)數(shù)據(jù)類型做出回應(yīng)。這樣可以有效避免多個(gè)ECU節(jié)點(diǎn)同時(shí)傳輸數(shù)據(jù)時(shí)所引起的混亂。
基于DSP的ECU節(jié)點(diǎn)通信程序是在TI公司的CCS2000集成化開發(fā)環(huán)境下編寫的,其C編譯器支持標(biāo)準(zhǔn)的ANSI C語言,因此,可以利用高級(jí)語言的特性降低編程的難度,提高程序的可維護(hù)性和縮短開發(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á)到所要求的總線傳輸速率。
???????????????????????????????????? ?????
2.2.2 信息發(fā)送
??? 信息的發(fā)送程序由郵箱配置和發(fā)送信息兩部分組成。CPU把要發(fā)送的數(shù)據(jù)存儲(chǔ)在被配置為發(fā)送郵箱的某個(gè)郵箱中。假設(shè)這個(gè)郵箱通過設(shè)置對(duì)應(yīng)的ME.n位已被使能,那么在將數(shù)據(jù)和標(biāo)識(shí)符寫到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ā)送原來的消息。其信息發(fā)送流程如圖5所示。
????????????????????????????????????????????
2.2.3 中斷接收程序
????通過使用合適的屏蔽,將每一個(gè)接收消息的標(biāo)識(shí)符和接收郵箱中的標(biāo)識(shí)符進(jìn)行比較,如果相等,則將接收到的標(biāo)識(shí)符、控制位和數(shù)據(jù)字節(jié)寫入到相應(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)位,并要有其他郵箱用來存儲(chǔ)“溢出”的消息,否則可能會(huì)丟失消息而無任何提示。其信息接收流程如圖6所示。
??????????????????????????????????????????????????????????????????????????????????
3 軟件設(shè)計(jì)注意問題
??? eCAN的控制和狀態(tài)寄存器要求以32位方式訪問。在采用高級(jí)語言編寫程序時(shí),如果直接對(duì)寄存器的位進(jìn)行操作,編譯器會(huì)把訪問變?yōu)?6位的訪問方式" title="訪問方式">訪問方式,但對(duì)高16位進(jìn)行寫操作時(shí),可能會(huì)破壞控制寄存器中的內(nèi)容。解決的辦法是:使用1個(gè)32位的臨時(shí)寄存器,先把欲操作的整個(gè)寄存器的內(nèi)容讀入到臨時(shí)寄存器中,此操作是32位的訪問方式。在臨時(shí)寄存器中對(duì)其中的某些位進(jìn)行操作,然后再把值以32位寫的方式賦給eCAN控制寄存器,以此來強(qiáng)制實(shí)現(xiàn)32位訪問方式[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;
此外,在中斷處理過程當(dāng)中,為了讓CPU內(nèi)核識(shí)別并處理CAN中斷,在任何CAN中斷服務(wù)程序(ISR)中必須進(jìn)行如下操作:
??? (1)必須首先清除寄存器CANGIF0/CANGIF1中引起中斷的標(biāo)志位。根據(jù)標(biāo)志類型可通過寫入1或?qū)ο嚓P(guān)寄存器的相應(yīng)位進(jìn)行寫操作來清除。
??? (2)CAN模塊對(duì)應(yīng)的PIEACK位必須寫入1。其C語言實(shí)現(xiàn)為:
???????? PieCtrlRegs.PIEACK.bit.ACK9 =1;? //使能PIE
??? (3)必須使能CAN模塊對(duì)應(yīng)的中斷線。
??? ????? IER |= 0x0100;???????????????? //使能INT9
??? (4)必須通過清除INTM位來使CPU中斷處于全局使能。其匯編語言實(shí)現(xiàn)為:asm('clrc INTM')。
??? 從國(guó)內(nèi)外發(fā)展來看,ISO11783通信協(xié)議已成為當(dāng)前農(nóng)林機(jī)械信息化建設(shè)的一個(gè)最為重要的標(biāo)準(zhǔn)和依據(jù),而基于此協(xié)議的ECU通信節(jié)點(diǎn)的設(shè)計(jì)在整個(gè)車輛網(wǎng)絡(luò)的構(gòu)建當(dāng)中是必不可少的。通過對(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] 程軍,茍凱英.車輛控制系統(tǒng)總線通信和控制協(xié)議SAEJ 1939[J].世界汽車,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.