基于微處理器與CAN的工業(yè)聯(lián)機(jī)控制系統(tǒng)
1 引言
CAN總線是目前流行的總線技術(shù)之一,是一種基于微控制器件的網(wǎng)絡(luò)。它用開放的,具有可互操作的網(wǎng)絡(luò)將現(xiàn)場各種控制器及儀表設(shè)備互連,構(gòu)成現(xiàn)場總線控制系統(tǒng),將控制功能徹底下放到現(xiàn)場,降低了安裝成本和維護(hù)費用。FCS實質(zhì)是一種開放的、具可互操作性的、徹底分散的分布式控制系統(tǒng)。CAN總線屬于工業(yè)現(xiàn)場總線的范疇是目前流行的現(xiàn)場總線控制系統(tǒng)之一。與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性,同時具備了現(xiàn)場總線優(yōu)點。本文提出一種基于CAN智能節(jié)點的設(shè)備聯(lián)機(jī)控制系統(tǒng)。
2 系統(tǒng)概述
本文設(shè)計的是一種基于工業(yè)設(shè)備控制系統(tǒng)的以CAN總線智能節(jié)點。節(jié)點分為控制節(jié)點、主機(jī)節(jié)點和從機(jī)節(jié)點三種,多個不同節(jié)點通過總線連接,形成多機(jī)聯(lián)控系統(tǒng)。系統(tǒng)雖然有三種不同功能的節(jié)點,每類節(jié)點采用相同的CAN節(jié)點結(jié)構(gòu)。
500)this.style.width=500;" border="0" />
圖1 CAN總線節(jié)點結(jié)構(gòu)示意圖
CAN總線節(jié)點可以歸納為三種構(gòu)成方式: 1) CAN控制器的單片機(jī)+CAN收發(fā)器;2) 帶有CAN控制器的單片機(jī)+CAN收發(fā)器;3)帶有CAN控制器的I/O端口+CAN收發(fā)器。系統(tǒng)結(jié)構(gòu)更為如圖1所示。本文選擇第一種方式連接方式,由于器件組合靈活,很容易實現(xiàn)高的性價比。
3 節(jié)點的硬件結(jié)構(gòu)設(shè)計
3.1 節(jié)點控制芯片選擇
本研究選用的是美國微芯Microchip Technology公司的PIC芯片(PIC16F873,28腳FLASH)和福州貝能公司的MPLAB開發(fā)工具。MPLAB開發(fā)系統(tǒng)是一種廉價的開發(fā)工具,集編程器與調(diào)試器為一體。它利用了PICI6F87X的在線調(diào)試能力和MICROCHIP的串行編程技術(shù)(In-Circuit Serial Programming)。它工作于MPLAB-IDE集成開發(fā)環(huán)境軟件包下,直接連接到應(yīng)用系統(tǒng)中去。PICI6F87X是MICIZOCHII)公司的中檔產(chǎn)品,繼承了MICROCI-III,的傳統(tǒng)特點,實用、低價、指令集少、低功耗。
PIC16F873開發(fā)裝置的不足之處有:系統(tǒng)只能設(shè)置一個斷點;運行系統(tǒng)程序后單步執(zhí)行速度慢;由于占用了芯片資源,I/0管腳RB3,RB7,RB6功能不正常,無法調(diào)試.另外程序調(diào)試時,應(yīng)注意編程電壓不能太低。
3.2 節(jié)點CAN通訊的硬件設(shè)計
在CAN中應(yīng)用的元器件主要包括CAN控制器和CAN收發(fā)器。本文選用的是獨立CAN控制器。PHILIPS公司的SJA1000管腳太多,占用過多的I/O口,MCP2510是目前市場上體積最小的CAIN控制器,通過SPI通訊方式與微處理器連接,連接端口少,所以系統(tǒng)選擇MCP2510作為CAN控制器。MCP2510只要跟MCU和驅(qū)動芯片(8X250 )就可以構(gòu)成一個簡易局域網(wǎng)的節(jié)點。MCP2510可以完全實現(xiàn)CAN2.0A和CAN2.0B協(xié)議。圖2為MCP2510芯片的內(nèi)部結(jié)構(gòu)圖。
500)this.style.width=500;" border="0" />
它的特點有:CAN總線的收發(fā)器大部分都是8腳DIP封裝,各公司的產(chǎn)品價格和性能類似,無太大的區(qū)別。PHILIP公司新推出的高速容錯CAN收發(fā)器TJA1050, TJA1040與早先推出的PCA82C250相比,價格大致相同,但其抗干擾性更強(qiáng),可防止電磁干擾。本文選用了PCA82C250CAN收發(fā)器。
3.3 控制節(jié)點設(shè)計
控制節(jié)點采用PIC16F873進(jìn)行控制和通訊控制板的結(jié)構(gòu)如圖??刂瓢逵梢韵码娐方M成:鍵盤輸入電路、IC卡控制電路、液晶顯示電路、無線信號接收電路、主控制電路、CAN通訊電路。圖3為控制節(jié)點結(jié)構(gòu)示意圖。
500)this.style.width=500;" border="0" />
1、鍵盤輸入電路采用74C922鍵盤編碼芯片。其輸出的有效端(DATA AVAILABLE)與I6F873的PORTB口的硬件中斷連接。其解碼輸出與分別接至PORTA, PORTB口。74C922芯片通過外部時鐘或者外部電容執(zhí)行鍵盤掃描,功耗小,寬范圍供電3V-15V。當(dāng)按鍵按下,數(shù)據(jù)有效端輸出高電平,否則為低電平。數(shù)據(jù)輸出端口在下一次按鍵之前保持前次按鍵解碼輸出的狀態(tài)。
2、IC卡控制電路??刂菩酒捎肐2C通訊方式與IC卡通訊。只有讀到卡內(nèi)的數(shù)據(jù)才能操作控制板,否則控制板只顯示當(dāng)前的時間,按鍵無效。通用存貯器1C卡是由通用存貯器芯片封裝而成的,由于它的結(jié)構(gòu)和功能簡單,生產(chǎn)成本低,使用方便,因此在各領(lǐng)域都得到了廣泛的應(yīng)用。目前用于IC卡的通用存貯器芯片多為E2PROM,其常用的協(xié)議主要有兩線串行連接協(xié)議(I2C)和三線串行鏈接協(xié)議。本文采用比較常用的ATMEL公司生產(chǎn)的AT24系列芯片EEPROM AT24C01,它具有1k的存貯容量,兩線串行I2C通訊方式,適用于2V~5V的低電壓/標(biāo)準(zhǔn)電壓的操作,具有低功耗和高可靠性等優(yōu)點。
3、LCD顯示是單片機(jī)控制產(chǎn)品中的典型應(yīng)用。目前有多種方法實現(xiàn)LCD液晶顯示控制:一種是單片機(jī)內(nèi)部直接集成了LCD驅(qū)動電路,這種方法一般在4位機(jī)中較常用,8位機(jī)則很少,成本也較高。另一種方法是使用LCD模塊,這種模塊中帶有LCD顯示屏和LCD驅(qū)動電路,用起來較方便,但成本偏高,不適合于大批量生產(chǎn)采用。本文采用的是單片機(jī)+LCD驅(qū)動器+LCD顯示屏的方式,可選用不同的單片機(jī),另外選用性價比很高的LCD驅(qū)動器HT1621。
4、本系統(tǒng)設(shè)計的無線信號接收電路采用MICRF002芯片。MICRF002芯片是超外差電路。美國Micrel公司推出的MICRF系列超外差電路靈敏度高和選擇性好。單片集成電路可完成接收及解調(diào)功能。Micrel 公司MICRF002為MICRF001的改進(jìn)型,與MICRF001相比,功耗更低,并具有電源關(guān)斷控制端。MICRF002性能穩(wěn)定,使用非常簡單。
5、主從機(jī)節(jié)點硬件電路相同(我們稱其為電機(jī)板),二者僅軟件設(shè)計不同而己。電機(jī)板由主控芯片PIC16F873,水位檢測電路、脈沖檢測電路、驅(qū)動電路組成。
4 節(jié)點軟件設(shè)計
系統(tǒng)軟件的設(shè)計分為以下幾個部分:CAN節(jié)點通訊程序、控制板程序(包括鍵盤輸入程序、無線接收程序、IC卡通訊程序、液晶界面控制程序)、電機(jī)板程序三個大部分??刂瓢迳系腎C芯片包含控制板程序和CAN通訊程序。電機(jī)板上的IC芯片存有CAN通訊程序和電機(jī)板程序。CAN節(jié)點要有效、實時地完成通訊任務(wù),CAN通訊軟件設(shè)計是關(guān)鍵。它包括初始化程序報文發(fā)送子程序,報文接收子程序和出錯處理子程序等。
控制板的主程序流程圖如圖4所示。系統(tǒng)設(shè)計要求只有插入IC卡后,才可以通過鍵盤或遙控器來控制系統(tǒng)。鍵盤處理子程序和無線接收子程序都是采用中斷方式執(zhí)行,且任何時刻二者只能有一個被執(zhí)行。鍵盤處理子程序的中斷是外部INT中斷,無線接收子程序采用的是PORTB 口的RB6端。
500)this.style.width=500;" border="0" />
在編程時有一點要注意,PORTB口RB7-RB4端有電平變化時可以產(chǎn)生中斷,但只有當(dāng)I/O引腳設(shè)置為輸入狀態(tài)時才能發(fā)生中斷。芯片通過把RB7-RB4端口的輸入信號與上次讀入的鎖存值進(jìn)行比較,如不等,則二者異或后輸出,產(chǎn)生變化中斷,使標(biāo)志位RBIF為1。控制板程序運行時,控制板的程序接收各塊電機(jī)板的狀態(tài),然后在控制板液晶上顯示電機(jī)臺數(shù)和水箱的水位狀態(tài)??刂瓢迨盏芥I盤和遙控器的命令,向總線發(fā)送信息。電機(jī)板接受總線信息,執(zhí)行控制板的命令動作。同時定期發(fā)送水位的狀態(tài)值給控制板。其中冷凍功能就是同時執(zhí)行沖洗功能和通風(fēng)功能。冷凍功能程序是電機(jī)板程序的子程序。每次冷凍結(jié)束后必須執(zhí)行清洗,保持過濾網(wǎng)清潔。
CAN控制器MCP2510與控制芯片PIC16F873采用SPI通訊方式。PIC微控制器工作于主模式下,可實現(xiàn)完全SPI功能。數(shù)據(jù)的收發(fā)采用軟件緩沖區(qū)。發(fā)送數(shù)據(jù)時,軟件緩沖區(qū)裝入所發(fā)數(shù)據(jù),同時發(fā)出SPI中斷。CAN總線廢除了站地址編碼,對通訊數(shù)據(jù)進(jìn)行編碼。數(shù)據(jù)的編碼通過幀ID號來識別??梢酝ㄟ^編碼開關(guān)設(shè)定數(shù)據(jù)ID號??偩€仲裁指如果2個或2個以上的單元同時開始傳送報文,那么就會有總線訪問沖突。通過使用了識別符的逐位仲裁可以解決這個沖突。仲裁的機(jī)制確保了報文和時間均不損失。當(dāng)具有相同識別符的數(shù)據(jù)幀和遠(yuǎn)程幀同時初始化時,數(shù)據(jù)幀優(yōu)先于遠(yuǎn)程幀。仲裁期間,每一個發(fā)送器都對發(fā)送位的電平與被監(jiān)控的總線電平進(jìn)行比較。
本文作者創(chuàng)新點
本文構(gòu)建了基于工業(yè)設(shè)備控制系統(tǒng)的CAN總線節(jié)點,按照功能的不同,設(shè)計三種不同功能的節(jié)點。設(shè)計了不同節(jié)點的硬件結(jié)構(gòu)。采用PIC的匯編程序,實現(xiàn)了基本CAN通訊的方式和不同節(jié)點的功能要求。本文設(shè)計的CAN總線節(jié)點解決了在傳統(tǒng)的工業(yè)通訊控制方式485總線中的一些弊端,如無法構(gòu)成多主結(jié)構(gòu),主節(jié)點任務(wù)繁忙,主節(jié)點故障可能引起系統(tǒng)癱瘓,數(shù)據(jù)傳輸效率降低;實時性差,錯誤處理能力不強(qiáng)等。