![]()
双向直流电源既能输出电流,也能吸收电流,测试项目比单向电源多出一块。脚本要完成的工作是把设定值下发、把回读值收回、把数据落盘、把异常处理掉。下面给出Python与LabVIEW两条实现路径,代码可以直接改到实际工位使用。

双向直流电源自动测试覆盖的项目
双向电源在新能源车载、储能变流器、电池充放电、电机控制器老化这些场合用得多。测试时电源既当源又当载,脚本要区分放电段和充电段,两段的限值不一样的。
| 测试项目 | 脚本动作 | 记录量 |
|---|---|---|
| 稳压精度 | 设定电压,逐点回读 | 设定值、回读值、偏差 |
| 稳流精度 | 设定电流,逐点回读 | 设定值、回读值、偏差 |
| 源载切换 | 切换输出与吸收模式 | 切换时间、冲击电流 |
| 纹波测量 | 采集示波器或电源内部采样 | 峰峰值、有效值 |
| 保护动作 | 越过过压、过流、过温门限 | 动作值、恢复值 |
| 长时间老化 | 循环充放电,按周期记录 | 时间戳、电压、电流、温度 |
脚本需要控制的参数与回读量
指令层统一走SCPI。不一样的厂家的双向电源在源载模式切换、内阻模拟、电流吸收这些功能上指令写法不一样的,写脚本前把编程手册里的指令表抄一份出来核对。
| 功能 | 常用指令写法 | 说明 |
|---|---|---|
| 设定电压 | SOURce:VOLTage 数值 | 单位伏 |
| 设定电流 | SOURce:CURRent 数值 | 单位安 |
| 输出开关 | OUTPut:STATe ON/OFF | 部分机型用INPut |
| 回读电压 | MEASure:VOLTage? | 返回浮点数 |
| 回读电流 | MEASure:CURRent? | 正负号表示方向 |
| 源载模式 | SOURce:FUNCtion 模式名 | 按手册填写 |
| 保护门限 | SOURce:VOLTage:PROTection 数值 | 过压保护点 |
Python脚本编写流程
- 安装pyvisa与对应后端,USB接口装NI-VISA或pyvisa-py,网口用TCPIP资源串。
- 用ResourceManager列出资源,确认地址字符串。
- 打开资源,设置超时、读写终止符。
- 先下发清零与复位指令,让电源回到已知状态。
- 按测试表逐点下发设定值,等待建立时间。
- 回读电压电流,计算偏差,写入列表。
- 循环结束后关输出,关闭资源,数据存CSV。
Python双向直流电源测试脚本实例
import pyvisa
import time
import csv
rm = pyvisa.ResourceManager()
psu = rm.open_resource('TCPIP0::192.168.1.50::inst0::INSTR')
psu.timeout = 5000
psu.write_termination = '\n'
psu.read_termination = '\n'
def set_point(volt, curr):
psu.write('SOURce:VOLTage %.3f' % volt)
psu.write('SOURce:CURRent %.3f' % curr)
def read_back():
v = float(psu.query('MEASure:VOLTage?'))
i = float(psu.query('MEASure:CURRent?'))
return v, i
points = [(20.0, 5.0), (40.0, 10.0), (60.0, 15.0), (80.0, 20.0)]
rows = []
psu.write('*RST')
psu.write('OUTPut:STATe ON')
for v_set, i_set in points:
set_point(v_set, i_set)
time.sleep(0.5)
v, i = read_back()
rows.append([v_set, i_set, v, i, round(v - v_set, 3)])
psu.write('OUTPut:STATe OFF')
psu.close()
with open('result.csv', 'w', newline='') as f:
w = csv.writer(f)
w.writerow(['设定电压', '设定电流', '回读电压', '回读电流', '电压偏差'])
w.writerows(rows)
吸收电流段把电压设到低于被测对象输出电压,电流上限按电源吸收能力给,回读电流出现负值属于正常现象,判据要按绝对值或按方向分开写。
LabVIEW脚本编写流程
- 在前面板放资源名输入框、设定值数组、结果显示表格、波形图。
- 程序框图用VISA Open打开会话,配置超时与终止符。
- 用For循环遍历设定值数组,循环内VISA Write下发指令。
- 加等待毫秒节点,给电源留建立时间。
- VISA Read取回读值,用小数转换函数变成数值。
- 数据写入移位寄存器或队列,循环外统一写TDMS文件。
- VISA Close释放会话,错误簇连到输出端。
LabVIEW程序框图搭建要点
| 模块 | 实现方式 | 注意事项 |
|---|---|---|
| 通信层 | VISA Write与VISA Read | 终止符与超时要一致 |
| 时序控制 | 等待节点或定时循环 | 源载切换留足时间 |
| 数据存储 | TDMS或写入电子表格 | 文件名带时间戳 |
| 界面刷新 | 波形图表、数值显示控件 | 避免在循环内刷大表格 |
| 异常处理 | 错误簇串联 | 出错后先关输出再退循环 |
两种平台对比
| 对比项 | Python | LabVIEW |
|---|---|---|
| 上手速度 | 有编程基础时较快 | 图形化,测控人员熟悉 |
| 数据处理 | 库多,报表灵活 | 内置报表工具,配置为主 |
| 部署方式 | 脚本文件加解释器 | 打包成可执行程序 |
| 维护成本 | 文本比对方便 | 框图版本管理需要工具 |
| 适用场景 | 批量数据、算法参与 | 产线工位、人工操作界面 |
脚本运行中的常见故障与排查
| 现象 | 可能原因 | 处理方向 |
|---|---|---|
| 查询无返回 | 终止符不匹配或超时过短 | 核对读写终止符,延长超时 |
| 回读值与设定值差得多 | 等待时间不足 | 增加建立时间或读稳定标志 |
| 吸收段电流读数为正 | 方向定义与手册不一致 | 查手册,调整判据符号 |
| 多次运行结果漂移 | 未复位,状态残留 | 开头加复位与清零 |
| 通信中断 | 网口掉线或USB松动 | 检查物理连接与地址占用 |
设备配套与工位搭建
脚本跑得稳不稳,一半看电源本身的指令响应和采样精度。山东运电气有限公司提供双向直流电源、回馈式电子负载、电池模拟器以及配套的通信接口模块,支持SCPI指令集与网口、串口、CAN等接口,可按测试项目配测试柜和线束。需要确认机型参数、通道数量、功率段和通信方式,可以打开山东运电气有限公司的网页,页面上的电话可以直接沟通实际报价与选型方案。
工位搭建时把电源地址、被测对象地址、采样设备地址统一登记在配置文件里,脚本读取配置而不是把地址写死在代码中,换工位时只改一行。数据文件按机型、日期、序号命名,后期追溯时按批次调取即可。
脚本上线前用假负载跑一遍全流程,把每个测试点的回读值、偏差、耗时打印到日志,确认无误后再接真实被测对象。长期老化任务把循环次数、记录周期、异常退出条件写在脚本头部,便于交接给下一班人员。
暂无评论,快来抢沙发吧!