使用任意波形(或函数)发生器产生想要的任意信号
本文主要记述,本人使用Tektronix(泰克)公司的 AFG3101 型号的任意函数发生器(Arbitrary Function Generator,AFG) 和AWG520型号的任意波形发生器 (Arbitrary Waveform Generator,AWG)的一些经验方法,如有不当,还请指出,谢谢!
主要有两种方法生成,一是使用 Tektronix(泰克)提供的 ArbExpress 软件创建生成波形,二是使用Matlab,这里主要讲述如何将数据转换成任意波形(或函数)发生器支持的波形文件。
Tektronix(泰克)公司为信号发生器提供了波形和函数发生器软件,ArbExpress软件是Tektronix(泰克)公司提供的一款用于创建编辑和生成波形文件的软件,可到官网下载(ArbExpress),目前最新的是ArbExpress3.1,需要登录才能下载。此外,还需要安装Microsoft .NET Framework Version 1.1 或更高版本,软件才能运行,安装过程中会提示安装TekVISA ,是关于示波器的一款软件,根据需要决定是否安装。
注:ArbExpress软件的具体使用方法,在此并不介绍,请参见软件手册。
下图2-1显示如何使用Equation Editor 创建生成 频率为2MHz的正弦波的绝对值波形:
图 2-1 使用ArbExpress的Equation Editor生成
点击OK后, 生成下图2-2所示波形:
图2-2 生成的 abs(sin) 波形
这时候,还可以利用软件提供的波形编辑功能(旋转,相加,相乘,归一化等等)对波形进行操作,得到想要的波形。之后点击File -> Save as 选择保存文件类型,对于AFG选择 '.tfw',对于AWG选择 ‘.wfm’ 。
当然如果已经连接仪器,还可以右击直接发送波形至信号发生器,如下图2-3所示:
图2-3 直接发送波形至仪器
ArbExpress虽然提供了 公式 产生信号的功能,但用起来并不是很方便,实际上对于初学者很不方便,编译时只给出错误的行,不给原因,而且还有好多莫名其妙的错误,都不知道错误的原因,也许是本人没有深刻理解它的使用方法。
Matlab是一款功能强大的数值分析计算软件,其在科学研究与工程上的重要性在此不再重复。新建Matlab 脚本(Script)文件,输入下面的代码,生成abs(sin)信号:
t = 0:0.001:1;
t = t*(1e-6);
f = 1e6;% 1MHz
x = abs(sin(2*pi*f*t));
plot(t,x)
title('abs(sin),f=2 MHz,Number of Samples:1001')
图2-4 Matlab 生成abs(sin)信号
但是如何将生成的数据传送给仪器呢?
ArbExpress 软件原本提供了,Matlab与仪器交互的方法,可是,按照该软件提供的方法,并不能实现,原因及自己提出的解决方法见第4小节:4. 将数据转换成仪器支持的文件格式。
Tektronix(泰克)公司为其信号发生器产品提供了多种交互方式,可以通过 GPIB,USB,LAN口等方式。下面主要介绍如何通过 USB 和 网线 连接 电脑(PC)及 仪器,以便将数据发送到仪器。其它方式,参见软件手册。
以AFG3101为例,将USB接入AFG3101的后面板的USB的接口中,另一端插入电脑的USB口。
打开ArbExpress 软件,按下图3-1所示步骤连接仪器:
图3-1 使用USB连接仪器与PC机
然后定位到自己产生的波形文件(tfw格式)在PC机上的的位置,将文件直接拖拽至EMEM或USER1~USER4即可,如下图所示
图3-2 传送波形文件至任意函数发生器AFG3101
等待传送完成,仪器上变得到了你的波形,如下图所示:
图3-3 传送至信号发生器的波形
还可以直接在软件中直接调整波形参数,然后点击“Apply”即可更改。
也可以通过 图2-3 所示的方式 将波形文件发送至仪器。
工具:交叉网线、PC机、信号发生器。
交叉网线不同于一般的网线,只是水晶头接法不一样。关于交叉网线的制作,自行搜索,也可参见:交叉网线制作图解。
下面以AWG520为例。
用交叉网线连接AWG520与PC机,接着设置PC机IPV4地址,由于比较简单,这里不进行介绍,这里设置IPV4地址为:192.168.0.1
然后在 仪器前面板 找到“Utility ”按钮,如下图红色圈1 所示:
图3-4 AWG520 前面板
然后按下图,按下Comm红色圈所对应的按钮,弹出下图所示界面,根据需要修改红色框中的IP地址(这里用图示默认值):
图3-5 Comm界面
接着,按下 上图3-5 中 右侧 Execute Ping ... 所对应的按钮,进行 Ping测试,弹出如下界面:
图3-6 Ping 测试界面
在上图红色框中输入PC机IPV4地址,如上图所示,然后按下 OK对应的按钮,进行 测试,如果 提示:“...... is alive” ,则表明连接正常。
当然也可以在PC机中打开 DOS 界面,输入:ping 192.168.0.2 进行测试。
测试成功后,打开ArbExpress 软件,点击:File Transfer & Control,然后右击下图3-7中的AWG Ethernet,选择Set IP Address,在弹出的对话框地址栏中输入仪器的IPV4地址,192.168.0.2。然后点击Connect,然而,却不能连接,会弹出错误提示窗口。
最后发现,原来是地址填错了,是的,正确的应该是:192.168.000.002,如下图3-7所示,哦,我晕
图3-7 使用网线连接仪器并传输波形文件
连接上后,按上图,把波形文件(如上图中的 sinc.wfm)拖拽到仪器中即可把文件传输到AWG520。
下面还需要在AWG520上选择加载波形。
首先,按下仪器前面板上的 Setup 按钮(图3-4 中红色圈2),然后,按下屏幕右下角的AWG 对应的按钮,在按下右侧Load 对应按钮,在弹出的界面中,选择波形文件,如下图中的 sinc.wfm,然后,按下 OK 即可。
图3-8 选择波形文件
加载后的波形如下图3-9 所示:
图3-9 自己创建的sinc 波形
下面讲述如何将,数据转换成,ArbExpress支持的波形文件。
虽然可以很方便的用Matlab产生想要的任意波形数据,但并不能直接传送给仪器,除非,使用ArbExpress提供的Matlab工具,找到你的ArbExpress安装路径,进入Tools下的Matlab文件夹(如 E:\Program Files (x86)\Tektronix\ArbExpress\Tools\Matlab),将此路径添加进 Matlab的搜索路径 ,或设置为Matlab的当前工作路径。然后在Matlab中建立脚本文件,举例如下:
% example of connect to AFG3101 with USB
%% New Session
[ SessionID , StatusMsg ] = NewSession ('USB::0x0699::0x0342::C021173::INSTR', 'USB');
%% Generate waveform
t = 0:0.001:1;
t = t*(1e-6);
f = 1e6;% 1MHz
x = abs(sin(2*pi*f*t));
plot(t,x)
title('abs(sin),f=2 MHz,Number of Samples:1001')
%% Send Data
Data = x;
[Status,StatusMsg] = SendWfm (SessionID, 'example.wfm', Data, 1001);
%% Close Session
CloseSession(SessionID) ;
图4-1 Matlab错误提示
但是,在Tools\Matlab下可以找到 matarb.dll 和matarb.mexw32 文件,如下图所示:
图4-2 ArbExpress 提供的Matlab 工具
可以看出matarb.mexw32文件为32位版本,而本人所用Matlab为64位版本,于是重新安装32位版本的Matlab。
-------------待补充
应该是版本不兼容的问题。根据手册说明,Matlab版本应该为6的,以上的需要重新编译。本人在XP系统上安装了Matlab6.5 测试,仍然报错。而该工具没有提供源代码文件(虽然手册中说有),无法重新编译生成新的文件,无奈之下,放弃了这种方法。如有知道如何解决这个问题的大牛,还请指出解决方法,非常感谢!
于是乎,想到能否通过数据格式转换,将数据转换成ArbExpress支持的文件。
后来,发现ArbExpress,支持csv 和 txt文件,于是,将波形文件保存成csv文件,用记事本打开后,如下图,所示:
图4-3 一种csv格式
很容易可以看出规律,数据 第一列为 时刻,第二列为信号值。于是乎想到,将数据保存成类似的格式,然后导入ArbExpress中,再保存成其它格式的文件,一试,再试,屡试不爽
如可以在用于生成波形的Matlab文件中加入:signal = [t' x']; save signal.txt -ascii signal 如下面的Matlab代码中红色加粗部分所示:
t = 0:0.001:1;
t = t*(1e-6);
f = 1e6;% 1MHz
x = abs(sin(2*pi*f*t));
plot(t,x)
title('abs(sin),f=2 MHz,Number of Samples:1001')
% Save to txt
signal = [t' x'];
save signal.txt -ascii signal
图4-4 打开txt文件,选择格式
之后,可以看到波形,如下图所示
图4-5 signal.txt 中的波形
然后 Flie -> Save as,保存成你想要的文件即可,当然,在保存之前,你还可以对波形进行修改。
如有更好的方法,欢迎交流!谢谢!