matlab中如何生成波形,怎么在MATLAb中创建任意波形并下载到AG 33220A

以上来自于谷歌翻译

以下为原文

Hello,

So I'm guessing the issue is that your running a 64 bit OS?  If yes we don't have an IVI driver that supports 64 bit applications for the 33220A yet.

Luckily, you don't actually need to use the IVI driver, you can just send SCPI instead (works on 64 bit), which in my experience is more straighforward in Matlab anyway,

Here is a 33220A sample on how to send arbs in Matlab using SCPI:

%{

AsciiArb is a sample program that demonstrates how to download an arbitrary waveform

into instrument volatile memory and play back the same with the configuration below:

This arb generates a 8192 point pulse waveform, of which the first 400 points define a

positive pulse from 0 volts to the maximum defined voltage amplitude.

Wave Shape: Arb

Amplitude:     2 Volt Peak to Peak

Offset:          0 Volt

Output Impedance:     50 Ohm

Output: Enabled

This example will work with the Agilent 33210A, 33220A, and 33250A

%}

% clears all variables, closes all open files

clear all; close all; clc;

%opens and creates a visa session for communication with function generator

fgen = visa('AGILENT','TCPIP0::156.140.92.62::inst0::INSTR');

set (fgen,'OutputBufferSize',100000);

fopen(fgen);

%Query Idendity string and report

fprintf (fgen, '*IDN?');

idn = fscanf (fgen);

fprintf (idn)

fprintf ('\n\n')

%Clear and reset instrument

fprintf (fgen, '*RST');

fprintf (fgen, '*CLS');

% Create arb waveform with 8192 points of 0-1 data

fprintf('Generating Waveform...\n\n')

rise=[];

for i = 1:1:10        % Set rise time (10 points) */

z = (i-1)/10;

y = num2str(z);

s1 = sprintf(', %s', y);

rise = [rise s1];

end

width=[];

for i= 11:1:411      % Set pulse width (400 points) */

y = num2str(1);

s2 = sprintf(', %s', y);

width = [width s2];

end

fall=[];

for i = 412:1:422   % Set fall time (10 points) */

z= (422 - i)/10;

y = num2str(z);

s3 = sprintf(', %s', y);

fall = [fall s3];

end

low=[];

for i = 423:1:8192   % Set remaining points to zero */

y = num2str(0);

s4 = sprintf(', %s', y);

low = [low s4];

end

%combine all of the strings

s = [rise width fall low];

% combine string of data with scpi command

arbstring =sprintf('DATA VOLATILE %s', s);

%Send Command to set the desired configuration

fprintf('Downloading Waveform...\n\n')

fprintf(fgen, arbstring);

%make instrument wait for data to download before moving on to next

%command set

fprintf(fgen, '*WAI');

fprintf('Download Complete\n\n')

%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 1000'); %set frequency to 1KHz

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值