1 引言
隨著控制、計(jì)算機(jī)、通信、網(wǎng)絡(luò)等技術(shù)的發(fā)展.傳統(tǒng)的控制系統(tǒng)己越來越不能滿足現(xiàn)代工業(yè)的要求。以信息技術(shù)為基礎(chǔ)的網(wǎng)絡(luò)集成自動(dòng)化系統(tǒng)己經(jīng)成為當(dāng)今自動(dòng)化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一,它的出現(xiàn)標(biāo)志著丁業(yè)控制領(lǐng)域又一個(gè)新時(shí)代的開始,并將對該領(lǐng)域的發(fā)展產(chǎn)生重要影響。現(xiàn)場總線就是順應(yīng)這一形勢發(fā)展起來的新技術(shù)。本文研究設(shè)計(jì)了總線監(jiān)控系統(tǒng)中的現(xiàn)場智能節(jié)點(diǎn),智能節(jié)點(diǎn)通過執(zhí)行應(yīng)用軟件要實(shí)現(xiàn)兩項(xiàng)任務(wù):一是能夠與總線上的其它節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換,二是能夠按照通過網(wǎng)絡(luò)或鍵盤下達(dá)的控制命令驅(qū)動(dòng)步進(jìn)電機(jī)按照要求動(dòng)作。
2 現(xiàn)場智能節(jié)點(diǎn)的整體框架
圖1 智能節(jié)點(diǎn)主程序流程圖
對于CAN總線下的智能節(jié)點(diǎn),為了滿足及時(shí)指示步進(jìn)電機(jī)執(zhí)行運(yùn)動(dòng).實(shí)時(shí)接收和發(fā)送報(bào)文,及時(shí)處理用戶下達(dá)的控制指令等要求,程序采用的是順序執(zhí)行主程序和實(shí)時(shí)中斷程序相結(jié)合的方式。軟件設(shè)計(jì)分塊進(jìn)行,主要?jiǎng)澐譃橐韵聨撞糠郑篊AN總線通信程序,顯示及鍵盤輸入程序,控制算法程序等。主程序流程如圖1所示。
3 CAN總線通信程序與LED顯示驅(qū)動(dòng)
CAN總線通信程序是指在AT89C52控制下,模塊將采集到的數(shù)據(jù)發(fā)送到總線上供CAN WEB SERVER或其他智能節(jié)點(diǎn)使用,或是接收由CAN WEB SERVER傳送的由監(jiān)控PC下達(dá)的控制指令。該部分軟件的程序流程如圖2所示,在通電或者復(fù)位后,主控制器首先對SJA 1000控制器進(jìn)行初始化,建立CAN總線通信。CAN總線通信程序由三部分組成:SJA1000初始化,接受和發(fā)送。
圖2 CAN通信程序流程圖
3.1 SJA1000初始化
初始化是在程序運(yùn)行前對SJA1000的丁作方式進(jìn)行設(shè)定, 使其能夠按照用戶需要的方式進(jìn)行CAN總線通信工作。
SJA1000 CAN控制器在通電后或硬件復(fù)位后,必須通過初始化設(shè)置以建立CAN通信。而且,SJA1000可以在主控制器工作期問被再次初始化,這可以通過發(fā)送軟件復(fù)位請求來實(shí)現(xiàn)。系統(tǒng)上電后,CAN控制器在引腳上獲的一個(gè)復(fù)位脈沖,似的進(jìn)入復(fù)位模式。在開始對SJA1000各個(gè)配置寄存器進(jìn)行設(shè)定之前。主控制器通過讀復(fù)位模式,請求標(biāo)識來檢測SJA1000是否進(jìn)入復(fù)位模式。因?yàn)?a target="_blank">單片機(jī)AT89C52的上電復(fù)位時(shí)問和SJA1000 的復(fù)位時(shí)間有偏差,單片機(jī)要等待SJA1000完成上電復(fù)位后才能對SJA1000配置寄存器進(jìn)行配置,存有配置信息的寄存器只能在復(fù)位模式下才可進(jìn)行寫入。
SJA1000初始化程序在復(fù)位模式下,需要配置下面的寄存器:時(shí)鐘分頻寄存器,接受代碼和接受掩碼寄存器,總線十續(xù)寄存器,輸出控制寄存器。在這些配置信息配置到SJA1000寄存器后,通過消除復(fù)位請求模式使SJA1000進(jìn)入操作模式。
3.2 CAN發(fā)送程序
對SJA1000進(jìn)行初始化建立CAN總線通信后,模塊就可以通過CAN總線發(fā)送和接受CAN數(shù)據(jù)包。消息的發(fā)送由CAN控制器SJA1000根據(jù)CAN的規(guī)則自動(dòng)完成,主控制器必須把要發(fā)送的信息送到SJA1000的發(fā)送緩沖器中,并設(shè)置“發(fā)送請求標(biāo)識位”于命令寄存器中,發(fā)送過程既可南SJA1000產(chǎn)生的中斷請求來控制。也可通過檢測SJA1000控制部分的狀態(tài)標(biāo)識符來控制。
在本論文的設(shè)計(jì)中,當(dāng)系統(tǒng)初次上電或硬件復(fù)位后,節(jié)點(diǎn)模塊會主動(dòng)向CAN WEB SERVER發(fā)送節(jié)點(diǎn)的狀態(tài)信息,在以后的CAN通信中.則采用只有接收到CAN WEB sERVER的控制命令后,節(jié)點(diǎn)模塊才會將節(jié)點(diǎn)數(shù)據(jù)作為響應(yīng)發(fā)送到CAN總線上。因此,單個(gè)節(jié)點(diǎn)模塊向總線上發(fā)送數(shù)據(jù)的頻率不高,在編程時(shí)將發(fā)送數(shù)據(jù)根據(jù)通信協(xié)議寫入發(fā)送緩沖器中,通過置位控制命令寄存器的發(fā)送請求位,就可以將數(shù)據(jù)發(fā)送到CAN總線上。發(fā)送流程如圖3所示。
當(dāng)多個(gè)節(jié)點(diǎn)響應(yīng)CAN WEB SERVER的命令時(shí),有可能產(chǎn)生同時(shí)向CAN總線上同一地址發(fā)送不同數(shù)據(jù),從而導(dǎo)致個(gè)別節(jié)點(diǎn)不斷累積發(fā)送錯(cuò)誤而最終進(jìn)入總線關(guān)閉狀態(tài)這種錯(cuò)誤的產(chǎn)生。為了避免這種錯(cuò)誤的產(chǎn)生,基于CAN總線的特點(diǎn):任何節(jié)點(diǎn)均可向總線發(fā)送數(shù)據(jù),也可接收到總線數(shù)據(jù),在程序中設(shè)計(jì)了這樣的發(fā)送策略:將CAN WEB SERVER的接收掩碼寄存器設(shè)置為全“1”,即可以接受總線上的全部數(shù)據(jù),節(jié)點(diǎn)模塊的待發(fā)送數(shù)據(jù)包的標(biāo)識符由本節(jié)點(diǎn)的地址信息構(gòu)成,即節(jié)點(diǎn)通過總線向自己發(fā)送了一個(gè)數(shù)據(jù)包,但同時(shí)義能夠被CAN WEB SERVER 接收到,因CAN總線上的節(jié)點(diǎn)地址都是唯一的,故能夠有效的避免前面所提到的錯(cuò)誤。
圖3 CAN發(fā)送程序流程。
3.3 CAN接受程序
CAN控制器SJA1000根據(jù)規(guī)則自動(dòng)接收消息,接受到的消息放到接收緩沖器,此時(shí)接收緩沖器狀態(tài)標(biāo)示RBS置為“1“,同時(shí)向A1r89c52產(chǎn)生一個(gè)接收中斷,AT89C52響應(yīng)中斷后將消息保存到程序設(shè)置的消息緩沖中,同時(shí)釋放接收緩沖器井對消息內(nèi)容做出反應(yīng)。中斷控制接收數(shù)據(jù)的流程如圖4所示。
3.4 LED數(shù)據(jù)顯示和鍵盤輸入程序
ZLG7289B內(nèi)部含有譯碼器,可直接接收BCD碼或16進(jìn)制碼,并同時(shí)具有2種譯碼方式,此外還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。
圖4 中斷控制接收數(shù)據(jù)流程
4 控制算法程序
通過運(yùn)行控制算法程序,使得智能節(jié)點(diǎn)能夠按照預(yù)定要求產(chǎn)生正確的動(dòng)作??刂扑惴ǔ绦蛑饕啥糠纸M成:鍵盤功能控制.步進(jìn)電機(jī)運(yùn)動(dòng)控制,總線命令響應(yīng)控制。
4.1 鍵盤功能控制
鍵盤功能控制程序依據(jù)AT89C52獲得的不同鍵值,控制智能節(jié)點(diǎn)完成諸如步進(jìn)電機(jī)運(yùn)動(dòng)圈數(shù)、角度設(shè)定,步進(jìn)電機(jī)的啟停等多種功能。各鍵對應(yīng)的鍵盤功能見表1所示。
表1鍵盤功能
4.2步進(jìn)電機(jī)運(yùn)動(dòng)控制
步進(jìn)電機(jī)運(yùn)動(dòng)控制包括:速度控制,計(jì)數(shù)單位控制.計(jì)數(shù)控制,方向控制。在本論文設(shè)計(jì)中,步進(jìn)電機(jī)速度控制程序?qū)⒆兞俊?a href="http://www.xsypw.cn/tags/ti/" target="_blank">TimePerPulse”作為速度控制參數(shù),該變量與定時(shí)器1 (T1)和參數(shù)count Time相配合可實(shí)現(xiàn)步進(jìn)電機(jī)已不同的速度動(dòng)作。其中T1為100us定時(shí)器,當(dāng)T1每計(jì)時(shí)100uS后產(chǎn)生一個(gè)中斷,使得Count Time加“1”,當(dāng)count Time=TimePerpulse時(shí),AT89C52會通過端口發(fā)送一個(gè)脈沖控制步進(jìn)電機(jī)走一個(gè)步進(jìn)角,故步進(jìn)電機(jī)轉(zhuǎn)動(dòng)一圈所需時(shí)間的計(jì)算公式為:
步進(jìn)電機(jī)轉(zhuǎn)動(dòng)一圈所需時(shí)間=TimePerPulse*(細(xì)分?jǐn)?shù)*200)*100(us)
式中(細(xì)分?jǐn)?shù)*200)表示步進(jìn)電機(jī)轉(zhuǎn)動(dòng)一圈所需要的全部脈沖數(shù)。
在本論文設(shè)計(jì)中.可以控制步進(jìn)電機(jī)以角度或圈數(shù)這兩種不同的計(jì)數(shù)單位控制步進(jìn)電機(jī)的運(yùn)動(dòng)。當(dāng)處于角度計(jì)數(shù)時(shí),因步進(jìn)電機(jī)的步進(jìn)角細(xì)分為1時(shí)是1.8°/脈沖,即1度角對應(yīng)的脈沖數(shù)不是整數(shù),所以需要紀(jì)錄以((1/360°)為單位的剩余脈沖計(jì)數(shù),以避免累積誤差。
4.3總線命令響應(yīng)控制
當(dāng)智能節(jié)點(diǎn)接收到總線數(shù)據(jù)后,需要對接收到的數(shù)據(jù)加以分析,以判斷總線命令的類型.從而轉(zhuǎn)入與該命令相對應(yīng)的控制程序段中進(jìn)行相關(guān)操作。接收數(shù)據(jù)各字節(jié)所代表的含義,在程序中通過一個(gè)結(jié)構(gòu)加以說明。在程序中,首先根據(jù)參數(shù)判斷命令類型,并依據(jù)命令類型來解釋聯(lián)合體中的數(shù)據(jù)應(yīng)作為哪個(gè)命令的參數(shù)來進(jìn)行處理。
5 本文結(jié)論
由于CAN總線的高速通信速率、高可靠性、連接方便、多主站、通訊協(xié)議簡單和高性能價(jià)格比等突出優(yōu)點(diǎn),被公認(rèn)為幾種最有前途的總線之一。在本論文設(shè)計(jì)中.設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)CAN總線測控系統(tǒng)中可控制現(xiàn)場設(shè)備的智能節(jié)點(diǎn)。
-
節(jié)點(diǎn)
+關(guān)注
關(guān)注
0文章
220瀏覽量
24470 -
監(jiān)控系統(tǒng)
+關(guān)注
關(guān)注
21文章
3939瀏覽量
175916 -
總線
+關(guān)注
關(guān)注
10文章
2898瀏覽量
88237
發(fā)布評論請先 登錄
相關(guān)推薦
評論