CAN現(xiàn)場(chǎng)總線在智能配電系統(tǒng)中的應(yīng)用
本文為計(jì)算機(jī)機(jī)房開(kāi)發(fā)的智能配電系統(tǒng)iPDS(Intelligent Power Distribution System)很好地滿足了以上要求,具有智能化和人性化兩大特點(diǎn)。本系統(tǒng)采用CAN總線進(jìn)行數(shù)據(jù)的交互傳遞,很好地滿足了系統(tǒng)可靠性、實(shí)時(shí)性及成本方面的要求。
本文引用地址:http://m.butianyuan.cn/article/201612/329496.htm系統(tǒng)設(shè)計(jì)
本智能系統(tǒng)對(duì)機(jī)房?jī)?nèi)各路電源的電流、漏電流、零地電壓、自動(dòng)空氣斷路器的運(yùn)行狀態(tài)等信息進(jìn)行實(shí)時(shí)監(jiān)測(cè)、顯示,具有實(shí)時(shí)報(bào)警、詳細(xì)記錄等功能,并可以根據(jù)用戶要求靈活地配置各路監(jiān)測(cè)信息??梢栽陲@示屏上查詢(xún)機(jī)房各路電源的使用情況,盡早發(fā)現(xiàn)和消除隱患,實(shí)時(shí)處理故障,進(jìn)一步提高了系統(tǒng)的可靠性。
本系統(tǒng)由數(shù)據(jù)處理單元、數(shù)據(jù)采集節(jié)點(diǎn)、LED顯示節(jié)點(diǎn)、觸摸屏等組成,具體系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 智能配電系統(tǒng)結(jié)構(gòu)圖
整個(gè)系統(tǒng)結(jié)構(gòu)復(fù)雜,功能完善,觸摸屏通過(guò)RS-485與數(shù)據(jù)處理單元相連,數(shù)據(jù)處理單元、數(shù)據(jù)采集節(jié)點(diǎn)和LED顯示節(jié)點(diǎn)都掛接在CAN總線上,各組成部分提供不同的功能:
1. 數(shù)據(jù)處理單元有兩個(gè)CPU,單片機(jī)AT89C58和P87C591,二者通過(guò)雙口RAM進(jìn)行數(shù)據(jù)交換,其中AT89C58與觸摸屏通過(guò)RS-485通信,處理觸摸屏上的顯示和設(shè)置信息,P87C591處理CAN總線上的交互信息。
2. 觸摸屏是系統(tǒng)的主界面,用于設(shè)置系統(tǒng)的配置信息,顯示當(dāng)前各路的電流、漏電流、零地電壓和自動(dòng)空氣斷路器的狀態(tài)等,并可以查看歷史報(bào)警記錄。
3. 數(shù)據(jù)采集節(jié)點(diǎn)采集各路模擬量和開(kāi)關(guān)量信息,通過(guò)CAN總線傳輸,以供數(shù)據(jù)處理單元處理。
4. LED顯示節(jié)點(diǎn)主要顯示當(dāng)前各路的模擬量和開(kāi)關(guān)量的報(bào)警信息,便于用戶查看,使系統(tǒng)更加人性化。
CAN總線硬件設(shè)計(jì)
P87C591簡(jiǎn)介
在系統(tǒng)中,采用Philips公司生產(chǎn)的P87C591單片機(jī),該單片機(jī)是一個(gè)8位高性能微控制器,具有片內(nèi)CAN控制器,大大簡(jiǎn)化了硬件電路的設(shè)計(jì),提高了CAN接口的穩(wěn)定性。
P87C591采用了強(qiáng)大的80C51指令集,并集成了SJA1000 CAN控制器的PeliCAN功能。
P87C591連接的CAN節(jié)點(diǎn)電路設(shè)計(jì)比較簡(jiǎn)單,所需的外部元件只是一個(gè)晶振加兩個(gè)電容驅(qū)動(dòng)片內(nèi)震蕩器、一個(gè)連接到復(fù)位腳的電阻、電容。使用片內(nèi)上電復(fù)位電路以及一個(gè)收發(fā)器將P87C591連接到CAN總線上。
CAN總線通信過(guò)程及標(biāo)識(shí)符的分配
本系統(tǒng)對(duì)實(shí)時(shí)性要求高,數(shù)據(jù)傳輸量大,數(shù)據(jù)采集節(jié)點(diǎn)采集的信息應(yīng)快速上傳到數(shù)據(jù)處理單元,以便及時(shí)處理,數(shù)據(jù)處理單元將觸摸屏上的設(shè)置信息實(shí)時(shí)傳遞給數(shù)據(jù)采集單元;數(shù)據(jù)處理單元處理完采集的信息后,將當(dāng)前的系統(tǒng)狀態(tài)及時(shí)地在LED顯示節(jié)點(diǎn)上顯示出來(lái),并指揮繼電器動(dòng)作。
整個(gè)CAN總線系統(tǒng)采用CAN2.0B通訊協(xié)議,采用標(biāo)準(zhǔn)幀格式、11位標(biāo)識(shí)符來(lái)區(qū)分CAN總線上的節(jié)點(diǎn)。數(shù)據(jù)處理單元是CAN總線上最重要的節(jié)點(diǎn),控制整個(gè)總線上數(shù)據(jù)的傳輸和處理,優(yōu)先級(jí)最高,其次是數(shù)據(jù)采集節(jié)點(diǎn),它是數(shù)據(jù)的來(lái)源,實(shí)時(shí)采集傳遞數(shù)據(jù),再次是LED顯示節(jié)點(diǎn)。
考慮到系統(tǒng)的擴(kuò)展問(wèn)題,預(yù)留了一部分標(biāo)識(shí)符,根據(jù)用戶要求可以增加、減少數(shù)據(jù)采集節(jié)點(diǎn)和LED顯示節(jié)點(diǎn),而不影響系統(tǒng)的優(yōu)先級(jí)設(shè)計(jì)。
CAN總線軟件設(shè)計(jì)
數(shù)據(jù)處理單元是CAN總線上優(yōu)先級(jí)最高的節(jié)點(diǎn),控制著整個(gè)總線上的數(shù)據(jù)傳輸流程,其軟件設(shè)計(jì)主要包括兩大部分,即通信網(wǎng)絡(luò)的應(yīng)用層協(xié)議和功能實(shí)現(xiàn)的流程和編碼。
軟件功能分析及系統(tǒng)初始化設(shè)計(jì)
P87C591主要完成數(shù)據(jù)的處理與傳輸,通過(guò)CAN總線接收數(shù)據(jù)采集節(jié)點(diǎn)采集來(lái)的各路模擬量和開(kāi)關(guān)量信息,整理后按協(xié)議存儲(chǔ)到雙口RAM中,并根據(jù)處理結(jié)果給LED顯示節(jié)點(diǎn)發(fā)送信息。主程序查詢(xún)雙口RAM中數(shù)據(jù)采集節(jié)點(diǎn)的設(shè)置信息,實(shí)時(shí)地傳送信息給數(shù)據(jù)采集節(jié)點(diǎn),并向其發(fā)送遠(yuǎn)程幀,請(qǐng)求模擬量和開(kāi)關(guān)量信息的傳送,這樣避免了多個(gè)數(shù)據(jù)采集節(jié)點(diǎn)同時(shí)上傳采集的信息,有效地防止了接收溢出和數(shù)據(jù)丟失,接收到采集的各路信息后,處理并存儲(chǔ)到雙口RAM中、發(fā)送給LED節(jié)點(diǎn)。
在程序設(shè)計(jì)中,初始化程序是系統(tǒng)設(shè)計(jì)工作中極為重要的部分,它是系統(tǒng)能否正常工作的前提。因此,初始化設(shè)計(jì)是一個(gè)重點(diǎn),在系統(tǒng)初始化過(guò)程中要進(jìn)行雙口RAM的初始化,打開(kāi)看門(mén)狗,設(shè)置中斷優(yōu)先級(jí),初始化CAN控制器和I/O口,打開(kāi)總中斷等操作,以保證系統(tǒng)正常穩(wěn)定地工作。
CAN通信程序設(shè)計(jì)
CAN通信軟件主要由以下幾部分組成:初始化、接收處理、發(fā)送處理、中斷處理及錯(cuò)誤處理。本文重點(diǎn)介紹初始化、發(fā)送、接收處理子程序及錯(cuò)誤處理。
初始化子程序
CAN控制器的初始化包括操作模式、驗(yàn)收濾波器、總線定時(shí)及中斷的設(shè)置等。驗(yàn)收濾波器的設(shè)置決定了本節(jié)點(diǎn)所接收的信息的格式。定時(shí)器用來(lái)設(shè)置CAN總線上數(shù)據(jù)傳輸?shù)牟ㄌ芈?總線上各節(jié)點(diǎn)的波特率必須一致,否則就會(huì)導(dǎo)致數(shù)據(jù)傳輸錯(cuò)誤。
發(fā)送程序
發(fā)送子程序負(fù)責(zé)節(jié)點(diǎn)報(bào)文的發(fā)送。發(fā)送時(shí)用戶只需將待發(fā)送的數(shù)據(jù)按特定格式組合成一幀報(bào)文,送入CAN控制器的發(fā)送緩存區(qū)中,然后啟動(dòng)發(fā)送命令即可。信息從CAN控制器發(fā)送到CAN總線是由CAN控制器自動(dòng)完成的。本系統(tǒng)采用查詢(xún)的方式發(fā)送。
接收程序
接收子程序負(fù)責(zé)節(jié)點(diǎn)報(bào)文的接收以及其它情況的處理,諸如對(duì)總線關(guān)閉、錯(cuò)誤報(bào)警、接收溢出等情況進(jìn)行處理。信息從CAN總線到CAN緩沖區(qū)是由CAN控制器自動(dòng)完成的。接收程序只需從接收緩沖區(qū)讀取要接收的信息即可。考慮到實(shí)時(shí)性的要求,采用了如圖2所示的中斷方式。
圖2 中斷接收流程圖
錯(cuò)誤處理
在CAN初始化中,打開(kāi)了錯(cuò)誤報(bào)警中斷使能和總線錯(cuò)誤中斷使能,當(dāng)錯(cuò)誤計(jì)數(shù)器(發(fā)送錯(cuò)誤計(jì)數(shù)器和接收錯(cuò)誤計(jì)數(shù)器中的任何一個(gè))計(jì)數(shù)值超過(guò)96時(shí),說(shuō)明總線被嚴(yán)重干擾,產(chǎn)生錯(cuò)誤報(bào)警中斷;當(dāng)發(fā)送錯(cuò)誤計(jì)數(shù)器值超過(guò)255時(shí),節(jié)點(diǎn)進(jìn)入總線關(guān)閉狀態(tài),CAN控制器將設(shè)置復(fù)位模式位為1(當(dāng)前)并產(chǎn)生一個(gè)錯(cuò)誤報(bào)警和總線錯(cuò)誤中斷。
錯(cuò)誤報(bào)警中斷處理是清零所有錯(cuò)誤計(jì)數(shù)器的值,維持CAN的運(yùn)轉(zhuǎn),但這樣做存在局限性:清零錯(cuò)誤計(jì)數(shù)器只是將錯(cuò)誤計(jì)數(shù)器簡(jiǎn)單的清零,不能從根本上消除錯(cuò)誤來(lái)源;由于錯(cuò)誤報(bào)警中斷產(chǎn)生的條件為錯(cuò)誤計(jì)數(shù)器的值超過(guò)96,而總線關(guān)閉中斷產(chǎn)生的條件為發(fā)送錯(cuò)誤計(jì)數(shù)器的值超過(guò)255,因此,發(fā)送錯(cuò)誤計(jì)數(shù)器引起的錯(cuò)誤報(bào)警中斷可以屏蔽掉總線錯(cuò)誤中斷。系統(tǒng)可能由于總響應(yīng)錯(cuò)誤報(bào)警中斷導(dǎo)致系統(tǒng)不能產(chǎn)生總線關(guān)閉,使CAN總線一直處于不穩(wěn)定狀態(tài)。
為了避免這種情況,只打開(kāi)總線錯(cuò)誤中斷使能,這樣,在總線發(fā)生嚴(yán)重錯(cuò)誤的情況下,可馬上產(chǎn)生總線錯(cuò)誤中斷,使錯(cuò)誤得到及時(shí)處理??偩€錯(cuò)誤中斷的處理是復(fù)位該節(jié)點(diǎn),重新初始化CAN控制器,這樣可以消除錯(cuò)誤,給節(jié)點(diǎn)一個(gè)很好的初態(tài)。由于CAN總線兩條傳輸線之間的誤接觸,也易造成CAN總線關(guān)閉,使節(jié)點(diǎn)無(wú)法工作,在主程序中查詢(xún)狀態(tài)寄存器中當(dāng)前CAN總線狀態(tài),及時(shí)復(fù)位該節(jié)點(diǎn),使節(jié)點(diǎn)正常工作。
同時(shí),為了更方便直觀地查看CAN總線的工作狀態(tài),設(shè)計(jì)了一個(gè)指示燈,當(dāng)總線正常地收發(fā)信息時(shí),指示燈閃爍,一旦CAN總線關(guān)閉,節(jié)點(diǎn)不參與總線活動(dòng),指示燈不再閃爍(此時(shí)指示燈長(zhǎng)亮或長(zhǎng)滅),當(dāng)總線錯(cuò)誤不能通過(guò)復(fù)位該節(jié)點(diǎn)解決時(shí),可以通過(guò)查看指示燈的狀態(tài)(長(zhǎng)亮或長(zhǎng)滅),及時(shí)地對(duì)不工作的節(jié)點(diǎn)進(jìn)行修理維護(hù)。
結(jié)語(yǔ)
運(yùn)用CAN總線技術(shù)構(gòu)建智能配電系統(tǒng),提高了系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性,系統(tǒng)價(jià)格低廉,安裝維護(hù)簡(jiǎn)單,具有良好的升級(jí)、擴(kuò)展能力。該系統(tǒng)已經(jīng)成功地裝配到經(jīng)貿(mào)、股票交易行業(yè)的機(jī)房中,運(yùn)行可靠,實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。
參考文獻(xiàn)
1 饒運(yùn)濤.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.20~166
2 Philips Semiconductors, P8xC591, Single-chip 8-bit microcontroller with CAN controller, DATA SHEET, 2000
評(píng)論