freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于modbus協(xié)議的通訊系統(tǒng)(編輯修改稿)

2025-06-19 18:22 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 設(shè)計(jì)成無(wú)源方式,整個(gè)電路的供電直接從PC機(jī)的RS232接口中的DTR(4腳)和RTS(7腳)竊取。PC串口每根線(xiàn)可以提供大約9mA的電流,因此兩根線(xiàn)提供的電流足夠供給這個(gè)電路使用了。經(jīng)實(shí)驗(yàn),本電路只使用其中一條線(xiàn)也能夠正常工作。使用本電路需注意PC程序必須使串口的DTR和RTS輸出高電平,經(jīng)過(guò)D3穩(wěn)壓后得到VCC,經(jīng)過(guò)實(shí)際測(cè)試。因此,電路中要說(shuō)D3起的作用是穩(wěn)壓還不如說(shuō)是限壓功能。MAX485是通過(guò)兩個(gè)引腳RE(2腳)和DE(3腳)來(lái)控制數(shù)據(jù)的輸入和輸出。當(dāng)RE為低電平時(shí),MAX485數(shù)據(jù)輸入有效;當(dāng)DE為高電平時(shí),MAX485數(shù)據(jù)輸出有效。在半雙工使用中,通??梢詫⑦@兩個(gè)腳直接相連,然后由PC或者單片機(jī)輸出的高低電平就可以讓MAX485在接收和發(fā)送狀態(tài)之間轉(zhuǎn)換了。由于本電路DTR和RTS都用于了電路供電,因此使用TX線(xiàn)和MAX232的另外一個(gè)通道及Q1來(lái)控制MAX485的狀態(tài)切換。平時(shí)MAX232的9腳輸出高電平,經(jīng)Q1倒相后,使MAX485的RE和DE為低電平而處于數(shù)據(jù)接收狀態(tài)。當(dāng)PC機(jī)發(fā)送數(shù)據(jù)時(shí),MAX232的9腳輸出低電平,經(jīng)Q1倒相后,使MAX485的RE和DE為高電平而處于數(shù)據(jù)發(fā)送狀態(tài)。 圖46 RS232485 本章小結(jié) 本章主要包括電源模塊、單片機(jī)最小系統(tǒng)模塊、按鍵、溫度采集、數(shù)碼管和液晶顯示模塊、RS232轉(zhuǎn)RS485接口模塊、NRF24L01無(wú)線(xiàn)通訊模塊的硬件設(shè)計(jì),介紹了設(shè)計(jì)的基本原理和一些注意事項(xiàng)。第5章 通訊系統(tǒng)實(shí)現(xiàn)的軟件設(shè)計(jì)本設(shè)計(jì)要實(shí)現(xiàn)無(wú)線(xiàn)通訊系統(tǒng)對(duì)溫度的實(shí)時(shí)采集與顯示功能,除硬件外,還需要軟件來(lái)控制。本章主要介紹報(bào)文處理的軟件實(shí)現(xiàn),并簡(jiǎn)要介紹整體A機(jī)時(shí)鐘和B機(jī)溫度信號(hào)無(wú)線(xiàn)交換的軟件流程圖。 基于MODBUS協(xié)議處理報(bào)文的軟件設(shè)計(jì):: B機(jī)作為從機(jī)在本次設(shè)計(jì)中需要讀出從機(jī)的溫度、從機(jī)的小時(shí)和分鐘信號(hào)所以采用讀模擬寄存器(即03)這個(gè)功能。⑴計(jì)算機(jī)發(fā)送的數(shù)據(jù)包:[設(shè)備地址] [命令號(hào)03] [起始寄存器地址低8位] [高8位] [讀取的寄存器數(shù)低8位] [高8位] [CRC校驗(yàn)的低8位] [CRC校驗(yàn)的高8位] 即:[01][03][01][00][01][00][CRC低][CRC高] 注釋?zhuān)鹤x從機(jī)溫度[01][03][02][00][01][00][CRC低][CRC高] 注釋?zhuān)鹤x從機(jī)時(shí)鐘的小時(shí) [01][03][03][00][01][00][CRC低][CRC高] 注釋?zhuān)鹤x從機(jī)時(shí)鐘的分鐘具體意義如下::本次設(shè)計(jì)中設(shè)備地址為0x01。:讀模擬量的命令號(hào)固定為03。、高8位:表示想讀取的模擬量的邏輯地址,本次設(shè)計(jì)中的溫度邏輯地址為0x01;小時(shí)的邏輯地址為0x02。分鐘的邏輯地址為0x03。、高8位:表示從起始地址開(kāi)始讀多少個(gè)模擬量(即邏輯地址長(zhǎng)度)。本次設(shè)計(jì)中每個(gè)邏輯地址只需讀出一個(gè)模擬量。(在返回的信息中一個(gè)模擬量需要返回兩個(gè)字節(jié))。⑵從機(jī)響應(yīng)回主機(jī)的數(shù)據(jù)包:[設(shè)備地址] [命令號(hào)03] [返回的字節(jié)個(gè)數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n][CRC校驗(yàn)的低8位] [CRC校驗(yàn)的高8位] 即 :[01][03][02][00][AC][CRC低][CRC高] 注釋?zhuān)簻囟戎祷貞?yīng)給主機(jī)(℃)[01][03][02][00][0B][CRC低][CRC高] 注釋?zhuān)盒r(shí)值回應(yīng)給主機(jī)(11小時(shí)) [01][03][02][00][24][CRC低][CRC高] 注釋?zhuān)悍昼娭祷貞?yīng)給主機(jī)(36分鐘)具體意義如下:。:表示數(shù)據(jù)的字節(jié)個(gè)數(shù),也就是數(shù)據(jù)1,2...n中的n的值。設(shè)計(jì)中返回了1個(gè)模擬量的數(shù)據(jù),因?yàn)橐粋€(gè)模擬量需要2個(gè)字節(jié)所以共2個(gè)字節(jié)。...n:其中[數(shù)據(jù)1][數(shù)據(jù)2]分別是第1個(gè)模擬量的高8位和低8位,[數(shù)據(jù)3][數(shù)據(jù)4]是第2個(gè)模擬量的高8位和低8位,以此類(lèi)推。設(shè)計(jì)中只返回了[數(shù)據(jù)1][數(shù)據(jù)2],本次設(shè)計(jì)中若第一個(gè)返回的值是[AC]176。C ;第二個(gè)值[0B]表示11小時(shí);第三個(gè)值[24]表示36分鐘。 ⑴提高通訊穩(wěn)定性的程序設(shè)計(jì):Modbus通信協(xié)議設(shè)計(jì)中為了預(yù)防干擾,提高系統(tǒng)穩(wěn)定性,防止系統(tǒng)程序跑飛而造成不可預(yù)測(cè)的錯(cuò)誤(雖然概率比較低,一旦出現(xiàn)將會(huì)出現(xiàn)很大的問(wèn)題),所以有必要經(jīng)常重新置485為接受狀態(tài)并將接受地址偏移器(即接收到的字節(jié)個(gè)數(shù))清零。在此次程序設(shè)計(jì)中設(shè)置了一個(gè)1ms定時(shí)中斷,在中斷程序中定義一個(gè)1ms標(biāo)志位,在定時(shí)處理子函數(shù)中判斷是否通訊超時(shí)(本次設(shè)定為5s),如果超時(shí),即使已經(jīng)有接受到數(shù)據(jù)也置之不理,進(jìn)行重置48清零地址偏移器、清零偶校驗(yàn);除此之外每次發(fā)送數(shù)據(jù)結(jié)束后我們也需要進(jìn)行這樣處理。程序流程圖如51所示:1ms Timer1中斷開(kāi)始重裝初值1ms標(biāo)志位設(shè)為1結(jié)束定時(shí)處理開(kāi)始1ms標(biāo)志=1?清零1ms標(biāo)志通訊超時(shí)否?485置為接收接受地址偏移寄存器清零偶校驗(yàn)清零結(jié)束YNYN 圖51提高通訊穩(wěn)定性的程序設(shè)計(jì) ⑵發(fā)送和接收緩沖區(qū)數(shù)據(jù)處理:在Modbus協(xié)議里,報(bào)文的都是以包的形式來(lái)發(fā)送與接收的,設(shè)計(jì)中用兩個(gè)數(shù)組來(lái)定義數(shù)據(jù)包的發(fā)送和接收緩沖區(qū)。發(fā)送接收緩沖區(qū)再與單片機(jī)的串口鎖存器sbuf進(jìn)行交換來(lái)實(shí)現(xiàn)數(shù)據(jù)包的發(fā)送與接收,在程序中還同時(shí)使用偶校驗(yàn)來(lái)對(duì)傳輸數(shù)據(jù)進(jìn)行檢測(cè);在此設(shè)置串口中斷服務(wù)程序,當(dāng)接收或者發(fā)送完8個(gè)數(shù)據(jù)后進(jìn)入服務(wù)程序內(nèi)處理以上功能。具體程序流程圖如52下所示: 串行口中斷開(kāi)始TI=1?RI=1?清零TI中斷標(biāo)志位清零RI中斷標(biāo)志位發(fā)送位置發(fā)送字節(jié)個(gè)數(shù)?發(fā)送緩沖區(qū)數(shù)據(jù)發(fā)給串口鎖存器(加上校驗(yàn)位)485置為接收接受地址偏移寄存器清零偶校驗(yàn)清零結(jié)束設(shè)置通訊超時(shí)值串口鎖存器的值發(fā)給接受緩沖區(qū)測(cè)試校驗(yàn)是否出錯(cuò)YNYNY圖52發(fā)送和接收緩沖區(qū)數(shù)據(jù)處理 ⑶主機(jī)發(fā)送數(shù)據(jù)包和從機(jī)響應(yīng)主機(jī)數(shù)據(jù)包的具體軟件實(shí)現(xiàn):本次設(shè)計(jì)中我們定義從機(jī)(B機(jī))地址為Ox01。采用查詢(xún)掃描方式,當(dāng)從機(jī)接受數(shù)據(jù)包第一個(gè)有效數(shù)據(jù)為0X01時(shí)說(shuō)明確實(shí)是該機(jī),如果偶校驗(yàn)也正確的話(huà)則繼續(xù)處理接下來(lái)的數(shù)據(jù);為保證通訊數(shù)據(jù)的可靠和可信性我們還需要對(duì)接收緩沖區(qū)做CRC校驗(yàn)。接下來(lái)判定第二個(gè)數(shù)據(jù)(即功能碼),該設(shè)計(jì)中除了[03]還擴(kuò)展了[01][05][06]等功能碼以提高代碼可移植性,對(duì)其掃描檢測(cè),如果是[03]則進(jìn)入讀取保存寄存器子函數(shù);在讀取保存寄存器子函數(shù)里,分別讀出接收緩沖區(qū)的第三、第四個(gè)數(shù)據(jù)對(duì)應(yīng)得邏輯地址和第五、第六個(gè)數(shù)據(jù)對(duì)應(yīng)的邏輯地址長(zhǎng)度。通過(guò)邏輯地址我們可以知道要處理的數(shù)據(jù),通過(guò)邏輯地址長(zhǎng)度我們可以知道需要返回的字節(jié)數(shù)。在這里我們對(duì)從機(jī)(B機(jī))發(fā)來(lái)的溫度,時(shí)鐘數(shù)據(jù)進(jìn)行處理;處理完后再把這些數(shù)據(jù)和設(shè)備地址、命令號(hào)、返回字節(jié)數(shù)回應(yīng)給發(fā)送緩沖區(qū),再對(duì)緩沖區(qū)數(shù)據(jù)進(jìn)行CRC校驗(yàn)計(jì)算。 流程圖如53所示:檢查Uart0數(shù)據(jù)開(kāi)始設(shè)備地址、偶校正確否?CRC校驗(yàn)正確?接受地址偏移寄存器清零偶校驗(yàn)清零結(jié)束功能碼為03否?NNN:結(jié)束或看是否為其它功能YYY讀取保存寄存器開(kāi)始讀取接收的邏輯地址讀取地址長(zhǎng)度對(duì)接收緩沖區(qū)做CRC校驗(yàn)對(duì)應(yīng)邏輯地址處理數(shù)據(jù),需要將溫度、時(shí)鐘的時(shí)、分等數(shù)據(jù)對(duì)應(yīng)給發(fā)送緩沖區(qū)將設(shè)備地址、命令號(hào)、返回字節(jié)數(shù)對(duì)應(yīng)給發(fā)送緩沖區(qū)對(duì)緩沖區(qū)數(shù)據(jù)進(jìn)行CRC計(jì)算開(kāi)始發(fā)送緩沖區(qū)第一個(gè)數(shù)據(jù)圖53 數(shù)據(jù)包處理 A機(jī)流程圖和說(shuō)明 A機(jī)的功能是顯示時(shí)鐘,能通過(guò)按鍵控制B機(jī)顯示溫度或把A機(jī)的時(shí)鐘信號(hào)無(wú)線(xiàn)傳輸給B機(jī);所以在程序中需要初始化液晶、無(wú)線(xiàn)模塊、定時(shí)器、還要設(shè)置按鍵掃描和無(wú)線(xiàn)接受中斷(這里用單片機(jī)外部中斷0來(lái)實(shí)現(xiàn))。程序流程圖如54所示:液晶初始化主程序開(kāi)始無(wú)線(xiàn)模塊初始化Timer0中斷開(kāi)始定時(shí)器0初始化按鍵掃描時(shí)鐘更新發(fā)送溫度信息中斷返回判斷中斷標(biāo)志Sendflag為1?無(wú)線(xiàn)接收中斷開(kāi)始讀取接收到的數(shù)據(jù)更新液晶顯示Y中斷返回N結(jié)束結(jié)束結(jié)束圖54 A機(jī)流程圖 B機(jī)流程圖和說(shuō)明 B機(jī)的功能是依據(jù)A機(jī)命令使它顯示溫度還是時(shí)鐘,在主機(jī)(PC機(jī))命令下再把溫度和時(shí)鐘信號(hào)通過(guò)Modbus協(xié)議基于485接口響應(yīng)讀取給主機(jī)。所以程序中需要初始化無(wú)線(xiàn)模塊、串口、定時(shí)器等;Modbus協(xié)議都在主程序中得以體現(xiàn)。另外數(shù)碼管顯示部分和無(wú)線(xiàn)部分處理分別使用Timer0中斷和無(wú)線(xiàn)接收中斷。程序流程圖如55所示:讀取一次溫度信息主程序開(kāi)始無(wú)線(xiàn)模塊初始化Timer0中斷開(kāi)始Timer0、1mTimer串口初始化(設(shè)置波特率等);無(wú)線(xiàn)模塊設(shè)置為接收數(shù)碼管掃描時(shí)鐘更新中斷返回判斷中斷標(biāo)志rcv為1?無(wú)線(xiàn)接收中斷開(kāi)始讀取接收到的數(shù)據(jù)判斷接收到的命令置位rcvNY顯示時(shí)鐘并與A機(jī)同步顯示溫度發(fā)回溫度信息LED閃爍檢查uart0口數(shù)據(jù)結(jié)束結(jié)束結(jié)束定時(shí)處理圖55 B機(jī)流程圖 本章小結(jié) 在這一章中我們介紹了基于MODBUS協(xié)議處理報(bào)文的軟件設(shè)計(jì),介紹了報(bào)文格式、軟件具體實(shí)現(xiàn)的方法和注意事項(xiàng),并設(shè)計(jì)的介紹了流程圖,設(shè)計(jì)中對(duì)系統(tǒng)穩(wěn)定性方面下了功夫。除此之外還介紹了A機(jī)流程圖和說(shuō)明、B機(jī)流程圖和說(shuō)明。第6章 通訊系統(tǒng)的實(shí)現(xiàn)本章節(jié)主要說(shuō)明本課題設(shè)計(jì)的作品,對(duì)整體作品的實(shí)物及各部分功能模塊實(shí)物作了全面的介紹,并對(duì)本課題設(shè)計(jì)的作品結(jié)果作了全面的分析與評(píng)價(jià)。 實(shí)物整體外觀實(shí)物主要分為A機(jī)、B機(jī)、Rs232485三個(gè)模塊。A、 B機(jī)顯示如圖61所示:溫度顯示溫度顯示萬(wàn)年歷小時(shí)、分鐘顯示圖61 A、B機(jī)顯示Rs232485A機(jī)B機(jī)18B20溫度感器52單片機(jī)24l01無(wú)線(xiàn)模塊A機(jī)5v電池盒1620液晶顯示MAX485芯片MAX232芯片按鍵模塊24l01無(wú)線(xiàn)模塊數(shù)碼管顯示串口線(xiàn)B機(jī)5v電池盒圖62 實(shí)物外觀A機(jī)主要有:1602液晶顯示模塊、52單片機(jī)、按鍵模塊、NRF24L01無(wú)線(xiàn)模塊、5v電源。B機(jī)主要有:數(shù)碼管顯示模塊、52單片機(jī)芯片、18B20溫度傳感器、NRF24L01無(wú)線(xiàn)模塊、5v電池。RS232485模塊有:MAX232芯片、MAX485芯片、USB轉(zhuǎn)串口線(xiàn)。(PC機(jī))顯示本次設(shè)計(jì)沒(méi)有進(jìn)行上位機(jī)編程,而是通過(guò)串口調(diào)試工具來(lái)看看數(shù)據(jù)有沒(méi)有有效地進(jìn)行傳輸串口調(diào)試結(jié)果如圖62所示:讀取時(shí)鐘分鐘值。℃表示8小時(shí)表示8小時(shí)表示48分鐘圖63 PC機(jī)顯示我們發(fā)送:[01][03][01][00][01][00][25][C0] 注釋?zhuān)鹤x從機(jī)溫度[01][03][02][00][01][00][DD][AA] 注釋?zhuān)鹤x從機(jī)時(shí)鐘的小時(shí) [01][03][03][00][01][00][8C][CA] 注釋?zhuān)鹤x從機(jī)時(shí)鐘的分鐘串口接收:[01][03][02][00][AC][25][C0] 注釋?zhuān)簻囟戎祷貞?yīng)給主機(jī)(℃)[01][03][02][00][0B][DD][AA] 注釋?zhuān)盒r(shí)值回應(yīng)給主機(jī)(8小時(shí)) [01][03][02][00][24][8C][CA] 注釋?zhuān)悍昼娭祷貞?yīng)給主機(jī)(48分鐘)03對(duì)應(yīng)讀度模擬寄存器功能;[D5]、[08]、[30]就是分別發(fā)送三次命令后讀出的模擬量;℃;8代表8小時(shí);48代表48分鐘。 結(jié)果評(píng)價(jià)Modbus是在工業(yè)現(xiàn)場(chǎng)經(jīng)常用到的總線(xiàn)協(xié)議,已成為為通用工業(yè)標(biāo)準(zhǔn),所以基于Modbus協(xié)議去做這個(gè)設(shè)計(jì)很有現(xiàn)實(shí)意義。本次設(shè)計(jì)功能基本實(shí)現(xiàn):A機(jī)通過(guò)無(wú)線(xiàn)模塊控制B機(jī)實(shí)現(xiàn)溫度或者時(shí)鐘顯示實(shí)現(xiàn)短距離無(wú)線(xiàn)通訊,B機(jī)還做為從機(jī)通過(guò)Modbus與PC機(jī)通訊,將從A機(jī)無(wú)線(xiàn)獲得的時(shí)鐘信號(hào)和溫度信號(hào)傳輸給上位機(jī)顯示實(shí)現(xiàn)長(zhǎng)距離有線(xiàn)通訊。本文的主要成果總結(jié)如下:⑴分析和研究了相關(guān)通訊協(xié)議的發(fā)展趨勢(shì),對(duì)Modus協(xié)議應(yīng)用的現(xiàn)狀與發(fā)展動(dòng)態(tài)有了一定的了解,并對(duì)單片機(jī)技術(shù)和數(shù)據(jù)通信技術(shù)結(jié)合進(jìn)行了較深入的研究。⑵較詳細(xì)地分析了Modus協(xié)議的基本內(nèi)容和工作原理,在實(shí)現(xiàn)Modbus通信協(xié)議的基礎(chǔ)上為了預(yù)防干擾,提高系統(tǒng)穩(wěn)定性,防止系統(tǒng)程序跑飛而造成不可預(yù)測(cè)的錯(cuò)誤等,在軟件方面做出了一些優(yōu)化系統(tǒng)設(shè)計(jì)。在此設(shè)計(jì)中也對(duì)NRF24L01無(wú)線(xiàn)模塊有了研究。⑶設(shè)計(jì)了一個(gè)基于Modus通訊協(xié)議的單片機(jī)通信系統(tǒng)。 不足和展望雖然此次設(shè)計(jì)經(jīng)過(guò)調(diào)試運(yùn)行已經(jīng)基本達(dá)到了預(yù)期的效果,運(yùn)行結(jié)果表明該裝置在技術(shù)上有一定的可靠性,但是由于作者本身的研究經(jīng)驗(yàn)和其它客觀條件的限制,設(shè)計(jì)中難免存在許多有待進(jìn)一步開(kāi)發(fā)改進(jìn)的地方,另外尚有許多理論問(wèn)題和工程應(yīng)用問(wèn)題需要進(jìn)一步的探索和研究,就研究和發(fā)展?fàn)顩r來(lái)看今后仍需在以下幾個(gè)方面努力:⑴溫度采集方面由于DS18B20芯片的局限性精確度不能達(dá)到一定的高度。⑵因?yàn)闆](méi)有編程上位機(jī)軟件,只是通過(guò)串口調(diào)試軟件來(lái)觀察數(shù)據(jù)的,如此的話(huà),通過(guò)協(xié)議讀取的數(shù)據(jù)信號(hào)不能實(shí)時(shí)性的顯示于上位機(jī)上,而且操作非常麻煩,用戶(hù)界面很不友好,還有待繼續(xù)完善。⑶隨著信息高速發(fā)達(dá),已經(jīng)有更加優(yōu)化的通訊如:嵌入式工業(yè)以太網(wǎng)網(wǎng)絡(luò)通信、zigbee無(wú)線(xiàn)網(wǎng)絡(luò)通信、wifi無(wú)線(xiàn)網(wǎng)絡(luò)通信等等;關(guān)于通訊我們需要面向未來(lái)繼續(xù)努力。參考文獻(xiàn)[1]石海東單片機(jī)數(shù)據(jù)通信技術(shù)從入門(mén)到精通,西安電子科技大學(xué)出版社,2002 [2] [M].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003.[3]郭天祥.51單片機(jī)C語(yǔ)言教程.電子工業(yè)出版社[4]李剛、林凌、[5]常曉明,潘衛(wèi)華,(6).4551 [6]張蓮,蔣亮,孫玉林.Protel DXP電路設(shè)計(jì)入門(mén)與應(yīng)用.機(jī)械工業(yè)出版社[7]陳鑫
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1