<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于SDLC協(xié)議的同步RS 485總線控制器的設(shè)計

          基于SDLC協(xié)議的同步RS 485總線控制器的設(shè)計

          作者: 時間:2009-07-17 來源:網(wǎng)絡(luò) 收藏
          在分布式系統(tǒng)中,多機相互通信是比較常見的一種方式,而通信的關(guān)鍵不僅是能夠傳輸數(shù)據(jù),更重要的是能夠準(zhǔn)確傳輸,并且能自動檢錯和用一定的方式來糾正,尤其在現(xiàn)在研發(fā)的導(dǎo)彈系統(tǒng)中,高可靠性與數(shù)據(jù)傳輸?shù)母咝允菍?dǎo)彈系統(tǒng)必備的條件。 485標(biāo)準(zhǔn)作為一種多點、差分?jǐn)?shù)據(jù)傳輸?shù)碾姎庖?guī)范,其接口大多連接成半雙工通信方式,他所具有的噪聲抑制能力、數(shù)據(jù)傳輸速率、電纜長度和可靠性,是其他標(biāo)準(zhǔn)無法比擬的,因而多次被用在現(xiàn)代武器裝備系統(tǒng)中。這里介紹的 485通信的實現(xiàn),即是某武器裝備上的一個重要單元。

          1 485介紹
          1.1 協(xié)議簡介

          數(shù)據(jù)鏈路控制(SDLC)是19世紀(jì)70年代IBM公司開發(fā)的傳輸協(xié)議,它取代了二進(jìn)制(BSC)協(xié)議。SDLC等價于網(wǎng)絡(luò)通信中的開放系統(tǒng)互連(0SI)模型的第二層。這一層協(xié)議保證數(shù)據(jù)單元從一個網(wǎng)絡(luò)端點成功到達(dá)下一個,流到正確位置。
          SDLC使用通信初級站一次級站模型。在IBM大型機網(wǎng)絡(luò)中,主機通常是初級站和工作站,其他設(shè)備為次級站,各個次級站有自身的地址。多個設(shè)備或次級站使用多點排列連接到一條公共線。SDLC也可用于點到點通信,它主要用在寬域網(wǎng)(WAN)的遠(yuǎn)程通信。
          SDLC是國際標(biāo)準(zhǔn)化組織(ISO)的標(biāo)準(zhǔn)數(shù)據(jù)鏈協(xié)議高層次數(shù)據(jù)鏈控制(HDLC)的基礎(chǔ)。它成為IBM的系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)(SNA)和系統(tǒng)應(yīng)用結(jié)構(gòu)(ASS)的一部分,現(xiàn)在仍然廣泛應(yīng)用于大型機數(shù)據(jù)鏈控制中。
          1.2 RS 485協(xié)議簡介
          電子工業(yè)協(xié)會EIA于1983年制訂并發(fā)布RS 485標(biāo)準(zhǔn),并經(jīng)TIA通信工業(yè)協(xié)會修訂后命名為TIA/EIA一485一A,習(xí)慣地稱之為RS 485。RS 485是為彌補Rs 232通信距離短、速率低等缺點而產(chǎn)生的。其只規(guī)定了平衡驅(qū)動器和接收器的電特性,而沒有規(guī)定接插件、傳輸電纜和應(yīng)用層通信協(xié)議。因而在當(dāng)時看來是一種相對經(jīng)濟,具有相當(dāng)高噪聲抑制,相對高的傳輸速率,傳輸距離遠(yuǎn)和寬的通信平臺。
          RS 485接口大多連接成半雙工通信方式,其主要特點有:平衡差分傳輸,多點通信;雙絞線傳輸。理想情況下最大輸入電流為0.18~110 mA(一7~+12 V);最大總線負(fù)載為32個單位負(fù)載(UL);最大傳輸速率為10 Mb/s;最大電纜長度為121 912 m(4 000 ft);差分輸入范圍為一7~+12 V。RS 485總線在通信距離為幾十米到上千米時,廣泛采用RS 485串行總線標(biāo)準(zhǔn)。RS 485采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力。加上總線收發(fā)器具有高靈敏度,能檢測低至200 mV的電壓,故傳輸信號能在千米以外得到恢復(fù)。RS 485采用半雙工工作方式,任何時候只能有一點處于發(fā)送狀態(tài),因此,發(fā)送電路需由使能信號加以控制。RS 485用于多點互連時非常方便,可以省掉許多信號線。應(yīng)用RS 485可以聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng),其允許最多并聯(lián)32臺驅(qū)動器和32臺接收器。

          本文引用地址:http://www.ex-cimer.com/article/163729.htm

          2 思想及原理
          眾所周知,經(jīng)常接觸的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)有星型、環(huán)型和總線型3種結(jié)構(gòu)。但是RS 485有其特殊的性能限制了該只能采用總線型結(jié)構(gòu),如圖1所示。

          在該中,采用多站點通信方式,它與一般的通信方式不同,這里采用的是主從結(jié)構(gòu)式,也就是說在這多點通信過程中,只設(shè)一個主站,其他都為從站。在通信過程中,從站只能與主站之間進(jìn)行數(shù)據(jù)交換,而從站與從站之間要進(jìn)行數(shù)據(jù)交z只能通過主站進(jìn)行中轉(zhuǎn)。每一個站都有他自身的站地址.通信開始所有從站處于接收狀態(tài),等待主站的呼叫。當(dāng)主站以命令包的形式向
          鏈路上某一從站發(fā)出命令時,所有從站接收命令幀中的站地址信息,并與自己站地址相比較,如果相符,說明主站在呼叫自己,從而接收并解析和執(zhí)行命令;之后從站應(yīng)向主站發(fā)回應(yīng)答信息數(shù)據(jù)后以結(jié)束本次通信,否則不予理睬,繼續(xù)等待接收。在通信結(jié)束后,從站繼續(xù)處于接收狀態(tài),等待命令。

          3 多站點實現(xiàn)方式
          3.1 工作方式
          常見的RS 485站點多為2個站點,這里給出多站點下RS 485的工作方式。RS 485多站通信方式一般分為正常模式、監(jiān)聽模式和廣播模式。
          RS 485多站通信過程中,主站與從站之間進(jìn)行數(shù)據(jù)交換,根據(jù)通信協(xié)議規(guī)定,每一個站都有自己的站地址。主站在發(fā)送數(shù)據(jù)時幀頭是從站的站地址,在正常模式下,從站只能接受到跟自己地址相匹配的一對一數(shù)據(jù),如果跟自己地址不匹配則只能等待,直到等到跟自己地址匹配再開始接收數(shù)據(jù)。而監(jiān)聽模式則是從站地址為0XFF,不管主站的地址是什么,從站都能收到數(shù)據(jù),這也就是所謂的監(jiān)聽。相對于監(jiān)聽來說廣播模式則相反,廣播模式是主站設(shè)置為0XFF,不管從站的地址是什么,從站都能收到主站發(fā)過來的數(shù)據(jù)。通過以上3種方式,Rs 485多站點通信方式的測試具有有效性與合理性。
          3.2 工作流程
          為了使通信協(xié)議簡單,通信可靠,在通信系統(tǒng)中常采用“主一從”及“命令一應(yīng)答”方式。即每次通信工作均由“主站”發(fā)出命令幀,由“從站”返回響應(yīng)幀。在定義通信協(xié)議時,還應(yīng)明確:明確幀的最大長度和最小長度;明確幀是周期或非周期傳輸;若為周期性,明確發(fā)送方周期時間及幀間最大時間間隔。另外,協(xié)議中還需定義通信失敗的處理方法,如:本幀通信出錯要求重試和重試的次數(shù);重試仍然出錯,則采用重新初始化通信接口或切換通信通道;如果上述兩點措施后仍然出錯,則報告通信故障,停止。為此該系統(tǒng)的工作流程如圖2所示。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();