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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 計算機監(jiān)控接口技術(shù)研究

          計算機監(jiān)控接口技術(shù)研究

          作者: 時間:2013-05-03 來源:網(wǎng)絡(luò) 收藏


          圖1 典型的監(jiān)控系統(tǒng)硬件結(jié)構(gòu)

          4 串行接口和網(wǎng)口之間的軟件轉(zhuǎn)換

          無論是串行通訊還是網(wǎng)絡(luò)通訊,都不能保證其數(shù)據(jù)傳輸平穩(wěn)流暢,即數(shù)據(jù)有間斷性。應(yīng)該根據(jù)具體的情況,將一定時間內(nèi)的不連續(xù)的數(shù)據(jù)合并成一個完整的數(shù)據(jù)包,進行校驗分析。將屬于一個數(shù)據(jù)包的不連續(xù)的數(shù)據(jù)分開,或?qū)⒉粚儆谝粋€數(shù)據(jù)包的數(shù)據(jù)合并處理都是錯誤的,這是由于軟件處理不當所造成的嚴重的通訊故障。實際的數(shù)據(jù)流示例如圖2所示。受控機的軟件一般采用低級語言編寫,這可以通過設(shè)置循環(huán)次數(shù)來收集數(shù)據(jù),如果在設(shè)置的最大的時間片內(nèi)沒有新的數(shù)據(jù)到達,則當前數(shù)據(jù)為一個數(shù)據(jù)包,作為整體進行處理。在主控機端則可以簡單地通過定時器來實現(xiàn)。對于串行通訊,等待的時間片由字節(jié)數(shù)來計算,并考慮波特率和具體的串口類型。


          圖2 實際數(shù)據(jù)流

          帶有RS232和RS485的受控機(CPU模塊),其工作原理就是收集具有RS485接口的執(zhí)行器和傳感器中的數(shù)據(jù),通過軟件轉(zhuǎn)換成主控機的RS232可以接受的數(shù)據(jù)格式;或接受主控機命令,發(fā)送至執(zhí)行器。由于RS485只能單向傳輸,通過RS485發(fā)送完數(shù)據(jù)后,必須立即轉(zhuǎn)換為接收狀態(tài),以處理響應(yīng)的數(shù)據(jù)。其軟件設(shè)計必須處理好圖1的實際問題,這是通訊的關(guān)鍵。典型的和比較通用的數(shù)據(jù)發(fā)送和接收程序可參考文獻[2]。

          由于一般配備網(wǎng)口(RJ45)和串口(RS232),所以,用軟件來實現(xiàn)網(wǎng)口和串口之間的數(shù)據(jù)轉(zhuǎn)換,是一個安全、可靠和方便的手段,避免了硬件的設(shè)備故障的可能性??梢酝ㄟ^Visual Basic語言,采用串行通訊控件MsComm32.OCX和網(wǎng)絡(luò)通訊控件WinSock.OCX[3][4]來實現(xiàn),兩個控件的收發(fā)數(shù)據(jù)的變量類型都應(yīng)設(shè)置為變體Variant,因為在數(shù)據(jù)包中存在“00”字節(jié)是常有的事,如果設(shè)置為字符串String,“00”字節(jié)后面的數(shù)據(jù)將被截去。MsComm控件是通過Input和Output屬性來收發(fā)數(shù)據(jù)的,應(yīng)將接收閾值設(shè)為1,即一有數(shù)據(jù),立即響應(yīng),當發(fā)生數(shù)據(jù)到達事件comEvReceive時,通過Input屬性直接讀取數(shù)據(jù),然后通過Winsock的SendData立即轉(zhuǎn)發(fā)(見圖3-1所示)。對于WinSock控件,當發(fā)生DataArrival事件時,用GetData函數(shù)讀取,然后通過MsComm控件的Output屬性立即轉(zhuǎn)發(fā)(見圖3-2所示)。

          串口的通訊屬性必須與對等設(shè)備的通訊屬性一致。至于網(wǎng)口,可以有兩種方式與對等設(shè)備建立連接,如果對等設(shè)備以服務(wù)器方式工作,則以客戶機方式(Winsock.Connect)建立連接(預先設(shè)置服務(wù)器的IP地址和端口號);如果對等設(shè)備以客戶機方式工作,則以服務(wù)器方式(Winsock.Listen)偵聽,等待客戶機的連接請求并作出相應(yīng)的處理。

          5 遠程測試模型及分析

          監(jiān)控系統(tǒng)進行測試的最理想的地理位置,一般是現(xiàn)場,因為只有在現(xiàn)場,才能觀察各種復雜的因素。有的監(jiān)控模塊可以通過撤換法進行查錯,然而,大型設(shè)備,如大型柴油發(fā)電機組,難以搬遷,也無法替換。如何采用一種簡潔高效的方式,對現(xiàn)場監(jiān)控系統(tǒng)和設(shè)備進行檢測?文獻[5]介紹了一個“智能設(shè)備的通用測試”軟件,通過串口進行測試,只能在近距離或現(xiàn)場進行。借助上文的串口和網(wǎng)口的轉(zhuǎn)換軟件,可以實現(xiàn)遠距離現(xiàn)場測試。遠程測試模型如圖4所示,服務(wù)器和客戶機都是普通的PC機,均運行RS232/RJ45轉(zhuǎn)換軟件。


          圖4 遠程測試模型

          工程師以服務(wù)器方式設(shè)置RS232/RJ45轉(zhuǎn)換軟件,將此信息及服務(wù)器的IP地址與偵聽端口以電子的方式通知用戶,用戶根據(jù)工程師的指示,將RS232/RJ45轉(zhuǎn)換軟件設(shè)置成客戶機方式,并向服務(wù)器發(fā)送連接請求,如此建立連接,同時,用戶連接好客戶機與被測對象之間的通訊電纜,接通電源,將客戶機的串口參數(shù)與被測對象的串口參數(shù)設(shè)為一致。服務(wù)器上運行兩個獨立的軟件,另一個為“智能設(shè)備的通用測試”[5]軟件,兩個軟件之間沒有共享的數(shù)據(jù)區(qū),只通過接口發(fā)生關(guān)系:轉(zhuǎn)換軟件將網(wǎng)口接收的數(shù)據(jù)發(fā)往串口COM1,測試軟件在串口COM2接收到數(shù)據(jù)后進行分析處理,并通過COM2發(fā)送命令至COM1;轉(zhuǎn)換軟件又從COM1接收數(shù)據(jù),通過網(wǎng)口將命令轉(zhuǎn)發(fā)到客戶機,從而抵達被測對象。

          對于測試結(jié)果,如果屬于軟故障,即非設(shè)備故障,工程師可以通過電子協(xié)作指示用戶對系統(tǒng)加以調(diào)整或維護;如果是硬故障,即設(shè)備故障,工程師可以根據(jù)具體情況,有準備地去現(xiàn)場解決問題,節(jié)省人力物力。

          6 結(jié)束語

          計算機監(jiān)控系統(tǒng)廣泛應(yīng)用于眾多領(lǐng)域,接口的可靠性則關(guān)系到系統(tǒng)的生命。本文充分研究了各種常用接口的硬件性能和相關(guān)的軟件特性,以及接口之間的硬件轉(zhuǎn)換和軟件轉(zhuǎn)換,最后設(shè)計了一個遠程測試模型,并在局域網(wǎng)上通過了測試,取得了良好的效果。通過因特網(wǎng)進行遠程測試,可以節(jié)省大量的人力物力,不失為一種高效的測試手段。

          參考文獻
          [1] 大漠電子?http://www.demo.com.cn/,2003
          [2] 馬玉春,趙躍華?高山無人站監(jiān)控系統(tǒng)設(shè)計與開發(fā)?電腦開發(fā)與應(yīng)用[J]?13(9):35, 2000
          [3] 汪曉平,鐘軍等?Visual Basic網(wǎng)絡(luò)高級編程[M],北京:人民郵電出版社,2001
          [4] MSDN Library Archive?http://msdn.microsoft.com/archive/,2003
          [5] 王建明,馬玉春?智能設(shè)備的通用測試?工業(yè)控制計算機[J]?15(12):10, 2002(end)

          上一頁 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); })();