基于CAN總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于CAN總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于CAN總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于CAN總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于CAN總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩204頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于can總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)1 前言控制器局域網(wǎng)(cancontroller area network)屬于現(xiàn)場(chǎng)總線(fieldbus)的范疇,是眾多的屬于現(xiàn)場(chǎng)總線標(biāo)準(zhǔn)之一,它適用于工業(yè)控制系統(tǒng),具有通信速率高、可靠性強(qiáng)、連接方便、性能價(jià)格比高等諸多特點(diǎn)。它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),以其短報(bào)文幀及csma/cd-amp(帶有信息優(yōu)先權(quán)及沖突檢測(cè)的載波監(jiān)聽多路訪問)的mac(媒介訪問控制)方式而倍受工業(yè)自動(dòng)化領(lǐng)域中設(shè)備互連的厚愛。can的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò),它可以應(yīng)用于汽車系統(tǒng)、機(jī)械、技術(shù)設(shè)備和工業(yè)自動(dòng)化里幾乎任何類型的數(shù)據(jù)通信。can具有如

2、一下優(yōu)點(diǎn):1)使用簡(jiǎn)單方便。許多can控制器實(shí)現(xiàn)了can物理層及數(shù)據(jù)鏈路層的大部分功能,用戶只須對(duì)can控制器進(jìn)行初始化和對(duì)can總線上的數(shù)據(jù)進(jìn)行收發(fā)操作即可實(shí)現(xiàn)通信;2)高可靠性。can上的最大通信速率可達(dá)1mbps,can總線是多主節(jié)點(diǎn),各節(jié)點(diǎn)通過總線仲裁獲得總線控制權(quán)。完善的錯(cuò)誤處理機(jī)制保證了高噪聲干擾環(huán)境下數(shù)據(jù)傳送的安全可靠;3)系統(tǒng)可擴(kuò)展性能好。can總線是基于發(fā)送報(bào)文的編碼,而不是對(duì)can控制節(jié)點(diǎn)進(jìn)行編碼,故增添或刪除can節(jié)點(diǎn)不會(huì)對(duì)系統(tǒng)造成太大的影響。can總線以報(bào)文為單位進(jìn)行信息傳送,它支持4種不同類型的報(bào)文幀:數(shù)據(jù)幀、遠(yuǎn)程幀、超載幀和錯(cuò)誤幀。報(bào)文中包含信息標(biāo)識(shí)符id,它標(biāo)志了

3、報(bào)文的優(yōu)先權(quán)。can總線上各個(gè)節(jié)點(diǎn)都可主動(dòng)發(fā)送,總線上的報(bào)文采用標(biāo)識(shí)符id進(jìn)行仲裁,id值越小,優(yōu)先級(jí)越高。具有最高優(yōu)先權(quán)報(bào)文的節(jié)點(diǎn)贏得總線使用權(quán),而其它節(jié)點(diǎn)自動(dòng)停比發(fā)送。在總線再次空閑后,這些節(jié)點(diǎn)將自動(dòng)重發(fā)原報(bào)文。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都可由id來自動(dòng)決定是否接收該報(bào)文。每個(gè)節(jié)點(diǎn)都有id寄存器和屏蔽寄存器接收到的報(bào)文只有與該屏蔽的功能相同時(shí),該節(jié)點(diǎn)才開始正式接收?qǐng)?bào)文,否則它將不理睬id后面的報(bào)文。這使can系統(tǒng)非常靈活,可任意擴(kuò)展或改變網(wǎng)絡(luò)組成。c8051f系列單片機(jī)是集成的混合信號(hào)片上系統(tǒng)soc(system on chip),具有與mcs-51內(nèi)核及指令集完全兼容的微控制器,除具有標(biāo)準(zhǔn)8051

4、的數(shù)字外設(shè)部件之外,片內(nèi)還集成數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬部件和其它數(shù)字外設(shè)及功能部件。正是由于其體積小、集成度高、功能多、配置容易、使用方便等特點(diǎn),已被廣泛應(yīng)用于智能儀表、數(shù)據(jù)采集、自動(dòng)化控制等領(lǐng)域。因此本文采用c8051f120設(shè)計(jì)與實(shí)現(xiàn)can總線通信協(xié)議,充分發(fā)揮其體積小、可靠性高的特點(diǎn)。c8051f120是完全集成的混合信號(hào)片上系統(tǒng)mcu芯片,具有64個(gè)數(shù)字i/o引腳(100腳tqfp封裝)。2 數(shù)據(jù)傳輸格式的制定在can2.0規(guī)范中規(guī)定,每次收發(fā)最多只能傳送8字節(jié).這可以滿足大多數(shù)工業(yè)領(lǐng)域中控制命令、工控狀態(tài)和測(cè)試數(shù)據(jù)的一般要求;但實(shí)際應(yīng)用中,往往出現(xiàn)傳送多于8字節(jié)的要求,此時(shí)應(yīng)通

5、過報(bào)文的拆卸和拼接技術(shù)予以實(shí)現(xiàn)。本文在can2.0a的基礎(chǔ)上,定義了簡(jiǎn)單的傳輸格式,完成了單幀數(shù)據(jù)和多幀數(shù)據(jù)準(zhǔn)確快捷的傳輸。信息傳遞格式如表一所示:其中,各位的含義如下:ff:0表示為標(biāo)準(zhǔn)格式,1表示為擴(kuò)展格式;rtr:0表示為數(shù)據(jù)幀,1表示為遠(yuǎn)程幀;dlc.x:數(shù)據(jù)長(zhǎng)度代碼位(08);id.x:信息標(biāo)識(shí)符位:id.28id.26為信息功能標(biāo)識(shí) id.25id.21為接收任務(wù)標(biāo)識(shí) id.20id.18為接收節(jié)點(diǎn)地址標(biāo)識(shí)x :保留位,默認(rèn)為0,不能對(duì)保留位進(jìn)行寫操作;datao:數(shù)據(jù)場(chǎng)的第一個(gè)字節(jié),本協(xié)議中用來表明數(shù)據(jù)的屬性;data0.7datao.5為發(fā)送節(jié)點(diǎn)地址標(biāo)識(shí);data0.4data

6、o.1為數(shù)據(jù)功能標(biāo)識(shí) data0.0 0為擴(kuò)展位,0 表明數(shù)據(jù)長(zhǎng)度小于8不用擴(kuò)展,1 表示數(shù)據(jù)長(zhǎng)度大于8需要擴(kuò)展data1作傳遞次數(shù)索引。data1: datao.0為0時(shí),傳遞數(shù)據(jù);datao.0為1時(shí),為數(shù)據(jù)傳遞次數(shù)的索引。本文設(shè)計(jì)的信息優(yōu)先級(jí)從高到低依次為:信息功能標(biāo)識(shí)、任務(wù)功能標(biāo)識(shí)和目標(biāo)節(jié)點(diǎn)地址標(biāo)識(shí)。信息功能標(biāo)識(shí)設(shè)在id的最高幾位,通過3位的功能代碼可以區(qū)分某些情況的8種基本功能:這些功能可以為節(jié)點(diǎn)狀態(tài)控制、節(jié)點(diǎn)保護(hù)、緊急情況通報(bào)以及有時(shí)間標(biāo)記的信息等;接收任務(wù)標(biāo)識(shí)表明本幀數(shù)據(jù)的任務(wù)屬性,容量為32;目標(biāo)節(jié)點(diǎn)地址指示本次數(shù)據(jù)的目的地址,容量為8。data0.0在本協(xié)議中作為標(biāo)志位,用來

7、區(qū)別單幀傳輸和多幀傳輸,解決了大于8字節(jié)的字符串的傳輸問題。當(dāng)標(biāo)志位為1時(shí),表示傳送的是多幀數(shù)據(jù);為0時(shí)表明是單幀數(shù)據(jù)。這樣克服了can 只能傳輸小于等于8字節(jié)數(shù)據(jù)的缺點(diǎn),實(shí)現(xiàn)了大于8字節(jié)的數(shù)據(jù)的傳輸。為了識(shí)別多幀傳輸中可能會(huì)出現(xiàn)的重幀和丟幀現(xiàn)象,本協(xié)議規(guī)定數(shù)據(jù)場(chǎng)第一字節(jié)作為多幀數(shù)據(jù)傳輸次序的索引。按照本協(xié)議制定的格式傳輸數(shù)據(jù)時(shí),單幀最多傳輸7字節(jié)的實(shí)際數(shù)據(jù):當(dāng)數(shù)據(jù)流長(zhǎng)度大于7字節(jié)時(shí),就要分成多幀傳送。3 應(yīng)用層協(xié)議設(shè)計(jì)在canv2.0規(guī)范標(biāo)準(zhǔn)中,只規(guī)定了iso參考模型的物理層和數(shù)據(jù)鏈路層,沒有規(guī)定媒體的連接單元以及駐留媒體,也沒有規(guī)定應(yīng)用層。物理層負(fù)責(zé)譬如物理信號(hào)傳輸、譯碼、位時(shí)序和位同步等

8、功能,而數(shù)據(jù)鏈路層負(fù)責(zé)總線仲裁、信息分段以及數(shù)據(jù)安全、數(shù)據(jù)確認(rèn)、錯(cuò)誤檢測(cè)、信號(hào)傳輸和錯(cuò)誤控制的功能。實(shí)際上,即使在執(zhí)行一些非常簡(jiǎn)單的基于can的分布式系統(tǒng)時(shí)。除了基本的兩層服務(wù)之外,還要求或希望有更多功能,如發(fā)送長(zhǎng)于8字節(jié)的字符串、響應(yīng)或確定數(shù)據(jù)傳送、標(biāo)識(shí)符分配、網(wǎng)絡(luò)啟動(dòng)或監(jiān)控節(jié)點(diǎn)。由于這些附加的功能直接支持應(yīng)用過程,所以它可以被認(rèn)作“應(yīng)用層”。如果正確執(zhí)行,則應(yīng)用層以及相應(yīng)的應(yīng)用層接口(子協(xié)議)為通訊和應(yīng)用過程提供了一個(gè)清晰定義的分界以便把它們區(qū)分開來。在一些利用簡(jiǎn)單的通信協(xié)議就可以滿足要求的情況下,采用復(fù)雜的協(xié)議會(huì)造成資源的浪費(fèi),而且,使用起來也很不方便,反而限制了can的靈活性。所以在一

9、些情況下制定適合要求的通信協(xié)議,對(duì)can的開發(fā)和使用至關(guān)重要。本文根據(jù)實(shí)際系統(tǒng)設(shè)計(jì)的需要,在2.0a技術(shù)規(guī)范的基礎(chǔ)上制定了can應(yīng)用層通信協(xié)議。can應(yīng)用層協(xié)議主要負(fù)責(zé)建立cpu與底層之間的橋梁,它主要由四部分組成:節(jié)點(diǎn)的開關(guān)機(jī)制、數(shù)據(jù)的收發(fā)機(jī)制、錯(cuò)誤處理機(jī)制和中斷管理機(jī)制五部分組成。四種機(jī)制互相聯(lián)系、互相制約,共同維護(hù)系統(tǒng)的運(yùn)轉(zhuǎn)。限于篇幅本文主要介紹關(guān)鍵的數(shù)據(jù)收發(fā)機(jī)制。3.1 數(shù)據(jù)發(fā)送機(jī)制發(fā)送機(jī)制主要實(shí)現(xiàn)將cpu要發(fā)送的數(shù)據(jù)接過來,并整理為符合應(yīng)用層協(xié)議規(guī)定的幀格式,將拆卸好的小包(數(shù)據(jù)幀)順序放入循環(huán)隊(duì)列中等待發(fā)送,并負(fù)責(zé)管理和維護(hù)發(fā)送循環(huán)隊(duì)列的止常運(yùn)轉(zhuǎn)。在定時(shí)器定時(shí)中斷中定期對(duì)循環(huán)隊(duì)列進(jìn)

10、行掃描,如果發(fā)現(xiàn)隊(duì)列中有數(shù)據(jù)等待發(fā)送,則調(diào)用發(fā)送函數(shù)將數(shù)據(jù)發(fā)送到can總線。在底層開辟了一個(gè)臨時(shí)緩沖區(qū)用于暫時(shí)存放等待發(fā)送的小包,臨時(shí)緩沖區(qū)采用循環(huán)隊(duì)列的存儲(chǔ)結(jié)構(gòu),對(duì)數(shù)據(jù)實(shí)行先入先出的管理模式。循環(huán)隊(duì)列是一個(gè)42*11的二維數(shù)組,用來暫時(shí)安置cpu即將發(fā)送的數(shù)據(jù),數(shù)據(jù)被順序安排在循環(huán)隊(duì)列中等待發(fā)送。每增加一幀數(shù)據(jù),循環(huán)隊(duì)列的尾指針加1;每成功發(fā)送完一幀數(shù)據(jù),循環(huán)隊(duì)列的頭指針減1。當(dāng)循環(huán)隊(duì)列中沒有數(shù)據(jù)時(shí),隊(duì)列的狀態(tài)為空,否則指示為不空;若循環(huán)隊(duì)列的頭指針和尾指針重合而隊(duì)列又處于不空的狀態(tài),此時(shí)隊(duì)列為滿的狀態(tài)。當(dāng)隊(duì)列處于滿的狀態(tài)時(shí),禁止向隊(duì)列再寫入數(shù)據(jù),否則容易導(dǎo)致數(shù)據(jù)的覆蓋或丟失。隊(duì)列中數(shù)據(jù)遵循

11、先入先出的原則,cpu將數(shù)據(jù)從隊(duì)列尾部裝入,向can總線發(fā)送數(shù)據(jù)時(shí)則從隊(duì)列頭部將數(shù)據(jù)讀走。發(fā)送循環(huán)隊(duì)列的曾理單位為幀,每次操作都是11個(gè)字節(jié)為單位。在發(fā)送機(jī)制運(yùn)轉(zhuǎn)前,首先對(duì)發(fā)送循環(huán)隊(duì)列初始化,將循環(huán)隊(duì)列的頭指針、尾指針賦值為零,將已占用的空間也賦值為零。can發(fā)送機(jī)制主要由兩大模塊組成:打小包模塊和幀發(fā)送模塊。當(dāng)cpu有數(shù)據(jù)需要發(fā)送時(shí),調(diào)用打小包函數(shù),要求給出待發(fā)送數(shù)據(jù)的存放地址。打小包函數(shù)將會(huì)按照本協(xié)議規(guī)定的格式將發(fā)送節(jié)點(diǎn)地址、接收節(jié)點(diǎn)地址、信息類型、任務(wù)標(biāo)識(shí)、數(shù)據(jù)標(biāo)識(shí)等參數(shù)整理為can數(shù)據(jù)鏈路層id的格式,將數(shù)據(jù)組裝成符合應(yīng)用層協(xié)議所規(guī)定的數(shù)據(jù)幀(小包),實(shí)現(xiàn)對(duì)長(zhǎng)度大于7字節(jié)的數(shù)據(jù)的打小包

12、處理,按照所填加索引號(hào)的順序放到發(fā)送循環(huán)隊(duì)列中等待發(fā)送。打小包函數(shù)的流程圖如圖1所示:3.2 數(shù)據(jù)接收機(jī)制can接收機(jī)制負(fù)責(zé)將數(shù)據(jù)從can總線上接收下來,按照數(shù)據(jù)源節(jié)點(diǎn)的地址將其還原為發(fā)送前的格式,準(zhǔn)確無誤的傳遞給上層,并負(fù)責(zé)為上層提供接口函數(shù)。在cpu將數(shù)據(jù)取走以后,清空相應(yīng)的數(shù)組。在底層開辟了一個(gè)臨時(shí)緩沖區(qū)用于暫時(shí)存放從can總線上接收下的數(shù)據(jù),臨時(shí)緩沖區(qū)采用二維數(shù)組的格式,容量為4*3*64。第一維的容量為4,分別指示發(fā)送節(jié)點(diǎn)的地址;第二維容量為3,作為數(shù)據(jù)的擴(kuò)展緩存,指示可連續(xù)存放來自于同一節(jié)點(diǎn)的包的數(shù)目;第三維的容量為64,用來存放經(jīng)過整理以后的數(shù)據(jù)。一般來說,開辟一個(gè)二維的空間就可

13、以使協(xié)議周轉(zhuǎn),但是,在實(shí)際系統(tǒng)中可能會(huì)出現(xiàn)cpu還未能將整理完畢的數(shù)據(jù)取走此時(shí)又接到來自于同一節(jié)點(diǎn)的新的數(shù)據(jù),這樣就可能導(dǎo)致新的數(shù)據(jù)覆蓋掉原來的數(shù)據(jù),造成數(shù)據(jù)的丟失。為避免這種潛在地危險(xiǎn),因此開辟了三維空間,在最壞的情況下,每個(gè)節(jié)點(diǎn)都可同時(shí)容納來自于同一節(jié)點(diǎn)連續(xù)發(fā)送的3包數(shù)據(jù),大大降低了數(shù)據(jù)丟失的可能性。接收數(shù)據(jù)流程如圖二所示。圖 二: 數(shù)據(jù)發(fā)送流程5 總結(jié)本文創(chuàng)新點(diǎn):can總線以其卓越的特性、極高的可靠性和獨(dú)特的設(shè)計(jì),在工業(yè)過程監(jiān)控設(shè)備的互聯(lián)方面得到廣泛的應(yīng)用,受到工業(yè)界的廣泛重視,并被公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線之一。作為通用、有效、可靠及經(jīng)濟(jì)的平臺(tái),ca n協(xié)議也已經(jīng)廣泛地受到了歡迎。由于

14、can2.0規(guī)范固有的局限性,客觀上要求用戶建立高層協(xié)議對(duì)can進(jìn)行完善。本文所設(shè)計(jì)的can總線應(yīng)用層協(xié)議已經(jīng)投入使用,具有簡(jiǎn)單、靈活、移植方便等特點(diǎn)。can總線在家庭智能化控制系統(tǒng)中的應(yīng)用研究時(shí)間:2010-09-22 12:44:15 來源:現(xiàn)代電子技術(shù) 作者:程月平 袁 勇o 引言 家庭智能控制系統(tǒng)的主要功能集中在家庭安全報(bào)警、電話或電腦遠(yuǎn)程控制、紅外遙控、自動(dòng)抄表控制、燈光和濕度控制等方面。根據(jù)智能終端設(shè)備傳輸數(shù)據(jù)和功能的不同可以把它分成兩類子網(wǎng),一類是傳輸數(shù)據(jù)以數(shù)據(jù)量小、速率低的家庭自動(dòng)化控制設(shè)備;另一類是傳輸多媒體信息、(視頻、音頻信號(hào)),信號(hào)量大、速率快,如視頻會(huì)議、音頻點(diǎn)播等。

15、家庭智能終端設(shè)備可以采用總線結(jié)構(gòu)組建成有線子網(wǎng)和無線子網(wǎng),因各設(shè)備分布在家中不同的地方,對(duì)于組建成有線子網(wǎng)布線比較復(fù)雜,但是如果采用plc與can總線構(gòu)建成網(wǎng)絡(luò),將降低成本。 can(controller area network,控制器局域網(wǎng))是德國(guó)bosch公司在20世紀(jì)80年代初為汽車檢測(cè)控制而開發(fā)的一種串行數(shù)據(jù)通訊協(xié)議,它是一種多主機(jī)總線,通訊介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維,通訊速率為1mbs。can總線具有卓越的性能,極高的可靠性和獨(dú)特的設(shè)計(jì),廣泛應(yīng)用于工業(yè)自動(dòng)化、交通工具、醫(yī)療儀器以及建筑、環(huán)境控制等眾多部門。1 家庭智能化控制系統(tǒng)的組成 家庭智能化控制系統(tǒng)是電視、洗衣機(jī)、空

16、調(diào)及水表、電表、燃?xì)獗淼仍O(shè)備的指揮通信和信息管理的核心,主要功能是與遠(yuǎn)程控制系統(tǒng)進(jìn)行數(shù)傳通信,接收各種控制口令,完成對(duì)相應(yīng)設(shè)備的實(shí)時(shí)控制。 控制系統(tǒng)中凡具有嵌入式微處理器或微計(jì)算機(jī)的單體均通過can總線相互連接。組成分布式局部網(wǎng),實(shí)現(xiàn)數(shù)據(jù)交換和信息資源共享。這種設(shè)計(jì)具有以下優(yōu)點(diǎn):減少了通信端口、連接電纜;抗干擾能力強(qiáng);配置靈活、系統(tǒng)擴(kuò)展和升級(jí)方便;調(diào)試簡(jiǎn)單,檢修方便。 由can總線組成的家庭智能化控制系統(tǒng)原理如圖1所示。2 plc與can總線的連接 現(xiàn)以ge fanuc系列90 plc為例,給出一個(gè)plc與can總線的連接方案。 ge系列90 plc都帶有經(jīng)轉(zhuǎn)換的rs 232串行通訊口,編程計(jì)

17、算機(jī)通過此串口與plc進(jìn)行通訊和編程。rs 232標(biāo)準(zhǔn)電平采用負(fù)邏輯,規(guī)定+3+15v之間的任意電平為邏輯“0”電平,-3-15v之間的任意電平為邏輯“1”電平。而can信號(hào)則使用差分電壓傳送,兩條信號(hào)線稱為“can _h”和“cam_l”,靜態(tài)時(shí)均為25 v左右,此時(shí)的狀態(tài)表示為邏輯“1”,也可以叫做“隱性”;用can_h比can_l高表示邏輯“0”,稱為“顯性”。顯性時(shí),通常電壓值為:can_h=35v,can_l=15v。 rs 232串口的幀格式為:1位起始位,8位數(shù)據(jù)位,1位可編程的第9位(此位為發(fā)送和接收的地址數(shù)據(jù)位),1位停止位。而can的數(shù)據(jù)幀格式為:幀信息+id+數(shù)據(jù)(可分為

18、標(biāo)準(zhǔn)幀和擴(kuò)展幀兩種格式)。因此,設(shè)計(jì)時(shí)就需要有一個(gè)微控制器來實(shí)現(xiàn)電平和幀格式等的轉(zhuǎn)換,其轉(zhuǎn)換方式如圖2所示。 用單片機(jī)at89c52作為微處理器;用sjal000作為can微控制器,sjal000中集成了can協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可被動(dòng)局面對(duì)通信數(shù)據(jù)的幀處理;高速光電隔離用6n137實(shí)現(xiàn),其作用是防止串入信號(hào)干擾;max232用來完成rs 232電平到微控制器接口芯片ttl電平的轉(zhuǎn)換。具體的硬件接口電路參見sjal000的資料,但有以下幾點(diǎn)需要注意: (1)can總線兩端接有一個(gè)120 的電阻,其作用是匹配總線阻抗,提高數(shù)據(jù)通信的抗干擾性及可靠性。但實(shí)際上只需保證can網(wǎng)絡(luò)中“can

19、_h”和“can_l”之間的跨接電阻為60 即可。 (2)sjal000的20引腳rxl在不使用時(shí)可接地,配合cdr6的置位可使總線長(zhǎng)度大大增加。 (3)引腳tx0,txl的接法決定了串行輸出的電平。具體關(guān)系可參考輸出控制寄存器ocr的設(shè)置。 (4)at82c250的rs引腳與地間接有1個(gè)斜率電阻。電阻大小可根據(jù)總線通信速度作適當(dāng)調(diào)整,一般在16140 k之間。 (5)max232外圍需要4個(gè)電解電容c1,c2,c3,c4,這些電容也是內(nèi)部電源轉(zhuǎn)換所需電容,其取值均為1f25 v,宜選用鉭電容并且位置應(yīng)用量靠近芯片,電源vcc和地之間要接1個(gè)01f的去耦電容。 在微處理控制下,rs 232和c

20、an進(jìn)行數(shù)據(jù)交換時(shí),采用串口接收和can中斷方式可提高工作效率。sjal000的初始化在復(fù)位模式下才可以進(jìn)行,主要包括工作方式的設(shè)置、時(shí)鐘分頻和驗(yàn)收濾波寄存器的設(shè)置、波特率參數(shù)的設(shè)置以及中斷允許寄存器的設(shè)置等。其主程序流程圖如圖3所示。 數(shù)據(jù)能否準(zhǔn)確傳遞還取決于波特率和流量控制,這也是軟件設(shè)計(jì)時(shí)不可忽略的地方。因此接下來主要介紹can波特率的設(shè)置、串口波特率的自動(dòng)檢測(cè)、串口數(shù)據(jù)流量控制。 can協(xié)議中的要素之一是波特率。可以設(shè)置位周期中的位采樣點(diǎn)位置和采樣次數(shù),以使可以自由地優(yōu)化應(yīng)用網(wǎng)絡(luò)性能,但在優(yōu)化過程中,要注意位定時(shí)參數(shù)基準(zhǔn)參考振蕩器的容差和系統(tǒng)中不同信號(hào)傳播延遲之間的關(guān)系。 系統(tǒng)的位速率

21、fbit表示每單位時(shí)間傳輸數(shù)據(jù)位的量,即波特率fbit=1tbit。額定的位定時(shí)由3個(gè)互不重疊的段sync_seg,tsegl和tseg2組成,這3個(gè)時(shí)間段分別是tsync_seg,ttsegl和ttseg2。所以,額定位周期tbit是3個(gè)時(shí)間段的和:tbit=tsync_seg+ttsegl+ttseg2。位周期中這些段都用整數(shù)個(gè)基本時(shí)間單位來表示。該時(shí)間單位叫時(shí)間份額tq,時(shí)間份額的持續(xù)時(shí)間是can系統(tǒng)時(shí)鐘的一個(gè)周期tscl,可從振蕩器時(shí)鐘周期tclk取得。通過編程預(yù)分頻因數(shù)(波特率預(yù)設(shè)值brp)可以調(diào)整can系統(tǒng)時(shí)鐘,即tscl=brp2tclk=2bprclk。 對(duì)can位定時(shí)計(jì)算的另

22、一個(gè)很重要的時(shí)間段是同步跳轉(zhuǎn)寬度(sjw),持續(xù)時(shí)間是tsjw。sjw段并不是位周期的一段,只是定義了在重同步事件中被增長(zhǎng)或縮短的位周期的最大tq數(shù)量。此外,can協(xié)議還允許用戶指定位采樣模式(sam),分別是單次采樣和三次采樣模式(在3個(gè)采樣結(jié)果中選出1個(gè))。在單次采樣模式中,采樣點(diǎn)在tesg1段的末端。而三次采樣模式比單次采樣多取兩個(gè)采樣點(diǎn),它們?cè)趖segl段末端的前面,之間相差一個(gè)tq。上面所提到的bpr,sjw,sam,tesgl,tesg2都可由用戶通過can控制器的內(nèi)裝中寄存器btr0和btrl來定義。設(shè)置好btr0和btrl后,實(shí)際傳輸?shù)牟ㄌ芈史秶鸀椋鹤畲?1(tbit-tsjw

23、),最小=1(tbit+tsjw)。 檢測(cè)轉(zhuǎn)換裝置的串口波特率,首先可對(duì)主機(jī)的接收波特率(以9600 bs為例)進(jìn)行設(shè)定,并在終端發(fā)送一個(gè)特定的字符(以回車符為例),這樣,主機(jī)根據(jù)接收到的字符信息就可以確定轉(zhuǎn)換裝置的通信波特率?;剀嚪腶scii值是0dh,在不同波特率下接收到的值如表1所列。 數(shù)據(jù)在兩個(gè)串口之間的傳輸時(shí),常常會(huì)出現(xiàn)丟失數(shù)據(jù)的現(xiàn)象。由于單片機(jī)緩沖區(qū)有限,如接收數(shù)據(jù)時(shí)緩沖區(qū)已滿,那么此時(shí)繼續(xù)發(fā)送來的數(shù)據(jù)就會(huì)丟失。而流控制能有效地解決該問題,當(dāng)接收端數(shù)據(jù)處理不過來時(shí),流控制系統(tǒng)就會(huì)發(fā)出“不再接收”的信號(hào),而使發(fā)送端停止發(fā)送,直到收到“可以繼續(xù)發(fā)送”的信號(hào)再發(fā)送數(shù)據(jù)。因此流控制可以控

24、制數(shù)據(jù)傳輸?shù)倪M(jìn)程,防止數(shù)據(jù)丟失。常用的兩種流控制是硬件流控制(包括rtscts,dtrcts等)和軟件流控制xonxoff(繼續(xù)停止),下面僅就硬件流控制rtscts加以說明。采用硬件進(jìn)行流控制時(shí),串口終端rts,cts接到單片機(jī)的io口,通過置io口為1或0來接收和發(fā)出起停信號(hào)。數(shù)據(jù)終端設(shè)備(如計(jì)算機(jī))使用rts來起始單片機(jī)發(fā)出的數(shù)據(jù)流,而單片機(jī)則用cts來起動(dòng)和暫停來自計(jì)算機(jī)的數(shù)據(jù)流。實(shí)現(xiàn)這種硬件握手方式時(shí),在編程時(shí)根據(jù)接收端緩沖區(qū)的大小設(shè)置一個(gè)高位標(biāo)志和一個(gè)低位標(biāo)志,當(dāng)緩沖區(qū)內(nèi)數(shù)據(jù)量達(dá)到高位時(shí),就在接收端將cts線置低(送邏輯0),而當(dāng)發(fā)送端的程序檢測(cè)到cts為低后,就停止發(fā)送數(shù)據(jù),直到

25、接收端緩沖區(qū)的數(shù)據(jù)量低于低位而將cts置高為止。rts則用來標(biāo)明接收設(shè)備有沒有準(zhǔn)備好接收數(shù)據(jù)。 以下是can接收子程序: 3 結(jié)語(yǔ) 通過對(duì)家庭智能控制系統(tǒng)的分析,采用plc與can總線構(gòu)建成控制性局域網(wǎng),通過仿真系統(tǒng)的測(cè)試,該總線完全能完成對(duì)家庭智能終端設(shè)備實(shí)行控制,但要使它控制的穩(wěn)定性和實(shí)時(shí)性得到進(jìn)一步提高,還需在此基礎(chǔ)上作更加深入的研究?;赾an的電源控制系統(tǒng)設(shè)計(jì)時(shí)間:2006-08-25 10:19:00 來源:e代電子 作者:摘要:介紹了基于can的集散式電源控制系統(tǒng)中通信的實(shí)現(xiàn),對(duì)其軟硬件的設(shè)計(jì),調(diào)試關(guān)鍵處及其實(shí)現(xiàn)的具體功能進(jìn)行了說明。關(guān)鍵詞:can總線;tms320lf2407;

26、集散式電源控制系統(tǒng);通信 can總線是一種能有效支持分布式控制系統(tǒng)的串行通信網(wǎng)絡(luò),一方面,其通信方式靈活,可實(shí)現(xiàn)多主方式工作,還可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)等多種數(shù)據(jù)收發(fā)方式;另一方面,他能在相對(duì)較大的距離間進(jìn)行較高位速率的數(shù)據(jù)通信,例如在33km的距離內(nèi)其傳輸速率可達(dá)20kbs。我們的系統(tǒng)是由上位機(jī)對(duì)多臺(tái)并列的單電源控制系統(tǒng)進(jìn)行控制管理,單電源的間距在100m左右,且其必須置于較高的位置,系統(tǒng)之間要進(jìn)行快速的數(shù)據(jù)傳輸,can總線能很好的滿足該系統(tǒng)的要求。 1系統(tǒng)總體結(jié)構(gòu) 圖1是該集散電源控制系統(tǒng)的結(jié)構(gòu)示意圖。 其中:can0節(jié)點(diǎn)是上位機(jī)。 本系統(tǒng)用的是c51單片機(jī),外接can控制器sja1000,

27、他對(duì)下面多臺(tái)下位機(jī)傳送控制定值,并且在收集下位機(jī)送來數(shù)據(jù)后對(duì)其進(jìn)行分析計(jì)算以改變定值。節(jié)點(diǎn)can1can31(最多可有31臺(tái))為各單電源的控制部分,我們采用的是ti公司的tms320lf2407芯片做主控,其上集成有can控制器模塊。 2lf2407及其集成can控制模塊介紹 lf2407是ti公司推出的定點(diǎn)dsp處理器,他采用高性能靜態(tài)cmos技術(shù),供電電壓為33v,指令周期可達(dá)25ns,其上集成了包括can控制器在內(nèi)的多個(gè)外圍模塊及存儲(chǔ)器,適用于電機(jī)及逆變電路的控制。 can控制器模塊是集成于lf2407中的一個(gè)16位外設(shè)模塊。該模塊具有以下特性: (1)支持can20b協(xié)議,支持標(biāo)準(zhǔn)標(biāo)識(shí)

28、符(11位)及擴(kuò)展標(biāo)識(shí)符(29位),支持?jǐn)?shù)據(jù)幀與遠(yuǎn)程幀。 (2)配置有6個(gè)郵箱,2個(gè)接收(0,1號(hào)),2個(gè)發(fā)送(4,5號(hào)),2個(gè)可配置(3,4號(hào));每個(gè)郵箱數(shù)據(jù)長(zhǎng)度為8b。接收郵箱可進(jìn)行標(biāo)識(shí)符屏蔽。當(dāng)標(biāo)識(shí)符位被屏蔽時(shí),在接收數(shù)據(jù)幀時(shí)無須對(duì)該位標(biāo)識(shí)符進(jìn)行校驗(yàn)。 (3)具有可編程的位定時(shí)器、中斷服務(wù)和can總線喚醒功能。 (4)能自動(dòng)回復(fù)遠(yuǎn)程請(qǐng)求,當(dāng)發(fā)送錯(cuò)誤或數(shù)據(jù)丟失時(shí),有自動(dòng)重發(fā)功能。每個(gè)郵箱寄存器包含7個(gè)字的信息,與各功能模塊控制寄存器相類似,lf2407為其分配了固定的數(shù)據(jù)存儲(chǔ)器地址,例如郵箱0,其寄存器分配如下: mbx0ad(4個(gè)字的存儲(chǔ)空間)地址:72047207其中:標(biāo)識(shí)符(按29位

29、設(shè)置)在msgidnh的后13位和msgidnl中。 3硬件電路設(shè)計(jì)及調(diào)試 在設(shè)計(jì)lf2407的can通信電路時(shí)應(yīng)注意一個(gè)問題,即2407的供電電壓為33v,其can控制模塊輸出的高電平也只有33v,與can驅(qū)動(dòng)器pca80c250電平(5v)不兼容,在設(shè)計(jì)電路時(shí)加隔離光耦時(shí)要加以注意。圖2所示為下位機(jī)側(cè)的can通信原理圖。 由于tx的輸出光耦采用的是射極輸出方式,我們的輸出光耦應(yīng)采用6n136(137由于其結(jié)構(gòu)原因不能滿足要求),圖3是我們進(jìn)行數(shù)據(jù)發(fā)送時(shí)測(cè)試得到的r42兩端的電壓波形(輸出10101010) 由我們對(duì)can通信控制器的位配置寄存器bcr1的設(shè)置可知,每一位數(shù)據(jù)所占的時(shí)間段中,

30、我們的采樣點(diǎn)在70的時(shí)間點(diǎn),在這一點(diǎn)的輸出電壓必須在額定高低電平的設(shè)定值范圍內(nèi)。我們選定r425k,得到以上波形,滿足采樣點(diǎn)處高電平35v,低電平15v。 4通信協(xié)議及軟件實(shí)現(xiàn) 在系統(tǒng)中,上位機(jī)給下位機(jī)發(fā)送運(yùn)行定值以及起停信號(hào),并且會(huì)定時(shí)查詢各單機(jī)的運(yùn)行狀況以對(duì)其狀態(tài)進(jìn)行相應(yīng)的調(diào)整。 具體通信過程分為2類: (1)上位機(jī)向下位機(jī)傳送操作命令及定值,上位機(jī)發(fā)送的是數(shù)據(jù)幀。 上位機(jī)發(fā)送完數(shù)據(jù)幀后,若下位機(jī)收到該數(shù)據(jù)幀則向上位機(jī)發(fā)送確認(rèn)幀,該數(shù)據(jù)幀發(fā)送結(jié)束。若發(fā)送失敗,上位機(jī)在等待一段時(shí)間后未接收到確認(rèn)幀,則自動(dòng)重發(fā)該數(shù)據(jù)幀。 (2)上位機(jī)對(duì)下位機(jī)的運(yùn)行狀態(tài)及各種記錄定值進(jìn)行查詢,上位機(jī)發(fā)送的是遠(yuǎn)程

31、幀。 遠(yuǎn)程幀中只包含有數(shù)據(jù)類型而沒有數(shù)據(jù)內(nèi)容,下位機(jī)接到遠(yuǎn)程幀后,根據(jù)上位機(jī)要求的數(shù)據(jù)類型向上位機(jī)傳送數(shù)據(jù)。同時(shí)等待上位機(jī)的確認(rèn)幀。若未接收到確認(rèn)幀則定時(shí)重發(fā)。 在該系統(tǒng)中,以標(biāo)準(zhǔn)幀進(jìn)行通信,即采用11位的標(biāo)識(shí)符。其各位的定義如下: id0id4:節(jié)點(diǎn)標(biāo)識(shí),5位的節(jié)點(diǎn)標(biāo)識(shí)可使網(wǎng)絡(luò)能容納32個(gè)節(jié)點(diǎn)。 id5id7:數(shù)據(jù)類型,需要傳送的數(shù)據(jù)種類比較多,上傳的數(shù)據(jù)幀規(guī)定了7種類型(包括確認(rèn)幀),與此對(duì)應(yīng)下傳的遠(yuǎn)程幀有6種類型,而下傳的數(shù)據(jù)幀則有6種類型。需要至少3位標(biāo)識(shí)符來確定數(shù)據(jù)類型。 id8id10:幀計(jì)數(shù),數(shù)據(jù)量最大的數(shù)據(jù)類型包含有17字的數(shù)據(jù),而每幀最多能傳4字,故該類型數(shù)據(jù)至少需要5幀才能

32、傳完。需對(duì)數(shù)據(jù)幀進(jìn)行計(jì)數(shù)以對(duì)傳送數(shù)據(jù)具體類型進(jìn)行確定,故至少需要3位標(biāo)識(shí)符來進(jìn)行確定幀計(jì)數(shù)。 由于lf2407有專門的can模塊中斷,且在can控制模塊中設(shè)計(jì)了專門的can中斷標(biāo)志及屏蔽寄存器,可以十分方便地采用中斷的方式來啟動(dòng)can控制器進(jìn)行數(shù)據(jù)的接收與發(fā)送。 在進(jìn)行can控制器的設(shè)置時(shí),需要先對(duì)改變數(shù)據(jù)請(qǐng)求位ccr進(jìn)行使能,并在改變后進(jìn)行復(fù)原。值得注意的是,tms320lf2407中有很多寄存器位是需要通過寫“1”來實(shí)現(xiàn)清“0”的,還有些位是只能讀不能用程序直接改寫的,例如:對(duì)郵箱中斷(包括接收和發(fā)送)的標(biāo)志位mifn(05),在進(jìn)入中斷響應(yīng)后應(yīng)將其清除,但該位是只讀位,用戶程序只有寫1到

33、tcr寄存器的tan位(對(duì)發(fā)送郵箱)和寫1到rcr寄存器的rmpn位(對(duì)接受郵箱)才可達(dá)到清位目的。 5實(shí)現(xiàn)的功能 通過該通信系統(tǒng)實(shí)現(xiàn)的功能包括:定值傳送(從上位機(jī)傳到下位機(jī)的數(shù)據(jù)幀): (1)對(duì)時(shí):具體到時(shí)分秒的數(shù)據(jù)。 (2)運(yùn)行定值的傳輸:包括閃絡(luò)參數(shù)(閃絡(luò)系數(shù)ksp,給定火花率sparknum)、充電參數(shù)(給定峰值up,上升率rise-num,充電時(shí)限ton-max)、放電參數(shù)(平均電壓vg,平均電流ig,放電時(shí)間極限toff-max)。 (3)保護(hù)定值:包括開路參數(shù)(電壓,電流,延時(shí))、短路參數(shù)(電壓,電流,延時(shí))、欠壓電壓、延時(shí)、過載電流、偏勵(lì)磁、igbt溫度、油溫等。 (4)通道參

34、數(shù):包括一次電流、輸出電壓電流、igbt溫度、油溫、輸入電流(三相)、直流電壓。 運(yùn)行定值查詢(上位機(jī)發(fā)出遠(yuǎn)程幀):包括系統(tǒng)狀態(tài)、故障記錄、運(yùn)行定值、保護(hù)定值、通道系數(shù)等。 6結(jié)語(yǔ) 本系統(tǒng)已經(jīng)過調(diào)試,在我們初制成的單對(duì)單系統(tǒng)(上位機(jī)帶1臺(tái)控制系統(tǒng))中,能抗除強(qiáng)干擾,在較大傳輸數(shù)據(jù)量的情況下正常工作。 參考文獻(xiàn) 1劉和平tms320lf240xdsp結(jié)構(gòu)原理及應(yīng)用m北京:航空航天大學(xué)出版社,2002 2鄔寬明can總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)m北京:航空航天大學(xué)出版社,19962001基于can總線的rsrs-232轉(zhuǎn)換裝置 摘要:闡述了can總線在232串口設(shè)備遠(yuǎn)程通信或自組網(wǎng)絡(luò)中的應(yīng)用,介紹了ca

35、n到rs-232轉(zhuǎn)換裝置的軟硬件設(shè)計(jì)方法。重點(diǎn)對(duì)軟件設(shè)計(jì)中can波特率的設(shè)置、串口波特率的自動(dòng)檢測(cè)以及數(shù)據(jù)流控制等作為詳細(xì)的敘述。 關(guān)鍵詞:can 波特率 流控制1 引言工業(yè)設(shè)備通信通常涉及到很多硬件和軟件產(chǎn)品以及用于連通標(biāo)準(zhǔn)計(jì)算機(jī)平臺(tái)(個(gè)人計(jì)算機(jī)或工作站)和工業(yè)自動(dòng)化應(yīng)用設(shè)備的協(xié)議,而且所使用設(shè)備和協(xié)議的種類繁多。因此,大部分自動(dòng)化應(yīng)用設(shè)備都希望執(zhí)行簡(jiǎn)單的串行命令,并希望這些命令同個(gè)人計(jì)算機(jī)或者附加的串行端口板上的標(biāo)準(zhǔn)串行端口兼容。rs-232是目前pc機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。rs-232被定義為一種在低速率串行通訊中增加通訊距離的單端標(biāo)準(zhǔn)。由于rs-232的發(fā)送端與接收端之

36、間有公共信號(hào)地,所以它不能使用雙端信號(hào),否則,共模噪聲會(huì)耦合到信號(hào)系統(tǒng)中。rs-232標(biāo)準(zhǔn)規(guī)定,其最大距離僅為15m,信號(hào)傳輸速率最高為20kbit/s。can,全稱為“controller area network”,即控制器局域網(wǎng),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一,一個(gè)由can總線構(gòu)成的單一網(wǎng)絡(luò)受到網(wǎng)絡(luò)硬件電氣特性的限制。can作為一種多主方式的串行通訊總線,其基本設(shè)計(jì)規(guī)范要求高位速率和較高的抗電磁干擾性能,而且要能夠檢測(cè)出通訊總線上產(chǎn)生的任何錯(cuò)誤。當(dāng)信號(hào)傳輸距離達(dá)10km時(shí),can仍可提供高達(dá)50kbit/s的數(shù)據(jù)傳輸速率。表1為can總線上任意兩個(gè)節(jié)點(diǎn)之間最大傳輸距離與其位速率之間的對(duì)

37、應(yīng)關(guān)系。表1 can總線系統(tǒng)任意兩節(jié)鼎足之勢(shì)之間的最大距離位速率/kbps1000500250125100最大距離/m40130270530620位速率/kbps5020105最大距離/m13003300670010000由此可見,無論從實(shí)時(shí)性、適應(yīng)性、靈活性,還是可靠性上來看,can總線都是一種比rs-232更為優(yōu)秀的串行總線。當(dāng)兩臺(tái)串口設(shè)備的相距較遠(yuǎn),不能直接用rs-232把它們連接起來時(shí),就可以把rs-232轉(zhuǎn)換為can,通過can總線來實(shí)現(xiàn)串口設(shè)備的網(wǎng)絡(luò)互連。但是,rs-232和can在電平和幀格式上都是很大的不同。具體表現(xiàn)如下:rs-232標(biāo)準(zhǔn)電平采用負(fù)邏輯,規(guī)定+3v+15v之間的

38、任意電平為邏輯“0”電平,-3v-15v之間的任意電平為邏輯“1”電平。而can信號(hào)則使用差分電壓傳送,兩條信號(hào)線稱為“can_h”和“cam_l”,靜態(tài)時(shí)均為2.5v左右,此時(shí)的狀態(tài)表示為邏輯“1”,也可以叫做“隱性”;用can_h比can_l高表示邏輯“0”,稱為“顯性”。顯性時(shí),通常電壓值為:can_h=3.5v,can_l=1.5v;rs-232串口的幀格式為:一位起始位,八位數(shù)據(jù)位,一位可編程的第九位(此位為發(fā)送和接收的地址/數(shù)據(jù)位),一位停止位。而can的數(shù)據(jù)幀格式為:幀信息+id+數(shù)據(jù)(可分為標(biāo)準(zhǔn)幀和擴(kuò)展幀兩種格式)。 因此,設(shè)計(jì)時(shí)就需要有一個(gè)微控制器來實(shí)現(xiàn)電平和幀格式等的轉(zhuǎn)換。

39、其轉(zhuǎn)換方式如圖1所示。2 rs-232到can轉(zhuǎn)換的硬件設(shè)計(jì)在設(shè)計(jì)rs-232到can的轉(zhuǎn)換裝置時(shí),用單片機(jī)at89c52作為微處理器;用sja1000作為can微控制器,sja1000中集成了can協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可被動(dòng)局面對(duì)通信數(shù)據(jù)的幀處理;at82c250作為can控制器和物理總線之間的接口,用于提供總線的差動(dòng)發(fā)送能力和can控制器的差動(dòng)接收能力,通過at82c250的引腳3可選擇三種不同的工作方式(高速、斜率控制和待機(jī))。其中引腳3接地時(shí)為高速方式;高速光隔用6n137實(shí)現(xiàn),其作用是防止串入信號(hào)干擾;max232用來完成232電平到微控制器接口芯片ttl電平的轉(zhuǎn)換。具體的

40、硬件接口電路參見sja1000的有關(guān)資源,這里不再多做說明。但有以下幾點(diǎn)需要注意。(1)can總線兩端接有一個(gè)120的電阻,其作用是匹配總線阻抗,提高數(shù)據(jù)通信的抗干擾性及可靠行。但實(shí)際上只需保證can網(wǎng)絡(luò)中“can_h”和“can_l”之間的跨接電阻為60即可。(2)sja1000的20引腳rx1在不使用時(shí)可接地(具體原因見軟件設(shè)計(jì)),配合cdr.6的置位可使總線長(zhǎng)度大大增加。(3)引腳tx0、tx1的接法決定了串行輸出的電平。具體關(guān)系可參考輸出控制寄存器ocr的設(shè)置。(4)at82c250的rs引腳與地間接有一個(gè)斜率電阻。電阻大小可根據(jù)總線通信速度作適當(dāng)調(diào)整,一般在16k140k之間。(5)

41、max232外圍需要四個(gè)電解電容c1、c2、c3、c4,這些電容也是內(nèi)部電源轉(zhuǎn)換所需電容,其取值均為1f/25v,宜選用鉭電容并且位置應(yīng)用量靠近芯片,電源vcc和地之間要接一個(gè)0.1f的去耦電容。3 rs-232到can轉(zhuǎn)換的軟件設(shè)計(jì)在微處理控制下,rs-232和can進(jìn)行數(shù)據(jù)交換時(shí),采用串口接收和can中斷方式可提高工作效率。其主程序流程圖如圖2所示。sja1000的初始化在復(fù)位模式下才可以進(jìn)行,主要包括工作方式的設(shè)置、時(shí)鐘分頻和驗(yàn)收濾波寄存器的設(shè)置、波特率參數(shù)的設(shè)置以及中斷允許寄存器的設(shè)置等。數(shù)據(jù)能否準(zhǔn)確傳遞還取決于波特率和流量控制,這也是軟件設(shè)計(jì)時(shí)不可忽略的地方。因此接下來主要介紹can

42、波特率的設(shè)置、串口波特率的自動(dòng)檢測(cè)、串口數(shù)據(jù)流量控制。31 can濾波率的設(shè)置can協(xié)議中的要素之一是波特率。用戶可以設(shè)置位周期中的位采樣點(diǎn)位置和采樣次數(shù),以使用戶可以自由地優(yōu)化應(yīng)用網(wǎng)絡(luò)性能,但在優(yōu)化過程中,要注意位定時(shí)參數(shù)基準(zhǔn)參考振蕩器的容差和系統(tǒng)中不同信號(hào)傳播延遲之間的關(guān)系。系統(tǒng)的位速率fbil表示每單位時(shí)間傳輸數(shù)據(jù)位的量,即波特率fbit=1/tbit。額定的位定時(shí)由3個(gè)互不重疊的段sync_seg、tseg1和tseg2組成,這3個(gè)時(shí)間段分別是tsync_seg、tseg1和tseg2組成,這3個(gè)時(shí)間段分別是tsync_seg、ttseg1和ttseg2。所以,額定位周期tbit是3個(gè)

43、時(shí)間段的和。tbit=tsync_seg+ttseg1+ttseg2位周期中這些段都用整數(shù)個(gè)基本時(shí)間單位來表示。該時(shí)間單位叫時(shí)間份額tq,時(shí)間份額的持續(xù)時(shí)間是can系統(tǒng)時(shí)鐘的一個(gè)周期tscl,可從振蕩器時(shí)鐘周期tclk取得。通過編程預(yù)分頻因數(shù)(波特率預(yù)設(shè)值brp)可以調(diào)整can系統(tǒng)時(shí)鐘。具體如下:tscl=brp2tclk=2bpr/fclk對(duì)can位定時(shí)計(jì)算的另一個(gè)很重要的時(shí)間段是同步跳轉(zhuǎn)寬度(sjw),持續(xù)時(shí)間是tsjw。sjw段并不是位周期的一段,只是定義了在重同步事件中被增長(zhǎng)或縮短的位周期的最大tq數(shù)量。此外,can協(xié)議還允許用戶指定位采樣模式(sam),分別是單次采樣和三次采樣模式(

44、在3個(gè)采樣結(jié)果中選出1個(gè))。在單次采樣模式中,采樣點(diǎn)在tesg1段的末端。而三次采樣模式比單次采樣多取兩個(gè)采樣點(diǎn),它們?cè)趖seg1段末端的前面,之間相差一個(gè)tq。上面所提到的bpr、sjw、sam、tesg1、tesg2都可由用戶通過can控制器的內(nèi)裝中寄存器btr0和btr1來定義。具體如圖3所示。設(shè)置好btr0和btr1后,實(shí)際傳輸?shù)牟ㄌ芈史秶鸀椋鹤畲?1/(tbit-tsjw),最小=1/(tbit+tsjw)3.2 串口波特率檢測(cè)當(dāng)串口設(shè)備是主機(jī)時(shí),如需檢測(cè)此時(shí)轉(zhuǎn)換裝置的串口波特率,首先可對(duì)主機(jī)的接收波特率(以9600波特為例)進(jìn)行設(shè)定,并在終端發(fā)送一個(gè)特定的字符(以回車符為例),這樣

45、,主機(jī)根據(jù)接收到的字符信息就可以確定轉(zhuǎn)換裝置的通信波特率?;剀嚪腶scii值是0dh,在不同波特率下接收到的值如表2所列。表2 不同波特率下接收的字節(jié)波特率(bit/s)接收字節(jié)(十六進(jìn)制)波特率(bit/s)接收字節(jié)(十六進(jìn)制)1200804800e61800f096000d24007819200f*33 串口流控制此處講到的“流“指的是數(shù)據(jù)流。數(shù)據(jù)在兩個(gè)串口之間的傳輸時(shí),常常會(huì)出現(xiàn)丟失數(shù)據(jù)的現(xiàn)象。由于單片機(jī)緩沖區(qū)有限,如接收數(shù)據(jù)時(shí)緩沖區(qū)已滿,那么此時(shí)繼續(xù)發(fā)送來的數(shù)據(jù)就會(huì)丟失。而流控制能有效地解決該問題,當(dāng)接收端數(shù)據(jù)處理不過來時(shí),流控制系統(tǒng)就會(huì)發(fā)出“不再接收”的信號(hào),而使發(fā)送端停止發(fā)送,直

46、到收到“可以繼續(xù)發(fā)送”的信號(hào)再發(fā)送數(shù)據(jù)。因此流控制可以控制數(shù)據(jù)傳輸?shù)倪M(jìn)程,防止數(shù)據(jù)丟失。常用的兩種流控制是硬件流控制(包括rts/cts、dtr/cts等)和軟件流控制xon/xoff(繼續(xù)/停止),下面僅就硬件流控制rts/cts加以說明。采用硬件進(jìn)行流控制時(shí),串口終端rts、cts接到單片機(jī)的i/o口,通過置i/o口為1或0來接收和發(fā)出起停信號(hào)。數(shù)據(jù)終端設(shè)備(如計(jì)算機(jī))使用rts來起始單片機(jī)發(fā)出的數(shù)據(jù)流,而單片機(jī)則用cts來起動(dòng)和暫停來自計(jì)算機(jī)的數(shù)據(jù)流。實(shí)現(xiàn)這種硬件握手方式時(shí),在編程時(shí)根據(jù)接收端緩沖區(qū)的大小設(shè)置一個(gè)高位標(biāo)志和一個(gè)低位標(biāo)志,當(dāng)緩沖區(qū)內(nèi)數(shù)據(jù)量達(dá)到高位時(shí),就在接收端將cts線置低

47、(送邏輯0),而當(dāng)發(fā)送端的程序檢測(cè)到cts為低后,就停止發(fā)送數(shù)據(jù),直到接收端緩沖區(qū)的數(shù)據(jù)量低于低位而將cts置高為止。rts則用來標(biāo)明接收設(shè)備有沒有準(zhǔn)確好接收數(shù)據(jù)。 34 can接收子程序pelican格式既可以發(fā)送標(biāo)準(zhǔn)幀也可以送擴(kuò)展幀,利用時(shí)鐘分頻寄存器中的cdr.7可以調(diào)協(xié)can模式(0-basiccan,1-pelican),接收can數(shù)據(jù)時(shí),可根據(jù)幀信息中的ff位來判斷是標(biāo)準(zhǔn)幀還是擴(kuò)展幀,并且rtr位來判斷是遠(yuǎn)程幀還是數(shù)據(jù)幀。以下是can接收子程序:;/;/can數(shù)據(jù)接收/統(tǒng)一成2個(gè)字節(jié)id的幀格式/;/recan:mov r0,#c_re ;單片機(jī)內(nèi)緩沖區(qū)起始地址mov dptr,#

48、rxbuf ;讀取并保存接收緩沖區(qū)的內(nèi)容movx a,dptr ;讀取can緩沖區(qū)的2號(hào)字節(jié)mov r0,a ;保存jb acc.7,eff_re ;ff位,0-sff,1-effmov r2,#0sjmp sff_re ;id數(shù)目不同,截取“數(shù)據(jù)字節(jié)”的位置不同eff_re:mov r2,#2sff_re:mov r2,#2sff_re:jb acc.6,exit_recan ;rtr位判斷,1-遠(yuǎn)程幀,則跳出anl a,#0fhmov r3,a ;這時(shí)截取中間4位是數(shù)據(jù)長(zhǎng)度mov c_num,a ;r3,r5中存放接收幀的長(zhǎng)度rdata0:inc dptr ;2個(gè)字節(jié)idinc r0mov

49、x a,dptrmov r0,ainc dptrmovx a,r0,ainc dptrmovx a,dptrmov r0,amov a,r2 ;如果是eff則跳過兩個(gè)字節(jié)idjz drata1inc dptrinc dptrdata1: ;數(shù)據(jù)字節(jié)inc dptrinc r0movx a,dptrmov r0,adjnz r3,rdata1exit_recan:ret4 結(jié)束語(yǔ)計(jì)算機(jī)的微型化為測(cè)控儀表的智能化提供了必要的條件,使得帶微處理器的終端設(shè)備具備更好的數(shù)字通信能力。隨著越來越多智能終端的出現(xiàn),無論是對(duì)網(wǎng)絡(luò)的結(jié)構(gòu)、協(xié)議、實(shí)時(shí)性,還是適用性、靈活性、可靠性乃至成本都有了更高的要求,因此現(xiàn)場(chǎng)

50、總線有著很好的發(fā)展前景。can總線的幀結(jié)構(gòu)擁有標(biāo)識(shí)id,這使得設(shè)備網(wǎng)絡(luò)中擁有多臺(tái)網(wǎng)絡(luò)主機(jī)成為可能,即通過網(wǎng)絡(luò)主機(jī)可以監(jiān)控整個(gè)設(shè)備網(wǎng)絡(luò)的工作情況并作出相應(yīng)的控制決策。本裝置目前已開發(fā)完成,并在實(shí)際應(yīng)用中取得了非常好的效果。can總線位定時(shí)和同步的研究與設(shè)計(jì)時(shí)間:2009-08-04 12:51:28 來源:現(xiàn)代電子技術(shù) 作者:?jiǎn)瘟漳?,徐斌山,陳文?佳木斯大學(xué)引 言 控制器局域網(wǎng)can是一種用于連接汽車和工業(yè)場(chǎng)合中電子控制模塊、傳感器和執(zhí)行器的串行、多主通信規(guī)范。由于can總線具有很強(qiáng)的糾錯(cuò)能力、支持差分收發(fā)、傳輸距離遠(yuǎn)等特點(diǎn),因此can總線用途非常廣泛,現(xiàn)已成為工業(yè)數(shù)據(jù)通信領(lǐng)域的主流技術(shù)、基礎(chǔ)

51、技術(shù),目前比較流行的ttcan,devicenet,cano-pen,sae j1939等規(guī)范均是以can為基礎(chǔ)的,因此對(duì)can總線的深入研究是十分必要的。在can規(guī)范中,位定時(shí)和同步機(jī)制是既重要又難于理解的環(huán)節(jié)之一,它不僅關(guān)系到對(duì)波特率、總線長(zhǎng)度等相關(guān)內(nèi)容的理解,甚至對(duì)節(jié)點(diǎn)開發(fā)的成功與否產(chǎn)生直接的影響。然而,目前相關(guān)文獻(xiàn)均缺乏針對(duì)can總線位定時(shí)和同步機(jī)制的詳細(xì)分析和探討。在此以can技術(shù)規(guī)范為基礎(chǔ),深入分析can總線的位定時(shí)和同步機(jī)制,給出硬同步和重同步的定義,并給出相應(yīng)的圖解解釋方式,對(duì)位時(shí)間的組成與結(jié)構(gòu)、同步的發(fā)生時(shí)刻、同步是如何進(jìn)行的等關(guān)鍵內(nèi)容給出了明確而又具體的分析。這里的工作對(duì)理

52、解位定時(shí)和同步機(jī)制的本質(zhì)、指導(dǎo)位時(shí)間參數(shù)的設(shè)置均具有較高的參考價(jià)值。1 位定時(shí)11 位時(shí)間的組成 位時(shí)間(位周期)tb即1位的持續(xù)時(shí)間。正常位時(shí)間tnbt是正常位速率fnbt(在非重同步的情況下,借助理想發(fā)送器每秒發(fā)送的位數(shù))的倒數(shù),即tnbt=1fnbt。正常位時(shí)間可劃分為幾個(gè)互不重疊的時(shí)間段,這些時(shí)間段包括:同步段(sync-seg)、傳播時(shí)間段(prop-seg)、相位緩沖器段1(phase-seg1)、相位緩沖器段2(phase-seg2)。每個(gè)時(shí)間段由整數(shù)個(gè)被稱為時(shí)間份額tq的基本時(shí)間單位組成。tq是由振蕩器周期tclk派生出的一個(gè)固定時(shí)間單元。一個(gè)時(shí)間份額的持續(xù)時(shí)間通常便是can的

53、一個(gè)系統(tǒng)時(shí)鐘周期tscl。tscl可通過可編程的預(yù)引比例因子進(jìn)行調(diào)整。每個(gè)位時(shí)間必須由825個(gè)時(shí)間份額組成。位時(shí)間的組成如圖1所示。 位時(shí)間的各個(gè)時(shí)間段均有其特定的用途: (1)同步段用于使總線上的各個(gè)節(jié)點(diǎn)同步,要求有1個(gè)跳變沿位于此段內(nèi),該段長(zhǎng)度為1個(gè)時(shí)間份額; (2)傳播時(shí)間段用于補(bǔ)償網(wǎng)絡(luò)內(nèi)的物理延時(shí),它是信號(hào)在總線上傳播時(shí)間、輸入比較器延時(shí)和輸出驅(qū)動(dòng)器延時(shí)之和的2倍,該段長(zhǎng)度為18個(gè)時(shí)間份額; (3)相位緩沖器段1和相位緩沖器段2用于補(bǔ)償沿的相位誤差,通過重同步,相位緩沖器段1可被延長(zhǎng)或相位緩沖器段2可被縮短。 這些時(shí)間段的長(zhǎng)度均是可編程的。在常用的通信控制器(sja1000)或pac8

54、2c200中,合并傳播時(shí)間段和相位緩沖器段1,稱為時(shí)間段1(tsegl),相位緩沖器段2稱為時(shí)間段2(tseg2),如圖1所示。 采樣點(diǎn)是這樣一個(gè)時(shí)刻:在此時(shí)刻上,總線電平被讀取并被理解為其自身的數(shù)值。它位于相位緩沖器段1的終點(diǎn)。在重同步期間,采樣點(diǎn)的位置被移動(dòng)整數(shù)個(gè)時(shí)間份額,該時(shí)間份額被允許的最大值稱為重同步跳轉(zhuǎn)寬度(sjw),它可被編程為14個(gè)時(shí)間份額。值得注意的是,重同步跳轉(zhuǎn)寬度并不是位時(shí)間的組成部分。12 位定時(shí)的作用 位定時(shí)是由節(jié)點(diǎn)自身完成的(可編程),節(jié)點(diǎn)進(jìn)行位定時(shí)的作用為: (1)確定位時(shí)間,以便確定波特率(位速率),從而確定總線的網(wǎng)絡(luò)速度;或在給定總線的網(wǎng)絡(luò)速度的情況下確定位時(shí)

55、間; (2)確定1位的各個(gè)組成部分同步段、傳播時(shí)間段、相位緩沖器段1和相位緩沖器段2的時(shí)間長(zhǎng)度,其中同步段用于硬同步,位于相位緩沖器段1終點(diǎn)的采樣點(diǎn)用于保證正確地讀取總線電平; (3)確定重同步跳轉(zhuǎn)寬度以用于重同步。2 can總線同步機(jī)制分析 can規(guī)范定義了自己獨(dú)有的同步方式:硬同步和重同步。同步與位定時(shí)密切相關(guān)。同步是由節(jié)點(diǎn)自身完成的,節(jié)點(diǎn)將檢測(cè)到來自總線的沿與其自身的位定時(shí)相比較,并通過硬同步或重同步適配(調(diào)整)位定時(shí)。在一般情況下,引起硬同步和重同步發(fā)生的、來自總線的沿如圖2所示。21 硬同步 can技術(shù)規(guī)范給出了硬同步和重同步的結(jié)果,但沒有給出硬同步和重同步的定義。這里首先給出硬同步和重同步的定義,然后對(duì)其進(jìn)行分析。 所謂硬

溫馨提示

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

評(píng)論

0/150

提交評(píng)論