1 引言
要保證汽車在立體車庫(kù)中的安全運(yùn)行,除了對(duì)設(shè)備及其控制的高要求外,還必須對(duì)車庫(kù)中的各種信號(hào)(各種傳感器設(shè)備)定時(shí)定點(diǎn)檢測(cè)及維修。目前對(duì)這些信號(hào)的檢測(cè)主要由微機(jī)監(jiān)測(cè)系統(tǒng)完成。它可在信號(hào)主體設(shè)備運(yùn)行中自動(dòng)跟蹤和采集有用信息,為管理人員和維修人員了解設(shè)備當(dāng)前的運(yùn)行狀態(tài),及時(shí)采取措施,減少故障的發(fā)生。但信號(hào)過(guò)多也存在一些缺點(diǎn):
(1) 傳感器的引線多。傳感器采用二線制的信號(hào)傳輸方式,每只傳感器要2根引線。在大型庫(kù)的系統(tǒng)中,往往有幾百只到幾千只傳感器,需要的引線的根數(shù)是傳感器的2倍,如此多的引線將給安裝時(shí)的布線和日后維護(hù)帶來(lái)困難。
(2) 傳感器的位置往往與控制器較遠(yuǎn),模擬信號(hào)的長(zhǎng)線傳輸會(huì)帶來(lái)干擾。
(3) 目前通信主控模塊與上位機(jī)間的通信采用RS-232串行通信,其通信速率低,通信距離短,抗干擾能力較弱。
(4) 從現(xiàn)場(chǎng)來(lái)的信號(hào)要經(jīng)過(guò)唯一的微機(jī)進(jìn)行分析,然后再返回到現(xiàn)場(chǎng)設(shè)備,不支持競(jìng)爭(zhēng)。
現(xiàn)場(chǎng)總線技術(shù)加實(shí)現(xiàn)現(xiàn)場(chǎng)設(shè)備與上位機(jī)之間的數(shù)字連接和現(xiàn)場(chǎng)設(shè)備的智能化,可克服上述一般微機(jī)監(jiān)測(cè)系統(tǒng)中的缺點(diǎn)和不足。現(xiàn)場(chǎng)總線有很多種,筆者選用CAN總線,它是當(dāng)今最為流行、使用較多的現(xiàn)場(chǎng)總線之一。它以其高性能、高可靠性以及靈活的設(shè)計(jì)受到人們的關(guān)注,并得到廣泛應(yīng)用。本文以CAN現(xiàn)場(chǎng)總線為基礎(chǔ),研究它在立體車庫(kù)系統(tǒng)中的應(yīng)用。
2 CAN總線在立體車庫(kù)中使用的特點(diǎn)
CAN總線最初是由德國(guó)BOSCH公司為解決汽車監(jiān)控系統(tǒng)中的諸多復(fù)雜技術(shù)和難題而設(shè)計(jì)的數(shù)字信號(hào)通信協(xié)議,它屬于總線式串行通信網(wǎng)絡(luò)。由于采用了許多新技術(shù)和獨(dú)特的設(shè)計(jì)思想,與同類產(chǎn)品相比,CAN總線在數(shù)據(jù)通信方面具有可靠、實(shí)時(shí)和靈活的優(yōu)點(diǎn)。
為使設(shè)計(jì)透明和執(zhí)行靈活,遵循ISO/OSI標(biāo)準(zhǔn)模型,CAN總線結(jié)構(gòu)劃分為兩層:物理層和數(shù)據(jù)鏈路層(包括邏輯鏈路控制子層LLC和媒體訪問(wèn)控制子層MAC)。其中,LLC子層為數(shù)據(jù)傳遞和遠(yuǎn)程數(shù)據(jù)請(qǐng)求提供服務(wù);MAC子層的功能主要是傳送規(guī)則,即控制幀結(jié)構(gòu)、執(zhí)行仲裁、錯(cuò)誤檢驗(yàn)、出錯(cuò)標(biāo)定和故障界定。
CAN總線在立體車庫(kù)中應(yīng)用的主要特點(diǎn)有:
(1) CAN可以多主方式工作,網(wǎng)絡(luò)上任意一個(gè)節(jié)點(diǎn)均可以在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息,而不分主從,通信方式靈活。
(2) CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)可分成不同的優(yōu)先級(jí),可以滿足不同立體車庫(kù)中的實(shí)時(shí)要求。
(3) CAN采用非破壞性總線裁決技術(shù),當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)上傳送信息時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級(jí)高的節(jié)點(diǎn)可不受影響地繼續(xù)傳輸數(shù)據(jù),大大節(jié)省了總線沖突裁決時(shí)間;最重要的是在立體車庫(kù)網(wǎng)絡(luò)負(fù)載很重的情況下,也不會(huì)出現(xiàn)網(wǎng)絡(luò)癱瘓的情況,可靠性高。
(4) CAN可以點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)及全局廣播幾種傳送方式接收數(shù)據(jù)。
(5) CAN的直接通信距離最遠(yuǎn)可達(dá)10km(速率5KB/s以下)。CAN的通信速率最高可達(dá)1MB/s(此時(shí)距離最長(zhǎng)40m)。特別適于立體車庫(kù)。
(6) CAN上的節(jié)點(diǎn)數(shù)實(shí)際可達(dá)110個(gè)。可滿足立體車庫(kù)節(jié)點(diǎn)多的要求。
(7) CAN采用短幀結(jié)構(gòu)。立體停車設(shè)備屬于國(guó)家特種設(shè)備,對(duì)安全要求非常嚴(yán)格,采用短幀結(jié)構(gòu)可滿足其安全要求。因?yàn)槎處Y(jié)構(gòu)的每一幀有效字節(jié)數(shù)為8個(gè),傳輸時(shí)間短,受干擾的概率低,且具有極好的檢錯(cuò)效果。每幀信息都有CRC校驗(yàn)及其他檢錯(cuò)措施,數(shù)據(jù)出錯(cuò)率極低。
(8) 通信介質(zhì)采用廉價(jià)的雙絞線,無(wú)特殊要求,成本較低,便于在立體車庫(kù)中推廣。
(9) CAN節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下,具有自動(dòng)關(guān)閉總線的功能,切斷它與總線的聯(lián)系,以使總線上的其他操作不受影響。立體車庫(kù)往往由不同組別的設(shè)備組成,當(dāng)一組設(shè)備有故障時(shí),可切斷它與總線的聯(lián)系,不會(huì)影響其他設(shè)備正常運(yùn)行。
(10) NRZ編碼/解碼方式,并采用位填充技術(shù)。
為了保證車輛在立體車庫(kù)中的安全、正常放置,需要大量的傳感器,網(wǎng)絡(luò)上需要傳遞不同的信號(hào),因而難免會(huì)發(fā)生搶占總線的情況,而CAN總線特有的多主方式和非破壞性總線仲裁技術(shù)能夠克服這種情況,使通信方式更加靈活,并且節(jié)省了總線沖突裁決時(shí)間,保證了網(wǎng)絡(luò)的運(yùn)行質(zhì)量。因而在立體車庫(kù)中選擇CAN總線作為現(xiàn)場(chǎng)級(jí)的網(wǎng)絡(luò)是適宜的。
3 CAN總線在立體車庫(kù)中的應(yīng)用
3.1 微機(jī)監(jiān)控系統(tǒng)總體設(shè)計(jì)
筆者在立體車庫(kù)CAN總線系統(tǒng)的設(shè)計(jì)中采用了上位機(jī)和節(jié)點(diǎn)的方式,上位機(jī)和節(jié)點(diǎn)之間采用CAN總線進(jìn)行通信,由于CAN具有的多主方式,使得整個(gè)系統(tǒng)中的各個(gè)模塊都可以互相通信。但在本系統(tǒng)中,通信主要集中在上位機(jī)與節(jié)點(diǎn)之間,節(jié)點(diǎn)與節(jié)點(diǎn)之間暫不進(jìn)行通信。本系統(tǒng)中的上位機(jī)由一臺(tái)計(jì)算機(jī)和一塊CAN卡組成,主要負(fù)責(zé)監(jiān)控各節(jié)點(diǎn)的狀態(tài)和發(fā)出控制命令;而各節(jié)點(diǎn)由單片機(jī)+CAN控制器及其它外圍電路組成,主要負(fù)責(zé)接收上位機(jī)發(fā)送的命令并執(zhí)行,同時(shí)返回一些狀態(tài)信息。圖1為本立體車庫(kù)系統(tǒng)總體結(jié)構(gòu)示意圖。
圖1 系統(tǒng)總體結(jié)構(gòu)示意圖
本系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用總線式結(jié)構(gòu),其特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、成本低,并且采用無(wú)源抽頭連接,系統(tǒng)可靠性高。選用CAN總線連接各個(gè)網(wǎng)絡(luò)控制節(jié)點(diǎn),形成多主機(jī)控制器局域網(wǎng)。信息的傳輸采用CAN通信協(xié)議,傳輸介質(zhì)選用普通雙絞線。為了提高系統(tǒng)的抗干擾能力,在控制器和傳輸介質(zhì)之間進(jìn)行光電隔離等。
系統(tǒng)的工作過(guò)程如下:CAN適配卡上電復(fù)位和初始化后,等待PC機(jī)的命令和數(shù)據(jù),當(dāng)PC機(jī)發(fā)出命令和數(shù)據(jù)時(shí),通過(guò)觸發(fā)中斷通知CAN適配卡。CAN適配卡上的微處理器分析命令并完成數(shù)據(jù)的發(fā)送和接收處理。當(dāng)CAN適配卡完成一次通信后,通過(guò)中斷通知PC機(jī),PC機(jī)從雙端口RAM中取出數(shù)據(jù)進(jìn)一步處理。
3.2 系統(tǒng)硬件設(shè)計(jì)
由圖1系統(tǒng)總體結(jié)構(gòu)可知,系統(tǒng)硬件主要包括上位機(jī)、CAN總線和數(shù)據(jù)采集節(jié)點(diǎn)三大部分組成。
本系統(tǒng)上位計(jì)算機(jī)選擇PC機(jī),其優(yōu)點(diǎn)是:PC機(jī)上面有多條擴(kuò)展槽,利用局域網(wǎng)絡(luò)通信適配卡,使得該系統(tǒng)很容易與其他生產(chǎn)管理部門(mén)聯(lián)網(wǎng),便于統(tǒng)一調(diào)度和管理。選用PC機(jī),還可以充分利用先用軟件工具和開(kāi)發(fā)環(huán)境,方便快捷的設(shè)計(jì)功能豐富的應(yīng)用軟件。
由于上位機(jī)負(fù)責(zé)整個(gè)系統(tǒng)的控制與調(diào)度,工作任務(wù)較重,因此采用PC+CAN總線適配卡的方案。CAN總線通信接口適配卡選擇PCI-5110智能CAN接口卡,其結(jié)構(gòu)如圖2所示。由圖2可見(jiàn),CAN通信卡是以微控制器為核心,外加CAN控制器電路、雙端口RAM電路、中斷電路、復(fù)位電路和隔離電路構(gòu)成的。PCI-5110接口卡上集成8KB高速雙端口存儲(chǔ)器,可有效提高數(shù)據(jù)吞吐率,適合用于立體車庫(kù)需要進(jìn)行大量數(shù)據(jù)傳輸?shù)腃AN通訊應(yīng)用場(chǎng)合;硬件采用中斷接收方式,可最大限度地減輕PC負(fù)荷;對(duì)PC的硬件、軟件環(huán)境要求并不嚴(yán)格。
圖2 CAN總線通信接口適配卡結(jié)構(gòu)圖
數(shù)據(jù)采集節(jié)點(diǎn)是本系統(tǒng)中的重要部分,它的作用有兩個(gè)方面:一是在上位機(jī)不存在或沒(méi)有啟動(dòng)的情況下能獨(dú)立指揮系統(tǒng)工作;二是能夠接收上位機(jī)發(fā)來(lái)的命令,并且執(zhí)行,同時(shí)還要作多點(diǎn)監(jiān)控和狀態(tài)報(bào)告。節(jié)點(diǎn)結(jié)構(gòu)如圖3所示。
圖3 數(shù)據(jù)采集節(jié)點(diǎn)結(jié)構(gòu)圖
它的核心部分是單片機(jī)和CAN總線控制器。在這里CAN總線控制器選用了與上位機(jī)相同的設(shè)計(jì):采用PHILIPS公司的SJA1000 CAN控制器+PCA 82C250 CAN收發(fā)器組成。SJA1000 CAN控制器是PHILIPS公司新推出的CAN控制器芯片,它可以完成CAN協(xié)議所規(guī)定的物理層和數(shù)據(jù)鏈路層的所有功能,具有完成高性能通信協(xié)議所要求的全部特性。PCA 82C250是CAN控制器SJA1000與CAN物理總線的接口器件,它提供對(duì)總線的差動(dòng)發(fā)送能力和對(duì)CAN控制器的差動(dòng)接收能力。
而單片機(jī),筆者選用了ATMEL公司的ATMEL 89C51單片機(jī)。
EEPROM可用于存儲(chǔ)系統(tǒng)的初始化參數(shù)或者用戶自定義數(shù)據(jù)。
EPROM用來(lái)存放程序,它也是不同設(shè)備控制器的差異所在。
RAM用來(lái)存放微處理器在運(yùn)算、測(cè)量、控制時(shí)的有關(guān)數(shù)據(jù)。
在系統(tǒng)設(shè)計(jì)中要注意到兩點(diǎn):
(1) 總線兩端要接上120Ω的匹配電阻,以提高整個(gè)系統(tǒng)通信的可靠性和抗干擾能力。
(2) 系統(tǒng)中的單片機(jī)時(shí)鐘由SJA1000提供(將SJA1000的時(shí)鐘信號(hào)分頻得到),以便于兩者之間同步。
3.3 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)上位機(jī)監(jiān)控及人機(jī)接口界面程序是在WINDOWS 98平臺(tái)上采用組態(tài)軟件iFIX編寫(xiě)的,它加快了開(kāi)發(fā)速度,改善了人機(jī)界面。iFIX與常用的組態(tài)軟件相比最大的優(yōu)勢(shì)在于它有強(qiáng)大的控制功能,這一點(diǎn)恰好滿足本系統(tǒng)的要求。值得一提的是iFIX內(nèi)嵌的VBA功能,VBA是Intellution Dynamics完全內(nèi)置的一個(gè)強(qiáng)有力的編輯工具,可以快速方便的生成自動(dòng)的操作任務(wù)和自動(dòng)化解決方案。
CAN總線智能節(jié)點(diǎn)的軟件設(shè)計(jì)主要包括三大部分:CAN節(jié)點(diǎn)初始化、報(bào)文發(fā)送和報(bào)文接受。
SJA1000的初始化只有在復(fù)位模式下才可以進(jìn)行,初始化主要包括工作方式的設(shè)置、接受濾波方式的設(shè)置、接受屏蔽寄存器(AMR)和接收代碼寄存器(ACR)的設(shè)置、波特率參數(shù)設(shè)置和中斷允許寄存器(IER)的設(shè)置等。在完成SJA1000的初始化設(shè)置以后,SJA1000就可以回到工作狀態(tài),進(jìn)行正常的通信任務(wù)。
發(fā)送子程序負(fù)責(zé)節(jié)點(diǎn)報(bào)文的發(fā)送。發(fā)送時(shí)用戶只需將待發(fā)送的數(shù)據(jù)按特定格式組合成一幀報(bào)文,送入SJA1000發(fā)送緩沖區(qū)中,然后啟動(dòng)SJA1000發(fā)送即可。
接收子程序負(fù)責(zé)節(jié)點(diǎn)報(bào)文的接收以及其他情況的處理。接收子程序比發(fā)送子程序要負(fù)責(zé)一些,因?yàn)樵谔幚斫邮請(qǐng)?bào)文的過(guò)程中,同時(shí)要對(duì)諸如總線關(guān)閉、錯(cuò)誤報(bào)警、接收溢出等情況進(jìn)行處理。SJA1000報(bào)文的接收主要有兩種方式:中斷接收方式和查詢接收方式,考慮到本系統(tǒng)對(duì)通信的實(shí)時(shí)性要求不是很強(qiáng),采用了查詢接收方式。
4 總結(jié)
基于CAN控制器的應(yīng)用系統(tǒng),由于其效率高,抗干擾能力強(qiáng),傳輸距離長(zhǎng),成本較低,以及它特有的多主方式,特別適合在中小型立體車庫(kù)的分布式控制系統(tǒng)中使用。CAN總線的應(yīng)用在我國(guó)立體車庫(kù)中才剛剛開(kāi)始,相信不久以后,CAN總線的使用會(huì)越來(lái)越多,它必將會(huì)成為現(xiàn)場(chǎng)總線的主流應(yīng)用。