基于單片機(jī)和CAN控制器實現(xiàn)現(xiàn)場智能節(jié)點(diǎn)的設(shè)計
出處:微計算機(jī)信 發(fā)布于:2021-05-17 14:16:13
隨著控制、計算機(jī)、通信、網(wǎng)絡(luò)等技術(shù)的發(fā)展.傳統(tǒng)的控制系統(tǒng)己越來越不能滿足現(xiàn)代工業(yè)的要求。以信息技術(shù)為基礎(chǔ)的網(wǎng)絡(luò)集成自動化系統(tǒng)己經(jīng)成為當(dāng)今自動化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一,它的出現(xiàn)標(biāo)志著丁業(yè)控制領(lǐng)域又一個新時代的開始,并將對該領(lǐng)域的發(fā)展產(chǎn)生重要影響?,F(xiàn)場總線就是順應(yīng)這一形勢發(fā)展起來的新技術(shù)。本文研究設(shè)計了總線監(jiān)控系統(tǒng)中的現(xiàn)場智能節(jié)點(diǎn),智能節(jié)點(diǎn)通過執(zhí)行應(yīng)用軟件要實現(xiàn)兩項任務(wù):一是能夠與總線上的其它節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換,二是能夠按照通過網(wǎng)絡(luò)或鍵盤下達(dá)的控制命令驅(qū)動步進(jìn)電機(jī)按照要求動作。
2 現(xiàn)場智能節(jié)點(diǎn)的整體框架

圖1 智能節(jié)點(diǎn)主程序流程圖
對于CAN總線下的智能節(jié)點(diǎn),為了滿足及時指示步進(jìn)電機(jī)執(zhí)行運(yùn)動.實時接收和發(fā)送報文,及時處理用戶下達(dá)的控制指令等要求,程序采用的是順序執(zhí)行主程序和實時中斷程序相結(jié)合的方式。軟件設(shè)計分塊進(jìn)行,主要劃分為以下幾部分:CAN總線通信程序,顯示及鍵盤輸入程序,控制算法程序等。主程序流程如圖1所示。
3 CAN總線通信程序與LED顯示驅(qū)動
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ù)位請求來實現(xiàn)。系統(tǒng)上電后,CAN控制器在引腳上獲的一個復(fù)位脈沖,似的進(jìn)入復(fù)位模式。在開始對SJA1000各個配置寄存器進(jìn)行設(shè)定之前。主控制器通過讀復(fù)位模式,請求標(biāo)識來檢測SJA1000是否進(jìn)入復(fù)位模式。因為單片機(jī)AT89C52的上電復(fù)位時問和SJA1000 的復(fù)位時間有偏差,單片機(jī)要等待SJA1000完成上電復(fù)位后才能對SJA1000配置寄存器進(jìn)行配置,存有配置信息的寄存器只能在復(fù)位模式下才可進(jìn)行寫入。
SJA1000初始化程序在復(fù)位模式下,需要配置下面的寄存器:時鐘分頻寄存器,接受代碼和接受掩碼寄存器,總線十續(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ī)則自動完成,主控制器必須把要發(fā)送的信息送到SJA1000的發(fā)送緩沖器中,并設(shè)置“發(fā)送請求標(biāo)識位”于命令寄存器中,發(fā)送過程既可南SJA1000產(chǎn)生的中斷請求來控制。也可通過檢測SJA1000控制部分的狀態(tài)標(biāo)識符來控制。
在本論文的設(shè)計中,當(dāng)系統(tǒng)初次上電或硬件復(fù)位后,節(jié)點(diǎn)模塊會主動向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總線上。因此,單個節(jié)點(diǎn)模塊向總線上發(fā)送數(shù)據(jù)的頻率不高,在編程時將發(fā)送數(shù)據(jù)根據(jù)通信協(xié)議寫入發(fā)送緩沖器中,通過置位控制命令寄存器的發(fā)送請求位,就可以將數(shù)據(jù)發(fā)送到CAN總線上。發(fā)送流程如圖3所示。
當(dāng)多個節(jié)點(diǎn)響應(yīng)CAN WEB SERVER的命令時,有可能產(chǎn)生同時向CAN總線上同一地址發(fā)送不同數(shù)據(jù),從而導(dǎo)致個別節(jié)點(diǎn)不斷累積發(fā)送錯誤而 終進(jìn)入總線關(guān)閉狀態(tài)這種錯誤的產(chǎn)生。為了避免這種錯誤的產(chǎn)生,基于CAN總線的特點(diǎn):任何節(jié)點(diǎn)均可向總線發(fā)送數(shù)據(jù),也可接收到總線數(shù)據(jù),在程序中設(shè)計了這樣的發(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ā)送了一個數(shù)據(jù)包,但同時義能夠被CAN WEB SERVER 接收到,因CAN總線上的節(jié)點(diǎn)地址都是 的,故能夠有效的避免前面所提到的錯誤。

圖3 CAN發(fā)送程序流程。
3.3 CAN接受程序
CAN控制器SJA1000根據(jù)規(guī)則自動接收消息,接受到的消息放到接收緩沖器,此時接收緩沖器狀態(tài)標(biāo)示RBS置為“1“,同時向A1r89c52產(chǎn)生一個接收中斷,AT89C52響應(yīng)中斷后將消息保存到程序設(shè)置的消息緩沖中,同時釋放接收緩沖器井對消息內(nèi)容做出反應(yīng)。中斷控制接收數(shù)據(jù)的流程如圖4所示。
3.4 LED數(shù)據(jù)顯示和鍵盤輸入程序
ZLG7289B內(nèi)部含有譯碼器,可直接接收BCD碼或16進(jìn)制碼,并同時具有2種譯碼方式,此外還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。
圖4 中斷控制接收數(shù)據(jù)流程
4 控制算法程序
通過運(yùn)行控制算法程序,使得智能節(jié)點(diǎn)能夠按照預(yù)定要求產(chǎn)生正確的動作??刂扑惴ǔ绦蛑饕啥糠纸M成:鍵盤功能控制.步進(jìn)電機(jī)運(yùn)動控制,總線命令響應(yīng)控制。
4.1 鍵盤功能控制
鍵盤功能控制程序依據(jù)AT89C52獲得的不同鍵值,控制智能節(jié)點(diǎn)完成諸如步進(jìn)電機(jī)運(yùn)動圈數(shù)、角度設(shè)定,步進(jìn)電機(jī)的啟停等多種功能。各鍵對應(yīng)的鍵盤功能見表1所示。
表1鍵盤功能
4.2步進(jìn)電機(jī)運(yùn)動控制
步進(jìn)電機(jī)運(yùn)動控制包括:速度控制,計數(shù)單位控制.計數(shù)控制,方向控制。在本論文設(shè)計中,步進(jìn)電機(jī)速度控制程序?qū)⒆兞俊癟imePerPulse”作為速度控制參數(shù),該變量與定時器1 (T1)和參數(shù)count Time相配合可實現(xiàn)步進(jìn)電機(jī)已不同的速度動作。其中T1為100us定時器,當(dāng)T1每計時100uS后產(chǎn)生一個中斷,使得Count Time加“1”,當(dāng)count Time=TimePerpulse時,AT89C52會通過端口發(fā)送一個脈沖控制步進(jìn)電機(jī)走一個步進(jìn)角,故步進(jìn)電機(jī)轉(zhuǎn)動一圈所需時間的計算公式為:
步進(jìn)電機(jī)轉(zhuǎn)動一圈所需時間=TimePerPulse*(細(xì)分?jǐn)?shù)*200)*100(us)
式中(細(xì)分?jǐn)?shù)*200)表示步進(jìn)電機(jī)轉(zhuǎn)動一圈所需要的全部脈沖數(shù)。
在本論文設(shè)計中.可以控制步進(jìn)電機(jī)以角度或圈數(shù)這兩種不同的計數(shù)單位控制步進(jìn)電機(jī)的運(yùn)動。當(dāng)處于角度計數(shù)時,因步進(jìn)電機(jī)的步進(jìn)角細(xì)分為1時是1.8°/脈沖,即1度角對應(yīng)的脈沖數(shù)不是整數(shù),所以需要紀(jì)錄以((1/360°)為單位的剩余脈沖計數(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é)所代表的含義,在程序中通過一個結(jié)構(gòu)加以說明。在程序中,首先根據(jù)參數(shù)判斷命令類型,并依據(jù)命令類型來解釋聯(lián)合體中的數(shù)據(jù)應(yīng)作為哪個命令的參數(shù)來進(jìn)行處理。
5 本文結(jié)論
由于CAN總線的高速通信速率、高可靠性、連接方便、多主站、通訊協(xié)議簡單和高性能價格比等突出優(yōu)點(diǎn),被公認(rèn)為幾種 有前途的總線之一。在本論文設(shè)計中.設(shè)計并實現(xiàn)了一個CAN總線測控系統(tǒng)中可控制現(xiàn)場設(shè)備的智能節(jié)點(diǎn)。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是C51數(shù)據(jù)類型擴(kuò)充定義2025/10/27 13:59:22
- 51單片機(jī)電平特性是什么2025/9/26 13:11:43
- 單片機(jī)檢測直流信號:常用電路全解析2025/8/21 15:49:26
- 探秘三極管在單片機(jī)中的關(guān)鍵作用2025/8/18 16:24:42
- 51單片機(jī)和52單片機(jī)有什么區(qū)別2025/8/8 16:52:42
- 交換機(jī)與路由器的區(qū)別?一文讀懂從工作原理到應(yīng)用場景
- 恩智浦?BMA6002/BMI6002 BMS通信網(wǎng)關(guān)傳輸協(xié)議鏈路收發(fā)器
- 基于安森美產(chǎn)品的氫電解器系統(tǒng)解決方案
- HOLTEK新推出BS67F360CA Touch A/D LCD MCU
- 電抗器,你真的用對了嗎?
- 否將 100V 以上的可用電壓直接轉(zhuǎn)換為更低的輸出電壓?
- 面實裝樹脂屏蔽型電感器: WCD5045MB/DS
- 薄膜、MLCC和陶瓷片式電容:EMI 安規(guī)電容器該選誰?一文講清楚!
- 西門子推出TessentIJTAGPro,加速復(fù)雜半導(dǎo)體設(shè)計與測試進(jìn)程
- 用大容量MLCC代替聚合物電容器,有哪些優(yōu)點(diǎn)









