基于微處理器與CAN的工業(yè)聯(lián)機控制系統(tǒng)
在編程時有一點要注意,PORTB口RB7-RB4端有電平變化時可以產(chǎn)生中斷,但只有當(dāng)I/O引腳設(shè)置為輸入狀態(tài)時才能發(fā)生中斷。芯片通過把RB7-RB4端口的輸入信號與上次讀入的鎖存值進(jìn)行比較,如不等,則二者異或后輸出,產(chǎn)生變化中斷,使標(biāo)志位RBIF為1??刂瓢宄绦蜻\行時,控制板的程序接收各塊電機板的狀態(tài),然后在控制板液晶上顯示電機臺數(shù)和水箱的水位狀態(tài)??刂瓢迨盏芥I盤和遙控器的命令,向總線發(fā)送信息。電機板接受總線信息,執(zhí)行控制板的命令動作。同時定期發(fā)送水位的狀態(tài)值給控制板。其中冷凍功能就是同時執(zhí)行沖洗功能和通風(fēng)功能。冷凍功能程序是電機板程序的子程序。每次冷凍結(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個以上的單元同時開始傳送報文,那么就會有總線訪問沖突。通過使用了識別符的逐位仲裁可以解決這個沖突。仲裁的機制確保了報文和時間均不損失。當(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ù)傳輸效率降低;實時性差,錯誤處理能力不強等。
評論