摘 要: 針對(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ò), 簡(jiǎn)化了系統(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)測(cè)試和實(shí)際運(yùn)行表明, 該系統(tǒng)安裝使用方便、工作可靠性較高, 達(dá)到了設(shè)計(jì)要求, 具有一定的參考和推廣價(jià)值。
關(guān)鍵詞: CAN 總線; 軌道車輛; 分布式系統(tǒng); 驅(qū)動(dòng)節(jié)點(diǎn)
1 引言
對(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)場(chǎng)總線控制系統(tǒng)(fcs) 是繼直接數(shù)字控制(ddc) 、集散控制系統(tǒng)(DCS) 之后的一種新型的控制系統(tǒng), 是一種全開放、全數(shù)字、多點(diǎn)通信的底層控制網(wǎng)絡(luò), 具有全分散性控的體系結(jié)構(gòu)。其顯著特點(diǎn)是通過開放性總線把現(xiàn)場(chǎng)設(shè)備連接成網(wǎng)絡(luò),各智能設(shè)備能夠完成自動(dòng)控制和運(yùn)行狀態(tài)的自行診斷, 并且能夠通過總線實(shí)現(xiàn)設(shè)備之間的通信, 從而簡(jiǎn)化了系統(tǒng)結(jié)構(gòu), 提高了可靠性。因此本文提出了一種基于CAN(controller area network)總線控制系統(tǒng)的設(shè)計(jì)方案, 將計(jì)算機(jī)通訊、現(xiàn)場(chǎng)總線技術(shù)很好的結(jié)合起來, 設(shè)計(jì)出了一套結(jié)構(gòu)簡(jiǎn)單、實(shí)時(shí)性高、擴(kuò)展性強(qiáng)的分布式監(jiān)控系統(tǒng), 實(shí)現(xiàn)了多電機(jī)控制與監(jiān)測(cè)的實(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)行。為了簡(jiǎn)化設(shè)計(jì), 提高可靠性, 本文設(shè)計(jì)中選用的是philips 公司的帶有在片can 控制器的p87c591 微型控制器, 自帶can 總線控制器(sja1000)的微處理器, 不占用處理器的端口資源, 大大簡(jiǎn)化了接口電路的設(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)的測(cè)量任務(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總線把速度信號(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)場(chǎng)設(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í)測(cè)數(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ì)流程如圖4 所示。
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)文的接收。基于sja1000 的報(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)場(chǎng)調(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ā)周期。
參考文獻(xiàn):
[1]饒運(yùn)濤, 鄒繼軍, 鄭勇蕓. 現(xiàn)場(chǎng)總線CAN 原理與應(yīng)用技術(shù)[m]. 北京: 北京航空航天大學(xué)出版社,2003.
[2]劉洪濤, 張慧慧, 楊建武, 孫樹文. 基于CAN 總線的分布式潛水電機(jī)監(jiān)控系統(tǒng)[j].微計(jì)算機(jī)信息.2005,8- 2:4- 6
[3]陳建霞, 張杰. CAN 總線在電機(jī)控制系統(tǒng)中的應(yīng)用[j], 通信電源技術(shù), 2005 年8 月第22 卷第4 期:43- 44