Modbus協(xié)議下單片機(jī)與eView觸摸屏的通信_(tái)第1頁
Modbus協(xié)議下單片機(jī)與eView觸摸屏的通信_(tái)第2頁
Modbus協(xié)議下單片機(jī)與eView觸摸屏的通信_(tái)第3頁
Modbus協(xié)議下單片機(jī)與eView觸摸屏的通信_(tái)第4頁
Modbus協(xié)議下單片機(jī)與eView觸摸屏的通信_(tái)第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、modbus協(xié)議下單片機(jī)與eview觸摸屏的通信2008-08-22 14:22:30 作者:未知 來源:電子產(chǎn)品世界關(guān)鍵字:modbus通信規(guī)約 功能碼eview crc校驗(yàn) 系列單片機(jī) 觸摸屏 復(fù)位電路 上位機(jī)51單片機(jī)摘要modbus協(xié)議由于其具有開放性、透明性、成木低、易于開發(fā)等特點(diǎn),l1 成為當(dāng)今工業(yè)領(lǐng)域通信協(xié)議的首選。本文介紹了一種基于modbus通信協(xié)議的 eview觸摸屏與常用的51單片機(jī)的通信方法。該方法通過c51編程實(shí)現(xiàn)modbus 通信,在51系列單片機(jī)上具有通用性,有一定的借鑒作用。工業(yè)控制中經(jīng)常需耍觀察系統(tǒng)的運(yùn)行狀態(tài)或者修改運(yùn)行參數(shù)。觸摸屏能夠直觀、 生動(dòng)地顯示運(yùn)行參

2、數(shù)和運(yùn)行狀態(tài),而且通過觸摸屏畫面可以克接修改系統(tǒng)運(yùn)行參數(shù), 人機(jī)交互性好。單片機(jī)廣泛應(yīng)用于工控領(lǐng)域屮,與觸摸屏配合,可組成良好的人機(jī) 交互環(huán)境。觸摸屏與單片機(jī)通信,需要根據(jù)觸摸屏采用的通信協(xié)議為單片機(jī)編寫相應(yīng)的通 信程序。modbus協(xié)議是美國modicon公司推出的,一種冇效支持控制器z間以 及控制器經(jīng)由網(wǎng)絡(luò)(如以太網(wǎng))與其他設(shè)備之間進(jìn)行通佶的亦議。本文以stc89c51 單片機(jī)和人機(jī)電子有限公司的eview觸摸屏為例,介紹其通信程序的開發(fā)過程。1系統(tǒng)結(jié)構(gòu)實(shí)現(xiàn)觸摸屏與單片機(jī)的通信,主要是解決通信協(xié)議的問題。本文使用開放的 modbus通信協(xié)議,以觸摸屏作主站,單片機(jī)作從站。eview觸摸屏木

3、身支持 modbus通信協(xié)議,如果單片機(jī)也支持modbus協(xié)議,就可以進(jìn)行通信了。eview 觸摸屏支持rs-232和rs485兩種通信接口。在丁業(yè)控制領(lǐng)域,由于rs-485 具冇可靠性高、傳輸距離遠(yuǎn)、抗干擾能力強(qiáng)等優(yōu)點(diǎn),所以在本系統(tǒng)中觸摸屏與單片 機(jī)通信采用rs-485連接,傳輸速率設(shè)置為9600 kbps。rs-485信號(hào)傳輸是一 種半雙工的傳輸方式,單片機(jī)通過一個(gè)rs-232/rs-485無源轉(zhuǎn)換器把232信號(hào) 轉(zhuǎn)換成485信號(hào),連接到eview觸摸屏上。圖丨為該系統(tǒng)的原理圖。2 4 68n 3 5vcc20pfxj t 3jil05q2miunotp00pliitp01p12pu2p1

4、3p03pmkmpj5p05p16p06pitp07mipiointop21tlp2jtop24exapp26xi x2reset rxd txdkp ale/p wk psenmax232ffi 1系統(tǒng)原理圏c(diǎn)ap2- capi-rtout) t-inirm)ut: tin2rr ini r4xjtirr-in2 r-oundigndoebafaroverl(xw4臨gnd vcccap cap -cap 2- cap1*ftvccrs4a5$ rx23289c5i單片機(jī)控制系統(tǒng)采用stc89c51系列單片機(jī),其內(nèi)部集成max810/stc810 專用復(fù)位電路(原有外部復(fù)位可繼續(xù)保留,與in

5、tel 8051引腳兼容),具有抗干擾 能力強(qiáng)、加密性強(qiáng)、高抗靜電(esd)、超低功耗等特點(diǎn),而且價(jià)格低廉。在本系統(tǒng) 屮,觸摸屏是上位機(jī),單片機(jī)是下位機(jī)。2 modbus 協(xié)議2.1 modbus協(xié)議簡介modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相 互之間、控制器經(jīng)由網(wǎng)絡(luò)(如以太網(wǎng))與其他設(shè)備之間可以通信。它已經(jīng)成為一種通 用工業(yè)標(biāo)準(zhǔn)。不同廠商生產(chǎn)的控制設(shè)備可以通過它連成工業(yè)網(wǎng)絡(luò),集中監(jiān)控。modbus協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何 種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪問其他設(shè)備的過程如何冋應(yīng)來口其他 設(shè)備的請(qǐng)求,以及怎樣偵測錯(cuò)誤并

6、記錄;制定了消息域格局和內(nèi)容的公共格式。當(dāng)在某一 modbus網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每個(gè)控制器需要知道它們的設(shè) 備地址,識(shí)別按地址發(fā)來的消息,以及決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),則控 制器將生成反饋信息并用modbus協(xié)議發(fā)出。在其他網(wǎng)絡(luò)上,包含了 modhus協(xié) 議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。2.2 modbus rtu通信數(shù)據(jù)傳輸模式當(dāng)控制器設(shè)備基于modbus協(xié)議以rtu模式通信時(shí),消息屮的每個(gè)字節(jié)包含 2個(gè)4位的十六進(jìn)制字符。這種方式的主要優(yōu)點(diǎn)是:在同樣的波特率下,可比ascii 方式傳送更多的數(shù)據(jù)。編碼采用8位二進(jìn)制,十六進(jìn)制數(shù)09和af;消息中每個(gè)8位域都是由2

7、個(gè)十六進(jìn)制字符組成。組織結(jié)構(gòu)如下:地址位數(shù)據(jù)位奇偶校絵位停1e位錯(cuò)誤檢測1位8位1位或無校驗(yàn)1ftcrc2.3 modbus rtu消息幀結(jié)構(gòu)modbus rtu消息幀結(jié)構(gòu)如下:地址碼功能代碼數(shù)據(jù)區(qū)錯(cuò)誤校驗(yàn)碼8位8位nx8位16位(1) 地址碼地址碼為通信傳送的第一個(gè)字節(jié)。這個(gè)寧節(jié)表明,由用戶設(shè)定地址碼的從機(jī)將 接收由主機(jī)發(fā)送來的信息。每個(gè)從機(jī)都有具有唯一的地址碼,只有符合地址碼的從 機(jī)才能響應(yīng)冋送,且響應(yīng)冋送均以各自的地址碼開始。主機(jī)發(fā)送的地址碼則表明將 發(fā)送到的從機(jī)地址,而從機(jī)發(fā)送的地址碼表明冋送的從機(jī)地址。地址0用作廣播地 址,以使所有的從設(shè)備都能認(rèn)識(shí)。(2) 功能代碼功能代碼為通信傳送

8、的第二個(gè)字節(jié)。modbus通信規(guī)約定義可能的代碼范圍是 十進(jìn)制的1255。當(dāng)然,冇些代碼適用于所冇控制器,冇些僅適用于某種控制器, 還有些保昭以備后用。主機(jī)發(fā)送請(qǐng)求,通過功能碼告訴從機(jī)執(zhí)行什么動(dòng)作;從機(jī)響應(yīng) 請(qǐng)求,從機(jī)發(fā)送的功能碼與從主機(jī)發(fā)送來的功能碼一樣,表明從機(jī)已響應(yīng)主機(jī)進(jìn)行 操作。如果從機(jī)發(fā)送的功能碼的最高位為1,則表明從機(jī)沒冇響應(yīng)操作或發(fā)送出錯(cuò), 主設(shè)備應(yīng)用程序得到異議的回應(yīng)后,典型的處理是重發(fā)消息。表i列出了常用 modbus支持的部分功能碼。功能碼名稱作用01讀取線刪狀態(tài)取得-組邏輯線刪的當(dāng)前狀態(tài) (on/off)02讀取輸入狀態(tài)取得一組開艾輸入的半肪狀態(tài) (on/ofk)03讀取

9、保持寄存器在一個(gè)或多個(gè)保持寄存誥中取 得當(dāng)前的二進(jìn)制值04讀取輸人寄存器在一個(gè)或多個(gè)輸入寄存雅中取 得當(dāng)前的二進(jìn)制fll表1常用modbus支持的部分功能碼以讀取線圈狀態(tài)為例說明。主站發(fā)送命令:設(shè)備地址命令號(hào)01起始寄存 器地址高8位低8位讀取的寄存器數(shù)高8位低8位crc校驗(yàn)的低8位高 8位。從站響應(yīng):設(shè)備地址命令號(hào)01返回的字節(jié)個(gè)數(shù)數(shù)據(jù)1 數(shù)據(jù)2.(數(shù) 據(jù)n crc校驗(yàn)的低8位高8位。(3) 數(shù)據(jù)區(qū)數(shù)據(jù)區(qū)根據(jù)功能碼的不同而不同。數(shù)據(jù)區(qū)包含需要從機(jī)執(zhí)行什么動(dòng)作,或由從 機(jī)采集的返送信息。這些信息可以是實(shí)際數(shù)值、設(shè)置點(diǎn)、主機(jī)發(fā)送給從機(jī)或從機(jī)發(fā) 送給主機(jī)的地址等。例如,功能碼告訴從機(jī)讀取寄存器的值

10、,則數(shù)據(jù)區(qū)必須包含耍 讀取寄存器的起始地址及讀取長度。對(duì)于不同的從機(jī),地址和數(shù)據(jù)信息都不相同。(4) 錯(cuò)誤校驗(yàn)碼主機(jī)或從機(jī)可用校驗(yàn)碼判別接收信息是否出錯(cuò)。錯(cuò)謀檢測域包含一個(gè)16位的 值(用2個(gè)8位的字符來實(shí)現(xiàn))。錯(cuò)誤檢測域的內(nèi)容是通過對(duì)消息內(nèi)容進(jìn)行“循環(huán)兀 余檢測”得出的。crc域附加在消息的最后,添加時(shí)先是低字節(jié)然后是高字節(jié),故 crc的高位字節(jié)是發(fā)送消息的最后一個(gè)寧節(jié)。錯(cuò)誤校驗(yàn)采用crc-1 6校驗(yàn)方法。3軟件編程下面是采用c5i編寫的軟件,主耍包括crc校驗(yàn)和終端接收及波特率設(shè)置等。 由于篇幅冇限,其他程序略。(1)波特率設(shè)置/功能:串口初始化波特率為9 600 bps方式1 void

11、init_com( void) tmod = 0x20;pcon = 0x00;scox = 0x50:th1 = oxfd;ti=oxfd;tri = hea = 1:es-1;(2) crc校驗(yàn)函數(shù)uinl crc16( uchar * pushmsg iinsigmd short usdataken)(uchar uchcrchi = 0xffjuchar uchcrclo oxf'f: uint ulndex:while (usdatalen ) ! ulndcx= uchcrt'iii * */ crc字廿初始化/低crc字節(jié)初始化/crc循環(huán)中的索引/傳輸消息緩沖區(qū)

12、 pushmsg/計(jì)算 crcuchcrchi = uchcrclo * auchcrchiulndexj;uchcrcix> = auchcrclof ulndcx_ ;return (uchcrl'hi<< 8 i uchcrclo);(3)發(fā)送函數(shù)和判斷函數(shù)void send( uchar rrbufr int sendcount) uchar icrohiwcrcloej<k=0;uchar sendbuf 32 ;usdaialcn= wen dcount 2 ;sendbufl.oj = reccbufo ; sendbuf 1 = rcccbuf

13、l 1 . s send- buf_2=sendcount 5 ;for(j = 3;j<;sendcount 2;j+ -r ) sendbufejl = rrbuf k :k+ + ;k = 0:crcdata = crc16( sendbuf usdatalen):crchi = crcdata 256:crclo=crcl)ata % 256:scndbuflsendcount 2 = crchi;sendbufu sondconnt 1 丨-crclo; for(i=(hivs<?ndcouni;i+) sbuf = sendbuflij : while(tl =0) ;

14、t1 0;void rcad() switch( start .adrcss) case 0x0002 : send( &-writcbufl tsend(ount): break;startadrcss= startadress rccebu(l3 ;if (recebuf ()2= =0x00)scn<lcount = 52 * 256 ( recebuf5l);rea(l();else sbuf = 0x0a; whilc( ti= =0) ;ti = o; >(5)串口中斷函數(shù)/.實(shí)現(xiàn)crc數(shù)據(jù)信息的分析處理void com ml ntproco interrupt

15、 i if(rl) ri 0; recebuflrecccount = sbuf:rccocouiit 4 -* ; usdatalcn= rcccc'ount 2:switch ( recebu1 )cae 0x01 : if(rccc(?ount> = 8)recefouni 0 ; rcadbit( ) : y break ;case 0x02 : if(rececount> = 8)rccccounl = 0; rcacibir(): i break;case 0x03 if< rececount?> = 8) rece('ount = ():crc-.data() ; break;case 0x04 : if(rccc()unt?> = 8):recccount = 0 ;crc_data( ) ; ; break;case 0x05 : if( rececouni> 8) rccc<?ount = 0: wrirbit() ; / break:case 0x06 : if( recccount> = 8)'recefounr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論