基于C#和CWGraph控件实现的网络化频谱仪

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:xyy2017
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:硬件部分采用网络接口的频谱模块,软件基于TCP/IP协议,采用C#编程语言和CWGraph控件,实现SCPI规范的频谱程序,在实现频谱仪基本功能的基础上,根据实际使用情况,增加了频谱拍照、频谱录像与回放、频谱仪状态存储与调入等许多硬件频谱仪较难实现、而计算机程序容易实现的功能,构建成操作简便、功能齐备的网络化频谱仪。
  关键词: TCP/IP协议;CWGraph控件;SCPI规范;频谱仪
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)07-0057-02
  Abstract: On the hardware,the spectrum module with a RJ45 network interface is used. On the software, the spectrum program of the SCPI specification is implemented using C# programming language and CWGraph control based on TCP/IP protocol.On the base of the basic functions of spectrum analyzer, the spectrum analyzer have the functions of spectrum photo, spectrum recording and playback, saving and recalling the spectrum’s status and many other functions implemented with difficulty using hardware on the otherwise implemented with the computer program easily.So the easy to use and full-functions networking spectrum analyzer is implemented.
  Key words: TCP/IP Protocol;CWGraph control; SCPI specification; spectrum analyzer
  在测量领域,因为虚拟仪器的使用便捷性、功能扩充的简便性、复杂测量的自动化以及其他硬件仪表不具有的功能,虚拟仪器的使用日益普及,尤其是网络技术和虚拟仪器技术的结合,使虚拟仪器更加实用,功能更加强大。维护人员可以手持PAD随意移动,一边操作设备,一边观察频谱变化,为无线故障处理和装备维护提供了前所未有的便捷性。
  1 系统总体结构
  运行在计算机上的或运行在windows10平台PAD上的频谱仪程序,通过交换机读取频谱模块数据,频谱模块将设备侧传输过来的射频信号经过变换,转换成网络数据传输给频谱仪程序。
  2 软件系统总体功能结构
  网络化频谱仪最主要的工作集中于频谱仪程序设计部分,由于程序功能多,结构复杂,因此,软件的可靠性受到挑战。
  频谱仪是卫星通信的万用表,必须长时间不间断工作,这对程序的稳定性提出了更高的要求。
  3 软件具体实现
  1)总体结构
  频谱模块的连接与断开,采用裸SOCKET编程,没有采用传统的VISA技术实现[1],在socket编程中,增加了异常处理,保证了网络连接与断开的可靠性。在连接成功的同时,程序进行初始化。
  频谱迹线显示,采用timer,每隔200毫秒或100毫秒读取一次频谱数据,并显示在CWGraph上,频谱迹线显示、频率设置、扫宽设置、分辨率设置、视频设置、扫描时间设置、单扫连扫切换、迹线平均切换都是通过SCPI命令实现[2],简单点说,就是对频谱模块进行字符串的读写操作;MARKER设置是CWGraph的基本功能之一;峰值搜索、频谱拍照、频谱录像、频谱回放、状态保存与调入都是C#中比较容易实现的数值计算、文件读写等基本操作。
  2)网络连接部分的实现
  网络连接部分采用SOCKET连接,没有采用VISA连接,因此不需要安装VISA控件包。
  private void btn_spectrum_connect_Click(object sender, EventArgs e)
  { ipendpoint.Address = IPAddress.Parse(tbox_spectrum_ip.Text);
  ipendpoint.Port = int.Parse(tbox_spectrum_port.Text);
  socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  try { socket.Connect(ipendpoint); }
  catch (SocketException ex)
  {MessageBox.Show(ex.Message,"錯误!",MessageBoxButtons.OKCancel); }
  if(socket.Connected)
  { btn_spectrum_connect.Enabled = false; //控件初始化
  btn_spectrum_disconnect.Enabled = true;
  readout_x_data(); //读取频谱数据
  display_x_data(); //显示频谱迹线   controls_initial(); //控件初始化
  plot_initialization(); //plot初始化
  timer1.Start(); //启动定时器,定时绘制频谱迹线
  }
  }
  网络连接部分采用SOCKET连接,加入了异常处理,连接比较可靠。
  3)SCPI简介
  频谱仪编程涉及以下几个子系统及各自相应命令。
  具体SCPI语法及使用请参见模块或设备对应SCPI手册。
  4)CWGraph简介
  CWGraph相对应Measurement Studio[3]具有更加灵活的操纵性,特性更加丰富,可以根据开发者的要求设计出极具个性化的界面。
  首先在Visual C#的COM控件中添加该控件,在程序中申明控件对象,将对象与CWGraph元素关联,设置各控件的属性,CWGraph呈现不同特性。从而完成频谱显示和测量任务[4]。
  private CWUIControlsLib.CWPlot waveformPlot1; //在类成员申明处,申明变量
  ……
  waveformPlot1= axCWGraph1.Plots.Item("waveformPlot1"); //在类构造函数中实例化对象
  ……
  yAxis1.SetMinMax(yreflevel - 10 * yinterval, yreflevel);//函数中设置对象属性
  ……
  5)频谱显示部分的实现
  double[] temp_data = new double[601];
  if (socket.Connected)
  { socket.Send(Encoding.ASCII.GetBytes(":TRAC:DATA? TRACE1\n"));
  temp_data = GetData(); //接收频谱数据
  PlotData(temp_data); } //绘制频谱图
  PlotData()部分代码:
  waveformPlot1.PlotY(temp_data0, x_start_freq, (x_stop_freq - x_start_freq) / 600);
  //数据数组,X轴起点,增量.
  6)参数设置部分的实现
  设置中心频率部分代码如下所示:
  private void btn_centerfrequency_setup_Click(object sender, EventArgs e)
  { double center_freq1 = double.Parse(tbox_centerfrequency.Text);
  center_freq1 = center_freq1 * 1000000;
  ulong center_freq2 = Convert.ToUInt64(center_freq1);
  string center_freq3 = center_freq2.ToString();
  string center_freq4 = ":FREQ:CENT " center_freq3 ’\n’; }
  7)部分辅助功能的实现
  以峰值搜索为例,输入601个点的双精度数组,返回最大值的index对应的频率值。
  private ulong getmaxandindex(double[] data_y)
  {ulong temp_x=0;
  double temp_y=0;
  int index = -1;
  if (data_y.Length != 0)
  {temp_y = data_y[0];
  index = 0;
  for (int i = 0; i < data_y.Length;i )
  { if (temp_y < data_y[i])
  { index = i;
  temp_y = data_y[i]; }}
  temp_x = x_start_freq Convert.ToUInt32(index)*Convert.ToUInt32(x_span/600); }
  return temp_x; }
  4 结论
  SOCKET连接保证了程序的通用性,克服了VISA控件兼容性的缺点,在Windows XP到Windows 10的平台下均可以平稳运行;CWGraph克服了Measurement Studio中WaveFormGraph的局限性,可以灵活操作Graph的各个属性和特征,制作出个性化的频谱显示界面;兼容SCPI命令集合,增强了程序的通用性。该设备经过一段时间的使用感觉:硬件可靠,软件使用简便,性能比较稳定。
  参考文献:
  [1] 秦凡,韦高.基于VISA库及SCPI命令的儀器程控测量[J].现代电子技术,2011(11):118-120.
  [2] 顾大全,王晓,汪洋.基于VISA和SCPI的多点数据测量系统[J].仪表技术,2011(1):1-2.
  [3] 周建伙,顾申申.基于Visual C#和Measurement Studio混合编程的数据采集分析和绘图软件[J].工业控制计算机,2015(9):24-25.
  [4] 王国权,张怀存,王准.汽车操纵稳定性试验虚拟仪器设计[J].计算机仿真,2006(4):225-228.
其他文献
六月的一天骄阳似火.被收养人许岩与其生父母即送养人张有力夫妇满身是汗地来到山东省烟台市鲁东公证处.申请为发生在七十年代自己被许长久夫妇收养的事实办理收养公证。被收养
纪录片《乡村里的中国》采用四重叙事机制,透过农民视角,表达农民观点,思考农村问题,在破灭与反思里,展露着浓厚现代乡愁。通过多线穿插并行的锁链型叙事结构,记录三个线索人
研究了自组网中动态拓扑性能.通过选用最短路径和基于最短路径的最稳定路径作为路由度量,选用平均路径稳定时间和平均路径长度作为性能度量,考查节点密度、运动速度、暂停时
给出了一种新型的互补型电荷泵电路.采用正反馈技术,电路由CSMC 1.2 μm CMOS工艺实现,可工作在2V的低电压下.Spectre仿真结果显示,电荷泵的工作频率为100MHz时,功耗为0.08mW
以Pb(OOCCH3)2&#183;3H2O,Sc(OOCCH3)3&#183;xH2O和Ta(OC2H5)5为原材料,用Sol-Gel方法在Pt/Ti/SO2/Si(1 0 0)基片上成功地制备出厚度达1.5 μm,无裂纹的PbSc0.5Ta0.5O3(PST)
为了弥补目前火车车辆运行中人工统计调度工作量大、效率低等缺陷,提出了一种基于全球定位系统和惯性导航技术(GPS/INS)的火车安全告警系统的设计方案;重点讨论了GPS/INS在信息融合时所使用的卡尔曼滤波方法,避免了独立的惯性导航系统无限位置误差和GPS的1Hz慢速数据修正的问题;利用原有国家铁路网数据库进行数据修正,进一步提高了系统的精度.在此基础上设计的火车安全告警系统就能够简捷、准确地计算车
提出了一种基于准维多区模型的直喷式二甲醚发动机燃烧过程的数值模拟方法,其中喷雾模拟考虑了燃油分布、液滴蒸发和空气卷吸对喷雾混合的影响。自燃着火过程的模拟以二甲醚着
介绍了湿式电迁移烟气脱硫试验,利用S32在放电条件下能俘获电子形成负离子,并在电场作用下发生迁移的特性,将电晕放电和湿式水膜结合起来进行烟气脱硫.通过模拟试验,研究了模