Agilent数字万用表
Agilent数字万用表
一、前言
这款Agilent 数字万用表 34401A, 将用于实验室自动测量。 它具有RS232接口, 下面对它的远程接口功能进行测试。 最终实现能够完成自动测量的功能。
二、数字接口
根据 Agilent 34401A 的用户手册, 可以了解他的编程方法。 通过前面板设置相关参数, 前面板按钮配合 SHIFT 按键都有两个功能, 可以分别设置万用表的不同功能。 其中, 在输入输出菜单中, 可以设置串口通讯波特率以及奇偶校验等参数。 下面对此进行查看和操作。
通过SHIFT, MENU左键进入参数设置界面。 然后通过左右箭头选择菜单组。 选择 E 菜单, 设置串口参数。 使用往上箭头按键, 进入子菜单, 可以设置 波特率以及奇偶校验。 波特率为 9600, 以及没有奇偶校验。 在设备后面, 具有UART接口, 接入计算机的RS232接口。
使用直通串口延长线引出数字万用表的串口。 通过测量接口的电压, 可以看到它的第二端口的电压为 负 9V 左右, 这说明它可以直接接入计算机的串口。 将它接入计算机 USB 转串口的接头中。
三、软件编程
数字万用表在 远程见面命令参考 中 给出了测量和配置命令。 下面对此进行测试。
设备接入了计算机的 COM6, 在Python 程序中, 打开COM6, 发送 SCPI 指令, 便可以接收设备的测量命令了。 测量结果与万用表现实的结果是一致的。
▲ 图1.3.1 Agilent远程测量
这里需要强调两点。 第一, 就是每次 READ命令发送之后, 所获得的是上一次测量结果。 第二, 这就不得不吐槽一下, 也就是在使用 READ 命令之前 需要发送 SYSTEM REMOT 命令, 否则, Agilent 数字万用表不接受 READ 命令。 这一点开始并没有注意, 所以, 鼓捣了很长时间, 询问了别人之后, 方才解开了无法读取数据的谜团。
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2024-03-16
#
# Note:
#============================================================
from headm import *
import serial
from _ast import Or
from serial.serialutil import SerialException
#------------------------------------------------------------
sport = serial.Serial()
sport.baudrate = 9600
sport.timeout = 0.05
try:
sport.port = 'COM6'
except:
printf('Set sport port COM6 error. ')
try:
sport.open()
except serial.serialutil.SerialException:
printf('Open sport port COM6 error.')
else:
printf('Open sport port COM6 Ok.')
#------------------------------------------------------------
sport.write(b"SYSTEM:REMOTE\n")
while True:
sport.write(b'READ?\n')
time.sleep(.1)
result = sport.read(100)
printf(result)
time.sleep(1)
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
※ 总 结 ※
本文记录了使用 Agilent 数字万用表进行远程控制的过程, 特别是在读取数据的时候, 需要预先发送 SYSTEM REMOTE 指令, 这一点我是吃了亏的。
● 相关图表链接: