完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我一直在尝试使用matlab(visa)在函数发生器中加载任意波形。
但是,我没有获得我设计的波形。 使用的代码如下。 我最初使用1Hz的简单正弦波测试代码。 然而,产生的波具有非常高的频率(大约为kHz)。 我怀疑这是由于采样频率低得多。 函数发生器的50Mbps采样率会产生大量数据,而MAtlab无法处理这些数据。 另外,我最终想要创造一个1000秒扫描时间的啁啾声。 为此,我需要*降低生成器的采样率*。请为我提供相同的命令。 我使用的代码如下 - fgen = visa('AGILENT','USB0 :: 0x0957 :: 0x0407 :: MY44048510 :: 0 :: INSTR'); set(fgen,'OutputBufferSize',100000); 的fopen(FGEN); %Query Idendity字符串和报告fprintf(fgen,'* IDN?'); idn = fscanf(fgen); fprintf(idn)fprintf(' n n')%清除并重置仪器fprintf(fgen,'* RST'); fprintf(fgen,'* CLS'); %创建arb波形fprintf('生成波形... n n')sRate = 100; ch = []; 对于t = 0:1 / sRate:10 c = sin(t); y = num2str(c); s5 = sprintf(',%s',y); ch = [ch s5]; end%组合所有字符串%s = [上升宽度下降低]; s = [ch]; %将数据串与scpi命令组合使用arbstring = sprintf('DATA VOLAtiLE%s',s); %Send命令设置所需的配置fprintf('下载波形... n n')fprintf(fgen,arbstring); %make instrument等待数据下载,然后转到下一个%命令set fprintf(fgen,'* WAI'); fprintf('下载完成 n n')%设置所需的配置。 fprintf(fgen,'VOLT 2'); %将最大波形幅度设置为2 Vpp fprintf(fgen,'VOLT:OFFSET 0'); %将偏移设置为0 V fprintf(fgen,'OUTPUT:LOAD 50'); %将输出负载设置为50欧姆fprintf(fgen,'FREQ 1'); %设定频率为1KHz fprintf(fgen,'DATA:COPY TEST16385,VOLATILE'); fprintf(fgen,'FUNC:USER VOLATILE'); fprintf(fgen,'FUNC:SHAP USER'); %启用输出fprintf(fgen,'OUTPUT ON'); %打开通道1输出%读取错误fprintf(fgen,'SYST:ERR?'); errorstr = fscanf(fgen); %错误检查strncmp(errorstr,'+ 0,“无错误”',13)errorcheck ='生成的任意波形没有任何错误 n'; fprintf(错误检查)else errorcheck = ['错误报告:',errorstr]; fprintf(错误检查)end%用函数发生器fclose(fgen)关闭签证会话; 我使用以下命令来降低采样率-sRate = 100; fprintf(fgen,'SOURCE1:FUNCtion:ARB:SRATe'num2str(sRate))程序在此行显示错误 以上来自于谷歌翻译 以下为原文 I have been trying to load an arbitrary waveform in function generator using MATLAB (visa). However, I dont obtain the waveform that I have designed. The code used is given below. I initially tested the code with a simple sine wave of 1Hz. However, the wave generated is of very much higher frequency (of the order of kHz). I suspect it is due to much lower sampling frequency. The 50Mbps sampling rate of the function generator creates a huge amount of data, that cannot be handled by MAtlab. Also, I ultimately want to create a chirp with 1000 sec sweep time. For that, I need to *reduce the sampling rate of the generator* .Please provide me the commands for the same. The codes I used is given below- fgen = visa('AGILENT','USB0::0x0957::0x0407::MY44048510::0::INSTR'); set (fgen,'OutputBufferSize',100000); fopen(fgen); %Query Idendity string and report fprintf (fgen, '*IDN?'); idn = fscanf (fgen); fprintf (idn) fprintf ('nn') %Clear and reset instrument fprintf (fgen, '*RST'); fprintf (fgen, '*CLS'); % Create arb waveform fprintf('Generating Waveform...nn') sRate = 100; ch = []; for t = 0:1/sRate:10 c = sin(t); y = num2str(c); s5 = sprintf(', %s',y); ch = [ch s5]; end %combine all of the strings % s = [rise width fall low]; s = [ch]; % combine string of data with scpi command arbstring =sprintf('DATA VOLATILE %s', s); %Send Command to set the desired configuration fprintf('Downloading Waveform...nn') fprintf(fgen, arbstring); %make instrument wait for data to download before moving on to next %command set fprintf(fgen, '*WAI'); fprintf('Download Completenn') %Set desired configuration. fprintf(fgen,'VOLT 2'); % set max waveform amplitude to 2 Vpp fprintf(fgen,'VOLT:OFFSET 0'); % set offset to 0 V fprintf(fgen,'OUTPUT:LOAD 50'); % set output load to 50 ohms fprintf(fgen,'FREQ 1'); %set frequency to 1KHz fprintf(fgen,'DATA:COPY TEST16385, VOLATILE'); fprintf(fgen,'FUNC:USER VOLATILE'); fprintf(fgen,'FUNC:SHAP USER'); %Enable Output fprintf(fgen,'OUTPUT ON'); % turn on channel 1 output % Read Error fprintf(fgen, 'SYST:ERR?'); errorstr = fscanf (fgen); % error checking if strncmp (errorstr, '+0,"No error"',13) errorcheck = 'Arbitrary waveform generated without any error n'; fprintf (errorcheck) else errorcheck = ['Error reported: ', errorstr]; fprintf (errorcheck) end %closes the visa session with the function generator fclose(fgen); I used the following command to reduce the sampling rate- sRate = 100; fprintf(fgen,'SOURCE1:FUNCtion:ARB:SRATe ' num2str(sRate)) The program shows an error at this line |
|
相关推荐
1个回答
|
|
33220A不支持采样率命令,它就是所谓的DDS发生器,因此采样率是固定的。
但是,您可以更改波形的频率/周期。 您只需告诉方框您想要波形的频率/周期,它将使用专利公式跳过/重复点,以达到有效的频率/周期。 示例FREQ 10将以10Hz输出波形33500/33600发生器使用不同的方法(trueform),这为每个时钟类型行为提供了更多的点。 以上来自于谷歌翻译 以下为原文 The 33220A doesn't support the sample rate command, it is what's called a DDS generator so the sample rate is fixed. However you can change the Frequency/Period of the waveform. You just tell the box what frequency/period you want for the waveform and it will skip/repeat points using a patented formula to achieve that effective frequency/period. Example FREQ 10, will output the waveform at 10Hz The 33500/33600 generators use a different method (trueform) which gives you more of a point per clock type behavior. |
|
|
|
只有小组成员才能发言,加入小组>>
993 浏览 0 评论
2257 浏览 1 评论
2037 浏览 1 评论
1915 浏览 5 评论
2782 浏览 3 评论
772浏览 1评论
关于Keysight x1149 Boundary Scan Analyzer
556浏览 0评论
N5230C用“CALC:MARK:BWID?”获取Bwid,Cent,Q,Loss失败,请问大佬们怎么解决呀
652浏览 0评论
2438浏览 0评论
1496浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-13 03:14 , Processed in 1.782006 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191