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