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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 解決RS-232長距離串行通信的一種實(shí)用方法

          解決RS-232長距離串行通信的一種實(shí)用方法

          作者: 時(shí)間:2011-01-27 來源:網(wǎng)絡(luò) 收藏

          1 引言

          RS-232是早期為促進(jìn)公共電話網(wǎng)絡(luò)通信而制定的標(biāo)準(zhǔn),是目前異步通信中應(yīng)用最廣的標(biāo)準(zhǔn)總線,適用于數(shù)據(jù)終端設(shè)備和數(shù)據(jù)通信設(shè)備之間的接口。圖1所示為RS-232的簡單示意圖。然而,由于發(fā)送器(TXD)和接收器(RXD)之間具有公共信號(hào)地(GND),因此不能使用雙端信號(hào),這樣可能會(huì)使共模噪聲耦合到信號(hào)系統(tǒng)中。因此,設(shè)計(jì)者不得不使用較高傳輸電壓進(jìn)行傳輸,另外,這種傳輸方式的信號(hào)傳輸速度最高為20kB/s,最長距離僅為15m。顯然這樣的傳輸速度和距離已不能適應(yīng)現(xiàn)代網(wǎng)絡(luò)通信的要求,為了使許多自身帶有RS-232通信接口的設(shè)備能夠在盡量降低硬件成本和減輕軟件工作量的情況下實(shí)現(xiàn)長距離,筆者開發(fā)了一種利用同RS-232進(jìn)行接口來實(shí)現(xiàn)具有功能的長距離串行通信系統(tǒng)。

          2 20mA數(shù)據(jù)傳送信號(hào)原理

          20mA路串行接口也是一種應(yīng)用較廣的接口電路,其串行通信接口電路如圖2所示,由于其沒有形成正式標(biāo)準(zhǔn),因此一般計(jì)算機(jī)的數(shù)據(jù)傳送設(shè)備不具有這種接口。但其接口電路簡單,發(fā)送正、發(fā)送負(fù)、接收正、接收負(fù)四根線分別組成了輸入電流回路和輸出電流回路。在發(fā)送數(shù)據(jù)時(shí),根據(jù)數(shù)據(jù)的邏輯1和邏輯0來有規(guī)律的使回路形成通、斷狀態(tài)(圖2中用開關(guān)示意電流的有無)。電流環(huán)串行通信接口的最大優(yōu)點(diǎn)是低阻抗傳輸線對(duì)電氣噪聲不敏感,而且易實(shí)現(xiàn),且傳輸距離很長。

          3 電路環(huán)路同RS-232串行通信電路的接口

          結(jié)合電流環(huán)傳輸?shù)纳鲜鎏攸c(diǎn),在充分利用設(shè)備自身配有的RS-232串行通信口的基礎(chǔ)上,筆者設(shè)計(jì)了如圖3所示的將RS-232信號(hào)轉(zhuǎn)換成電流環(huán)來進(jìn)行信號(hào)傳輸?shù)慕涌陔娐贰D3中ICL232芯片用于完成RS-232接口信號(hào)同TTL電平信號(hào)間的調(diào)整,RS-232總線的發(fā)送端(TXD)信號(hào)經(jīng)ICL232芯片轉(zhuǎn)換成TTL電平信號(hào)后,經(jīng)光耦(4N25),由芯片SN75452進(jìn)行電流驅(qū)動(dòng)。在傳輸線上,以電流有無的方式傳輸數(shù)字信號(hào)。同理,在接收端,電流信號(hào)經(jīng)光耦及反向器整形,在形成TTL電平信號(hào)后,由ICL232芯片調(diào)理,然后將產(chǎn)生的標(biāo)準(zhǔn)RS-232電平信號(hào)送到RS-232串行通信的接收端(RXD),以完成串行通信的發(fā)送和接收。由圖3可知,電流環(huán)的傳送和接收是對(duì)地隔離的,即使傳輸線上受到強(qiáng)干擾,通信兩端帶有的標(biāo)準(zhǔn)RS-232通訊接口設(shè)備也不會(huì)受到影響,從而起到了通信線路同設(shè)備及設(shè)備之間的隔離,保證了設(shè)備的安全。采用這種方式傳送信號(hào)不但傳輸距離遠(yuǎn)(在9.6kB/s的速度下,傳輸距離可達(dá)1km以上),而且抗干擾能力極強(qiáng),即使在環(huán)境非常惡劣的條件下,也能保證通信的正常運(yùn)行。

          4 應(yīng)用實(shí)例

          在某五星級(jí)賓館的污水處理監(jiān)視系統(tǒng)中,將圖3中傳輸長線兩端的電路分別做成兩塊電路板,一塊置于計(jì)算機(jī)端,將計(jì)算機(jī)串行口信號(hào)轉(zhuǎn)換成電流環(huán)信號(hào)發(fā)送出去或?qū)㈦娏餍盘?hào)轉(zhuǎn)換成RS-232電平信號(hào)進(jìn)行信息接收;另一塊置于可編程控制器(PLC)端,用于將電流信號(hào)轉(zhuǎn)換成標(biāo)準(zhǔn)的RS-232信號(hào)送到PLC的串行口上或?qū)LC串口發(fā)出的信號(hào)轉(zhuǎn)換成電流,并通過電流回路發(fā)送出去,以實(shí)現(xiàn)計(jì)算機(jī)同PLC間的串行通訊,其系統(tǒng)工作圖如圖4所示。該方案的采用不但克服了單純使用RS-232串行通訊時(shí)的通導(dǎo)誤碼較多,以及在大功率電泵啟動(dòng)或出現(xiàn)雷電天氣時(shí)通訊完全失敗等現(xiàn)象的發(fā)生,同時(shí)避免了PLC及計(jì)算機(jī)的串行口經(jīng)常損環(huán)等問題,從而實(shí)現(xiàn)了隔離和長距離通訊的雙重功能。同時(shí)這種方法軟件編程簡單(同RS-232標(biāo)準(zhǔn)接口一樣),硬件成本很低(僅需要增加150元左右)。同目前解決長距離串行通信采用的RS-422總線相比,其性能價(jià)格比提高了數(shù)十倍甚至更多。目前,筆者設(shè)計(jì)此通訊接口已連續(xù)運(yùn)行兩年,沒有出現(xiàn)任何問題。

          另外,在空調(diào)電機(jī)氣參數(shù)自動(dòng)檢測(cè)系統(tǒng)中,大部分的電氣參數(shù)測(cè)試設(shè)備均留有RS-232接口,系統(tǒng)的中心控制計(jì)算機(jī)同各設(shè)備之間一般都通過串行口進(jìn)行信息交換和數(shù)據(jù)采集。但測(cè)試設(shè)備如功率儀、絕緣電阻測(cè)試儀、泄漏電流測(cè)試儀等均存在高壓信號(hào),這些信號(hào)在串行通信時(shí)經(jīng)常通過地線竄到計(jì)算機(jī)中,燒環(huán)計(jì)算機(jī)中的串行口。在這種情況下,采用圖3方案可實(shí)現(xiàn)計(jì)算機(jī)同各測(cè)試設(shè)備間公共地線的有效隔離,保證檢測(cè)設(shè)備和計(jì)算機(jī)的通信安全。

          采用圖3所示方案的電路結(jié)構(gòu)及實(shí)現(xiàn)原理比較簡單,同其它類型的串行通信總線如RS-422、RS-423、RS-449相比,該方案具有成本低(可借助設(shè)備原有的RS-232接口)、接口簡單、軟件支持性好,編程簡單,通用性及實(shí)用性強(qiáng)等優(yōu)點(diǎn),尤其在通信工程應(yīng)用領(lǐng)域中具有很高的實(shí)用價(jià)值。

          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理


          絕緣電阻測(cè)試儀相關(guān)文章:絕緣電阻測(cè)試儀原理
          網(wǎng)線測(cè)試儀相關(guān)文章:網(wǎng)線測(cè)試儀原理


          評(píng)論


          相關(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); })();