论文部分内容阅读
摘要:硬件部分采用网络接口的频谱模块,软件基于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.
关键词: 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.