CAN總線在車輛分布式控制系統(tǒng)中的應(yīng)用 Application of CAN Bus in Dis tributed Control Sys tem of Railcar (北京工業(yè)大學(xué))孫樹文楊建武張慧慧鄭剛 SUN SHUWEN YANG J IANWU ZHANG HUHUI ZHENG GANG 摘要: 針對(duì)軌道車輛分布式控制系統(tǒng)中驅(qū)動(dòng)電機(jī)多而分散、系統(tǒng)信息量大、布線復(fù)雜、調(diào)試不方便等特點(diǎn), 設(shè)計(jì)了一種基于CAN 總線技術(shù)的多電機(jī)分布式控制系統(tǒng)。通過CAN 總線, 監(jiān)控主機(jī)和電機(jī)驅(qū)動(dòng)節(jié)點(diǎn)可直接進(jìn)行通信, 形成分布式網(wǎng)絡(luò), 簡化了系統(tǒng)結(jié)構(gòu), 實(shí)現(xiàn)多電機(jī)的分散安裝和集中控制功能。本文介紹了監(jiān)控系統(tǒng)的整體結(jié)構(gòu)、工作原理、驅(qū)動(dòng)節(jié)點(diǎn)的軟/硬件設(shè)計(jì)。經(jīng)系統(tǒng)測試和實(shí)際運(yùn)行表明, 該系統(tǒng)安裝使用方便、工作可靠性較高, 達(dá)到了設(shè)計(jì)要求, 具有一定的參考和推廣價(jià)值。 關(guān)鍵詞: CAN 總線; 軌道車輛; 分布式系統(tǒng); 驅(qū)動(dòng)節(jié)點(diǎn) Abstr act:Countering the problems existing in the distributed control system of railcar, such as the condition of excessive and distributed driving motor, many information exchange, complex wiring, and inconvenient installation and debugging, a distributed control system about the multi- motor based on CAN bus is designed. Via CAN- BUS, the monitor host computer and these nodes of driving motor can communicate with each other directly, like a distributed network. The system structure is more concise. The function of distributed setting and concentrated control is realized in this system. The whole structure and principle of system, the hardware circuit, and the software programming were discussed in detail. Practical using shows that this monitor system has the better control effect and is suitable for similar practical engineering. Key words: CAN bus, r ailcar , distr ibuted system, dr iving node 對(duì)于多電機(jī)的系統(tǒng), 特別是多電機(jī)驅(qū)動(dòng)的軌道車輛控制系統(tǒng), 需要實(shí)現(xiàn)大量的信息采集、分布式的協(xié)調(diào)控制、實(shí)時(shí)的反應(yīng)速度等功能。傳統(tǒng)的集散型控制系統(tǒng)存在系統(tǒng)不開放、硬件投資大、布線復(fù)雜、維修不便的缺點(diǎn), 具有明顯的局限性, 顯然是不適合的?,F(xiàn)場總線控制系統(tǒng)( FCS) 是繼直接數(shù)字控制(DDC) 、集散控制系統(tǒng)(DCS) 之后的一種新型的控制系統(tǒng), 是一種全開放、全數(shù)字、多點(diǎn)通信的底層控制網(wǎng)絡(luò), 具有全分散性控的體系結(jié)構(gòu)。其顯著特點(diǎn)是通過開放性總線把現(xiàn)場設(shè)備連接成網(wǎng)絡(luò),各智能設(shè)備能夠完成自動(dòng)控制和運(yùn)行狀態(tài)的自行診斷, 并且能夠通過總線實(shí)現(xiàn)設(shè)備之間的通信, 從而簡化了系統(tǒng)結(jié)構(gòu), 提高了可靠性。因此本文提出了一種基于CAN (Controller AreaNetwork) 總線控制系統(tǒng)的設(shè)計(jì)方案, 將計(jì)算機(jī)通訊、現(xiàn)場總線技術(shù)很好的結(jié)合起來, 設(shè)計(jì)出了一套結(jié)構(gòu)簡單、實(shí)時(shí)性高、擴(kuò)展性強(qiáng)的分布式監(jiān)控系統(tǒng), 實(shí)現(xiàn)了多電機(jī)控制與監(jiān)測的實(shí)時(shí)調(diào)節(jié)、設(shè)備狀態(tài)的數(shù)字化和圖形化顯示。 2 控制系統(tǒng)整體方案設(shè)計(jì) 整個(gè)控制系統(tǒng)由監(jiān)控計(jì)算機(jī)、PC- CAN 接口卡、操作臺(tái)節(jié)點(diǎn)、智能驅(qū)動(dòng)節(jié)點(diǎn)( n<110) 、CAN 總線網(wǎng)絡(luò)組成, 其系統(tǒng)結(jié)構(gòu)如圖1 所示。分布在整個(gè)車輛的驅(qū)動(dòng)節(jié)點(diǎn)接收操作臺(tái)發(fā)來的控制指令, 對(duì)驅(qū)動(dòng)電機(jī)進(jìn)行智能控制, 并采集車載電源的電壓、電流和溫度信號(hào), 經(jīng)過處理后發(fā)送給監(jiān)控計(jì)算機(jī);監(jiān)控計(jì)算機(jī)可以通過CAN 總線網(wǎng)和各個(gè)控制節(jié)點(diǎn)之間進(jìn)行實(shí)時(shí)通信, 并顯示電源電壓、驅(qū)動(dòng)電流、車輛速度等狀態(tài), 從而實(shí)現(xiàn)軌道車輛的分布式驅(qū)動(dòng)和集中監(jiān)控。

控制系統(tǒng)中的驅(qū)動(dòng)節(jié)點(diǎn)由微處理器、CAN 控制器、CAN 收發(fā)器和外圍電路( 如:信號(hào)調(diào)理、光耦隔離、I2C、撥碼開關(guān)等) 組成。監(jiān)控計(jì)算機(jī)可以選用普通PC 或工控機(jī)IPC。PC- CAN 適配卡用來完成CAN 總線和監(jiān)控計(jì)算機(jī)之間的協(xié)議轉(zhuǎn)換, 可以選用PCI 總線適配卡、ISA 總線適配卡或RS232 串行通信適配器。操作臺(tái)節(jié)點(diǎn)用于車輛運(yùn)行方向與運(yùn)行速度的控制。各個(gè)控制節(jié)點(diǎn)之間通過屏蔽雙絞線互聯(lián)構(gòu)成CAN 總線網(wǎng)絡(luò), 總線兩端連接120Ω的阻抗匹配電阻, 用來提高系統(tǒng)的穩(wěn)定性、增強(qiáng)系統(tǒng)的抗力。 3 驅(qū)動(dòng)節(jié)點(diǎn)的硬件設(shè)計(jì) CAN 總線器件有兩種選擇方案: 一種是片內(nèi)集成CAN 的微控制器, 如P8XC591/2、87C196CA/CB、MC68376 等;另一種是獨(dú)立的CAN控制器, 如控制Philips 公司的SJA1000、82C200、, Intel公司的82526、以及Microchip 公司的MCP2510 等, 但是獨(dú)立的CAN 控制芯片需要外接一個(gè)微處理器才能運(yùn)行。為了簡化設(shè)計(jì), 提高可靠性, 本文設(shè)計(jì)中選用的是Philips 公司的帶有在片CAN 控制器的P87C591 微型控制器, 自帶CAN 總線控制器(SJA1000) 的微處理器, 不占用處理器的端口資源, 大大簡化了接口電路的設(shè)計(jì), 減少了程序的復(fù)雜程度, 提高了系統(tǒng)的穩(wěn)定性。整個(gè)車輛分布式控制系統(tǒng)設(shè)計(jì)的重點(diǎn)和和難點(diǎn)都是驅(qū)動(dòng)節(jié)點(diǎn)。驅(qū)動(dòng)節(jié)點(diǎn)硬件電路設(shè)計(jì)上采用了模塊化結(jié)構(gòu), 由微控制器、CAN 通信模塊、信號(hào)采集模塊、電機(jī)控制模塊、參數(shù)設(shè)置模塊組成, 驅(qū)動(dòng)節(jié)點(diǎn)的整體結(jié)構(gòu)如圖2 所示。 
驅(qū)動(dòng)節(jié)點(diǎn)各個(gè)組成模塊的功能如下: (1)CAN 通信模塊:CAN 總線通信接口電路主要由P87C591的片內(nèi)CAN 驅(qū)動(dòng)器SJA1000、6N137 高速光隔、CAN 收發(fā)器PCA82C250 組成。P87C591 完成CAN 協(xié)議的應(yīng)用層功能;SJA1000 *兼容CAN2.0 協(xié)議, 完成物理層和數(shù)據(jù)鏈路層的功能;PCA82C250 提供了對(duì)總線差動(dòng)發(fā)送和接受數(shù)據(jù)的功能,有效地提高了總線的抗力, 實(shí)現(xiàn)了保護(hù)總線、降低射頻干擾等功能。為了進(jìn)一步提高了系統(tǒng)的可靠性, 在P87C591 和PCA82C250 之間光耦(如:6N137 等)隔離電路, 并采取了雙電源, 有效地抑制由總線引入的干擾。 (2) 信號(hào)采集模塊:P87C591 自帶的6 路模擬輸入的10 位ADC, 可設(shè)置為8 位快速ADC, 可以基本滿足本系統(tǒng)對(duì)采集的精度要求, 完成對(duì)電機(jī)、電池狀態(tài)的測量任務(wù);采集電路將各個(gè)傳感器采集到電信號(hào)進(jìn)行調(diào)理(濾波、放大、電量轉(zhuǎn)換)后, 接入微處理器的ADC 接口。為抑制共模干擾, 放大器基本采用差動(dòng)輸入。CPU 得到信息做出相應(yīng)的判斷, 并送至不同的子程序進(jìn)行相應(yīng)的處理, 如:把電池的電壓、電流、溫度信息通過通信程序發(fā)送給監(jiān)控計(jì)算機(jī);若電池電壓過低, 則自動(dòng)切斷本節(jié)點(diǎn)的驅(qū)動(dòng)電機(jī), 并把節(jié)點(diǎn)的停機(jī)信息通知監(jiān)控計(jì)算機(jī)。 (3) 電機(jī)控制模塊:CPU 接收到控制臺(tái)發(fā)來的運(yùn)行信息, 并做出處理。接通驅(qū)動(dòng)電機(jī)的主接觸器、正反轉(zhuǎn)接觸器, 通過I2C獨(dú)立的CAN控制器, 如控制Philips 公司的SJA1000、82C200、, Intel公司的82526、以及Microchip 公司的MCP2510 等, 但是獨(dú)立的CAN 控制芯片需要外接一個(gè)微處理器才能運(yùn)行。為了簡化設(shè)計(jì), 提高可靠性, 本文設(shè)計(jì)中選用的是Philips 公司的帶有在片CAN 控制器的P87C591 微型控制器, 自帶CAN 總線控制器(SJA1000) 的微處理器, 不占用處理器的端口資源, 大大簡化了接口電路的設(shè)計(jì), 減少了程序的復(fù)雜程度, 提高了系統(tǒng)的穩(wěn)定性。整個(gè)車輛分布式控制系統(tǒng)設(shè)計(jì)的重點(diǎn)和和難點(diǎn)都是驅(qū)動(dòng)節(jié)點(diǎn)。驅(qū)動(dòng)節(jié)點(diǎn)硬件電路設(shè)計(jì)上采用了模塊化結(jié)構(gòu), 由微控制器、CAN 通信模塊、信號(hào)采集模塊、電機(jī)控制模塊、參數(shù)設(shè)置模塊組成, 驅(qū)動(dòng)節(jié)點(diǎn)的整體結(jié)構(gòu)如圖2 所示??偩€把速度信號(hào)傳給數(shù)字電位計(jì), 用來控制電機(jī)驅(qū)動(dòng)器的輸出電流, 進(jìn)而控制電機(jī)轉(zhuǎn)速。若電池的電壓、電流、溫度的任一項(xiàng)值超出正常值范圍時(shí), 或接到總線的報(bào)警信息, 電機(jī)控制模塊都會(huì)做出相應(yīng)的反應(yīng), 使驅(qū)動(dòng)單元得到保護(hù)。 (4)參數(shù)設(shè)置模塊:報(bào)警電壓、報(bào)警電流、報(bào)警溫度、節(jié)點(diǎn)地址、波特率等信息通過RS232 接口及相應(yīng)的設(shè)置軟件存儲(chǔ)于基于X25045 的E2PROM中, 實(shí)現(xiàn)節(jié)點(diǎn)工作參數(shù)現(xiàn)場設(shè)定能。節(jié)點(diǎn)地址通過撥碼開關(guān)設(shè)置。 驅(qū)動(dòng)節(jié)點(diǎn)的硬件部分除了以上介紹的以外, 還有電源電路以及看門狗電路。電源電路提供所需隔離電源, 用于提高節(jié)點(diǎn)的穩(wěn)定性和安全性;看門狗電路主要是保證系統(tǒng)運(yùn)行的穩(wěn)定性,在上電、掉電以及警戒情況下復(fù)位輸出。
4 控制系統(tǒng)的軟件設(shè)計(jì) 4.1 監(jiān)控計(jì)算機(jī)的軟件設(shè)計(jì) 計(jì)算機(jī)監(jiān)控軟件主要分為用戶應(yīng)用層、數(shù)據(jù)分析處理層及硬件設(shè)備驅(qū)動(dòng)層三個(gè)部分, 其系統(tǒng)流程如圖3 所示。用戶應(yīng)用層和用戶需求緊密相關(guān), 它主要完成的任務(wù)是為用戶提供各類信息的監(jiān)控界面, 進(jìn)行人機(jī)交互, 也就是通常所說的人機(jī)界面設(shè)計(jì), 通過它來顯示收集到的實(shí)測數(shù)據(jù)和狀態(tài)信息, 提供駕駛員與控制系統(tǒng)的交互平臺(tái); 數(shù)據(jù)分析處理層完成總線數(shù)據(jù)的接收分類、判斷、處理、發(fā)送, 數(shù)據(jù)的存取操作等任務(wù);硬件設(shè)備驅(qū)動(dòng)層通過PC- CAN 接口卡建立監(jiān)控計(jì)算與CAN 總線的連接,并與驅(qū)動(dòng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換。 
4.2 驅(qū)動(dòng)節(jié)點(diǎn)的軟件設(shè)計(jì) 與驅(qū)動(dòng)節(jié)點(diǎn)硬件設(shè)計(jì)相一致, 軟件設(shè)計(jì)也遵循模塊化的設(shè)計(jì)原則, 使控制軟件具有易讀、易擴(kuò)展和易維護(hù)的優(yōu)點(diǎn)。通過C51 語言編寫相應(yīng)的軟件模塊實(shí)現(xiàn)驅(qū)動(dòng)節(jié)點(diǎn)的各種功能。軟件的各功能模塊之間通過入口和出口參數(shù)相互聯(lián)系, 組合靈活且方便, 加少了調(diào)試時(shí)間, 縮短了開發(fā)周期。驅(qū)動(dòng)節(jié)點(diǎn)的軟件設(shè)計(jì)流程如圖3 所示。 
4.3 驅(qū)動(dòng)節(jié)點(diǎn)通信程序設(shè)計(jì) 監(jiān)控節(jié)點(diǎn)的通信采用CAN 總線2.0A 協(xié)議, 通信模塊的軟件設(shè)計(jì)主要由初始化子程序、報(bào)文接收子程序、報(bào)文發(fā)送子程序三部分組成。其中初始化子程序是實(shí)現(xiàn)通信的關(guān)鍵, 它主要用來完成CAN 控制器工作方式的選擇, 即對(duì)P87C591 中CAN控制器控制段中的寄存器進(jìn)行設(shè)置, 包括:總線定時(shí)寄存器和輸出控制寄存器設(shè)置; 接收驗(yàn)收濾波寄存器和濾波屏蔽寄存器設(shè)置;設(shè)置發(fā)送數(shù)據(jù)幀類型(標(biāo)準(zhǔn)幀或擴(kuò)展幀)、標(biāo)識(shí)符、數(shù)據(jù)長度。監(jiān)控節(jié)點(diǎn)與CAN 總線之間的數(shù)據(jù)交換是通過發(fā)送子程序和接收子程序?qū)崿F(xiàn)的。 報(bào)文發(fā)送時(shí)只需將等待發(fā)送的數(shù)據(jù)按照特定格式組合成一幀報(bào)文, 送入SJA1000 的發(fā)送緩沖區(qū)中, 然后啟動(dòng)SJA1000發(fā)送。在這之前必須先作一些判斷, 如:是否正在接收, 發(fā)送緩沖區(qū)是否鎖定等。當(dāng)SJA1000 正在發(fā)送報(bào)文時(shí), 發(fā)送緩沖器被寫鎖定。所以在放置一個(gè)新報(bào)文到發(fā)送緩沖器之前, 主控制器必須檢查狀態(tài)寄存器的“發(fā)送緩沖器狀態(tài)標(biāo)志"。否則, 發(fā)送緩沖器被鎖定, 新的報(bào)文不能被寫入。一個(gè)正在等待的報(bào)文會(huì)從存儲(chǔ)器復(fù)制到發(fā)送緩沖器后, 置位命令寄存器TR 標(biāo)志產(chǎn)生發(fā)送請(qǐng)求, 發(fā)送過程由SJA1000 獨(dú)立完成。 報(bào)文接收子程序只負(fù)責(zé)節(jié)點(diǎn)報(bào)文的接收?;赟JA1000 的報(bào)文接有兩種方式:中斷方式和查詢方式。為了保證接收?qǐng)?bào)文的準(zhǔn)確性, 選擇實(shí)時(shí)性較高的中斷方式。在中斷方式下, 如果SJA1000 已接收一個(gè)報(bào)文, 并且報(bào)文已通過驗(yàn)收濾波器并放接收FIFO, 那么會(huì)產(chǎn)生一個(gè)接收中斷, 通知處理器有報(bào)文已接收。接收子程序就是完成響應(yīng)這個(gè)中斷并把數(shù)據(jù)分類、解碼, 最后發(fā)送到相應(yīng)的報(bào)文存儲(chǔ)器。 5 結(jié)束語 本文設(shè)計(jì)的基于CAN 總線在軌道車輛分布式控制系統(tǒng)經(jīng)過現(xiàn)場調(diào)試, 可以對(duì)驅(qū)動(dòng)電機(jī)的運(yùn)行速度、方向進(jìn)行實(shí)時(shí)控制;電源的電壓、電流、溫度信號(hào)通過驅(qū)動(dòng)節(jié)點(diǎn)傳送給監(jiān)控計(jì)算機(jī);操作臺(tái)節(jié)點(diǎn)、驅(qū)動(dòng)節(jié)點(diǎn)與監(jiān)控計(jì)算機(jī)之間的數(shù)據(jù)通信穩(wěn)定可靠; 可以通過參數(shù)設(shè)置模塊修改節(jié)點(diǎn)的地址和波特率。實(shí)驗(yàn)表明了控制系統(tǒng)的適用性和可靠性, 開發(fā)過程中所提出的技術(shù)方案和實(shí)現(xiàn)方法可以在分布式監(jiān)控系統(tǒng)及工業(yè)底層監(jiān)控網(wǎng)絡(luò)的設(shè)計(jì)中推廣應(yīng)用。 本文作者創(chuàng)新點(diǎn): 在軌道車輛控制系統(tǒng)設(shè)計(jì)中采用CAN總線技術(shù), 實(shí)現(xiàn)了多電機(jī)的分布式驅(qū)動(dòng)控制; 并在驅(qū)動(dòng)節(jié)點(diǎn)的軟/硬件設(shè)計(jì)中均采用了模塊化的結(jié)構(gòu), 縮短了設(shè)計(jì)開發(fā)周期。 |