PXI PROGRAMMABLE POWER SUPPLIES
PXI 可编程电源曲线控制
在浏览器中生成、编辑和导出电压或电流曲线,再通过本机 NI-DCPower Python 脚本驱动 PXI 可编程电源按序列输出。
PXI 可编程电源电压 / 电流曲线CSV → nidcpower
曲线设计
参数只影响浏览器内的预览和导出文件,实际输出前请再次核对负载与限值。
曲线预览
201 个点 · 2.000 s · 电压 (V)
最小值0.0000000 V
最大值5.0000000 V
步进间隔10.00 ms
时间 (s)未选择节点电压 (V)
CSV 数据
导出的 CSV 使用 `index,time_s,level,voltage_v,current_a`;表格只显示一列曲线输出值,避免电压字段重复。
| # | 时间 (s) | 曲线输出值 (V) |
|---|---|---|
| 0 | 0.000000000 | 0.0000000 |
| 1 | 0.010000000 | 0.025000000 |
| 2 | 0.020000000 | 0.050000000 |
| 3 | 0.030000000 | 0.075000000 |
| 4 | 0.040000000 | 0.10000000 |
| 5 | 0.050000000 | 0.12500000 |
| 6 | 0.060000000 | 0.15000000 |
| 7 | 0.070000000 | 0.17500000 |
| 8 | 0.080000000 | 0.20000000 |
| 9 | 0.090000000 | 0.22500000 |
| 10 | 0.100000000 | 0.25000000 |
| 11 | 0.110000000 | 0.27500000 |
| 12 | 0.120000000 | 0.30000000 |
| 13 | 0.130000000 | 0.32500000 |
| 14 | 0.140000000 | 0.35000000 |
| 15 | 0.150000000 | 0.37500000 |
| 16 | 0.160000000 | 0.40000000 |
| 17 | 0.170000000 | 0.42500000 |
| 18 | 0.180000000 | 0.45000000 |
| 19 | 0.190000000 | 0.47500000 |
| 20 | 0.200000000 | 0.50000000 |
| 21 | 0.210000000 | 0.52500000 |
| 22 | 0.220000000 | 0.55000000 |
| 23 | 0.230000000 | 0.57500000 |
| 24 | 0.240000000 | 0.60000000 |
| 25 | 0.250000000 | 0.62500000 |
| 26 | 0.260000000 | 0.65000000 |
| 27 | 0.270000000 | 0.67500000 |
| 28 | 0.280000000 | 0.70000000 |
| 29 | 0.290000000 | 0.72500000 |
| 30 | 0.300000000 | 0.75000000 |
| 31 | 0.310000000 | 0.77500000 |
| 32 | 0.320000000 | 0.80000000 |
| 33 | 0.330000000 | 0.82500000 |
| 34 | 0.340000000 | 0.85000000 |
| 35 | 0.350000000 | 0.87500000 |
| 36 | 0.360000000 | 0.90000000 |
| 37 | 0.370000000 | 0.92500000 |
| 38 | 0.380000000 | 0.95000000 |
| 39 | 0.390000000 | 0.97500000 |
| 40 | 0.400000000 | 1.0000000 |
| 41 | 0.410000000 | 1.0250000 |
| 42 | 0.420000000 | 1.0500000 |
| 43 | 0.430000000 | 1.0750000 |
| 44 | 0.440000000 | 1.1000000 |
| 45 | 0.450000000 | 1.1250000 |
| 46 | 0.460000000 | 1.1500000 |
| 47 | 0.470000000 | 1.1750000 |
| 48 | 0.480000000 | 1.2000000 |
| 49 | 0.490000000 | 1.2250000 |
| 50 | 0.500000000 | 1.2500000 |
| 51 | 0.510000000 | 1.2750000 |
| 52 | 0.520000000 | 1.3000000 |
| 53 | 0.530000000 | 1.3250000 |
| 54 | 0.540000000 | 1.3500000 |
| 55 | 0.550000000 | 1.3750000 |
| 56 | 0.560000000 | 1.4000000 |
| 57 | 0.570000000 | 1.4250000 |
| 58 | 0.580000000 | 1.4500000 |
| 59 | 0.590000000 | 1.4750000 |
| 60 | 0.600000000 | 1.5000000 |
| 61 | 0.610000000 | 1.5250000 |
| 62 | 0.620000000 | 1.5500000 |
| 63 | 0.630000000 | 1.5750000 |
| 64 | 0.640000000 | 1.6000000 |
| 65 | 0.650000000 | 1.6250000 |
| 66 | 0.660000000 | 1.6500000 |
| 67 | 0.670000000 | 1.6750000 |
| 68 | 0.680000000 | 1.7000000 |
| 69 | 0.690000000 | 1.7250000 |
| 70 | 0.700000000 | 1.7500000 |
| 71 | 0.710000000 | 1.7750000 |
| 72 | 0.720000000 | 1.8000000 |
| 73 | 0.730000000 | 1.8250000 |
| 74 | 0.740000000 | 1.8500000 |
| 75 | 0.750000000 | 1.8750000 |
| 76 | 0.760000000 | 1.9000000 |
| 77 | 0.770000000 | 1.9250000 |
| 78 | 0.780000000 | 1.9500000 |
| 79 | 0.790000000 | 1.9750000 |
| 80 | 0.800000000 | 2.0000000 |
| 81 | 0.810000000 | 2.0250000 |
| 82 | 0.820000000 | 2.0500000 |
| 83 | 0.830000000 | 2.0750000 |
| 84 | 0.840000000 | 2.1000000 |
| 85 | 0.850000000 | 2.1250000 |
| 86 | 0.860000000 | 2.1500000 |
| 87 | 0.870000000 | 2.1750000 |
| 88 | 0.880000000 | 2.2000000 |
| 89 | 0.890000000 | 2.2250000 |
| 90 | 0.900000000 | 2.2500000 |
| 91 | 0.910000000 | 2.2750000 |
| 92 | 0.920000000 | 2.3000000 |
| 93 | 0.930000000 | 2.3250000 |
| 94 | 0.940000000 | 2.3500000 |
| 95 | 0.950000000 | 2.3750000 |
| 96 | 0.960000000 | 2.4000000 |
| 97 | 0.970000000 | 2.4250000 |
| 98 | 0.980000000 | 2.4500000 |
| 99 | 0.990000000 | 2.4750000 |
| 100 | 1.000000000 | 2.5000000 |
| 101 | 1.010000000 | 2.5250000 |
| 102 | 1.020000000 | 2.5500000 |
| 103 | 1.030000000 | 2.5750000 |
| 104 | 1.040000000 | 2.6000000 |
| 105 | 1.050000000 | 2.6250000 |
| 106 | 1.060000000 | 2.6500000 |
| 107 | 1.070000000 | 2.6750000 |
| 108 | 1.080000000 | 2.7000000 |
| 109 | 1.090000000 | 2.7250000 |
| 110 | 1.100000000 | 2.7500000 |
| 111 | 1.110000000 | 2.7750000 |
| 112 | 1.120000000 | 2.8000000 |
| 113 | 1.130000000 | 2.8250000 |
| 114 | 1.140000000 | 2.8500000 |
| 115 | 1.150000000 | 2.8750000 |
| 116 | 1.160000000 | 2.9000000 |
| 117 | 1.170000000 | 2.9250000 |
| 118 | 1.180000000 | 2.9500000 |
| 119 | 1.190000000 | 2.9750000 |
| 120 | 1.200000000 | 3.0000000 |
| 121 | 1.210000000 | 3.0250000 |
| 122 | 1.220000000 | 3.0500000 |
| 123 | 1.230000000 | 3.0750000 |
| 124 | 1.240000000 | 3.1000000 |
| 125 | 1.250000000 | 3.1250000 |
| 126 | 1.260000000 | 3.1500000 |
| 127 | 1.270000000 | 3.1750000 |
| 128 | 1.280000000 | 3.2000000 |
| 129 | 1.290000000 | 3.2250000 |
| 130 | 1.300000000 | 3.2500000 |
| 131 | 1.310000000 | 3.2750000 |
| 132 | 1.320000000 | 3.3000000 |
| 133 | 1.330000000 | 3.3250000 |
| 134 | 1.340000000 | 3.3500000 |
| 135 | 1.350000000 | 3.3750000 |
| 136 | 1.360000000 | 3.4000000 |
| 137 | 1.370000000 | 3.4250000 |
| 138 | 1.380000000 | 3.4500000 |
| 139 | 1.390000000 | 3.4750000 |
| 140 | 1.400000000 | 3.5000000 |
| 141 | 1.410000000 | 3.5250000 |
| 142 | 1.420000000 | 3.5500000 |
| 143 | 1.430000000 | 3.5750000 |
| 144 | 1.440000000 | 3.6000000 |
| 145 | 1.450000000 | 3.6250000 |
| 146 | 1.460000000 | 3.6500000 |
| 147 | 1.470000000 | 3.6750000 |
| 148 | 1.480000000 | 3.7000000 |
| 149 | 1.490000000 | 3.7250000 |
| 150 | 1.500000000 | 3.7500000 |
| 151 | 1.510000000 | 3.7750000 |
| 152 | 1.520000000 | 3.8000000 |
| 153 | 1.530000000 | 3.8250000 |
| 154 | 1.540000000 | 3.8500000 |
| 155 | 1.550000000 | 3.8750000 |
| 156 | 1.560000000 | 3.9000000 |
| 157 | 1.570000000 | 3.9250000 |
| 158 | 1.580000000 | 3.9500000 |
| 159 | 1.590000000 | 3.9750000 |
| 160 | 1.600000000 | 4.0000000 |
| 161 | 1.610000000 | 4.0250000 |
| 162 | 1.620000000 | 4.0500000 |
| 163 | 1.630000000 | 4.0750000 |
| 164 | 1.640000000 | 4.1000000 |
| 165 | 1.650000000 | 4.1250000 |
| 166 | 1.660000000 | 4.1500000 |
| 167 | 1.670000000 | 4.1750000 |
| 168 | 1.680000000 | 4.2000000 |
| 169 | 1.690000000 | 4.2250000 |
| 170 | 1.700000000 | 4.2500000 |
| 171 | 1.710000000 | 4.2750000 |
| 172 | 1.720000000 | 4.3000000 |
| 173 | 1.730000000 | 4.3250000 |
| 174 | 1.740000000 | 4.3500000 |
| 175 | 1.750000000 | 4.3750000 |
| 176 | 1.760000000 | 4.4000000 |
| 177 | 1.770000000 | 4.4250000 |
| 178 | 1.780000000 | 4.4500000 |
| 179 | 1.790000000 | 4.4750000 |
| 180 | 1.800000000 | 4.5000000 |
| 181 | 1.810000000 | 4.5250000 |
| 182 | 1.820000000 | 4.5500000 |
| 183 | 1.830000000 | 4.5750000 |
| 184 | 1.840000000 | 4.6000000 |
| 185 | 1.850000000 | 4.6250000 |
| 186 | 1.860000000 | 4.6500000 |
| 187 | 1.870000000 | 4.6750000 |
| 188 | 1.880000000 | 4.7000000 |
| 189 | 1.890000000 | 4.7250000 |
| 190 | 1.900000000 | 4.7500000 |
| 191 | 1.910000000 | 4.7750000 |
| 192 | 1.920000000 | 4.8000000 |
| 193 | 1.930000000 | 4.8250000 |
| 194 | 1.940000000 | 4.8500000 |
| 195 | 1.950000000 | 4.8750000 |
| 196 | 1.960000000 | 4.9000000 |
| 197 | 1.970000000 | 4.9250000 |
| 198 | 1.980000000 | 4.9500000 |
| 199 | 1.990000000 | 4.9750000 |
生成 nidcpower 脚本
下载后在安装 NI-DCPower Python API 的本机运行,脚本会读取同目录 CSV。
#!/usr/bin/env python3
"""Run a CSV curve on a PXI programmable power supply with NI-DCPower.
Generated by the Instrument Data tools. Verify the resource and limits first.
"""
import argparse
import csv
import time
from pathlib import Path
import nidcpower
DEFAULT_RESOURCE = "PXI1Slot2/0"
DEFAULT_MODE = "voltage"
DEFAULT_REPEAT = 1
DEFAULT_VOLTAGE_LIMIT = 6
DEFAULT_CURRENT_LIMIT = 0.1
def load_curve(path: Path):
with path.open("r", newline="", encoding="utf-8-sig") as handle:
rows = list(csv.DictReader(handle))
if len(rows) < 2:
raise ValueError("CSV must contain at least two data rows")
values = []
times = []
for row in rows:
value_text = row.get("level") or row.get("voltage_v") or row.get("current_a") or row.get("value")
if value_text in (None, ""):
raise ValueError("CSV is missing level/voltage_v/current_a")
values.append(float(value_text))
time_text = row.get("time_s") or row.get("time")
times.append(float(time_text) if time_text not in (None, "") else None)
if any(value is None for value in times):
delay = 0.001
delays = [delay] * len(values)
else:
delays = []
for index in range(len(values)):
if index + 1 < len(times):
delays.append(max(0.000001, times[index + 1] - times[index]))
elif len(times) > 1:
delays.append(max(0.000001, times[-1] - times[-2]))
else:
delays.append(0.001)
return values, delays, sum(delays)
def main():
parser = argparse.ArgumentParser(description="Run a CSV voltage/current curve on a PXI programmable power supply")
parser.add_argument("--resource", default=DEFAULT_RESOURCE)
parser.add_argument("--csv", type=Path, default=Path("ni_4112_curve.csv"))
parser.add_argument("--mode", choices=("voltage", "current"), default=DEFAULT_MODE)
parser.add_argument("--voltage-limit", type=float, default=DEFAULT_VOLTAGE_LIMIT)
parser.add_argument("--current-limit", type=float, default=DEFAULT_CURRENT_LIMIT)
parser.add_argument("--repeat", type=int, default=DEFAULT_REPEAT)
parser.add_argument("--simulate", action="store_true", help="Use the NI driver simulator")
args = parser.parse_args()
values, delays, total_time = load_curve(args.csv)
if args.repeat < 1:
raise ValueError("--repeat must be at least 1")
session_args = {"resource_name": args.resource}
if args.simulate:
session_args["options"] = "Simulate=1, DriverSetup=Model:4112"
with nidcpower.Session(**session_args) as session:
session.output_function = (nidcpower.OutputFunction.DC_VOLTAGE
if args.mode == "voltage"
else nidcpower.OutputFunction.DC_CURRENT)
session.source_mode = nidcpower.SourceMode.SEQUENCE
if args.mode == "voltage":
session.voltage_level_autorange = True
session.current_limit = args.current_limit
else:
session.current_level_autorange = True
session.voltage_limit = args.voltage_limit
session.set_sequence(values, delays)
try:
session.output_enabled = True
for cycle in range(args.repeat):
print(f"Running cycle {cycle + 1}/{args.repeat}: {len(values)} points")
with session.initiate():
time.sleep(total_time)
finally:
session.output_enabled = False
print("Output disabled")
if __name__ == "__main__":
main()
CSV → PXI 电源运行
本页负责准备文件;硬件动作由本机脚本执行。
- 1
下载 CSV 和 Python 脚本,确认资源名、输出范围、负载和保护限值。
- 2
在安装 NI-DCPower 的本机执行
python run_ni_4112.py --resource PXI1Slot2/0 --csv curve.csv。 - 3
脚本使用 PXI 可编程电源的 simple sequence,在每轮结束后关闭输出;可先加
--simulate做驱动连通性检查。
依赖:NI-DCPower 驱动、Python
nidcpower 包。浏览器不会直接打开本机 NI 仪器。 输出安全提示
请确认 PXI 可编程电源的资源名、量程、负载、电流限制和电压限制。生成或下载文件不会产生实际输出,执行脚本前请连接并确认正确的仪器。