近日需要通过上位机连接矢网采数,但是可用的矢网只有一个零几年的矢网安捷伦 agilent e8363b。一开始想使用labview,但是使用NI MAX控制不成功(问题在instrument VISA Address),只好自己从底层控制(如果你的NI MAX能成功,可以直接使用labview控制呢)。本来想通过GPIB来控制,但是实验室没有GPIB转USB的线。一看矢网上有网口,故准备通过网络来控制矢网。经过一番摸索,成功地使用matlab和python通过SCIP协议来用网线控制矢网采数。(如果你熟悉VB的话,请参考VB的例子。VB的资料明显更多。)

下面对控制过程进行记录以留待后续查阅。

  • 查看自己矢网固件版本!在矢网应用中是可以看到的。
  • 查看矢网设置,注意看是否一直有SCPI支持,注意看设置的内网IP。
  • 安装 Keysight IO library suite。
  • 安装Keysight Command Expert 用于检测矢网连接是否成功。
  • 使用python的话安装pyvisa(pip install 即可)。
  • 使用matlab要安装对应驱动和库。自行下载安装。
    • matlab的例子参看Two Port S-Parameter Measurement(matlab file exchange)或者Characterizing a low-noise amplifier by measuring its S-parameters。文中注释写得非常详细。请注意一段话。

      • This MATLAB example connects to and configures a Keysight (Agilent) PNA (N5222A) to measure the S-parameters of a low noise amplifier (LNA). The instrument used in this example is running firmware version A.09.90.02. The Standard Commands for Programmable Instruments (SCPI) for the PNA in this example may need to be modified if you are using a different instrument or firmware. The SCPI command set for most instruments is available in the instrument programmer's manual from your instrument vendor.
      • 固件版本非常重要。例程中的版本是A09.90.02的(我的是06年的一个版本A.06.04.32)。不同的版本支持的SCPI语法是有差异的。具体可以看各个公司的编程手册——这个网上都可以搜索得到。
  • 连接网线,设置上位机IP使之与矢网处于同一个子网,使用ping命令检测联通性。
  • 使用command expert 检测是否能够识别。注意建立instrument连接的时候如果不能自动识别设备,需要手动添加其名字,比如我这台的格式是这样的
    • instrumentVISAAddress = 'TCPIP0::192.168.1.10::hpib7,16::INSTR'
    • 注意中间有个hpib7,16 。可以使用手动输入的方式来连接这台设备。IP是你矢网的IP。
    • matlab官方 网站上的例子的格式是这样的 instrumentVISAAddress = 'TCPIP0::127.0.0.1::inst0::INSTR'。注意二者的区别
  • 在command expert 能检测到你的设备之后,你就可以自行编程了。此时你可以使用NI MAX+LABVIEW(如果能成功识别的话),否则就只有自己用VB VC PYTHON MATLAB等按照VISA/SCPI来编程了(就是我所走的路)。
  • 下面是个matlab控制采数的例子。
    • %% 在官方的matlab例程上安装对应固件版本的编程手册修改的
      instrumentVISAAddress = 'TCPIP0::192.168.1.10::hpib7,16::INSTR';
      % Define frequency range
      frequencyRange = [f1 f2];% 起始频率
      % Number of points in measurement
      numPoints = NN; instrObj = visa('agilent',instrumentVISAAddress); % 创立链接。
      instrObj.InputBufferSize = 10e6;% set buffer
      instrObj.ByteOrder = 'littleEndian';
      fopen(instrObj);
      clrdevice(instrObj); % clear
      % Display information about instrument
      IDNString = query(instrObj,'*IDN?');%信息查询
      fprintf('Connected to: %s\n',IDNString);
      %fprintf(instrObj,'SYSTem:PREset');
      %fprintf(instrObj,'SYSTem:FPReset');
      fprintf(instrObj,'*CLS;*wai');% Define a measurement name and parameter
      fprintf(instrObj,'CALCulate:PARameter:DEFine ''MySMeaS21'',S21'); % s21
      % Create a new display window and turn it on
      fprintf(instrObj,'DISPlay:WINDow1:STATE ON');
      % Associate the measurements to WINDow1
      fprintf(instrObj,'DISPlay:WINDow1:TRACe1:FEED ''MySMeaS21''');
      % Turn ON the Title, Frequency, and Trace Annotation to allow for
      % visualization of the measurements on the instrument display
      fprintf(instrObj,'DISPlay:WINDow1:TITLe:STATe ON');
      fprintf(instrObj,'DISPlay:ANNotation:FREQuency ON');
      fprintf(instrObj,'DISPlay:WINDow1:TRACe1:STATe ON');% Set the number of points
      fprintf(instrObj, sprintf('SENSe:SWEep:POINts %s',num2str(numPoints)));
      % Set the frequency ranges
      fprintf(instrObj, sprintf('SENSe:FREQuency:STARt %sHz',num2str(frequencyRange(1))));
      fprintf(instrObj, sprintf('SENSe:FREQuency:STOP %sHz',num2str(frequencyRange(2))));
      fprintf(instrObj,'TRIG:SOUR MANual'); %手动触发
      fprintf(instrObj,'TRIG:SCOPe ALL');
      fprintf(instrObj,'SENSe:SWEep:MODE CONTinuous');
      % Set instrument to return the data back using binblock format
      %fprintf(instrObj, 'FORMat:DATA REAL,64'); % 64位 浮点数
      fprintf(instrObj, 'FORMat:DATA ASCII'); % 编码方式
      fprintf(instrObj,'CALCulate:PARameter:SELect ''MySMeaS21''');
      % i=0;
      % while(i<2) % 多次读取的话使用循环即可
      fprintf(instrObj,'INITiate:IMMediate;*wai');
      fprintf(instrObj, 'Display:WINDow1:TRACe1:Y:Scale:AUTO');
      fprintf(instrObj,'CALCulate:DATA? SDATA');
      %rawDataDB = binblockread(instrObj, 'double');
      data=fread(instrObj);% 读取数据
      fid=fopen('test.txt','wb');
      data=fwrite(fid,data,'char');% 保存下来
      %read terminating character
      %d=fread(instrObj,1,'char');
      % i=i+1;
      % end% Close, delete, and clear instrument connections.
      fclose(instrObj);
      delete(instrObj);
      clear instrObj;
      
  • 下面是个python的例子
    • python 中把 query 改成 instrObj.write 即可。请参看pyvisa的说明。SCPI语法和matlab中的是一致的。

划重点:

  • 一定要查看对应版本的固件。固件版本不同,支持的SCIP语句是不同的。网上有matlab控制矢网的例子,但是直接用会报错——比如undefined header。
  • VISA address 注意其格式。使用NI MAX的时候它的默认格式和实际的格式不一样,需要手动添加。
  • 读取数据保存的时候选择格式时需要注意。尝试过许多方法后,发现使用ascii码的方式是最简单直接的,保存的数据格式是使用的科学记数法。读取的数据直接用matlab导入即可。

上位机使用python/matlab通过网线VISA/SCPI编程远程控制旧版A.06.04.32的安捷伦agilent矢量网络分析仪(VNA)采集S21参数相关推荐

  1. scip指令集_C++上位机与安捷伦agilent示波器的通讯

    Step1:配置VISA协议. VISA协议是Agilent IO Libraries的一部分, 主要包含一个虚拟仪器软件架构VISA (一个比较通用的工业仪器软件架构) 和标准控制库SICL.我理解 ...

  2. 安捷伦万用表--Agilent34401A数字万用表串口发送数据只上位机使用说明

    Agilent34401A数字万用表串口发送数据使用说明 安捷伦34410A万用表可以通过背后的RS232接口与电脑连接,进行串口通信. 仪表的串口有两种工作方式,一种是交互模式–既能接收命令,又能发 ...

  3. MATLAB与安捷伦lan口通讯,matlab与安捷伦示波器通讯问题

    本帖最后由 god_blessme 于 2017-9-19 13:45 编辑 小弟最近在搞一个程序,是要读取安捷伦示波器每一屏数据并储存,网上貌似对于tek示波器连接的比较多,安捷伦的超级少,所以大部 ...

  4. matlab上位机串口通信,MATLAB GUIDE 上位机串口通信开发 绘制图形

    本人因项目需求,需要开发这个串口通信上位机界面,用于实时绘制串口发送过来的数据.本人之前基本没使用过MATLAB,也就知道个zeros(100)这种在命令行窗口中输入的函数.至于MATLAB能开发图形 ...

  5. python开发上位机软件-UR机器人通信--上位机通信(python)

    一.通信socket socket()函数 Python 中,我们用 socket()函数来创建套接字,语法格式如下: socket.socket([family[, type[, proto]]]) ...

  6. python 日历壁纸_极客编程日历桌面版开发笔记

    背景介绍 图灵教育推出的 图灵教育推出的编程日历实体版 不幸的是由于限量1000款,除去赠品的300多套,真正在售的只有600多套,很快就被抢购一空.值得欣慰的是,前天下午作者将pdf版本的日历公开下 ...

  7. UR机器人上位机通信-python版(二)

    发送控制指令控制机器人 以Movel指令为例: import socket HOST = "192.168.2.23" # The remote host PORT = 30003 ...

  8. python call agilent com_PyVISA通过RS232(USB)与安捷伦34970A通信时出现超时错误

    这是我第一次尝试使用Pyvisa,以便使用RS232连接(使用USB端口)与Agilent 34970A进行通信.在 这就是发生在我身上的事情,插入基本的第一行:IN: import visa IN: ...

  9. matlab 网络分析仪,N5244A网络分析仪安捷伦N5244A

    是德Agilent N5244A 微波网络分析仪 主要特性与技术指标10 MHz 到 43.5 GHz2 端口或 4 端口,具有两个内置信号源126 dB 系统动态范围和 129 dB 接收机动态范围 ...

最新文章

  1. mysql有那些存储引擎_MySQL有那哪些存储引擎
  2. java学习路线图(2018年最新版)
  3. sql server insert values 多值 与oracle 的不同
  4. 高性能NIO框架Netty入门篇
  5. 浅析:setsockopt()改善程序的健壮性【转】
  6. Linux ubuntu16.04 安装opencv4教程(源码编译)
  7. jsoncpp去掉多余字符_Python超详细的字符串用法大全
  8. (十二)linux内核定时器
  9. 路由总结之静态、RIP、OSPF、IS-IS、BGP和策略路由
  10. MIT计算机专业本硕连读几年,2020年麻省理工学院读研要多久
  11. vj p1025题解
  12. 【推荐算法】协同过滤算法——基于用户 Java实现
  13. Python初学手记----在window系统中安装环境
  14. 这几条Mac技巧可能在你使用mac时锦上添花
  15. php 限定字符长度,php-限制字符串长度
  16. 还在职,入职A签订了竞业限制,如何解除?
  17. 简单实现微信抢红包的功能(Java)
  18. Windows变量路径与通配符
  19. 【笔试】计算机网络知识点整理
  20. 在maven中的pom.xml配置ojdbc报错

热门文章

  1. 搭建自己的在线IDE
  2. 热浪(单源最短路问题)
  3. Linux 4.19.111 供电(power supply )子系统
  4. PPT里怎么加入边翻页幻灯片边连续播放音乐?
  5. 呵呵,GET2017教育科技大会VIP门票,你要不要啊?
  6. python判断用户名密码是否正确_python实现用户名密码校验
  7. “腾源虎”表情包超萌上线,更有4000份定制红包封面免费送!
  8. 百度人脸活体检测系统通过信通院“护脸计划”首批优秀级安全防护能力评估
  9. 日语蔬菜水果相关词汇(2)
  10. MICCAI 2019 Proceeding 论文集part1-6