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