當(dāng)前位置:首頁(yè) > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀] 在進(jìn)行基于GPIB總線接口的無(wú)線電信號(hào)監(jiān)測(cè)軟件的設(shè)計(jì)中,利用C++設(shè)計(jì)了GPIB接口卡,以增強(qiáng)系統(tǒng)對(duì)硬件接口的適應(yīng)性和擴(kuò)展性。

隨著通信技術(shù)的發(fā)展,無(wú)線電資源作為公共資源的一種,需要國(guó)家有關(guān)部門(mén)對(duì)其進(jìn)行有效的分配和監(jiān)控。設(shè)計(jì)界面友好、運(yùn)行穩(wěn)定、實(shí)時(shí)反應(yīng)迅速的監(jiān)測(cè)軟件是對(duì)無(wú)線電資源進(jìn)行有效配置的重要環(huán)節(jié),也是國(guó)家和公眾信息安全保障的重要環(huán)節(jié)。本文以Rohde-Schwarz公司的ESVN40作為頻譜監(jiān)測(cè)接收機(jī)來(lái)進(jìn)行無(wú)線電監(jiān)測(cè)軟件的設(shè)計(jì)。

1  系統(tǒng)的工作原理及組成

1.1 工作原理

  系統(tǒng)以工控機(jī)、監(jiān)測(cè)接收機(jī)及天線系統(tǒng)為主組建無(wú)線電監(jiān)測(cè)軟件系統(tǒng)。監(jiān)測(cè)接收機(jī)通過(guò)其上的天線接口來(lái)采集無(wú)線電信號(hào),然后通過(guò)監(jiān)測(cè)機(jī)自帶的通用接口總線(General-Purpose Interface Bus,GPIB),由安裝在工控機(jī)上的PCI插槽中的PCI-GPIB卡傳輸?shù)焦た貦C(jī),最后由工控機(jī)實(shí)現(xiàn)對(duì)采集到的信號(hào)樣本的顯示、分析和保存等操作功能。

1.2 系統(tǒng)的硬件組成

  無(wú)線電信號(hào)監(jiān)測(cè)系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。該系統(tǒng)由工控機(jī)、PCI-GPIB卡、GPIB接口電纜、ESVN40測(cè)試接收機(jī)和帶有天線選擇轉(zhuǎn)換器的9k~3 000MHz的多模天線系統(tǒng)組成。

 

1.3 ESVN40測(cè)試接收機(jī)的特點(diǎn)

  ESVN40作為功能較為強(qiáng)大的場(chǎng)強(qiáng)監(jiān)測(cè)及掃描接收機(jī),覆蓋了9k~2.75GHz的頻率范圍,可以完成以下的無(wú)線電監(jiān)測(cè)任務(wù):(1)單頻點(diǎn)的ITU(International Telecommunication Union)測(cè)量,包括電平、調(diào)制深度、頻率偏移、相位偏移及頻率補(bǔ)償量的測(cè)量。(2)單頻點(diǎn)的頻譜分析。(3)頻段的掃描。該方式支持多種掃描方式,以滿足用戶對(duì)掃描速度和返回?cái)?shù)據(jù)的要求。在與主控機(jī)的通信方式上ESVN40采用GPIB總線方式與主控機(jī)進(jìn)行控制信息和數(shù)據(jù)信息的交換,其控制較靈活。同時(shí)GPIB卡的接口方式使得主控機(jī)對(duì)遠(yuǎn)程設(shè)備的控制變得較為容易。

1.4 GPIB接口方式的優(yōu)越性

  GPIB工業(yè)總線是NI公司的產(chǎn)品。它在軟件方面提供了完全的兼容性,為用戶軟件的升級(jí)節(jié)約了成本,提高了開(kāi)發(fā)效率。GPIB系統(tǒng)的特點(diǎn)如下。

  (1)GPIB板卡軟件的成熟性。NI公司提供了具有良好兼容性能的API函數(shù)。NI提供的每一代驅(qū)動(dòng)軟件都保持與現(xiàn)有的NI-488應(yīng)用底層的兼容性。無(wú)論開(kāi)發(fā)者是使用NI-488.2的函數(shù),還是使用LabVIEW或LabWindows/CVI(C for Virtual Instruments)等應(yīng)用開(kāi)發(fā)環(huán)境,NI-488.2軟件結(jié)構(gòu)都能提供一種穩(wěn)定的GPIB控制。同時(shí)NI-488.2軟件也在不斷地更新,以取得最優(yōu)的性能。

  (2)系統(tǒng)的可擴(kuò)充性。如果要在該軟件的基礎(chǔ)上增加測(cè)向的功能,利用GPIB作為一種標(biāo)準(zhǔn)總線形式,則只要加入帶有GPIB接口的儀器,便可以將該系統(tǒng)擴(kuò)展為一個(gè)功能較完備的監(jiān)測(cè)系統(tǒng)。

1.5 軟件系統(tǒng)的設(shè)計(jì)

  本系統(tǒng)軟件在結(jié)構(gòu)上采用了模塊化的設(shè)計(jì)思想。同時(shí)為了提高系統(tǒng)的實(shí)時(shí)速度,充分利用了Windows軟件設(shè)計(jì)的多線程技術(shù),采用Windows的消息環(huán)來(lái)完成多個(gè)線程之間的信息交流。系統(tǒng)應(yīng)用了2個(gè)線程:(1)底層取數(shù)據(jù)線程,其流程如圖2所示。它用于實(shí)時(shí)地通過(guò)GPIB卡與ESVN40進(jìn)行控制與數(shù)據(jù)的采集。(2)上層用戶界面線程,其流程如圖3所示。它用于用戶界面的顯示,響應(yīng)用戶的測(cè)量任務(wù),對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行顯示、分析和保存等操作。這樣,可以使2個(gè)線程并行,從而提高整個(gè)軟件系統(tǒng)的實(shí)時(shí)響應(yīng)速度。取數(shù)據(jù)線程,采用VC++開(kāi)發(fā),這主要是考慮到C++語(yǔ)言易于實(shí)現(xiàn)對(duì)硬件的控制;而用戶界面處理的線程主要用Delphi來(lái)完成,主要是考慮到Delphi語(yǔ)言對(duì)界面的設(shè)計(jì)非常便利和靈活,可以大大提高開(kāi)發(fā)效率。

  二個(gè)線程的工作機(jī)理:在用戶程序初始化的過(guò)程中,創(chuàng)建以上的2個(gè)線程,同時(shí)它們都處于等待的狀態(tài)。當(dāng)用戶在程序界面開(kāi)始各種測(cè)量任務(wù)時(shí),由界面線程以消息的形式發(fā)給下層取數(shù)線程,各種任務(wù)號(hào)在消息參數(shù)中進(jìn)行傳遞。下層取數(shù)線程在接到任務(wù)消息后,根據(jù)具體的任務(wù),通過(guò)GPIB卡把任務(wù)翻譯為ESVN40的命令字符串傳送給接收機(jī),同時(shí)對(duì)測(cè)量參數(shù)進(jìn)行有針對(duì)性的設(shè)置,然后通過(guò)具體的命令啟動(dòng)儀器來(lái)完成測(cè)量任務(wù)。當(dāng)監(jiān)測(cè)到儀器把相應(yīng)的數(shù)據(jù)準(zhǔn)備好,且狀態(tài)寄存器標(biāo)識(shí)為有效后,通過(guò)GPIB卡讀入測(cè)量數(shù)據(jù)。讀數(shù)線程將讀到的數(shù)據(jù)進(jìn)行解析,然后放入某個(gè)內(nèi)存區(qū)中并以消息的形式通知用戶界面線程數(shù)據(jù)已經(jīng)準(zhǔn)備好,而數(shù)據(jù)塊的地址包含在消息參數(shù)中。用這種方式發(fā)送儀器控制命令和讀取儀器的測(cè)量結(jié)果,用戶界面線程負(fù)責(zé)完成相應(yīng)的測(cè)量結(jié)果的顯示、分析及保存。2條線程的處理在時(shí)間上完全分開(kāi),從而儀器在實(shí)時(shí)信號(hào)分析的時(shí)候,幾乎是在連續(xù)地進(jìn)行采樣,這樣大大提高了整個(gè)系統(tǒng)的實(shí)時(shí)響應(yīng)性能。

2 軟件設(shè)計(jì)中擴(kuò)展性問(wèn)題的解決方案

  在該系統(tǒng)中,為了加強(qiáng)系統(tǒng)的功能,就要對(duì)系統(tǒng)進(jìn)行擴(kuò)展,但是儀器與控制計(jì)算機(jī)不一定都采用GPIB接口。為了提高底層取數(shù)線程的可擴(kuò)展性,底層充分利用C++中類(lèi)的思想進(jìn)行設(shè)計(jì),為此可以創(chuàng)建一個(gè)通信接口類(lèi)ICommDevice作為通信接口。接口方法如下:

  (1)打開(kāi)一個(gè)通信接口。

    (2)向該通信接口寫(xiě)一個(gè)字符串。

  (3)從該通信接口讀一個(gè)字節(jié)。

  (4)從該通信接口讀一個(gè)字符串。

  (5)關(guān)閉已打開(kāi)的通信接口。

  在系統(tǒng)中,GPIB卡作為該通信接口類(lèi)的子類(lèi),其實(shí)現(xiàn)以上方法的關(guān)鍵代碼和具體方法的功能如下:

 ?、僭诖蜷_(kāi)GPIB卡的方法中,主要完成對(duì)GPIB卡的初始化,同時(shí)獲得ESVN40和GPIB卡的控制句柄。

  BOOL CGPIB∷Open(int BdIndx,int pad,int sad,int tmo,int eot,int eos)

{    if (m_bOpened==TRUE)

    return TRUE;

  m_ctrl=ibfind(″GPIB0″);//獲得GPIB卡的控制句柄

  if (m_ctrl<0)

     return FALSE;

  ibconfig(m_ctrl,IbcAUTOPOLL,0);//禁止AutoPoll

  eot=1;

  eos=0x0C0A;

  m_dev=ibdev(BdIndx,pad,sad,tmo,1,eos);

               //獲得ESVN40的控制句柄

  if (ibsta & ERR)

  { sprintf(ErrString,″打開(kāi)GPIB卡出錯(cuò)!錯(cuò)誤號(hào):ibsta=

               0x%x iberr=%dn″,ibsta,iberr);

     this->SetError(ErrString);

     return FALSE;

  }

  ibbna(m_dev,″GPIB0″);  //將ESVN40分配給GPIB卡

  setGPIBEos(0x0C0A);

  m_bOpened=TRUE;

  return m_bOpened;

  }

 ?、贕PIB類(lèi)中向儀器寫(xiě)字符串的方法主要用于完成從控制計(jì)算機(jī)向儀器發(fā)送控制字符串的功能,可以用異步或者同步方式進(jìn)行傳送。在寫(xiě)之前,要對(duì)超時(shí)進(jìn)行合理的設(shè)置。通常,如果字符串較長(zhǎng),可以把超時(shí)設(shè)定得大一些。其關(guān)鍵代碼如下:

int CGPIB∷SendData(const char*buf,int DataLength)

{     string tmpbuf;

  tmpbuf=buf;

  tmpbuf +=10;

  ibeot(m_dev,1);

  ibwrta(m_dev,(void*)tmpbuf.c_str( ),tmpbuf.size( ));

               //異步寫(xiě)字符串到儀器

  ibwait(m_dev,0x4100);   //等待寫(xiě)操作完成

  ibwait(m_dev,0x0000);   //讀出GPIB的狀態(tài)

  if(ibsta & ERR)

  {

              return FALSE;

  }

  return ibcntl;

  }

  ③從儀器接收字節(jié)的方法主要用于完成從ESVN40的數(shù)據(jù)緩沖區(qū)中讀入一個(gè)字節(jié)。該方法對(duì)于讀取儀器的狀態(tài)寄存器非常有用。

int CGPIB∷ReadChar(char*ch)

{

  if(!(m_bOpened)||(m_dev==NULL))

              return FALSE;

  int i=1;

  RecvData((void*)ch,i);

  return TRUE;

}

 ?、軓膬x器讀入數(shù)據(jù)的方法主要用于完成讀入儀器的測(cè)量結(jié)果。對(duì)于ESVN40而言,預(yù)期返回?cái)?shù)據(jù)的長(zhǎng)度與實(shí)際返回的數(shù)據(jù)長(zhǎng)度是有差別的。在設(shè)定預(yù)期返回?cái)?shù)據(jù)長(zhǎng)度時(shí),應(yīng)該盡量設(shè)置得大一些,以保證每次測(cè)量數(shù)據(jù)不被認(rèn)為丟失。對(duì)于超時(shí)參數(shù)的設(shè)置,與寫(xiě)操作的原則是相同的。該方法的實(shí)現(xiàn)代碼如下:

int CGPIB∷RecvData(void*Buffer,int& limitLength)

{     if(!(m_bOpened)||(m_dev==NULL))

              return FALSE;

  ibeot(m_dev,1);

  ibtmo(m_ctrl,T3s);

  ibtmo(m_dev,T3s);

  ibrda(m_dev,Buffer,limitLength);

               //從儀器異步讀數(shù)據(jù)到Buffer

  ibwait(m_dev,0x4100);  //等待異步讀完成

  int nLocCount=ibcntl;

  if(ibsta & ERR)

              return FALSE;

  ibwait(m_ctrl,0x0000);

  if(ibsta & ERR)

              return -1;

         return nLocCount;

  }

  ⑤關(guān)閉儀器的方法主要用于將儀器置為本地測(cè)量方式,同時(shí)使儀器處于離線狀態(tài)。其關(guān)鍵代碼如下:

BOOL CGPIB∷Close( )

{     if(!(m_bOpened)||(m_dev==NULL))

              return TRUE;

  ibloc(m_dev);  //置ESVN40為本地測(cè)量方式

  ibonl(m_dev,0); //置ESVN40為離線方式

  if(ibsta & ERR)

              return FALSE;

  m_bOpened=FALSE;

  ibonl(m_ctrl,0);  //設(shè)置GPIB卡為OFF-Line狀態(tài)

  return 1;

}

3  程序運(yùn)行界面

  該系統(tǒng)可以進(jìn)行無(wú)線電信號(hào)的監(jiān)測(cè),其中包括某個(gè)頻點(diǎn)的電平、調(diào)整深度、頻率補(bǔ)償和頻率偏移等。此外,系統(tǒng)還能對(duì)單頻點(diǎn)的頻譜進(jìn)行分析,對(duì)給定的頻段進(jìn)行信號(hào)掃描。在實(shí)際應(yīng)用中,采用雙線程的工作機(jī)理,可以很大程度地提高數(shù)據(jù)采集的速度。系統(tǒng)對(duì)信號(hào)進(jìn)行頻率掃描時(shí)的運(yùn)行界面如圖4所示。在界面中,由于ESVN40只是返回掃描駐點(diǎn)的電平值,因此在軟件中對(duì)該掃描功能進(jìn)行了擴(kuò)充。在界面上只要設(shè)定一個(gè)電平閾值(用戶可以認(rèn)為超過(guò)該閾值的電平,可能存在信道占用)和一個(gè)用戶認(rèn)為每個(gè)信道應(yīng)該占用的最大帶寬或法定的最大帶寬,則通過(guò)軟件設(shè)計(jì)對(duì)采樣的樣本進(jìn)行分析后,可以對(duì)占用信道的中心頻點(diǎn)進(jìn)行初步定位。用戶根據(jù)在測(cè)量結(jié)果表中顯示的值,可以進(jìn)一步分析該中心頻點(diǎn)的頻譜或測(cè)量其他的調(diào)制特征值??梢?jiàn),通過(guò)虛擬儀器的思想,將軟硬件結(jié)合使用,可以極大地?cái)U(kuò)充硬件的功能。

 4  結(jié)束語(yǔ)

  在系統(tǒng)的開(kāi)發(fā)中,采用了C++中類(lèi)的思想,使得系統(tǒng)具備了良好的擴(kuò)展性,對(duì)于不同的儀器接口方式,可以最大限度地利用已開(kāi)發(fā)的代碼段。同時(shí),也增強(qiáng)了系統(tǒng)的可維護(hù)性,在實(shí)際應(yīng)用中取得了不錯(cuò)的效果。在采用了雙線程工作機(jī)制后,充分發(fā)揮了儀器的性能,比單線程的速度提高了50%。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉