当前位置:首页 > 通信技术 > 通信技术
[导读] 在进行基于GPIB总线接口的无线电信号监测软件的设计中,利用C++设计了GPIB接口卡,以增强系统对硬件接口的适应性和扩展性。

随着通信技术的发展,无线电资源作为公共资源的一种,需要国家有关部门对其进行有效的分配和监控。设计界面友好、运行稳定、实时反应迅速的监测软件是对无线电资源进行有效配置的重要环节,也是国家和公众信息安全保障的重要环节。本文以Rohde-Schwarz公司的ESVN40作为频谱监测接收机来进行无线电监测软件的设计。

1  系统的工作原理及组成

1.1 工作原理

  系统以工控机、监测接收机及天线系统为主组建无线电监测软件系统。监测接收机通过其上的天线接口来采集无线电信号,然后通过监测机自带的通用接口总线(General-Purpose Interface Bus,GPIB),由安装在工控机上的PCI插槽中的PCI-GPIB卡传输到工控机,最后由工控机实现对采集到的信号样本的显示、分析和保存等操作功能。

1.2 系统的硬件组成

  无线电信号监测系统的结构框图如图1所示。该系统由工控机、PCI-GPIB卡、GPIB接口电缆、ESVN40测试接收机和带有天线选择转换器的9k~3 000MHz的多模天线系统组成。

 

1.3 ESVN40测试接收机的特点

  ESVN40作为功能较为强大的场强监测及扫描接收机,覆盖了9k~2.75GHz的频率范围,可以完成以下的无线电监测任务:(1)单频点的ITU(International Telecommunication Union)测量,包括电平、调制深度、频率偏移、相位偏移及频率补偿量的测量。(2)单频点的频谱分析。(3)频段的扫描。该方式支持多种扫描方式,以满足用户对扫描速度和返回数据的要求。在与主控机的通信方式上ESVN40采用GPIB总线方式与主控机进行控制信息和数据信息的交换,其控制较灵活。同时GPIB卡的接口方式使得主控机对远程设备的控制变得较为容易。

1.4 GPIB接口方式的优越性

  GPIB工业总线是NI公司的产品。它在软件方面提供了完全的兼容性,为用户软件的升级节约了成本,提高了开发效率。GPIB系统的特点如下。

  (1)GPIB板卡软件的成熟性。NI公司提供了具有良好兼容性能的API函数。NI提供的每一代驱动软件都保持与现有的NI-488应用底层的兼容性。无论开发者是使用NI-488.2的函数,还是使用LabVIEW或LabWindows/CVI(C for Virtual Instruments)等应用开发环境,NI-488.2软件结构都能提供一种稳定的GPIB控制。同时NI-488.2软件也在不断地更新,以取得最优的性能。

  (2)系统的可扩充性。如果要在该软件的基础上增加测向的功能,利用GPIB作为一种标准总线形式,则只要加入带有GPIB接口的仪器,便可以将该系统扩展为一个功能较完备的监测系统

1.5 软件系统的设计

  本系统软件在结构上采用了模块化的设计思想。同时为了提高系统的实时速度,充分利用了Windows软件设计的多线程技术,采用Windows的消息环来完成多个线程之间的信息交流。系统应用了2个线程:(1)底层取数据线程,其流程如图2所示。它用于实时地通过GPIB卡与ESVN40进行控制与数据的采集。(2)上层用户界面线程,其流程如图3所示。它用于用户界面的显示,响应用户的测量任务,对实时数据进行显示、分析和保存等操作。这样,可以使2个线程并行,从而提高整个软件系统的实时响应速度。取数据线程,采用VC++开发,这主要是考虑到C++语言易于实现对硬件的控制;而用户界面处理的线程主要用Delphi来完成,主要是考虑到Delphi语言对界面的设计非常便利和灵活,可以大大提高开发效率。

  二个线程的工作机理:在用户程序初始化的过程中,创建以上的2个线程,同时它们都处于等待的状态。当用户在程序界面开始各种测量任务时,由界面线程以消息的形式发给下层取数线程,各种任务号在消息参数中进行传递。下层取数线程在接到任务消息后,根据具体的任务,通过GPIB卡把任务翻译为ESVN40的命令字符串传送给接收机,同时对测量参数进行有针对性的设置,然后通过具体的命令启动仪器来完成测量任务。当监测到仪器把相应的数据准备好,且状态寄存器标识为有效后,通过GPIB卡读入测量数据。读数线程将读到的数据进行解析,然后放入某个内存区中并以消息的形式通知用户界面线程数据已经准备好,而数据块的地址包含在消息参数中。用这种方式发送仪器控制命令和读取仪器的测量结果,用户界面线程负责完成相应的测量结果的显示、分析及保存。2条线程的处理在时间上完全分开,从而仪器在实时信号分析的时候,几乎是在连续地进行采样,这样大大提高了整个系统的实时响应性能。

2 软件设计中扩展性问题的解决方案

  在该系统中,为了加强系统的功能,就要对系统进行扩展,但是仪器与控制计算机不一定都采用GPIB接口。为了提高底层取数线程的可扩展性,底层充分利用C++中类的思想进行设计,为此可以创建一个通信接口类ICommDevice作为通信接口。接口方法如下:

  (1)打开一个通信接口。

    (2)向该通信接口写一个字符串。

  (3)从该通信接口读一个字节。

  (4)从该通信接口读一个字符串。

  (5)关闭已打开的通信接口。

  在系统中,GPIB卡作为该通信接口类的子类,其实现以上方法的关键代码和具体方法的功能如下:

  ①在打开GPIB卡的方法中,主要完成对GPIB卡的初始化,同时获得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,″打开GPIB卡出错!错误号: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;

  }

  ②GPIB类中向仪器写字符串的方法主要用于完成从控制计算机向仪器发送控制字符串的功能,可以用异步或者同步方式进行传送。在写之前,要对超时进行合理的设置。通常,如果字符串较长,可以把超时设定得大一些。其关键代码如下:

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( ));

               //异步写字符串到仪器

  ibwait(m_dev,0x4100);   //等待写操作完成

  ibwait(m_dev,0x0000);   //读出GPIB的状态

  if(ibsta & ERR)

  {

              return FALSE;

  }

  return ibcntl;

  }

  ③从仪器接收字节的方法主要用于完成从ESVN40的数据缓冲区中读入一个字节。该方法对于读取仪器的状态寄存器非常有用。

int CGPIB∷ReadChar(char*ch)

{

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

              return FALSE;

  int i=1;

  RecvData((void*)ch,i);

  return TRUE;

}

  ④从仪器读入数据的方法主要用于完成读入仪器的测量结果。对于ESVN40而言,预期返回数据的长度与实际返回的数据长度是有差别的。在设定预期返回数据长度时,应该尽量设置得大一些,以保证每次测量数据不被认为丢失。对于超时参数的设置,与写操作的原则是相同的。该方法的实现代码如下:

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);

               //从仪器异步读数据到Buffer

  ibwait(m_dev,0x4100);  //等待异步读完成

  int nLocCount=ibcntl;

  if(ibsta & ERR)

              return FALSE;

  ibwait(m_ctrl,0x0000);

  if(ibsta & ERR)

              return -1;

         return nLocCount;

  }

  ⑤关闭仪器的方法主要用于将仪器置为本地测量方式,同时使仪器处于离线状态。其关键代码如下:

BOOL CGPIB∷Close( )

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

              return TRUE;

  ibloc(m_dev);  //置ESVN40为本地测量方式

  ibonl(m_dev,0); //置ESVN40为离线方式

  if(ibsta & ERR)

              return FALSE;

  m_bOpened=FALSE;

  ibonl(m_ctrl,0);  //设置GPIB卡为OFF-Line状态

  return 1;

}

3  程序运行界面

  该系统可以进行无线电信号的监测,其中包括某个频点的电平、调整深度、频率补偿和频率偏移等。此外,系统还能对单频点的频谱进行分析,对给定的频段进行信号扫描。在实际应用中,采用双线程的工作机理,可以很大程度地提高数据采集的速度。系统对信号进行频率扫描时的运行界面如图4所示。在界面中,由于ESVN40只是返回扫描驻点的电平值,因此在软件中对该扫描功能进行了扩充。在界面上只要设定一个电平阈值(用户可以认为超过该阈值的电平,可能存在信道占用)和一个用户认为每个信道应该占用的最大带宽或法定的最大带宽,则通过软件设计对采样的样本进行分析后,可以对占用信道的中心频点进行初步定位。用户根据在测量结果表中显示的值,可以进一步分析该中心频点的频谱或测量其他的调制特征值。可见,通过虚拟仪器的思想,将软硬件结合使用,可以极大地扩充硬件的功能。

 4  结束语

  在系统的开发中,采用了C++中类的思想,使得系统具备了良好的扩展性,对于不同的仪器接口方式,可以最大限度地利用已开发的代码段。同时,也增强了系统的可维护性,在实际应用中取得了不错的效果。在采用了双线程工作机制后,充分发挥了仪器的性能,比单线程的速度提高了50%。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

-- VMLY&Rx助力雅培瞬感突破品类圈层,场景化诠释健康控糖生活方式 上海2022年9月6日 /美通社/ -- 现下的流行趋势,追剧要追甜宠剧,收获糖点;饮食则追低糖型,收获健康。中商产业研究院的数据显示,...

关键字: 医疗器械 TIMES 监测系统 血糖

摘 要:从配电网设备外部环境关键指标的选取入手 , 阐述了配电网设备运行环境综合在线系统的构架 ,通过监测配电设备运行 时的温度及机械振动等关键运行参数 , 以便及时了解配电设备的运行情况 ,为设备状态检修提供参考...

关键字: 配电设备 运行参数 监测系统

一直以来,控制器都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来运动控制器的相关介绍,详细内容请看下文。

关键字: 运动控制器 控制器 总线

长期以来,我国服装企业的生产大多以量制胜,生产过剩的商品满足了供应链管理粗俗阶段的要求。企业生产过多也会产生高库存的困境,目前这种情况早已在中国许多服装企业中脱颖而出。企业的高库存状况也意味着企业的许多资产被占有,不容乐...

关键字: RFID技术 射频识别 监测系统

线束行业目前主流的方案以脉冲控制为主,此方案具有接线繁多、布线繁杂、抗干扰性差等缺点。总线方案具有接线方便、布线美观、数据交互速度快、状态监控实时性好等技术优势。

关键字: 英威腾 端子插壳机 总线

摘要:首先概述了电动汽车电池系统的安全注意事项,其次说明了电动汽车对电池管理系统的要求,然后详细分析了电池管理系统的监测原理及具体实现单元,最后出于对电池管理系统中监测单元的高可靠性要求提出了冗余设计。

关键字: 电池管理 监测系统 通信环网

除总线之外,内存也存在类似的带宽概念。其实所谓的内存带宽,指的也就是内存总线所能提供的数据传输能力,但它决定于内存芯片和内存模组而非纯粹的总线设计,加上地位重要,往往作为单独的对象讨论。SDRAM、DDR和DDRⅡ的总线...

关键字: 总线 内存 带宽

美国内华达州拉斯维加斯2022年1月5日 /美通社/ -- 国际消费类电子产品展览会(CES)即将恢复举办,镜泰(Gentex)(NASDAQ: GNTX)也将回归参展。镜泰公司将再次在展会上突显其在汽车行业日臻成熟驾驶...

关键字: Gen 监测系统

(全球TMT2022年1月6日讯)国际消费类电子产品展览会(CES)恢复举办,镜泰(Gentex)也回归参展。镜泰(Gentex)是一家技术公司,长期为全球汽车、航空航天和消防行业提供光电产品。它为几乎所有主要汽车制造...

关键字: 监测系统

在PCI总线中有三类设备,PCI主设备、PCI从设备和桥设备。其中PCI从设备只能被动地接收来自HOST主桥,或者其他PCI设备的读写请求;而PCI主设备可以通过总线仲裁获得PCI总线的使用权,主动地向其他PCI设备或者...

关键字: PCI 桥设备 总线

通信技术

120595 篇文章

关注

发布文章

编辑精选

技术子站

关闭