3-脉冲波形参数的自动测试系统_第1页
3-脉冲波形参数的自动测试系统_第2页
3-脉冲波形参数的自动测试系统_第3页
3-脉冲波形参数的自动测试系统_第4页
3-脉冲波形参数的自动测试系统_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子科技大学实验报告学生姓名及学号:马先文2011079150001朱科2011079120020指导教师:王子斌实验地点:C2-110实验时间:2014.6.10实验室名称:二、实验项目名称:脉冲波形参数的自动测试系统三、实验学时:4学时四、实验内容:1.组建脉冲波形参数的自动测试系统2.设计脉冲参数测量系统界面2.用程控方式完成对脉冲波形参数的测量,显示脉冲波形及参数测量结果。五、实验结果:1、脉冲波形参数自动测试系统需求分析:答:函数/任意波形发生器33220A手动调节产生脉冲信号,信号输出到数字示波器DSO5012A,在LabWindows/CVI集成环境下编写脉冲参数测量控制程序,通过LXI总线控制数字示波器完成脉冲参数的测量,并在用户界面上显示脉冲波形及脉冲参数测量结果。2、本次实验设计的脉冲参数测量系统应用程序界面如下:3、本次实验内容的主体为一个程序的编制,程序的框架如下:开始开始建立仪器资源会话示波器初始化自动定标波形采集脉冲参数测量脉冲波形显示脉冲参数显示关闭仪器资源会话结束4、LabWindow/CVI程序代码如下:#include<cvirte.h> #include<userint.h>#include<visa.h>#include"PulseParameterTest.h"#defineRESOURCE"TCPIP0::192.168.1.108::inst0::INSTR"staticintpanelHandle;ViSessiondefaultRM,vi; doublepreamble[10];#defineWAVE_DATA_SIZE5000unsignedcharwaveform_data[WAVE_DATA_SIZE];voidInitialize(void);voidCapture(void);voidWaveform(void);intmain(intargc,char*argv[]){ if(InitCVIRTE(0,argv,0)==0) return-1; /*outofmemory*/ if((panelHandle=LoadPanel(0,"PulseParameterTest.uir",PANEL))<0) return-1; DisplayPanel(panelHandle); RunUserInterface(); DiscardPanel(panelHandle); return0;}intCVICALLBACKQuit(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ switch(event) { caseEVENT_COMMIT: QuitUserInterface(0); break; } return0;}intCVICALLBACKAcquire(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ charbuf[256]={0}; doubletemp; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viPrintf(vi,":MEASURE:SOURCECHAN1\n"); viQueryf(vi,":MEASURE:FREQUENCY?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_Frequency,temp); viQueryf(vi,":MEASURE:VBASE?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_Low,temp); viQueryf(vi,":MEASURE:VTOP?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_High,temp); viQueryf(vi,"MEASURE:PERIOD?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_Period,temp); viQueryf(vi,"MEASURE:VAMPLITUDE?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_Amplitude,temp); viQueryf(vi,"MEASURE:VPP?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_PTPeak,temp); viQueryf(vi,"MEASURE:RISETIME?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_RTime,temp); viQueryf(vi,"MEASURE:FALLTIME?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_FTime,temp); viQueryf(vi,"MEASURE:PWIDTH?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_PWidth,temp); viQueryf(vi,"MEASURE:NWIDTH?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_NWidth,temp); viQueryf(vi,"MEASURE:DUTYCYCLE?\n","%lf",&temp); SetCtrlVal(panelHandle,PANEL_Edt_PDutycycle,temp); Waveform(); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetPeriod(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doublePeriod; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:PERIOD?CHAN1\n","%lf",&Period); SetCtrlVal(panelHandle,PANEL_Edt_Period,Period); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetTop(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doubletop; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:VTOP?CHAN1\n","%lf",&top); SetCtrlVal(panelHandle,PANEL_Edt_High,top); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetBase(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doublebase; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:VBASE?CHAN1\n","%lf",&base); SetCtrlVal(panelHandle,PANEL_Edt_Low,base); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetAmplitude(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doubleamplitude; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:VAMPLITUDE?CHAN1\n","%lf",&litude); SetCtrlVal(panelHandle,PANEL_Edt_Amplitude,amplitude); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetPTPeak(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doublevpp; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:VPP?CHAN1\n","%lf",&vpp); SetCtrlVal(panelHandle,PANEL_Edt_PTPeak,vpp); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetWaveform(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); Waveform(); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetFrequency(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doublefrequency; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:FREQUENCY?CHAN1\n","%lf",&frequency); SetCtrlVal(panelHandle,PANEL_Edt_Frequency,frequency); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetRTime(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doublertime; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:RISETIME?CHAN1\n","%lf",&rtime); SetCtrlVal(panelHandle,PANEL_Edt_RTime,rtime); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetFTime(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doubleftime; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:FALLTIME?CHAN1\n","%lf",&ftime); SetCtrlVal(panelHandle,PANEL_Edt_FTime,ftime); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetPWidth(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doublepwidth; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:PWIDTH?CHAN1\n","%lf",&pwidth); SetCtrlVal(panelHandle,PANEL_Edt_PWidth,pwidth); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetNWidth(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doublenwidth; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:NWIDTH?CHAN1\n","%lf",&nwidth); SetCtrlVal(panelHandle,PANEL_Edt_NWidth,nwidth); viClose(vi); viClose(defaultRM); break; } return0;}intCVICALLBACKGetPDutycycle(intpanel,intcontrol,intevent, void*callbackData,inteventData1,inteventData2){ doubledutycycle; switch(event) { caseEVENT_COMMIT: viOpenDefaultRM(&defaultRM); viOpen(defaultRM,RESOURCE,VI_NULL,VI_NULL,&vi); viClear(vi); Initialize(); Capture(); viQueryf(vi,"MEASURE:DUTYCYCLE?CHAN1\n","%lf",&dutycycle); SetCtrlVal(panelHandle,PANEL_Edt_PDutycycle,dutycycle); viClose(vi); viClose(defaultRM); break; } return0;}voidInitialize(void){ viPrintf(vi,"*RST\n"); viPrintf(vi,":AUTOSCALE\n");}voidCapture(void){ viPrintf(vi,":ACQUIRE:TYPENORMAL\n"); viPrintf(vi,":ACQUIRE:COMPLETE100\n"); viPrintf(vi,":DIGITIZECHAN1\n");}voidWaveform(void){ intwaveform_size,i; doubletime_array[WAVE_DATA_SIZE],amp_array[WAVE_DATA_SIZE]; doubleXmin,Xmax,Ymin,Ymax; DeleteGraphPlot(panelHandle,PANEL_GRAPH_Pulse,-1,VAL_IMMEDIATE_DRAW); viPrintf(vi,":WAVEFORM:FORMATBYTE\n"); viPrintf(vi,":WAVEFORM:POINTS1000\n"); viQueryf(vi,":WAVEFORM:PREAMBLE?\n","%,10lf\n",preamble); SetCtrlVal(panelHandle,PANEL_Edt_TimeBase,preamble[4]*100); SetCtrlVal(panelHandle,PANEL_Edt_Vertical,preamble[7]*32); Xmin=(0.0-preamble[6])*preamble[4]+preamble[5]; Xmax=(1000.0-preamble[6])*preamble[4]+preamble[5]; Ymin=(0.0-preamble[9])*preamble[7]+preamble[8]; Ymax=(256.0-preamble[9])*preamble

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论