基子CAN_BUS的控制器調試系統(tǒng)的設計
調節(jié)多點控制器的控制參數是一項復雜的工作,以CAN_BUS通信協(xié)議為基礎,設計了一種連接多個CAN端點的調試系統(tǒng),通過創(chuàng)建通信協(xié)議,實現了上位機與控制器的CAN端點的實時數據交流。闡述了控制器與上位機的通信流程。
本文引用地址:http://butianyuan.cn/article/161789.htm磁懸浮轉向架的懸浮由四組電磁鐵實現,每組電磁鐵都有獨立的懸浮控制器,控制該點的懸浮與下落。為了獲得最優(yōu)的控制參數,需要在整個轉向架的懸浮過程中通過上位機監(jiān)視軌道與電磁鐵之間的間隙、電磁鐵工作電流等狀態(tài)參數以及懸浮控制器的控制參數,動態(tài)地修改控制參數以觀察控制效果。
懸浮控制器之間是相互獨立的,上位機無法同時監(jiān)控多個懸浮控制器,因此需要找到合理的通信方式使上位機同時與所有的控制器連接,使它們之間能夠實時傳遞數據。CAN總線是一種有效支持分布式控制和實時控制的多主的異步串行通信網絡。由于CAN總線具有較強的糾錯能力,支持差分收發(fā),適合高噪聲環(huán)境,具有較遠的傳輸距離,在各個領域中得到了廣泛應用。CAN通信協(xié)議規(guī)定通信波特率、每個位周期的取樣位置和個數都可以自行設定,這保證了用戶在使用過程中的靈活性。選用CAN總線,無論是在抗電磁干擾方面還是在實時性方面都能夠滿足實驗要求。
圖1
1 調試系統(tǒng)硬件端口的設計
懸浮控制器使用SJA1000作為CAN總線協(xié)議轉換芯片。SJA1000是一種獨立控制器,用于移動目標和一般工業(yè)環(huán)境中的區(qū)域網絡控制。它內建BASIC CAN協(xié)議,并提供對CAN2.0B協(xié)議的支持。通過對片內寄存器的讀、寫操作,懸浮控制器的核心處理器能夠設置CAN總線通信模式,實現數據的發(fā)送與接收。它的傳輸速度很快,位速率可達1Mbit/s,可滿足高速大流量實時傳輸要求。
SJA1000在邏輯上實現了傳輸數據的編碼和解碼,若要與物理線路連接,必須借助總線驅動器。PCA82C250是協(xié)議控制器與物理鏈路之間的接口,可以用高達1Mbit/s的位速率在兩條有差動電壓的總線電纜上傳輸數據,它與SJA1000結合才能實現CAN總線通信。
圖1為CAN總線接口電路原理圖。圖中,SJA1000用16MHz的晶振作為基準時鐘,數據線AD0~AD7與核心控制器的低八位數據線相連,在CS、RD、WR的控制下可實現芯片寄存器的讀寫。RX0和TX0與PCA82C250數據輸入引腳相連,作為串行數據線。RX1與PCA82C250的參考電壓引腳5相連,向PCA82C250輸出參考電壓。PCA82C250的兩根輸出數據線之間加上120Ω的終端電阻,用以匹配線路。
上位機通過專用的USBTOCAN轉換器實現PC機與CAN總線的連接,市場上有很多這類產品,這里不再詳細說明。上位機主要提供人機交互界面,顯示狀態(tài)和控制器參數,并完成參數與程序的下載。
2 通信協(xié)議構建
DSP控制器上的CAN總線端口要完成兩項工作:(1)上傳控制器的控制常量和電流、間隙等狀態(tài)參數,送給檢測系統(tǒng);(2)讀取上位機下傳的待修改的控制參數,實現參數的在線修改,接收下傳的程序文件,實現DSP主程序的在線寫入。
在調試過程中,實現多DSP系統(tǒng)的在線聯(lián)調是很有效的調試手段。這樣,上位PC機不但能夠采集各控制器的狀態(tài)參數,還能夠對采集的數據進行整理與顯示,并能實時調整不同控制器的控制參數,最終實現控制器運行程序的遠程下載。
為實現CAN總線的數據傳送,需要定義參數包、程序包、命令包三種傳送數據包,并分別由0x11、0x22、0x33標示出來。根據數據傳送方向的不同,數據包的格式略有差異??紤]到CAN總線上的節(jié)點較多,為避免數據傳送過程中出現混亂的情況,定義數據發(fā)送的基本數據包大小為8個字節(jié),即CAN總線一次傳送的最大字節(jié)數為8。
2.1 下傳數據協(xié)議
下傳數據包括程序、參數、命令三種數據類型。
2.1.1 參數數據包格式
上位機需要下傳的數據包括控制參數C1、C2、C3及給定間隙與電流,根據修改需要,每個參數都是單獨下傳的。下傳數據包的大小與CAN的最大有效傳送字節(jié)數一致,為8個字節(jié)。第一個字節(jié)指出數據包的類型(用Oxll標示),第二個字節(jié)指出參數類型(用0xx7標示),第三字節(jié)至第八字節(jié)指出傳送的有效數據,對應上面給定參數的參數標示依次為0x17、0x27、0x37、0x47、0x57。圖2所示為數據包的一般格式。
2.1.2 程序數據包格式
FLASH寫入文件較大,一般有幾十K字節(jié)??刂葡到y(tǒng)采用的FLASH芯片AT29C010以128字節(jié)為基本操作單位。為了適應芯片,可將文件分成128字節(jié)的數據段,并為每個數據段標定次序。發(fā)送時,標出數據段號及該片數據所處段中的位置即可??刂破鹘邮盏?28字節(jié)后,做一次寫入FLASH操作,數據包格式及說明見圖3。
評論