《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于CAN_BUS的控制器調(diào)試系統(tǒng)的設(shè)計(jì)

基于CAN_BUS的控制器調(diào)試系統(tǒng)的設(shè)計(jì)

2008-08-12
作者:王洪坡 李 杰 常文森

??? 摘 要: 調(diào)節(jié)多點(diǎn)控制器的控制參數(shù)" title="控制參數(shù)">控制參數(shù)是一項(xiàng)復(fù)雜的工作,以CAN_BUS通信協(xié)議" title="通信協(xié)議">通信協(xié)議為基礎(chǔ),設(shè)計(jì)了一種連接多個(gè)CAN端點(diǎn)的調(diào)試系統(tǒng)" title="調(diào)試系統(tǒng)">調(diào)試系統(tǒng),,通過創(chuàng)建通信協(xié)議,,實(shí)現(xiàn)了上位機(jī)" title="上位機(jī)">上位機(jī)與控制器的CAN端點(diǎn)的實(shí)時(shí)數(shù)據(jù)交流。闡述了控制器與上位機(jī)的通信流程,。
????關(guān)鍵詞: CAN_BUS? 調(diào)試系統(tǒng)? 通信協(xié)議

?

??? 磁懸浮轉(zhuǎn)向架的懸浮由四組電磁鐵實(shí)現(xiàn),,每組電磁鐵都有獨(dú)立的懸浮控制器,,控制該點(diǎn)的懸浮與下落。為了獲得最優(yōu)的控制參數(shù),,需要在整個(gè)轉(zhuǎn)向架的懸浮過程中通過上位機(jī)監(jiān)視軌道與電磁鐵之間的間隙,、電磁鐵工作電流等狀態(tài)參數(shù)以及懸浮控制器的控制參數(shù),動(dòng)態(tài)地修改控制參數(shù)以觀察控制效果,。
??? 懸浮控制器之間是相互獨(dú)立的,,上位機(jī)無法同時(shí)監(jiān)控多個(gè)懸浮控制器,因此需要找到合理的通信方式使上位機(jī)同時(shí)與所有的控制器連接,,使它們之間能夠?qū)崟r(shí)傳遞數(shù)據(jù),。CAN總線是一種有效支持分布式控制和實(shí)時(shí)控制的多主的異步串行通信網(wǎng)絡(luò)。由于CAN總線具有較強(qiáng)的糾錯(cuò)能力,,支持差分收發(fā),,適合高噪聲環(huán)境,具有較遠(yuǎn)的傳輸距離,,在各個(gè)領(lǐng)域中得到了廣泛應(yīng)用,。CAN通信協(xié)議規(guī)定通信波特率、每個(gè)位周期的取樣位置和個(gè)數(shù)都可以自行設(shè)定,,這保證了用戶在使用過程中的靈活性,。選用CAN總線,無論是在抗電磁干擾方面還是在實(shí)時(shí)性方面都能夠滿足實(shí)驗(yàn)要求,。
1 調(diào)試系統(tǒng)硬件端口的設(shè)計(jì)
??? 懸浮控制器使用SJA1000作為CAN總線協(xié)議轉(zhuǎn)換芯片,。SJA1000是一種獨(dú)立控制器,用于移動(dòng)目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制,。它內(nèi)建BASIC CAN協(xié)議,,并提供對(duì)CAN2.0B協(xié)議的支持。通過對(duì)片內(nèi)寄存器的讀,、寫操作,,懸浮控制器的核心處理器能夠設(shè)置CAN總線通信模式,實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收,。它的傳輸速度很快,,位速率可達(dá)1Mbit/s,可滿足高速大流量實(shí)時(shí)傳輸要求,。
??? SJA1000在邏輯上實(shí)現(xiàn)了傳輸數(shù)據(jù)的編碼和解碼,,若要與物理線路連接,必須借助總線驅(qū)動(dòng)器,。PCA82C250是協(xié)議控制器與物理鏈路之間的接口,,可以用高達(dá)1Mbit/s的位速率在兩條有差動(dòng)電壓的總線電纜上傳" title="上傳">上傳輸數(shù)據(jù),它與SJA1000結(jié)合才能實(shí)現(xiàn)CAN總線通信,。
??? 圖1為CAN總線接口電路原理圖,。圖中,,SJA1000用16MHz的晶振作為基準(zhǔn)時(shí)鐘,數(shù)據(jù)線AD0~AD7與核心控制器的低八位數(shù)據(jù)線相連,,在的控制下可實(shí)現(xiàn)芯片寄存器的讀寫,。RX0和TX0與PCA82C250數(shù)據(jù)輸入引腳相連,作為串行數(shù)據(jù)線,。RX1與PCA82C250的參考電壓引腳5相連,,向PCA82C250輸出參考電壓。PCA82C250的兩根輸出數(shù)據(jù)線之間加上120?贅的終端電阻,,用以匹配線路,。

?


??? 上位機(jī)通過專用的USBTOCAN轉(zhuǎn)換器實(shí)現(xiàn)PC機(jī)與CAN總線的連接,市場(chǎng)上有很多這類產(chǎn)品,,這里不再詳細(xì)說明,。上位機(jī)主要提供人機(jī)交互界面,顯示狀態(tài)和控制器參數(shù),,并完成參數(shù)與程序的下載,。
2 通信協(xié)議構(gòu)建
??? DSP控制器上的CAN總線端口要完成兩項(xiàng)工作:(1)上傳控制器的控制常量和電流、間隙等狀態(tài)參數(shù),,送給檢測(cè)系統(tǒng),;(2)讀取上位機(jī)下傳的待修改的控制參數(shù),實(shí)現(xiàn)參數(shù)的在線修改,,接收下傳的程序文件,,實(shí)現(xiàn)DSP主程序的在線寫入。
??? 在調(diào)試過程中,,實(shí)現(xiàn)多DSP系統(tǒng)的在線聯(lián)調(diào)是很有效的調(diào)試手段,。這樣,上位PC機(jī)不但能夠采集各控制器的狀態(tài)參數(shù),,還能夠?qū)Σ杉臄?shù)據(jù)進(jìn)行整理與顯示,,并能實(shí)時(shí)調(diào)整不同控制器的控制參數(shù),,最終實(shí)現(xiàn)控制器運(yùn)行程序的遠(yuǎn)程下載,。
??? 為實(shí)現(xiàn)CAN總線的數(shù)據(jù)傳送,需要定義參數(shù)包,、程序包,、命令包三種傳送數(shù)據(jù)包,并分別由0x11,、0x22,、0x33標(biāo)示出來。根據(jù)數(shù)據(jù)傳送方向的不同,,數(shù)據(jù)包的格式略有差異,??紤]到CAN總線上的節(jié)點(diǎn)較多,為避免數(shù)據(jù)傳送過程中出現(xiàn)混亂的情況,,定義數(shù)據(jù)發(fā)送的基本數(shù)據(jù)包大小為8個(gè)字節(jié),,即CAN總線一次傳送的最大字節(jié)數(shù)為8。
2.1 下傳數(shù)據(jù)協(xié)議
??? 下傳數(shù)據(jù)包括程序,、參數(shù),、命令三種數(shù)據(jù)類型。
2.1.1 參數(shù)數(shù)據(jù)包格式
??? 上位機(jī)需要下傳的數(shù)據(jù)包括控制參數(shù)C1,、C2,、C3及給定間隙與電流,根據(jù)修改需要,,每個(gè)參數(shù)都是單獨(dú)下傳的,。下傳數(shù)據(jù)包的大小與CAN的最大有效傳送字節(jié)數(shù)一致,為8個(gè)字節(jié),。第一個(gè)字節(jié)指出數(shù)據(jù)包的類型(用0x11標(biāo)示),,第二個(gè)字節(jié)指出參數(shù)類型(用0xx7標(biāo)示),第三字節(jié)至第八字節(jié)指出傳送的有效數(shù)據(jù),,對(duì)應(yīng)上面給定參數(shù)的參數(shù)標(biāo)示依次為0x17,、0x27、0x37,、0x47,、0x57。圖2所示為數(shù)據(jù)包的一般格式,。

?


2.1.2 程序數(shù)據(jù)包格式
??? FLASH寫入文件較大,,一般有幾十K字節(jié)??刂葡到y(tǒng)采用的FLASH芯片AT29C010以128字節(jié)為基本操作單位,。為了適應(yīng)芯片,可將文件分成128字節(jié)的數(shù)據(jù)段,,并為每個(gè)數(shù)據(jù)段標(biāo)定次序,。發(fā)送時(shí),標(biāo)出數(shù)據(jù)段號(hào)及該片數(shù)據(jù)所處段中的位置即可,??刂破鹘邮盏?28字節(jié)后,做一次寫入FLASH操作,,數(shù)據(jù)包格式及說明見圖3,。

?


2.1.3? 命令數(shù)據(jù)包格式
??? 命令數(shù)據(jù)指出對(duì)下傳參數(shù)的操作,0xx7+0x44表示對(duì)某一參數(shù)的修改生效,如:0x17+0x44使能C1,,0x27+0x44使能C2,,0x37+0x44使能C3。如果修改的參數(shù)不能滿足控制要求,,調(diào)試員希望能恢復(fù)原來的運(yùn)行參數(shù),,因此定義0x55為修改參數(shù)恢復(fù)命令,如:0x17+0x55恢復(fù)C1,,0x27+0x55恢復(fù)C2,,0x37+0x55恢復(fù)C3。0x66+0x66表示將下傳數(shù)據(jù)寫入最后的FLASH參數(shù)存儲(chǔ)區(qū),。命令數(shù)據(jù)包格式如圖4所示,。

?


2.2 上傳數(shù)據(jù)協(xié)議
??? 上傳數(shù)據(jù)包的大小也為8個(gè)字節(jié),數(shù)據(jù)包類型分為參數(shù)反饋,、命令反饋兩種,,參數(shù)反饋用于上傳DSP的實(shí)際運(yùn)行控制參數(shù)及間隙、電流等狀態(tài)信息,,命令反饋用于對(duì)PC機(jī)使能,、寫入、參數(shù)恢復(fù)等命令的應(yīng)答,。
??? 上傳數(shù)據(jù)依次為控制參數(shù)C1,、C2、C3,、CURRENT1,、CURRENT2、CLEARANCE,。數(shù)據(jù)類型標(biāo)示依次為0x17,、0x27、0x37,、0x47,、0x57、0x67,。由于上位機(jī)要同時(shí)接收多個(gè)控制器上傳的數(shù)據(jù),,所以為了正確區(qū)分這些參數(shù),需要給上傳的數(shù)據(jù)包加入端口標(biāo)示,,指出數(shù)據(jù)包來自哪個(gè)總線端口,。上傳的數(shù)據(jù)包在前面格式的基礎(chǔ)上還要加入對(duì)應(yīng)于各控制器的CAN總線端口號(hào),。
??? 上傳命令是對(duì)總線通信出現(xiàn)異常情況的應(yīng)答,,因?yàn)榭刂破麟S時(shí)將控制參數(shù)上傳,且參數(shù)字節(jié)數(shù)較少,,出錯(cuò)的可能性較低,,不需配備應(yīng)答命令,;而上傳程序的數(shù)據(jù)量較大,容易出現(xiàn)錯(cuò)誤,,必須配備應(yīng)答命令,,指示程序?qū)懭脒^程。
??? 因?yàn)榭刂破魇侵芷谛缘貟呙鑃JA1000的接收緩沖區(qū),,當(dāng)總線連接的節(jié)點(diǎn)較多時(shí),,數(shù)據(jù)量較大,難免會(huì)發(fā)生數(shù)據(jù)漏收的情況,;而且控制器對(duì)外部中斷的響應(yīng)也會(huì)影響掃描周期,,使接收緩沖區(qū)中未來得及讀取的數(shù)據(jù)被新數(shù)據(jù)沖掉。當(dāng)控制器發(fā)現(xiàn)應(yīng)接收的數(shù)據(jù)位置與已接收到的數(shù)據(jù)位置不符時(shí),,控制器發(fā)差錯(cuò)命令給上位機(jī),,指出應(yīng)接收的數(shù)據(jù)段號(hào)及位置,上位機(jī)接收到這一信息后重發(fā)相關(guān)數(shù)據(jù),。發(fā)送數(shù)據(jù)包包含CAN端口字節(jié),、命令標(biāo)示、段號(hào),、位置號(hào)等信息,。通信過程中也可能出現(xiàn)發(fā)送數(shù)據(jù)與接收數(shù)據(jù)不符的情況,因此有必要引入數(shù)據(jù)校驗(yàn)算法,??刂破鲗⒔邮盏降?28字節(jié)校驗(yàn)后得到的校驗(yàn)值與接收到的校驗(yàn)值作比較,一致后才將數(shù)據(jù)寫入FLASH,;否則反饋回校驗(yàn)值錯(cuò)誤信息,,上位機(jī)重發(fā)該段數(shù)據(jù)。發(fā)送數(shù)據(jù)包包含CAN端口字節(jié),、命令標(biāo)示,、段號(hào)、重發(fā)標(biāo)示(0x88)等信息,。
3 通信程序設(shè)計(jì)流程
3.1控制器通信流程

??? 控制器的通信部分主要在主程序循環(huán)中完成,。每次主程序循環(huán)中,控制器都向調(diào)試系統(tǒng)發(fā)送當(dāng)前C1,、C2,、C3、CURRENT1,、CURRENT2,、CLEARANCE等信息;一旦接收到調(diào)試系統(tǒng)下傳的信息,控制器便分析下傳信息的性質(zhì),,對(duì)它們分別進(jìn)行判別與應(yīng)答,。
??? 圖5是控制器的通信流程??刂破魃想姾?,程序從FLASH的參數(shù)存儲(chǔ)區(qū)(最后256個(gè)字節(jié))讀取控制參數(shù)值,存入控制參數(shù)緩存中,,作為參數(shù)初值,。同時(shí),控制器通過CAN總線接收上位機(jī)下傳的控制參數(shù),,校驗(yàn)后存入控制參數(shù)緩存中,。一旦接收到參數(shù)使能命令,則將緩存中的數(shù)據(jù)復(fù)制給C1,、C2,、C3等變量,作為實(shí)際的工作參數(shù),;調(diào)試完畢后,,在接收到參數(shù)寫入命令后,將參數(shù)寫入FLASH的參數(shù)存儲(chǔ)區(qū),,作為永久工作參數(shù),。接收到程序數(shù)據(jù)包后,控制器首先檢驗(yàn)數(shù)據(jù)的次序,,保證接收到的數(shù)據(jù)按次序排列,;接著代入校驗(yàn)算法,將計(jì)算得到的校驗(yàn)值和接收的校驗(yàn)值作比較,,不一致則給上位機(jī)反饋校驗(yàn)值錯(cuò)誤命令,,要求上位機(jī)重發(fā)該段程序,否則將數(shù)據(jù)寫入FLASH,。圖中監(jiān)控信息的發(fā)送周期可根據(jù)情況確定,。

?


3.2 上位機(jī)通信流程
??? 上位機(jī)是調(diào)試員與控制系統(tǒng)的接口,它顯示控制器的上傳參數(shù),,將調(diào)試員需要修改的控制參數(shù)下傳,。為完成上述功能,調(diào)試界面應(yīng)包括參數(shù)顯示窗口,、參數(shù)輸入窗口,、命令工具條等,必要的話,,還應(yīng)將狀態(tài)參數(shù)以曲線的形式顯示出來,。調(diào)試人員根據(jù)狀態(tài)曲線調(diào)整控制參數(shù),。
??? 圖6是上位機(jī)的調(diào)試流程,單控制器的總線最短發(fā)送周期為5ms,,隨著總線通信量的增加,監(jiān)控界面的掃描周期也應(yīng)相應(yīng)延長(zhǎng),。參數(shù)顯示界面顯示的是上位機(jī)最新收到的參數(shù),,其值總是實(shí)時(shí)刷新的。發(fā)送修改參數(shù)時(shí),,每次只發(fā)送一個(gè)參數(shù),,上位機(jī)需將參數(shù)變成不大于4字節(jié)的字符型數(shù)組才能發(fā)送??刂破髟谑盏絽?shù)數(shù)據(jù)包后,,也要將數(shù)據(jù)字節(jié)逆序重組,才能得到需要的修改參數(shù),。上位機(jī)在下載程序的過程中,,若在對(duì)某段程序多次重復(fù)發(fā)送后依然收到錯(cuò)誤反饋,則顯示錯(cuò)誤狀態(tài),,停止數(shù)據(jù)發(fā)送,,由調(diào)試人員檢查線路,重新給出下載命令,。

?


??? 多個(gè)控制器控制參數(shù)的調(diào)試是一個(gè)相當(dāng)繁雜的過程,,本文給出了基于CAN總線的調(diào)試系統(tǒng),其設(shè)計(jì)目的就是簡(jiǎn)化調(diào)試過程,,縮短調(diào)試時(shí)間,。應(yīng)用這套系統(tǒng),調(diào)試人員可以同時(shí)動(dòng)態(tài)地調(diào)整多個(gè)控制器的控制參數(shù),,通過反饋的控制器狀態(tài)判斷參數(shù)優(yōu)劣,,達(dá)到快速尋找最優(yōu)控制參數(shù)的目的,是調(diào)試過程中的一條有效輔助手段,。
參考文獻(xiàn)
1 USBCAN用戶手冊(cè).三星達(dá)公司,,2001.5
2 蘇 濤,吳順君,,李真芳,,宋萬杰.高性能DSP與高速實(shí)時(shí)信號(hào)處理.西安:電子科技大學(xué)出版,2002.1
3 SJA1000 Stand-alone CAN Controller Data Sheet.Philips? Semiconductors,,2000.4
4 李廣軍,王厚軍.實(shí)用接口技術(shù). 成都:電子科技大學(xué)出版社,,1998.2
5 林瑞仲,吳 越.Visual C++.NET類庫應(yīng)用實(shí)例.北京:電子工業(yè)出版社,,2003.11

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。