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