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