GPIB板安装使用初步.docx
- 文档编号:12806691
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:14
- 大小:36.57KB
GPIB板安装使用初步.docx
《GPIB板安装使用初步.docx》由会员分享,可在线阅读,更多相关《GPIB板安装使用初步.docx(14页珍藏版)》请在冰点文库上搜索。
GPIB板安装使用初步
封面
作者:
PanHongliang
仅供个人学习
GPIB板的安装与使用初步
传统的电子电路实验,需要手动调节示波器,信号发生器,交直流电压电流表等测试仪器。
完成一个电路的测量,需要人一直在旁边实时记录数据,再用手工处理分析数据,绘制图表,显然耗费时间和人力。
现代较新的测量设备都带有通讯接口,可以和计算机直接连接,在计算机特定的软件环境下,通过编程对仪器进行自动控制,让信号发生器自动产生激励输入,同时将示波器放在输出端,或电路中其它支路的输出上,将示波器采集到的信号自动输入计算机,由计算机完成实验数据的处理和图表绘制。
根据这种思想可以设计一个用于实验电路的自动测量装置,可以自动实现各种激励波形输入,以及扫频。
然后自动采集示波器的输出,完成对频率稳定度,幅度特性曲线,相位特性曲线,谐波分量分析,功率谱密度以及分布显示等常用的实验测量指标。
更一般地,凡是MATLAB信号处理工具箱能够完成的信号处理,它都可以完成,因为软件中已经将MATLAB内核嵌入。
本节将以应用实例介绍GPIB卡应用。
1.了解GPIB
1)GPIB是什么
GPIB(GeneralPurposeInterfaceBus),通用接口总线,广泛应用于仪器和计算机制造行业,其标准为IEEE-488。
2)GPIB角色
GPIB设备的角色有三种:
讲者、听者、控者。
讲者发送数据到一个或多个听者,听者从讲者接受数据,而控者管理总线上的信息流。
GPIB设备的角色是可以随时间而变的。
例如:
一个由GPIB连接的示波器在接受设置命令时,其角色是听者,而在它将数据传送至计算机时,则是一个讲者。
控者在GPIB系统中的任何时刻都是必需的,它的任务是确保系统中只有一个讲者(某时刻),同时保证听者能够正确接收数据。
因此,对一个特定时刻,GPIB系统中只能有一个控者。
但控者可以将其控制权移交给另一设备(必须有控制能力)。
GPIB板(可插入计算机扩展槽)通常被默认地设置为GPIB系统控者。
3)GPIB电缆
GPIB为8位并行传输总线,包括:
8位数据线,3个握手信号线,8个控制线以及电缆保护线和地线。
下表列出了GPIB中的主要信号线:
表1GPIB电缆中引脚的定义
引脚
说明
DIO1-DIO8
8位数据线
NRFD
设备未准备好接受数据
DAV
指示接受数据的设备可以接受某数据
NDAC
听者通知控者,数据已读入,可以将该数据清除
ATN
提示各设备,数据线上为设备地址
IFC
通知其他各设备“我是控者”,兼GPIB复位功能
SRQ
设备服务请求
REN
撤消设备或加入设备
EOI
用于标记讲者的信息串结尾或由控者发布一个轮询命令
4)PIB连接规则
GPIB总线上最多允许15个设备,而连线的最大总长度为20M,相邻设备的长度不超过4M(平均长度不大于2M),另外,GPIB系统在使用时,要求系统中三分之二的设备处于电源开启状态。
GPIB系统的连线方式有:
线性连接和星形连接。
5)GPIB地址
使用GPIB时,应注意GPIB设备的地址设置(与连线方式无关)。
一般,GPIB控者的默认地址是0,听(讲)者的地址可以是1到30。
在作为控者的GPIB设备上,不仅要设置控者本身的地址,还要设置与之相连的设备的地址,控者访问某设备时,需要首先给出该设备的地址。
作为听(讲)者的设备,只需设置
自身的地址。
例如,在一个GPIB系统中,控者是计算机中的PCI-GPIB卡,而听者(讲者)是若干台仪器(如5台示波器),那么,PCI-GPIB卡的地址为0,而示波器的地址可以是1到5,计算机通过GPIB控制示波器或读示波器的数据时,其程序必须获得该示波器的地址,否则无法正确地通信。
2.硬件安装
1)PCI-GPIB板的安装
步骤如下:
1关闭计算机
2打开机箱
3将PCI-GPIB板插入PCI插槽,用螺钉锁住PCI-GPIB板
4装好机箱
2)连接线的安装
将GPIB连接电缆的一头连接到示波器背后的GPIB接口,另一头连接到PCI-GPIB板
(已安装在计算机上)的GPIB接口,并旋紧接头上的螺栓。
3.软件安装
1启动计算机后,将GPIBSoftwareDisk#1插入软盘驱动器
2运行Disk#1上的程序setup
3根据提示输入命令,直至安装完毕,注意:
当安装程序询问启动计算机时是否运行驱动程序(即修改Autoexec.bat)时,应选择“是”。
4重新启动计算机
4.计算机上设置GPIB
1)CBCON32----配置GPIB软件
在安装了GPIB软件后,程序组内可以找到GPIB-Library工程,该工程中已有三个程序:
CBCONF32、CBTEST32、CBIC32。
运行CBCONF32,屏幕显示CBCONF32提示画面,回车后,出现CBCONF32的主菜单:
CBCONFMAINMENU
EditGPIB0BoardOptions
EditGPIB1BoardOptions
SaveCurrentConfiguration
TypeofDisplay=color
ExitfromIBCONFProgram
选择EditGPIB0BoardOptions并回车,出现GPIB0菜单:
GPIB0Menu
GPIB0BoardOptions
Dev1DeviceOptions
Dev2DeviceOptions
Dev3DeviceOptions
Dev4DeviceOptions
Dev5DeviceOptions
Dev6DeviceOptions
Dev7DeviceOptions
Dev8DeviceOptions
Dev9DeviceOptions
Dev10DeviceOptions
Dev11DeviceOptions
00more00
选择GPIB0BoardOptions,屏幕显示:
GPIB0BoardOptionsMenu
BoardNameisGPIB0
BoardisINSTALLED
BoardTypeisISA-GPIB
BoardSlot=---
BaseI/OAddress=300
InterruptLevel=7
DMAChannel=---
PrimaryGPIBAddress=0
SecondaryGPIBAddress=NONE
Timeoutsetting=10secs
EOSbyte=0
TerminateReadonEOS=NO
SetEOIWithEOSonWrite=NO
TypeofCompareonEOS=7Bit
00more00
这个菜单用于设置GPIB板的各项参数,这里仅修改第三项,将ISA-GPIB改为PCI-GPIB,修改后返回GPIB0菜单,再选择Dev1DeviceOptions并回车,屏幕出现Dev1DeviceOptions菜单:
Dev1OptionsMenu
NameofDevice=Dev1
PrimaryGPIBAddress=1
Timeoutsetting=10secs
EOSbyte=0
TerminateReadonEOS=NO
SetEOIWithEOSonWrite=NO
TypeofCompareonEOS=7Bit
SetEOIonLastByteofWrite=YES
SerialPollTimeout=1sec
Forcere-addressing=NO
ReturntoBoardMenu
该菜单用于设置设备1(即示波器)的参数。
可以使用其默认值。
5.在示波器上设置GPIB
打开示波器,待初始化完毕后,按UTILITY键,在屏幕右侧找到“选件”,按对应的键,再找到“GPIB设置”并按对应键,屏幕右侧就出现两个工程:
“地址”和“总线连接”,然后输入地址(这里,应输入1),并将“总线连接”设置为“讲--听”。
6.利用GPIB卡将示波器中的数据送入MATLAB
较新版本的MATLAB中已集成有仪器控制工具,在GPIB的支持下,可与泰克仪器进行通信。
下面简要说明。
打开工具箱中的InstrumentControl组件(如果已安装的话),点击其中的Tutorials项,InstrumentControlToolboxTutorials菜单即被打开,选择GPIB选项卡,再点击BinaryRead/Write按钮,再连续点击Next,文本窗中的文字告诉我们在MATLAB中如何操作GPIB设备。
下面是一个将示波器上的时域波形送如计算机中的MATLAB,再在MATLAB中做付立叶变换的程序例子(在MATLAB6.0上验证):
%ADemoofGPIBCommunicationandSignalProcessing
%2003.2.18
%
%*****************************************************************************
%ReadfromtheTDS210Oscilloscope
%*****************************************************************************
In_Buffer_Size=2048。
%输入缓冲区长度
Gpib_obj=gpib('ni',0,1)。
%定义GPIB对象
set(Gpib_obj,'InputBufferSize',In_Buffer_Size)。
%设置缓冲区
fopen(Gpib_obj)。
%打开GPIB对象
fprintf(Gpib_obj,'Data:
SourceCH1')。
fprintf(Gpib_obj,'Data:
EncdgSRpbinary')。
fprintf(Gpib_obj,'Data:
Width1')。
fprintf(Gpib_obj,'Data:
Start1')。
fprintf(Gpib_obj,'Curve?
')。
%发出控制命令
data=fread(Gpib_obj,In_Buffer_Size)。
%读数据
clrdevice(Gpib_obj)。
fclose(Gpib_obj)。
%关闭GPIB对象
%*****************************************************************************
%Pre-processing
%*****************************************************************************
data(1:
10)=0。
%去除开始的数据
data_mean=mean(data)。
data=data-data_mean。
%去直流
data(1:
10)=0。
subplot(2,2,1)。
plot(data)。
%显示
%*****************************************************************************
%Fouriertransformation
%*****************************************************************************
Length=In_Buffer_Size。
data_fft=fft(data,Length)。
%傅利叶变换
Pyy=log(data_fft.*conj(data_fft)/Length)。
%功率谱
f=512*(0:
99)/Length。
subplot(2,2,2)。
plot(f,Pyy(1:
100))。
grid
title('Frequencycontentofdatafft')。
xlabel('frequency')。
%显示
%*****************************************************************************
%Contrastwithidealsignal
%*****************************************************************************
t=linspace(0,4,Length)。
func=sin(2*pi*t)。
%函数
subplot(2,2,3)。
plot(func)。
%显示
func_fft=fft(func,Length)。
%傅利叶变换
Pff=log(func_fft.*conj(func_fft)/Length)。
%功率谱
subplot(2,2,4)。
plot(f(3:
100),Pff(3:
100))。
grid%显示
7.利用GPIB卡做低频扫频仪
一块GPIB卡可连接十六台仪器。
作为一块GPIB卡与多台仪器相联的例子,将数字式示波器和数字式信号源通过GPIB卡与计算机相联,就可以使它们具有低频扫频仪的功能。
具体试述如下。
图1利用GPIB卡做低频扫频仪的连接硬件图
本实验装置使用示波器TektronixTDS210和信号源Agilent33120A,如图1所示。
在仪器上将它们的GPIB地址分别设置为1和10。
主要代码如下:
CMatlabDemoDlg:
:
OnInitDialog()下面添加如下代码:
if(!
(ep=engOpen(NULL)))//打开Matlab引擎
{MessageBox("Can'tstartMATLABengine")。
//出错给出提示信息,并退出
exit(-1)。
}
初始化VC控件。
这样每次在软件初始化的时候,就打开MATLAB引擎,MATLAB就进入后台程序,等待下一步操作。
然后在VC的主程序中添加下面的代码初始化示波器和信号发生器。
engEvalString(ep,"s=gpib('ni',0,1)。
")。
//定义示波器地址
engEvalString(ep,"fopen(s)。
")。
//打开示波器
engEvalString(ep,"fprintf(s,'Measurement:
Meas1:
SourceCH2')。
")。
//选择示波器信号通道2
这是个实例,实际是根据VC界面上用户的选择,使用相应的通道输入。
engEvalString(ep,"g=gpib('ni',0,10)。
")。
//定义信号发生器地址
engEvalString(ep,"fopen(g)。
")。
//打开信号发生器
engEvalString(ep,"set(g,'EOSMode','read&write')。
")。
//设置读写模式
engEvalString(ep,"set(g,'EOSCharCode','LF')。
")。
//设置字符结束模式
用下面的代码可以读取示波器面板上的测量信息(以读取均方根值为例子):
engEvalString(ep,"fprintf(s,'MEASUREMENT:
MEAS1:
TYPECycRMS')。
")。
//选择均方根值
engEvalString(ep,"fprintf(s,'MEASUREMENT:
MEAS1:
VALUE?
')。
")。
//读取均方根值
sprintf(cmd,"fprintf(g,'FREQ%f')。
",freq)//freq代表信号发生器要输出的频率engEvalString(ep,cmd)。
//信号发生器输出该频率的信号
中间用引擎的方式调用MATLAB命令,完成数据的信号处理,以及图形显示。
最后在voidCMatlabDemoDlg:
:
OnDestroy()中添加:
if(ep!
=NULL)engClose(ep)。
ep=NULL。
//关闭MATLAB引擎,并退出MATLAB
由于MATLAB是解释性语句,完成循环速度较慢。
因此可以将MATLAB数据导入VC,完成循环。
显示画图时再导回去,能大大提高速度。
下面的代码可以实现MATLAB和VC的数据交互。
doubleLowStart[1]={td.m_LowFStart}。
//在VC中定义要扫的起始频率
doubleLowEnd[1]={td.m_LowFEnd}。
//在VC中定义要扫的终止频率
LStart=mxCreateDoubleMatrix(1,1,mxREAL)。
//LStart是要扫的起始频率,建立一个MATLAB中可以使用的矩阵格式
LEnd=mxCreateDoubleMatrix(1,1,mxREAL)。
//Lend是要扫的终止频率
memcpy((char*)mxGetPr(LStart),(char*)LowStart,sizeof(double))。
//将VC中的变量(要扫的起始频率LStart导入MATLAB环境下的内存空间中
memcpy((char*)mxGetPr(LEnd),(char*)LowEnd,sizeof(double))。
//同上
mxSetName(LStart,"LStart")。
//命名MATLAB中内存空间是上面分配的LStart
mxSetName(LEnd,"LEnd")。
//命名MATLAB中内存空间是上面分配的LEnd
engPutArray(ep,LStart)。
//将VC中的Lowstart变量保存的内容方入MATLAB环境下的LStart中
engPutArray(ep,LEnd)。
//同上
上面的代码完成了将VC中的数据导入MATLAB中。
下面的代码将完成从VC中读入MATLAB数据。
engOutputBuffer(ep,buffer,2500)。
//首先定义一个过渡缓冲区的大小
result=engGetArray(ep,"data")。
//获取TLAB中的data内存域的指针
Data=mxGetPr(result)。
//(DATA是VC下定义的变量)利用指针读取数据到VC变量中
下面的MATLAB代码可以实现扫频功能;以从15HZ到60HZ的扫频为例
fori=1:
10//设置循环次数,以5HZ为间隔
sum=0。
[cmd]=sprintf('FREQ%d',10+i*5)。
//频率设置命令字符串
fprintf(g,cmd)。
//字符命令写入信号发生器,发生器产生设置的频率
pause
(2)。
//延时两秒
fprintf(s,'Measurement:
Meas1:
SourceCH2')。
//从示波器2通道
fprintf(s,'MEASUREMENT:
MEAS1:
TYPECycRMS')。
//读取均方根值
fprintf(s,'MEASUREMENT:
MEAS1:
VALUE?
')。
ptop=fscanf(s,'%f',30)。
//第一次读取值无效,扔掉
forj=1:
1:
5
fprintf(s,'MEASUREMENT:
MEAS1:
TYPECycRMS')。
fprintf(s,'MEASUREMENT:
MEAS1:
VALUE?
')。
A(j)=fscanf(s,'%f',30)。
warningoffinstrument:
fscanf:
unsuccessfulRead。
//读取5次,取统计平均
pause(0.5)。
sum=sum+A(j)。
end
a(i)=sum/5。
end
利用对信号发生器输出信号频率的程序控制,可以实现扫频功能,完成幅度频率特性的测量。
下面给出一个用运算放大器组成的2阶低通滤波电路的实际测量幅频曲线。
打开一个测量子程序,如图2。
选择“测量幅频特性”,出现测量幅频特性曲线的频率范围设置的界面,如图3。
在测量幅频特性曲线的频率范围设置的界面上,输入要扫频的起始频率和终止频率。
由于扫频范围越宽,花费时间会越多。
因此,将扫频频段分成低、中、高三段。
图3所示的是默认初始值。
使用者可根据测量的需要选择其中的一个频段、两个频段或三个频段。
每个频段的起始频率和终止频率可由使用者自行修改。
低频段可供选择的范围是10Hz~999Hz,中频段可供选择的范围是100Hz~9999Hz,高频段可供选择的范围是1000Hz~500kHz。
可以选择频率横坐标刻度为对数倍频程刻度,亦可为线性刻度。
然后按下测量按钮就可以开始自动测量。
图4是一个二阶低通电路,根据元件参数值,理论计算的转折频率为44HZ,用本测量装置测量得到的幅频特性曲线如图5所示。
这是一个原始MATLAB格式的输出图形转换成的BMP文件,在原始的.figure图中可以局部放大,能够清晰的看出下降3dB点,即大约增益是1.13dB的地方对应频率为44.3Hz。
精确程度完全符合了实验要求。
经过测试,在上限500KHz以下,下限10Hz扫频以上,得到的幅频特性曲线都有较高精度。
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。
版权为潘宏亮个人所有
Thisarticleincludessomeparts,includingtext,pictures,anddesign.CopyrightisPanHongliang'spersonalownership.
用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。
Usersmayusethecontentsorservicesofthisarticleforpersonalstudy,researchorappreciation,andothernon-commercialornon-profitpurposes,butatthesametime,theyshallabidebytheprovisionsofcopyrightlawandotherrelevantlaws,andshallnotinfringeuponthelegitimaterightsofthiswebsiteanditsrelevantobligees.Inaddition,whenanycontentorserviceofthisarticleisusedforotherpurposes,writtenpermissionandremunerationshallbeobtainedfromt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GPIB 安装 使用 初步