设置电压和电流、启用保护跳闸,并在一次仪器事务中读取电源的完整状态。
SupplyState
每个字段都是 Option,因为即使某一项读取失败,Box 也会返回一条结构完整的记录,而且并不是每台电源都会报告每一个量。
方法参考
set_voltage(volts: f64) -> Result<()>
设置输出电压设定值。
超过仪器硬件限制的值,Box 会在它到达仪器之前就拒绝,形式是 Error::Box,信息中会指出该限制。信息内容是 Voltage 999.0V exceeds hardware limit 60.0V。
set_current(amps: f64) -> Result<()>
设置电流限值。正是达到这个限值,才会让电源从 CV 模式进入 CC 模式。
enable() -> Result<()> 和 disable() -> Result<()>
打开或关闭输出。
请在清理阶段调用 disable()。保持在启用状态的电源,在您的测试进程退出之后仍然是启用的,于是下一个测试一开始被测设备就已经通电了。
set_ovp(volts: f64) -> Result<()> 和 set_ocp(amps: f64) -> Result<()>
设置并启用保护跳闸。它们不只是写入阈值。
clear_ovp() -> Result<()> 和 clear_ocp() -> Result<()>
清除已经触发的跳闸。在您清除之前,输出会一直保持关闭。
state() -> Result<SupplyState>
在一次仪器事务中读取全部内容。
这里没有单独的 getter。state() 就是读取路径,而一次把所有内容取齐,意味着这些字段描述的是同一个时刻,而不是若干个时刻。
上电、校验、清理
断言被测设备没有超出它的电流预算
受支持的硬件
- 输出关闭时,测量值可能是
None。 Keithley 2281S 在输出禁用时把 voltage、current 和 power 报告为 None,启用之后才给出真实数值。Rigol DP821 则在两种状态下都报告 0。这正是这些字段是 Option 的原因 —— 请把 None 当作”没有测量”,而不是 0。
state() 返回 Ok 并不代表仪器作出了应答。当 Box 联系不上硬件服务时,您会得到一个结构完整的 SupplyState,其中每一项测量都是 None,而 error 被设为说明原因的字符串。在相信某个字段之前,请先检查 error。
- 安全限值约束的是设定值,而不是跳闸点。 在该 Net 上配置了
max_voltage 上限之后,超过它的 set_voltage() 会被拒绝,但超过它的 set_ovp() 会被接受并应用。请参阅 客户端与 Box。
- 电源 Net 和电池 Net 可以指向同一台物理仪器。Box 会把它们放在同一把按仪器区分的锁下串行化,因此它们不会交错执行,但它们共享该仪器的模式。