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

正文內(nèi)容

基于modbus協(xié)議的通訊系統(tǒng)-預(yù)覽頁(yè)

 

【正文】 ..9,A...F,消息中的每個(gè)8位域都是一個(gè)兩個(gè)十六進(jìn)制字符組成每個(gè)字節(jié)的位: 表22 RTU模式起始位地址代碼功能代碼數(shù)據(jù)位CRC校驗(yàn)碼結(jié)束位STARTADDRESSFUNCTIONDATACRC CHECKENDT1T2T3T48 BITS8 BITSn * 8 BITS16 BITST1T2T3T4通過(guò)比較可以看到,ASCII協(xié)議和RTU協(xié)議相比擁有開(kāi)始和結(jié)束標(biāo)記,因此在進(jìn)行程序處理時(shí)能更加方便,而且由于傳輸?shù)亩际强梢?jiàn)的ASCII字符,所以進(jìn)行調(diào)試時(shí)就更加的直觀,另外它的LRC校驗(yàn)也比較容易。由于RS232C接口標(biāo)準(zhǔn)出現(xiàn)較早,難免有不足之處,主要有以下四點(diǎn):⑴傳輸速率較低,在異步傳輸時(shí),波特率為20Kbps。方案二、RS485接口。V表示;邏輯“0”以兩線間的電壓差為(2—6)V表示。⑵⑷而RS485接口在總線上是允許連接多達(dá)128個(gè)收發(fā)器(RS485芯片的驅(qū)動(dòng)能力有限,因而在實(shí)際應(yīng)用中其實(shí)只能驅(qū)動(dòng)40多個(gè)收發(fā)器)。nRF24L01是一款新型單片射頻收發(fā)器件。nRF24L01功耗低,在以一6 dBm的功率發(fā)射時(shí),工作電流也只有9 mA;接收時(shí),工作電流只有12.3 mA,多種低功率工模式(掉電模式和空閑模式)使節(jié)能設(shè)計(jì)更方便。芯片低電壓(217V~ 316V ) 供電并且功耗較低(接收數(shù)據(jù)時(shí)為1516mA、214kbo s、433MHz)、靈敏度高(112kbos 下為110dBm ) , 可編程控制的數(shù)據(jù)傳輸率最高可達(dá)500kbo s。模塊缺點(diǎn):靜態(tài)時(shí)會(huì)輸出短暫針狀干擾雜波,用于遙控沒(méi)有問(wèn)題,但用微處理器數(shù)傳時(shí)要采取軟件濾波;功耗較大,不適宜小容量電池供電應(yīng)用。 首先,主機(jī)的信號(hào)尋址到一臺(tái)唯一的終端設(shè)備軟起動(dòng)器(從機(jī));然后,在相反的方向上終端設(shè)備 (軟起動(dòng)器)發(fā)出的應(yīng)答信號(hào)傳輸給主機(jī)。 ⑶數(shù)據(jù)包格式:表31 數(shù)據(jù)包格式地址功能碼 數(shù)據(jù) 校驗(yàn)碼 8Bits8BitsN 8Bits 16Bits⑷數(shù)據(jù)格式說(shuō)明: 本協(xié)議詳細(xì)定義了校驗(yàn)碼、數(shù)據(jù)序列等,這些都是特定數(shù)據(jù)交換的必要內(nèi)容。返回的響應(yīng)數(shù)據(jù)中包含了以下內(nèi)容:終端從機(jī)地址(Address)、被執(zhí)行了的命令(Function)、執(zhí)行命令生成的被請(qǐng)求數(shù)據(jù)(Data)和一個(gè)校驗(yàn)碼(Check)。當(dāng)終端發(fā)送回一個(gè)響應(yīng),響應(yīng)中的從機(jī)地址數(shù)據(jù)便告訴了主機(jī)哪臺(tái)終端正與之進(jìn)行通訊。 表32 功能域01讀取線圈狀態(tài)取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF)02讀取輸入狀態(tài)取得一組開(kāi)關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF)03讀取保持寄存器在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的二進(jìn)制值04讀取輸入寄存器在一個(gè)或多個(gè)輸入寄存器中取得當(dāng)前的二進(jìn)制值05強(qiáng)置單線圈強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài)06預(yù)置單寄存器把具體二進(jìn)值裝入一個(gè)保持寄存器07讀取異常狀態(tài)取得8個(gè)內(nèi)部線圈的通斷狀態(tài),這8個(gè)線圈的地址由控制器決定08回送診斷校驗(yàn)把診斷校驗(yàn)報(bào)文送從機(jī),以對(duì)通信處理進(jìn)行評(píng)鑒09編程(只用于484)使主機(jī)模擬編程器作用,修改PC從機(jī)邏輯10控詢(只用于484)可使主機(jī)與一臺(tái)正在執(zhí)行長(zhǎng)程序任務(wù)從機(jī)通信,探詢?cè)搹臋C(jī)是否已完成其操作任務(wù),僅在含有功能碼9的報(bào)文發(fā)送后,本功能碼才發(fā)送11讀取事件計(jì)數(shù)可使主機(jī)發(fā)出單詢問(wèn),并隨即判定操作是否成功,尤其是該命令或其他應(yīng)答產(chǎn)生通信錯(cuò)誤時(shí)12讀取通信事件記錄可是主機(jī)檢索每臺(tái)從機(jī)的Modbus事務(wù)處理通信事件記錄。 該域允許主機(jī)和終端檢查傳輸過(guò)程中的錯(cuò)誤。CRC 運(yùn)算時(shí),首先將一個(gè) 16 位的寄存器預(yù)置為全 1,然后連續(xù)把數(shù)據(jù)幀中的 8 位字節(jié)與該寄存器的 當(dāng)前值進(jìn)行運(yùn)算,僅僅每個(gè)字節(jié)的 8 個(gè)數(shù)據(jù)位參與生成 CRC,起始位和終止位以及可能使用的奇偶位都不影響 CRC運(yùn)算。 ⑵ 把數(shù)據(jù)幀中的第一個(gè) 8 位字節(jié)與CRC 寄存器中的低字節(jié)進(jìn)行異或運(yùn)算,結(jié)果存回 CRC 寄存器。 ⑹ 重復(fù)第2步到第 5 步來(lái)處理下一個(gè)八位,直到所有的字節(jié)處理結(jié)束。由于允許使用4000 英尺長(zhǎng)的電纜, RS485 收發(fā)器可以使用一個(gè)寬(-7V~+12V)共模方式范圍來(lái)調(diào)整零電位偏差。無(wú)線收發(fā)芯片nRF2401具有以下功能:⑴ 125個(gè)工作頻道,工作頻道之間的轉(zhuǎn)換時(shí)間小于200us⑵ 無(wú)線通信數(shù)據(jù)具有地址檢測(cè)和循環(huán)冗余檢查。⑻ 獨(dú)特的DuoCeiverT模式。大多數(shù)寄存器是可讀的。 表33 SPI指令格式指令名稱指令格式 操作R_REGISTER000A AAAA讀配置寄存器。讀操作全部從字節(jié)0 開(kāi)始。寫(xiě)操作從字節(jié)0 開(kāi)始。REUSE_TX_PL 1110 0011重新使用上一包有效數(shù)據(jù)??梢杂脕?lái)讀狀態(tài)寄存器。例如:RX_ADDR_P0寄存器的最低字節(jié)可以通過(guò)寫(xiě)一個(gè)字節(jié)給寄存器RX_ADDR_P0 來(lái)改變。可屏蔽中斷可以被IRQ中斷屏蔽。第4章 通訊系統(tǒng)實(shí)現(xiàn)的硬件設(shè)計(jì)該硬件系統(tǒng)主要包括電源模塊、單片機(jī)最小系統(tǒng)模塊、按鍵、溫度采集、數(shù)碼管和液晶顯示模塊、RS232轉(zhuǎn)RS485接口模塊、NRF24L01無(wú)線通訊模塊,結(jié)構(gòu)方框圖如圖所示, 單片機(jī)最小系統(tǒng)模塊主控MCU如圖41所示,A、B都采用STC89C52為主控MCU,C3(10uf),R1(10K)組成上電復(fù)位電路。⑷溫度采集單元溫度采集單元采用達(dá)拉斯公司生產(chǎn)的數(shù)字溫度傳感器DS18B20進(jìn)行數(shù)據(jù)采集,其采用單總線數(shù)據(jù)傳輸,具有硬件簡(jiǎn)單的優(yōu)勢(shì),而且數(shù)據(jù)采集周期短,精度高,量程大,可以達(dá)到室溫計(jì)的要求。為了使用方便,電源部分設(shè)計(jì)成無(wú)源方式,整個(gè)電路的供電直接從PC機(jī)的RS232接口中的DTR(4腳)和RTS(7腳)竊取。因此,電路中要說(shuō)D3起的作用是穩(wěn)壓還不如說(shuō)是限壓功能。由于本電路DTR和RTS都用于了電路供電,因此使用TX線和MAX232的另外一個(gè)通道及Q1來(lái)控制MAX485的狀態(tài)切換。第5章 通訊系統(tǒng)實(shí)現(xiàn)的軟件設(shè)計(jì)本設(shè)計(jì)要實(shí)現(xiàn)無(wú)線通訊系統(tǒng)對(duì)溫度的實(shí)時(shí)采集與顯示功能,除硬件外,還需要軟件來(lái)控制。:讀模擬量的命令號(hào)固定為03。本次設(shè)計(jì)中每個(gè)邏輯地址只需讀出一個(gè)模擬量。:表示數(shù)據(jù)的字節(jié)個(gè)數(shù),也就是數(shù)據(jù)1,2...n中的n的值。C ;第二個(gè)值[0B]表示11小時(shí);第三個(gè)值[24]表示36分鐘。程序流程圖如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ū)。接下來(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)度。程序流程圖如54所示:液晶初始化主程序開(kāi)始無(wú)線模塊初始化Timer0中斷開(kāi)始定時(shí)器0初始化按鍵掃描時(shí)鐘更新發(fā)送溫度信息中斷返回判斷中斷標(biāo)志Sendflag為1?無(wú)線接收中斷開(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ī)。除此之外還介紹了A機(jī)流程圖和說(shuō)明、B機(jī)流程圖和說(shuō)明。B機(jī)主要有:數(shù)碼管顯示模塊、52單片機(jī)芯片、18B20溫度傳感器、NRF24L01無(wú)線模塊、5v電池。 結(jié)果評(píng)價(jià)Modbus是在工業(yè)現(xiàn)場(chǎng)經(jīng)常用到的總線協(xié)議,已成為為通用工業(yè)標(biāo)準(zhǔn),所以基于Modbus協(xié)議去做這個(gè)設(shè)計(jì)很有現(xiàn)實(shí)意義。在此設(shè)計(jì)中也對(duì)NRF24L01無(wú)線模塊有了研究。⑶隨著信息高速發(fā)達(dá),已經(jīng)有更加優(yōu)化的通訊如:嵌入式工業(yè)以太網(wǎng)網(wǎng)絡(luò)通信、zigbee無(wú)線網(wǎng)絡(luò)通信、wifi無(wú)線網(wǎng)絡(luò)通信等等;關(guān)于通訊我們需要面向未來(lái)繼續(xù)努力。此外,感謝所有我的關(guān)心和幫助的老師及朋友,他們?cè)谖页砷L(zhǎng)的道路上給力我信心和勇氣,使我跨過(guò)一道道難關(guān)。sbit SCK =P3^6。sbit s2=P1^1。sbit s6=P1^5。//*********************************************NRF24L01*************************************define TX_ADR_WIDTH 5 // 5 uints TX address width 發(fā)送地址的寬度define RX_ADR_WIDTH 5 // 5 uints RX address width 接收地址的寬度define TX_PLOAD_WIDTH 4 // 4 uints TX payload 發(fā)送數(shù)據(jù)寬度define RX_PLOAD_WIDTH 4 // 4 uints RX payloaduchar const A_ADR[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}。sbit TX_DS =sta^5。 for(。y)。 lcden=1。 P0=date。 lcden=0。 write_(0x0c)。 for(bit_ctr=0。 // output 39。 // Set SCK high..上升沿給出數(shù)據(jù) date |= MISO。 CSN = 0。 // CSN high, terminate SPI munication return(reg_val)。 // ..and write value to it.. CSN = 1。 // Select register to write to and read status uchar for(uchar_ctr=0。 return(status)。 for(uchar_ctr=0。 //關(guān)閉SPI}//****************************************************************************************/*NRF24L01初始化//***************************************************************************************/void init_NRF24L01(void){ CE=0。 // 寫(xiě)本地地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, B_ADR, RX_ADR_WIDTH)。 // ,收發(fā)必須一致 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH)。 // 裝載接收端地址 此時(shí)是接受應(yīng)答信號(hào) SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH)。 // 大于10US}/****************************************************************************************************//*函數(shù):void SetRX_Mode(void)/*功能:數(shù)據(jù)接收配置 /****************************************************************************************************/void SetRX_Mode(void){ CE=0。 delayms(1)。 EA=1。 //觸發(fā)方式為負(fù)跳變觸發(fā) EX0 = 1。 // uchar RxBuf[4]={0}。/***************************************中斷處理**********************************************************/void nRF24L01_int(void) interrupt 0 //中斷說(shuō)明有數(shù)據(jù)接收到或其他中斷源 { EX0=0。// read receive payload from RX_FIFO buffer SPI_RW_Reg(WRITE_REG+STATUS,sta)。 write_(0x80+0x0a)。 write_data(table[ge])。 EX0=1。 num++。 min++。 day
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1