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

          新聞中心

          EEPW首頁 > 基于串口的信號源與解調(diào)器微機(jī)控制系統(tǒng)

          基于串口的信號源與解調(diào)器微機(jī)控制系統(tǒng)

          ——
          作者:康燦 時(shí)間:2008-01-10 來源:電子產(chǎn)品世界 收藏

          摘要:采用通用微機(jī),基于串口,實(shí)現(xiàn)對遙感衛(wèi)星地面接收系統(tǒng)中二次變頻本振信號源和衛(wèi)星下行數(shù)據(jù)高速解調(diào)器的控制,替代原有的人工設(shè)置的模式,實(shí)現(xiàn)了對信號源和解調(diào)器可靠、靈活、高效的控制。

          關(guān)鍵字:信號源;解調(diào)器;串口;變頻

          1 概述
            
            遙感衛(wèi)星地面接收系統(tǒng)的衛(wèi)星下行信號經(jīng)天線捕獲后,需經(jīng)高速解調(diào)器解調(diào),將衛(wèi)星模擬信號轉(zhuǎn)換為數(shù)字信號,再通過控制系統(tǒng)發(fā)送到記錄系統(tǒng)進(jìn)行數(shù)據(jù)的記錄與保存。在天線接收某顆衛(wèi)星數(shù)據(jù)之前,必須對解調(diào)器進(jìn)行星型設(shè)置,以使解調(diào)器工作頻率匹配此次接收工作對應(yīng)的衛(wèi)星數(shù)據(jù)頻率。當(dāng)有多個(gè)天線需同時(shí)接收多顆不同種類的衛(wèi)星時(shí),需事先設(shè)置好多臺解調(diào)器的匹配星型。通常,這項(xiàng)工作采用現(xiàn)場人工設(shè)置模式。
             
            同時(shí),接收系統(tǒng)的衛(wèi)星下行信道要采用二次變頻技術(shù),第一次變頻使用固定本振,第二次變頻本振則需要根據(jù)不同的衛(wèi)星跟蹤頻率做相應(yīng)的變化[1]。目前,在日常接收運(yùn)行工作中,對衛(wèi)星數(shù)據(jù)的接收必須在接收不同衛(wèi)星時(shí)人工計(jì)算出二次變頻本振頻率(衛(wèi)星跟蹤頻率減去第一次變頻固定頻率),然后手動設(shè)置二次變頻本振源輸出,每次跟蹤不同的衛(wèi)星必須到硬件設(shè)備現(xiàn)場直接操作信號源發(fā)生器。

              由于信號源以及解調(diào)器與衛(wèi)星地面接收控制系統(tǒng)并不在同一機(jī)房,而且信號源采用的是MARCONI公司的2024/2025信號源發(fā)生器,其面板和屏幕是全英文界面,操作比較復(fù)雜,所以人工設(shè)置模式下的工作效率低下且容易出錯(cuò),不利于對衛(wèi)星數(shù)據(jù)的成功接收。
           
             因此,開發(fā)了信號源與解調(diào)器微機(jī)控制系統(tǒng),以使用通用微機(jī)控制代替人工操作,保證衛(wèi)星數(shù)據(jù)可靠、高效、靈活的接收,并提升遙感衛(wèi)星地面站智能化、自動化的水平。

          2 系統(tǒng)硬件結(jié)構(gòu)

              系統(tǒng)硬件由通用微機(jī)、EIA RS-232C標(biāo)準(zhǔn)接口板、EIA RS-232C九針串口電纜接線方式和兩臺信號源發(fā)生器以及兩臺解調(diào)器組成,結(jié)構(gòu)框圖如圖1所示。

           
           
                           圖1 系統(tǒng)硬件結(jié)構(gòu)框圖

              其中微機(jī)主要用于運(yùn)行控制軟件,完成對信號源和解調(diào)器的控制操作;RS-232C接口板提供串口擴(kuò)展,使得一臺微機(jī)可以連接控制多臺硬件設(shè)備,保證硬件結(jié)構(gòu)的可擴(kuò)展性。
          因?yàn)橄到y(tǒng)對數(shù)據(jù)傳輸速率要求不高,且微機(jī)與信號源發(fā)生器和解調(diào)器的通信距離只有十米,所以通過EIA RS-232C 九針串口(DB9)接頭進(jìn)行微機(jī)與信號源發(fā)生器以及解調(diào)器的互相連接即可滿足通信要求,且傳輸電纜無需外接調(diào)制解調(diào)器(modem)。另外,微機(jī)控制系統(tǒng)需同時(shí)滿足對多臺硬件設(shè)備的控制,接頭電纜各針之間要求交叉連接,具體的接線方法如圖2所示。

           

              圖中,采用了RX與TX交叉互連,DCD、DSR與DTR交叉互連,RTS與CTS互連的接線方式,分別表示DCE(數(shù)據(jù)通訊設(shè)備)與DTE(數(shù)據(jù)終端設(shè)備)之間數(shù)據(jù)的傳送與接收,發(fā)送的請求與應(yīng)答,數(shù)據(jù)設(shè)備與終端的準(zhǔn)備情況。

          3 系統(tǒng)的軟件結(jié)構(gòu)

          {{分頁}}

          3.1 系統(tǒng)的軟件架構(gòu)與界面

              系統(tǒng)以通用微機(jī)和Windows操作系統(tǒng)為軟件平臺,采用友好易懂的中文界面;使用時(shí),操作人員只需輸入待接收衛(wèi)星的跟蹤頻率、功率和解調(diào)器星型,也可將所有可接收衛(wèi)星的跟蹤頻率、功率存入微機(jī)文檔,在接收某顆衛(wèi)星時(shí)選擇相應(yīng)的星型,系統(tǒng)自動匹配,無需操作人員手動設(shè)置。本振頻率的計(jì)算由控制軟件自動完成,本振頻率的輸出設(shè)置,解調(diào)器的星型匹配由微機(jī)與信號源、解調(diào)器通過串口通信實(shí)現(xiàn)。串口參數(shù)一般采用默認(rèn)值即可,操作人員無需更改。系統(tǒng)的控制界面如圖3所示。

            

          圖3 系統(tǒng)運(yùn)行控制界面

          3.2 串口通信簡介

              微機(jī)進(jìn)行數(shù)據(jù)傳送的方式通常有兩種:并行和串行。

              串行數(shù)據(jù)傳送是指數(shù)據(jù)在單條一位寬的傳輸線上,一位接一位的按順序分時(shí)發(fā)送的數(shù)據(jù)傳送方式。其特點(diǎn)是:數(shù)據(jù)按位傳送,并按位順序進(jìn)行,最少只需一根傳輸線即可完成,成本低。串行數(shù)據(jù)傳送的距離可以從幾米到幾千米。根據(jù)數(shù)據(jù)在傳輸線上的傳輸方向的不同,串行通信可分為單工、半雙工和全雙工三種方式[2]。

              在Windows下開發(fā)串口通信程序的方法有四種:一種是利用API的方法,即使用文件,串口也是文件;一種是利用Windows的讀寫端口函數(shù)或者開發(fā)驅(qū)動程序直接對串口進(jìn)行操作;一種是利用第三方或者自己編寫的通信類;一種是利用串口通信組件,如ActiveX控件MSComm。

              串口的使用主要包括下面幾點(diǎn):

              打開和關(guān)閉串口:Windows中串口被作為文件處理,串口的打開、關(guān)閉、讀寫等函數(shù)與操作文件的函數(shù)完全一致。在進(jìn)程中使用串口前,應(yīng)先打開通信資源,返回一個(gè)標(biāo)識該資源的句柄,線程正是通過使用該有效句柄來訪問相應(yīng)資源。為保證串口通信傳輸?shù)目煽啃裕诖蜷_一般設(shè)為非共享模式和可讀寫模式。

            設(shè)置串口狀態(tài):打開串行通信資源時(shí),系統(tǒng)將根據(jù)上次打開資源時(shí)設(shè)置的初始值配置資源,其中包括設(shè)置控制塊(DCB)值和用于I/O操作中的超時(shí)值。大多情況都是在使用串口前進(jìn)行串口的自主配置,包括串口號、數(shù)據(jù)位、校驗(yàn)位、停止位、發(fā)送與接收緩沖區(qū)大小等。

              串口的讀寫:對串口的讀寫可采用同步、異步、查詢、事件驅(qū)動等方式。同步方式是指必須完成了讀寫操作函數(shù)才返回,異步方式則在調(diào)用讀寫函數(shù)后立即返回,查詢方式是同步方式的一種派生,由線程定時(shí)查詢串口的接收緩沖區(qū),事件驅(qū)動方式則是設(shè)置串口事件,當(dāng)有事件發(fā)生時(shí)調(diào)用事件響應(yīng)函數(shù)進(jìn)行處理。

            串口的超時(shí)設(shè)置:在串口通信時(shí)如果數(shù)據(jù)傳輸突然中斷,對串口的讀寫操作可能會進(jìn)入無限期的等待狀態(tài),為避免這種情況發(fā)生,必須設(shè)置中口讀寫操作的等待時(shí)間,等待時(shí)間超過后,串口的讀寫操作將被主動放棄,這樣即使數(shù)據(jù)傳輸突然中斷程序也不會被掛起或阻塞。

          3.3 基于串口通信的控制軟件

              考慮到控制系統(tǒng)的實(shí)時(shí)性及高可靠性,控制軟件中的串行通信部分沒有采用功能更強(qiáng)的API方法,而是采用使用更簡便,封裝性更好,更易于調(diào)試的串口通信組件。這里采用的是MOXA公司的PCOMM庫。該庫提供了一系列串口控制函數(shù)[3],使用方便簡潔高效??刂葡到y(tǒng)中,主要使用單工的通信方式,由控制軟件向信號源及解調(diào)器發(fā)送控制字,并采用異步串口寫方式,在發(fā)送端發(fā)送控制字后立即返回,并通過設(shè)置串口超時(shí)以及查看硬件設(shè)備面板中的顯示信息來判斷控制字是否成功發(fā)送。軟件的流程圖如圖4所示。

          {{分頁}}

           

              相應(yīng)的PCOMM庫的串口函數(shù)如下所示:

          sio_open(int port):打開一個(gè)串口。
          sio_ioctl(int port, int baud, int mode):設(shè)置串口通信參數(shù),主要包括波特率,數(shù)據(jù)位,停止位,校驗(yàn)位。
          sio_flush(int port, int func):清空串口的輸入輸出緩沖區(qū)。
          sio_SetWriteTimeouts(int port,DWORD TotalTimeouts):設(shè)置串口寫操作的超時(shí)。
          sio_write(int port, char *buf, int len):使用串口發(fā)送數(shù)據(jù)。
          sio_close(int port):關(guān)閉某個(gè)已打開的串口。

              上述函數(shù)均返回int型數(shù)據(jù),若函數(shù)調(diào)用成功則返回0,否則返回一個(gè)負(fù)整數(shù);

              主控制函數(shù)編程部分實(shí)現(xiàn)代碼如下:

          void CSignalGenDlg::Send()
          {
           UpdateData(TRUE); //獲取從程序界面中輸入的串口號,串口參數(shù),超時(shí),頻率,功率,星型
          sprintf(m_szWriteBufferFre,"CFRQ:VALUE %sMHZ",m_strFre); //頻率控制字
          sprintf(m_szWriteBufferPower,"RFLV:VALUE %sDBM",m_strPower);//功率控制字
          sprintf(m_szWriteBufferSat1,"B %s E",m_strSat1);// 解調(diào)器1控制字
          sprintf(m_szWriteBufferSat2,"B %s E",m_strSat2);// 解調(diào)器2控制字
          int nRes=sio_open(m_Port);//打開串口
          if(0==nRes)
          {
            sio_ioctl(m_Port,B9600,P_NONE|BIT_8|STOP_1);//設(shè)置串口通訊參數(shù)
            sio_flush(m_Port,2); //清空輸入和輸出緩沖區(qū)
            sio_SetWriteTimeouts(m_Port,m_dwTimeouts);//設(shè)置串口寫操作的超時(shí)
            Sleep(50);
            sio_flush(m_Port, 2);
          sio_write(m_Port,m_szWriteBufferFre,m_strFre.GetLength());//發(fā)送信號源頻率控制字
            Sleep(100);
            sio_flush(m_Port, 2);
            sio_write(m_Port,m_szWriteBufferPower,m_strPower.GetLength());//發(fā)送信號源功率控制字
            Sleep(100);
          sio_flush(m_Port, 2);
            sio_write(m_Port,m_szWriteBufferSat1,m_strSat1.GetLength());//設(shè)置解調(diào)器1的星型
          sio_write(m_Port,m_szWriteBufferSat2,m_strSat2.GetLength());//設(shè)置解調(diào)器2的星型
            sio_close(m_Port);//關(guān)閉串口
           }
           else
            AfxMessageBox("串口打開失?。?);
          }

          4.小結(jié)

              串口是實(shí)現(xiàn)微機(jī)控制的很常用的一種通信接口。信號源與解調(diào)器微機(jī)控制系統(tǒng)正是基于串口,采用單工方式給信號源及解調(diào)器發(fā)送控制字,控制信號源的頻率和功率輸出,設(shè)置解調(diào)器的星型,從而由微機(jī)控制替代了人工操作,極大地提高了衛(wèi)星數(shù)據(jù)接收的成功率和可靠性,在衛(wèi)星地面站日常接收運(yùn)行工作中發(fā)揮了重要作用。

              此外,使用串口還能基于雙工方式,自定義串口協(xié)議進(jìn)行數(shù)據(jù)與文件的發(fā)送與接收[4]。遙感衛(wèi)星地面站小天線項(xiàng)目中的衛(wèi)星地面接收控制系統(tǒng)正是基于串口以及子自定義的串口協(xié)議,實(shí)現(xiàn)了對站控前端機(jī)、數(shù)據(jù)通道開關(guān)(DPS)、天線控制單元(ACU)等衛(wèi)星數(shù)據(jù)接收硬件設(shè)備的實(shí)時(shí)反饋控制,從而保證了對衛(wèi)星數(shù)據(jù)準(zhǔn)確、靈敏、智能化的接收。

          參考文獻(xiàn):
          [1] Dennis Roddy,衛(wèi)星通信,北京:清華大學(xué)出版社,2003.1
          [2] 李強(qiáng),賈云霞,Visual C++項(xiàng)目開發(fā)實(shí)踐,北京:中國鐵道出版社,2003.8
          [3] 張友生,遠(yuǎn)程控制編程技術(shù),北京:電子工業(yè)出版社,2002.1
          [4] 譚思亮,鄒超群等,Visual C++串口通信工程開發(fā)實(shí)例導(dǎo)航,北京:人民郵電出版社,2003.1


           

          模擬信號相關(guān)文章:什么是模擬信號


          c++相關(guān)文章:c++教程


          負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理


          關(guān)鍵詞:

          評論


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