技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 一種基于MODBUS的嵌入式人機(jī)界面的設(shè)計(jì)與實(shí)現(xiàn)

一種基于MODBUS的嵌入式人機(jī)界面的設(shè)計(jì)與實(shí)現(xiàn)

時(shí)間:2006-12-19 15:32:00來源:jiangf

導(dǎo)語:?文章介紹了硬件設(shè)計(jì)電路和軟件的設(shè)計(jì)過程及一種好用和簡(jiǎn)單的MOOBUS從設(shè)備調(diào)試工具—Modbus slave。
一、設(shè)計(jì)概要 現(xiàn)場(chǎng)總線是一種用于底層工業(yè)控制和測(cè)量?jī)x表之間的總線,人機(jī)界面設(shè)備就是作為現(xiàn)場(chǎng)總線中,控制器和操作者之間的“通信員”它可以完成現(xiàn)場(chǎng)控制器與操作者之間數(shù)據(jù)的接收和發(fā)送。本設(shè)計(jì)使用Atmel單片機(jī)89C52作為主要控制芯片,用以東芝丁6963C為控制芯片的128*64液晶比O作為顯示界面,采用工業(yè)標(biāo)準(zhǔn)通信協(xié)議MOOBUS作為數(shù)據(jù)信息交互的介質(zhì),主要功能是完成對(duì)工業(yè)網(wǎng)絡(luò)中現(xiàn)場(chǎng)控制器數(shù)據(jù)的采集顯示,根據(jù)需要設(shè)定數(shù)據(jù)并發(fā)送到現(xiàn)場(chǎng)控制器完成控制任務(wù),實(shí)現(xiàn)人機(jī)之間控制信息的交互傳送。文章分別介紹了硬件設(shè)計(jì)電路和軟件的設(shè)計(jì)過程,并介紹了一種好用和簡(jiǎn)單的MOOBUS從設(shè)備調(diào)試工具——Modbus slave。 設(shè)計(jì)中使用128*64LCD實(shí)現(xiàn)顯示界面如圖1所示,其中“實(shí)際值”顯示從現(xiàn)場(chǎng)取要的數(shù)據(jù),“設(shè)定值”是由操作者設(shè)定并已傳入現(xiàn)場(chǎng)設(shè)備的參數(shù),“操作值”顯示操作者可以修改但還未發(fā)送到現(xiàn)場(chǎng)設(shè)備的數(shù)值。最后一行用來指示4個(gè)按鍵。 二、硬件部分設(shè)計(jì) 系統(tǒng)硬件電路框圖如圖2。 電路部分十分簡(jiǎn)單,包括看門狗電路、4個(gè)按鍵的直接連接、程序擴(kuò)展電路、RS232電平轉(zhuǎn)換部分、液晶點(diǎn)陣連接部分。 MAX7OS的功能是:上電復(fù)位程序監(jiān)視。89C52正常工作,執(zhí)行喂狗程序時(shí),不斷從P17輸出脈沖信號(hào)至MAX705的WDI腳,當(dāng)單片機(jī)程序“跑飛”后,Pl.7不再輸出脈沖信號(hào)MAX705的WDI腳在1.6S內(nèi)收不到脈沖信號(hào),將在MAX70S的RESTE端產(chǎn)生高電平,產(chǎn)生復(fù)位信號(hào),將單片機(jī)復(fù)位,迫使程序復(fù)位到入口處。 針對(duì)AT89C52硬件資源比較豐富,考慮采用直接方式設(shè)計(jì)鍵盤電路,而且可以簡(jiǎn)化電路。鍵盤采用4個(gè)開關(guān)直接控制。開關(guān)的一段通過電阻連接電源和AT89C52的P10~P13管腳,而另一端接地。由于P10~P13是低電平工作,當(dāng)不同的開關(guān)接通時(shí),根據(jù)采集到不同端口是高還是低電平,來執(zhí)行相應(yīng)的按鍵子程序。 考慮到使用LCD具有較強(qiáng)的表現(xiàn)能力和豐富的表現(xiàn)方式,所以擴(kuò)展了32K的EPROM27256。是為實(shí)現(xiàn)產(chǎn)品升級(jí),完成豐富菜單,強(qiáng)大功能,表現(xiàn)動(dòng)畫準(zhǔn)備的。 128*64液晶顯示器LCO采用直接訪問方式,直接訪問方式是把內(nèi)置T6963C控制器的液晶顯示模塊作為存儲(chǔ)器或I/O設(shè)備直接掛在單片機(jī)的總線上。模塊的數(shù)據(jù)線接單片機(jī)的數(shù)據(jù)總線上,片選及寄存器選擇信號(hào)線由單片機(jī)的地址總線提供,讀和寫操作由單片機(jī)的讀寫操作信號(hào)控制。按口電路如圖2所示,在圖中使用了地址線AS作為模塊的寄存器選擇線C/D,使用地址線A15作為模塊操作的片選線;模塊的VO端所接的電位器是作為液晶驅(qū)動(dòng)電源的調(diào)節(jié)器,調(diào)節(jié)顯示的對(duì)比度。使用該種連接方式,不用考慮T6963C的時(shí)序圖,不用對(duì)LCD的管腳進(jìn)行單獨(dú)的操作來滿足時(shí)序,就像讀寫外部RAM一樣,筆者認(rèn)為比采用要在程序中實(shí)現(xiàn)時(shí)序的間接訪問連接方式方便。 考慮到在常溫下,LCD的額定電流為0。4ma所需的功率很小,再加上RS232串口集成電路MAX232有兩路發(fā)送器、兩路轉(zhuǎn)換器,使用其中一套完成電平轉(zhuǎn)換用來通信,另一套正好用來產(chǎn)生-10V,該電壓由MAX232的14端供LCD顯示畫面使用。 三、軟件設(shè)計(jì)部分 下面介紹軟件部分,主要完成一下功能按鍵的查詢和響應(yīng)、畫面的顯示和刷新通過MOOBUS協(xié)議完成數(shù)據(jù)的接收和傳輸通信。 軟件結(jié)構(gòu)清晰,按模塊分為三大塊主程序部分、T0定時(shí)中斷、串口中斷部分。 (1)主程序部分 主程序流程圖如圖3所示,主要完成一些初始參數(shù)的設(shè)定,其中LCD的初始化包括:液晶屏的尺寸光標(biāo)的位置和形狀等這部分程序在購買LCD時(shí)廠家會(huì)附帶的,根據(jù)需要修改一下即可滿足要求;還有就是將需要顯示的漢字進(jìn)行編碼。定時(shí)器使用的是T0選擇方式1,采用50ms中斷查詢按鍵,考慮到還有串口中斷,使用了默認(rèn)的中斷優(yōu)先級(jí),即T0中斷高于串口中斷。這種安排已通過試驗(yàn)調(diào)試。在等待中斷部分安排了循環(huán)執(zhí)行喂狗程序目的是在程序正常執(zhí)行時(shí)起到“看門狗”的作用,在等待中斷過程中系統(tǒng)又不認(rèn)為是“死機(jī)”。 main: Icall clearmemory;清內(nèi)存 Icall initlcd;初始化Icd mov sp,#stackpointer;堆棧為65h mov tmod.#21h:t0方式1,t1方式2 mov radixcursor.#10h mov currentpagenumber,#01h;指定初始 頁號(hào)為1 mov page number,currehtpagenumber setb es setb ea mov th1,#Ofdh;設(shè)定波特率9600bps mov tl1.#Ofdh setb tr1;啟動(dòng)定時(shí)器t1 mov scoh.#Od0h mov 2ch,用來輔助發(fā)送 mov 2bh.#10h Icall setuptimer0;初始化定時(shí)器t0,并啟動(dòng)t0 setb ren Icall chaxuhsj;發(fā)送查詢命令 Icall showpage;顯示頁面 dieloop: nop Icall feeddog;執(zhí)行喂狗程序 jmp dieloop;循環(huán)等待中斷 (2)T0定時(shí)中斷部分 流程圖如圖4所示,這部分主要功能是完成按鍵的查詢,并轉(zhuǎn)去執(zhí)行相應(yīng)的子程序本系統(tǒng)中一共有四個(gè)編程鍵,依次可實(shí)現(xiàn)修改數(shù)據(jù)、增加值、減少值和翻頁功能。當(dāng)我們按下修改鍵后(即光標(biāo)被激活)修改鍵可以用來移動(dòng)光標(biāo)位置此時(shí)按增加鍵和減少鍵可以分別增加和減少數(shù)值。其中翻頁鍵是一個(gè)復(fù)用鍵如果直接按翻頁鍵(不激活光標(biāo)),那么它的功能就是在不同的頁面之間切換,并從現(xiàn)場(chǎng)收集各頁數(shù)據(jù)并顯示到LCD上:而當(dāng)光標(biāo)處在被激活狀態(tài)下時(shí),按下翻頁鍵就可以向現(xiàn)場(chǎng)控制器(如DSP)發(fā)送數(shù)據(jù)達(dá)到控制目的這種“一鍵復(fù)用”的設(shè)計(jì),在電子商品中特別常見通過軟件的設(shè)計(jì)減少了按鍵的數(shù)量,是一個(gè)比較有實(shí)際價(jià)值的設(shè)計(jì)已被廣泛使用。鍵盤采用50ms定時(shí)中斷設(shè)計(jì),一般人手按鍵的起落時(shí)差遠(yuǎn)大于50ms所以可以滿足設(shè)計(jì)要求而且在后面軟件部分進(jìn)行了去抖動(dòng),等待按鍵抬起功能的設(shè)計(jì)。timer0int: pushdph pushdpl pushacc pushpsw movthi0。#4bh movtl0。#Dfdh clrtr0;關(guān)定時(shí)器 movp1,#Offh;置p1口為輸入狀態(tài) mova,p1;讀按鍵 epla anda,#00001111b;屏蔽高4位 jzgoret00;無鍵按下 movpgbkey,a Icalldelay;有鍵按下delay10ms去抖動(dòng) Icallwait;等待按鍵抬起 Icallseankey;轉(zhuǎn)去執(zhí)行相應(yīng)的按鍵子程序 goret00: setbtr0;開定時(shí)器 poppsw popacc popdpl popdph ren (3)串口中斷部分 這部分的主要功能是通過MODBUS協(xié)議完成數(shù)據(jù)的查詢和發(fā)送。先對(duì)MODBUS做個(gè)簡(jiǎn)單的介紹該協(xié)議通信使用主從技術(shù),即僅主設(shè)備能初始化傳輸(查詢)其它設(shè)備(從設(shè)備),根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。按傳輸模式分為ASCII和RTU方式。本設(shè)計(jì)采用RTU方式。這種方式的主要優(yōu)點(diǎn)是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。每個(gè)消息必須以連續(xù)流的方式傳輸。 MODBUS協(xié)議建立了主設(shè)備查詢的格式設(shè)備地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、錯(cuò)誤檢測(cè)域從設(shè)備回應(yīng)消息也由MODBUS協(xié)議構(gòu)成,包括確認(rèn)要行動(dòng)的域、任何要返回的數(shù)據(jù)和錯(cuò)誤檢測(cè)域。如果在消息接收過程中發(fā)生錯(cuò)誤或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立錯(cuò)誤消息并把它作為回應(yīng)發(fā)送出去。 查詢查詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段必須包含要告之從設(shè)備的信息:從何寄存器開始讀及要讀的寄存器數(shù)量錯(cuò)誤檢測(cè)域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。 回應(yīng):如果從設(shè)備產(chǎn)生正常的回應(yīng),在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回應(yīng)數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):像寄存器值或狀態(tài)。如果有錯(cuò)誤發(fā)生功能代碼將被修改以用于指出回應(yīng)消息是錯(cuò)誤的,同時(shí)數(shù)據(jù)段包含了描述此錯(cuò)誤信息的代碼。 舉一個(gè)關(guān)于功能碼03H的例子。 主站詢問報(bào)文格式: 從站應(yīng)答格式: serialportint: push dph push dpl push acc push psw jbc ri, receive Icall chaxunsj;發(fā)送查詢命令 sjmp return receive: mov r0 ,2bh;指定用來存接收數(shù)據(jù)的地址指針 mov a,sbufall clr riall mov @r0 ,a inc 2bh mov a,2bh Icall crc;進(jìn)行crc校驗(yàn) Icall showpage return: pop psw pop acc pop dpl pop dph reti 筆者使用了Modbusslave軟件仿真下位機(jī),模擬MOD-BUS的從設(shè)備。通過該軟件,用所設(shè)計(jì)人機(jī)界面可以讀取具體設(shè)備的具體各類寄存器的數(shù)據(jù),同樣可以寫數(shù)據(jù)到指定設(shè)備中指定的各類寄存器中,這樣就完成了數(shù)據(jù)的接收和傳送。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:HOLLiAS-LEC G3 PLC在水源熱...

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)