CAN總線在車輛分布式控制系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 引言
對于多電機(jī)的系統(tǒng),特別是多電機(jī)驅(qū)動的軌道車輛控制系統(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è)備能夠完成自動控制和運(yùn)行狀態(tài)的自行診斷,并且能夠通過總線實(shí)現(xiàn)設(shè)備之間的通信,從而簡化了系統(tǒng)結(jié)構(gòu),提高了可靠性。因此本文提出了一種基于CAN(Controller Area Network)總線控制系統(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接口卡、操作臺節(jié)點(diǎn)、智能驅(qū)動節(jié)點(diǎn)(n<110)、CAN總線網(wǎng)絡(luò)組成,其系統(tǒng)結(jié)構(gòu)如圖1所示。分布在整個(gè)車輛的驅(qū)動節(jié)點(diǎn)接收操作臺發(fā)來的控制指令,對驅(qū)動電機(jī)進(jìn)行智能控制,并采集車載電源的電壓、電流和溫度信號,經(jīng)過處理后發(fā)送給監(jiān)控計(jì)算機(jī);監(jiān)控計(jì)算機(jī)可以通過CAN總線網(wǎng)和各個(gè)控制節(jié)點(diǎn)之間進(jìn)行實(shí)時(shí)通信,并顯示電源電壓、驅(qū)動電流、車輛速度等狀態(tài),從而實(shí)現(xiàn)軌道車輛的分布式驅(qū)動和集中監(jiān)控。
500)this.style.width=500;" border="0" />
控制系統(tǒng)中的驅(qū)動節(jié)點(diǎn)由微處理器、CAN控制器、CAN收發(fā)器和外圍電路(如:信號調(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串行通信適配器。操作臺節(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ū)動節(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ū)動節(jié)點(diǎn)。驅(qū)動節(jié)點(diǎn)硬件電路設(shè)計(jì)上采用了模塊化結(jié)構(gòu),由微控制器、CAN通信模塊、信號采集模塊、電機(jī)控制模塊、參數(shù)設(shè)置模塊組成,驅(qū)動節(jié)點(diǎn)的整體結(jié)構(gòu)如圖2所示。
500)this.style.width=500;" border="0" />
圖2 驅(qū)動節(jié)點(diǎn)結(jié)構(gòu)框圖
驅(qū)動節(jié)點(diǎn)各個(gè)組成模塊的功能如下:
(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ù)的功能,有效地提高了總線的抗干擾能力,實(shí)現(xiàn)了保護(hù)總線、降低射頻干擾等功能。為了進(jìn)一步提高了系統(tǒng)的可靠性,在P87C591和 PCA82C250之間光耦(如:6N137等)隔離電路,并采取了雙電源,有效地抑制由總線引入的干擾。
(2)信號采集模塊:P87C591自帶的6路模擬輸入的10位ADC,可設(shè)置為8位快速ADC,可以基本滿足本系統(tǒng)對采集的精度要求,完成對電機(jī)、電池狀態(tài)的測量任務(wù);采集電路將各個(gè)傳感器采集到電信號進(jìn)行調(diào)理(濾波、放大、電量轉(zhuǎn)換)后,接入微處理器的ADC接口。為抑制共模干擾,放大器基本采用差動輸入。CPU得到信息做出相應(yīng)的判斷,并送至不同的子程序進(jìn)行相應(yīng)的處理,如:把電池的電壓、電流、溫度信息通過通信程序發(fā)送給監(jiān)控計(jì)算機(jī);若電池電壓過低,則自動切斷本節(jié)點(diǎn)的驅(qū)動電機(jī),并把節(jié)點(diǎn)的停機(jī)信息通知監(jiān)控計(jì)算機(jī)。
(3)電機(jī)控制模塊:CPU接收到控制臺發(fā)來的運(yùn)行信息,并做出處理。接通驅(qū)動電機(jī)的主接觸器、正反轉(zhuǎn)接觸器,通過I2C總線把速度信號傳給數(shù)字電位計(jì),用來控制電機(jī)驅(qū)動器的輸出電流,進(jìn)而控制電機(jī)轉(zhuǎn)速。若電池的電壓、電流、溫度的任一項(xiàng)值超出正常值范圍時(shí),或接到總線的報(bào)警信息,電機(jī)控制模塊都會做出相應(yīng)的反應(yīng),使驅(qū)動單元得到保護(hù)。
(4)參數(shù)設(shè)置模塊:報(bào)警電壓、報(bào)警電流、報(bào)警溫度、節(jié)點(diǎn)地址、波特率等信息通過RS232接口及相應(yīng)的設(shè)置軟件存儲于基于X25045的E2PROM中,實(shí)現(xiàn)節(jié)點(diǎn)工作參數(shù)現(xiàn)場設(shè)定能。節(jié)點(diǎn)地址通過撥碼開關(guān)設(shè)置。
驅(qū)動節(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ū)動層三個(gè)部分,其系統(tǒng)流程如圖3所示。用戶應(yīng)用層和用戶需求緊密相關(guān),它主要完成的任務(wù)是為用戶提供各類信息的監(jiān)控界面,進(jìn)行人機(jī)交互,也就是通常所說的人機(jī)界面設(shè)計(jì),通過它來顯示收集到的實(shí)測數(shù)據(jù)和狀態(tài)信息,提供駕駛員與控制系統(tǒng)的交互平臺;數(shù)據(jù)分析處理層完成總線數(shù)據(jù)的接收分類、判斷、處理、發(fā)送,數(shù)據(jù)的存取操作等任務(wù);硬件設(shè)備驅(qū)動層通過PC-CAN接口卡建立監(jiān)控計(jì)算與CAN總線的連接,并與驅(qū)動節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換。
500)this.style.width=500;" border="0" />
圖3 監(jiān)控系統(tǒng)流程圖
4.2驅(qū)動節(jié)點(diǎn)的軟件設(shè)計(jì)
與驅(qū)動節(jié)點(diǎn)硬件設(shè)計(jì)相一致,軟件設(shè)計(jì)也遵循模塊化的設(shè)計(jì)原則,使控制軟件具有易讀、易擴(kuò)展和易維護(hù)的優(yōu)點(diǎn)。通過C51語言編寫相應(yīng)的軟件模塊實(shí)現(xiàn)驅(qū)動節(jié)點(diǎn)的各種功能。軟件的各功能模塊之間通過入口和出口參數(shù)相互聯(lián)系,組合靈活且方便,加少了調(diào)試時(shí)間,縮短了開發(fā)周期。驅(qū)動節(jié)點(diǎn)的軟件設(shè)計(jì)流程如圖3所示。
500)this.style.width=500;" border="0" />
圖3 驅(qū)動節(jié)點(diǎn)軟件設(shè)計(jì)流程圖
4.3驅(qū)動節(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控制器工作方式的選擇,即對P87C591中CAN控制器控制段中的寄存器進(jìn)行設(shè)置,包括:總線定時(shí)寄存器和輸出控制寄存器設(shè)置;接收驗(yàn)收濾波寄存器和濾波屏蔽寄存器設(shè)置;設(shè)置發(fā)送數(shù)據(jù)幀類型(標(biāo)準(zhǔn)幀或擴(kuò)展幀)、標(biāo)識符、數(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ū)中,然后啟動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)文會從存儲器復(fù)制到發(fā)送緩沖器后,置位命令寄存器TR標(biāo)志產(chǎn)生發(fā)送請求,發(fā)送過程由SJA1000獨(dú)立完成。
報(bào)文接收子程序只負(fù)責(zé)節(jié)點(diǎn)報(bào)文的接收?;赟JA1000的報(bào)文接有兩種方式:中斷方式和查詢方式。為了保證接收報(bào)文的準(zhǔn)確性,選擇實(shí)時(shí)性較高的中斷方式。在中斷方式下,如果SJA1000已接收一個(gè)報(bào)文,并且報(bào)文已通過驗(yàn)收濾波器并放在接收FIFO,那么會產(chǎn)生一個(gè)接收中斷,通知處理器有報(bào)文已接收。接收子程序就是完成響應(yīng)這個(gè)中斷并把數(shù)據(jù)分類、解碼,最后發(fā)送到相應(yīng)的報(bào)文存儲器。
5 結(jié)束語
本文設(shè)計(jì)的基于CAN總線在軌道車輛分布式控制系統(tǒng)經(jīng)過現(xiàn)場調(diào)試,可以對驅(qū)動電機(jī)的運(yùn)行速度、方向進(jìn)行實(shí)時(shí)控制;電源的電壓、電流、溫度信號通過驅(qū)動節(jié)點(diǎn)傳送給監(jiān)控計(jì)算機(jī);操作臺節(jié)點(diǎn)、驅(qū)動節(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ū)動控制;并在驅(qū)動節(jié)點(diǎn)的軟/硬件設(shè)計(jì)中均采用了模塊化的結(jié)構(gòu),縮短了設(shè)計(jì)開發(fā)周期。