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

正文內(nèi)容

基于rs485多機通信的軟件編程與系統(tǒng)調(diào)試畢業(yè)設(shè)計-資料下載頁

2025-06-27 18:33本頁面
  

【正文】 00無效 波特率 01—無效 b/s 10—7 位000 110 11—8 位001 150 停止位010 300 0—1 位011 600 1—2 位100 1200 奇偶校驗101 2400 00—無110 4800 01—奇校驗111 9600 10—無11—偶校驗功能:實現(xiàn)由 port 指定的 I/O 接口上進行的各種異步通信。說明:在使用串行口進行通行之前,必須對它初始化。函數(shù)中的 3 個參數(shù)意義如下所示。注意,bios()總是返回一個 16 位的二進制數(shù)值,它通常反映了串行口某些重要的狀態(tài)信息。返回值的高 8 位字節(jié)是描述線路狀態(tài)位的;返回值的低 8 位隨 cmd 而定,常用于描述調(diào)制器的狀態(tài)。cmd=1 時,低 8 位返回值是原發(fā)送的字符;cmd=2 時,低 8位返回的是由串行口收的字符;其他情況下,cmd 分別為 0,3 時低 8 位含義如表 43 所示。表 43 Bios()返回值高、低 8 位的意義高 8 位 低 8 位位 含義 位 含義15 超時出錯 7 線路信號被檢測14 發(fā)送移位寄存器空 6 振鈴指示13 發(fā)送保持寄存器空 5 數(shù)據(jù)裝置就緒12 間斷檢測錯誤 4 清除發(fā)送11 接收(幀)格式錯誤 3 線路信號變化10 接收奇偶錯誤 2 脈沖后沿振鈴檢測D7 D6 D5 D4 D3 D2 D1 D0249 接收重疊錯誤 1 數(shù)據(jù)裝置就緒變化8 接收數(shù)據(jù)就緒 0 清除發(fā)送信號變化利用 bios()函數(shù)采用查詢方式實現(xiàn)從串行口 1 發(fā)送一個字符功能的子函數(shù)sport()如下:void sport(char ch){ while(!(bios(3, 0, 0)amp。0x2022)){if (bios (1, ch, 0)amp。0x8000){ printf(“超時錯誤 \ n”)。 exit (1)。 }} }利用 bios()函數(shù)接收字符的功能,采用查詢方式實現(xiàn)從串行口 1 接收一個字符的子函數(shù) rport()的定義如下:rport( ){ int a。 while (!(bios (3, 0, 0)amp。0x0100)){ if (kbhit( )){ getch( )。 exit( 1)。 } a=bios(2, 0, 0)amp。0x00ff。 return (a)。}}該函數(shù)不斷查詢“數(shù)據(jù)準備就緒”位,若為 1,說明串口收到了一個字符的數(shù)據(jù);否則,用按下任一鍵退出程序的方法避免程序陷入死循環(huán)。這兩個函數(shù)將作為后面發(fā)送和接收文件程序中的子函數(shù)被反復(fù)調(diào)用 [3]。25 1 PC 機通信程序設(shè)計 PC 機通信程序采用 C 語言編程。主程序按照通信協(xié)議的要求,首先完成 8250 的初始化,以確定波特率和信息幀格式。然后根據(jù)鍵入的地址碼,呼叫從機,發(fā)出聯(lián)絡(luò)信號。呼叫成功后,輸入命令,若輸入的是 S 命令,則表示要求單片機向主機發(fā)送數(shù)據(jù),因此,PC 機調(diào)用 receivef 子程序準備接收從機發(fā)來的數(shù)據(jù),并存入盤上指定的文件中去。若輸入的是 R 命令,則表示主機要求從機準備接收信息,因此,PC 機調(diào)用 sendf 子程序?qū)斍氨P上的指定文件發(fā)送給從機。PC 機通信程序框圖如圖 43 所示 [3]:開始8250 初始化延時發(fā)送地址碼呼叫成功否?是從機發(fā)送?調(diào)接收文件子程序調(diào)發(fā)送文件子程序結(jié)束發(fā)送命令NYN Y(a)26 sendf打開文件發(fā)送字節(jié)數(shù)接收應(yīng)答信號發(fā)數(shù)據(jù)及累加和取文件句柄正確否?關(guān)閉文件NY(b)receivef建立文件收總字節(jié)數(shù)發(fā)“00”收數(shù)據(jù)及累加和發(fā)“FF”正確否?關(guān)閉文件NY(c)圖 43 PC 機通信程序框圖PC 機通信的主程序流程圖如圖 43(a)所示。PC 機發(fā)送子程序流程圖如圖 43(b)所示。PC 機接收子程序流程圖如圖 43(c)所示。 80C51 單片機通信程序設(shè)計 單片機的數(shù)據(jù)通信由串行口完成,定時器 TI 作為波特率發(fā)生器,其波特率要與 PC 機一致。數(shù)據(jù)的傳送格式為 1 位起始位、8 位數(shù)據(jù)位、作為地址/數(shù)據(jù)控制位的第 9 位和 1位停止位。采用中斷方式發(fā)送和接收數(shù)據(jù),定時器 TI 設(shè)置為工作模式 2,串行口設(shè)置為工作方式 3,由第 9 位判斷地址碼或數(shù)據(jù)。當某臺單片機與 PC 機發(fā)出的地址碼一致時,就發(fā)出應(yīng)答信號給 PC 機,而其他單片機則不發(fā)應(yīng)答信號,這樣在某一時刻 PC 機只與一臺單片機傳輸信息。這里給出 8051 主程序完成串行口和中斷的初始化后,則等待中斷,以及單片機中斷方式接收和發(fā)送數(shù)據(jù)的中斷服務(wù)程序。單片機主程序流程圖和中斷服務(wù)程序流程圖分別如圖 44 和 45 所示 [3]:27主程序開始定時器初始化,設(shè)置波特率初始化串行口控制寄存器開串行口中斷等待圖 44 下位單片機主程序流程圖28中斷服務(wù)程序是地址嗎?本機地址?發(fā)送命令?發(fā)字節(jié)數(shù)發(fā)回地址碼收累加和 發(fā)累加和收字節(jié)數(shù)發(fā)送數(shù)據(jù)并計算累加和接收數(shù)據(jù)并計算累加和發(fā)“FF”SM2=0發(fā)“00”SM2=1中斷返回正確否? 正確否?NNN NYYYY圖 45 單片機中斷服務(wù)程序流程圖29 程序調(diào)試 PC 機通信程序的調(diào)試此上位機采用的是查詢方式,其調(diào)試是在 keil C 里進行的。其步驟為:(1)新建工程(2)工程名30(3)選單片機(4)新建一個文件(5)導(dǎo)入文件到工程31(6)編譯由于 keil C 里沒有包括這個函數(shù)庫,則調(diào)不出來。32 80C51 單片機通信程序的調(diào)試此下位單片機采用的是中斷方式。下位單片機程序調(diào)試成功。33第五章 系統(tǒng)可靠性分析 串行通信可靠性評測指標通信的目的是要把消息正確而迅速地傳送到受信者,因此衡量傳輸質(zhì)量的指標有兩個:一是有效性;二是可靠性。有效性是指在一定條件下,單位時間內(nèi)所傳輸?shù)男畔⒘吭蕉嘣胶?,即傳輸效率要高。這主要是和傳輸介質(zhì)有關(guān),只要采用較好質(zhì)量的傳輸介質(zhì)即可解決??煽啃允侵笖?shù)據(jù)信息傳輸?shù)目煽砍潭?。由于傳輸電路不可能十分理想,加之存在干擾,以及信號失真等原因,因而傳輸中產(chǎn)生錯誤是不可避免的。我們希望傳輸中出現(xiàn)的錯誤越少越好,即可靠性要高。可靠性用誤碼率來衡量。當所傳送的二進制序列無限長時,被傳錯的碼元數(shù)與所傳碼元總數(shù)的比值為誤碼率,即二進制碼元在傳輸系統(tǒng)中被傳錯的概率。設(shè)被傳錯的碼元數(shù)為 N e,所傳二進制碼元總數(shù)為 N,則誤碼率 P e 為:P e=N e/N對可靠性的要求,因通信系統(tǒng)的任務(wù)不同而有所不同,不能籠統(tǒng)地說誤碼率越低越好。在傳輸速率一定的條件下,誤碼率越低,設(shè)備就越復(fù)雜。因此,在確定誤碼率指標時,要根據(jù)具體情況具體確定。對傳輸系統(tǒng)來說,要在滿足可靠性要求的前提下,盡量提高傳輸效率 [8]。 程序跳飛而造成總線沖突RS485 通信多用在主從式多機通信中,但其作為一種半雙工的通信方式,在一條通信電纜上掛許多設(shè)備時,一定要保證在總線上只有一臺設(shè)備處于發(fā)送狀態(tài),其他設(shè)備一定要處于接收狀態(tài);而一旦同時兩臺設(shè)備都處于發(fā)送狀態(tài),必然會出現(xiàn)總線沖突的現(xiàn)象。在工業(yè)控制中,設(shè)備大部分工作在強干擾的環(huán)境下,若僅用一條 I/O 口線控制 RS485 轉(zhuǎn)換器的收發(fā)狀態(tài),當程序?qū)⑥D(zhuǎn)換器控制端置“1”即轉(zhuǎn)入發(fā)送狀態(tài)后出現(xiàn)程序跳飛的情況,那么關(guān)閉發(fā)送口的指令就有可能不會被執(zhí)行,其它設(shè)備要發(fā)送數(shù)據(jù)時,會導(dǎo)致總線沖突,從而也使得整個總線無法正常工作。解決的關(guān)鍵是一定要控制好各臺設(shè)備的接收與發(fā)送狀態(tài),即 RS485 接口器的收發(fā)狀態(tài),要實現(xiàn)這種控制解決的方案是采取單穩(wěn)電路精確定時,如圖 51 所示。34RST3TRIG+4TRIG5Cext1Rext/Cext2Q 6Q 7ACD4538RCTXD 位MAX485位位位+5V圖 51 單穩(wěn)延時電路它能夠偵測到數(shù)據(jù)包到來,并及時將發(fā)送器由接收狀態(tài)轉(zhuǎn)為發(fā)送狀態(tài),等到數(shù)據(jù)包發(fā)完后,發(fā)送器又自動關(guān)閉轉(zhuǎn)為接收狀態(tài)。圖 51 所示的電路是用一個精密單穩(wěn)態(tài)定時器CD4538 與外部電阻電容分離元件構(gòu)成。圖 51 中 5 端是單穩(wěn)態(tài)定時器的低電平有效的觸發(fā)端,它與單片機或 PC 機的 TXD 端相連, 6 端是單穩(wěn)態(tài)定時器的輸出端,它接向MAX485 的控制端。當一幀數(shù)據(jù)的第一個數(shù)據(jù)起始位下降沿到來,觸發(fā)單穩(wěn)態(tài)定時器并使其進入暫態(tài),進而在 6 端輸出高電平使發(fā)送器處于發(fā)送狀態(tài),輸出高電平的時間則由R 與 C 決定,調(diào)節(jié) R 與 C 則可將時間控制在確保所有數(shù)據(jù)發(fā)完后關(guān)上發(fā)送器并使其處于接收狀態(tài),時序如圖 52 所示。TXD 位位位 D0 D1 D2 D3 D4 D5 D6 D7 位位位 位位位位MAX485位位位位位圖 52 單片機串行口發(fā)送端 TXD 上的信號與 MAX485 輸入端時序關(guān)系這樣即使當軟件由于干擾而出現(xiàn)跳飛的狀況,也可保證一段時間后發(fā)送器自動關(guān)閉,從而保證總線正常工作 [10]。 失效保護 RS 485 標準規(guī)定接收器門限為177。200 mV,這樣規(guī)定能夠提供比較高的噪聲抑制能力,但也帶來了一個問題:當總線電壓在士 200 mV 中間時接收器輸出狀態(tài)不確定。由于 UART以一個前導(dǎo)“0”觸發(fā)一次接收動作,所以接收器的不定態(tài)可能會使 UART 錯誤地接收一些數(shù)據(jù),導(dǎo)致系統(tǒng)誤操作。當總線空閑、開路或短路時都可能出現(xiàn)兩線電壓差低于 200 35mV 的情況,必須采取一定措施避免接收器處于不定態(tài)。傳統(tǒng)的作法是給總線加偏置,當總線空閑或開路時,利用偏置電阻將總線偏置在一個確定狀態(tài)(差分電壓200 m V),但這種方法仍然不能解決總線短路問題。為此,有些器件制造商將接收門限移到 200 mV/ 50 mV,巧妙解決了這個問題。例如 Maxim 公司 MAX3080 系列 RS485 接口,不但省去了外部偏置電阻,而且解決了總線短路時的失效保護問題 [5]。 通信協(xié)議提高通信可靠性在數(shù)據(jù)傳輸過程中,每組數(shù)據(jù)都包含著特殊的意義,這就是通信協(xié)議。主、分機之間必須要有協(xié)議,這個協(xié)議是以通信數(shù)據(jù)的正確性為前提的,而數(shù)據(jù)傳輸?shù)恼_與否又完全決定于傳輸途徑,即傳輸線。也就是說保證傳輸線狀態(tài)穩(wěn)定與通信協(xié)議有直接聯(lián)系。 t 0 t 1 t 2 t 3t 0t 0 t 1t 1t 2t 2t 3t 3uuu( a )( b )( c )t 0 t 1 t 2 t 3t 0t 0 t 1t 1t 2t 2t 3t 3uuu( a )( b )( c )t 4 t 5t 4t 4t 5t 5圖 53 總線狀態(tài)時序圖 圖 54 通信延時作用圖   在主從式通信系統(tǒng)中,把數(shù)據(jù)傳輸過程劃分成幾個階段來分析,如圖 53 所示。在圖53(a)中,t0t1 為主機向分機發(fā)送命令時間。在 t1 時刻,主機將差動輸出狀態(tài)轉(zhuǎn)換成輸入狀態(tài)。在圖 53(b)中,t2 之后的時間為分機向主機傳送數(shù)據(jù)階段,分機由輸入狀態(tài)變成輸出狀態(tài)。由于單片機多機通信大多采用異步串行方式,所以發(fā)送數(shù)據(jù)后的 TI 置位和接收機 RI 的置位時間有一段時間差,而且接收機在轉(zhuǎn)換到輸出狀態(tài)前要有一段圖 53 圖 54數(shù)據(jù)處理時間,這兩段時間加起來不可忽視。在圖 53(c)中,t1t2 即為這段時間,這時串行通信總線處于懸浮狀態(tài),極易拾取空間干擾信號,這時主機與另外的分機可能會同時得到一個無規(guī)則的數(shù)據(jù),對分機而言可能是錯誤指令,造成錯誤反應(yīng)。為此,在通信協(xié)議中加入延時階段,來解決此問題。如圖 54 所示:在圖 54(a)中,t1t3 為延時階段;在36圖 54(b)中 t2t4 為分機的延時階段;圖 54(c)中,t1t2 為分機的反應(yīng)時間。延時時間 T 的大小可按分機接到主機命令后的最長反應(yīng)時間的 2 倍來計算。延時階段的作用可用圖 54(c)來分析。在圖 54(c)中,主機控制數(shù)據(jù)總線的時間由 t1 延長到 t3,分機的反應(yīng)時刻為 t2,但分機有效數(shù)據(jù)從延時后的 t4 時刻開始,這樣在通信總線上有主機和某臺分機同時控制的一段時間即 t2t3 的時間段。由于主機和分機對總線控制的方向相同,所以不會對這兩臺機器的硬件造成影響,而且在 t1t2 階段,總線一直處于低阻狀態(tài),不會產(chǎn)生噪聲,所以總線的抗干擾能力也加強了,提高了通信的可靠性 [11]。通信協(xié)議實現(xiàn)的流程如圖 55 和圖 56 所示。開始設(shè)置分機號碼 n發(fā)
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1