使用matlab发送SCPI,怎么使用matlab创建和发送arb

matlab程序,向您展示如何使用matlab中的Agilent 33210A,33220A或33250A打开签证会话并下载任意波形并使用函数发生器输出。

这个例子是一个非常基本的脉冲波形,你可以创建更复杂的波形,我只想做一个简单的例子让人们开始.--------------------

--------------------------------------------------

--------------------------------------------------

--------------------------------------------------

--------------------------------------------------

-----------%{AsciiArb是一个示例程序,演示如何下载任意waveforminto仪器易失性存储器并使用以下配置回放相同的内容:此arb生成8192点脉冲波形,其中

波前形状:ArbAmplitude:2 Volt Peak to PeakOffset:0 VoltOutput Impedance:50 OhmOutput:EnabLED此示例适用于Agilent 33210A,33220A和33250A%}前400个点定义从0伏到最大定义电压幅度的正向脉冲。波形

%清除所有变量,关闭所有打开的文件清除所有;

关闭所有;

clc;%打开并创建一个签证会话,用于与函数generatoRFgen = visa('AGILENT','TCPIP0 :: 156.140.92.62 :: inst0 :: INSTR')进行通信;设置(fgen,'OutputBufferSize',100000); fopen(

fgen);%查询Idendity字符串和reportfprintf(fgen,'* IDN?'); idn = fscanf(fgen); fprintf(idn)fprintf('\ n \ n')%清除并重置instrumentfprintf(fgen,'* RST

'); fprintf(fgen,'* CLS');%使用8192点0-1 datafprintf创建arb波形('生成波形... \ n \ n')rise = [];对于i = 1:1:

10%设定上升时间(10分)* / z =(i-1)/ 10;

y = num2str(z);

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

上升= [上升s1];

end width = [];对于i = 11:1:411%设置脉冲宽度(400点)* / y = num2str(1);

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

width = [width s2];

end fall = []; for i = 412:1:422%设置下降时间(10分)* / z =(422-i)/ 10;

y = num2str(z);

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

跌倒= [跌倒s3];

结束低= [];对于i = 423:1:8192%将剩余点设置为零* / y = num2str(0);

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

低= [低s4];

end%组合所有字符串s = [上升宽度下降低];

%将数据字符串与scpi commandarbstring = sprintf('DATA VOLAtiLE%s',s)组合在一起;

%Send命令设置所需的configurationfprintf('下载波形... \ n \ n')fprintf(fgen,arbstring);

%make instrument等待数据下载,然后转到下一个%命令setfprintf(fgen,'* WAI'); fprintf('Download Complete \ n \ n')%设置所需的配置。

fprintf(fgen,'VOLT 2');

%将最大波形幅度设置为2 Vpp fprintf(fgen,'VOLT:OFFSET 0');

%将偏移设置为0 V fprintf(fgen,'OUTPUT:LOAD 50');

%将输出负载设置为50欧姆fprintf(fgen,'FREQ 1000');

%设定频率为1KHz fprintf(fgen,'FUNC:USER VOLATILE');

fprintf(fgen,'FUNC:SHAP USER');

%启用输出fprintf(fgen,'OUTPUT ON');

%打开通道1输出%读取Errorfprintf(fgen,'SYST:ERR?'); errorstr = fscanf(fgen);%error checkingIF strncmp(errorstr,'+ 0,“No error”',13)errorcheck ='Arbitrary

生成的波形没有任何错误\ n';

fprintf(错误检查)else errorcheck = ['错误报告:',errorstr];

fprintf(errorcheck)end%用函数generatorfclose(fgen)关闭签证会话;

以上来自于谷歌翻译

以下为原文

Attached is a short matlab program that shows you how to open a visa session with an Agilent 33210A, 33220A, or 33250A in matlab and download an arbitrary waveform and output it with the function generator.  The example is a very basic pulse waveform, you can create much more complex waveforms, I just wanted to make a simple example to get people started.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

%{

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

附件

使用matlab发送SCPI,怎么使用matlab创建和发送arb_第1张图片

0

97b4b3417991aabde46fdac613e34292.png

你可能感兴趣的:(使用matlab发送SCPI)