现场程序优化
This commit is contained in:
@@ -85,6 +85,8 @@ namespace DeviceCommand.Devices
|
||||
/// 轴使能控制
|
||||
/// </summary>
|
||||
/// <param name="axis">轴编号 (1 - 6)</param>
|
||||
/// <param name="enable">true: 使能轴, false: 禁用轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetAxisEnableAsync(int axis, bool enable, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -105,6 +107,8 @@ namespace DeviceCommand.Devices
|
||||
/// 读取指定轴的使能状态
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>true: 已使能, false: 未使能</returns>
|
||||
public async Task<bool> GetAxisEnableAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -125,6 +129,7 @@ namespace DeviceCommand.Devices
|
||||
/// <param name="xPos">X轴原点位置 (范围: 0 ~ 50000)</param>
|
||||
/// <param name="yPos">Y轴原点位置 (范围: 0 ~ 50000)</param>
|
||||
/// <param name="zPos">Z轴原点位置 (范围: 0 ~ 20000)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetHomePositionAsync(int xPos, int yPos, int zPos, CancellationToken ct = default)
|
||||
{
|
||||
if (xPos < 0 || xPos > 50000)
|
||||
@@ -144,6 +149,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 批量查询当前 X、Y、Z 三轴设定的原点位置值
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>返回包含三轴原点位置的元组 (X, Y, Z)</returns>
|
||||
public async Task<(int X, int Y, int Z)> GetHomePositionAsync(CancellationToken ct = default)
|
||||
{
|
||||
@@ -163,6 +169,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置回原点定位速度(带 0 - 100000 范围检查)
|
||||
/// </summary>
|
||||
/// <param name="speed">回原点定位速度 (范围: 0 - 100000)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetHomePositionSpeedAsync(int speed, CancellationToken ct = default)
|
||||
{
|
||||
if (speed < 0 || speed > 100000)
|
||||
@@ -174,6 +182,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询当前设定的回原点定位速度
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前回原点定位速度值</returns>
|
||||
public async Task<int> GetHomePositionSpeedAsync(CancellationToken ct = default)
|
||||
{
|
||||
ushort[] registers = await ReadHoldingRegistersAsync(_slaveAddress, ADDR_HD_HOME_POS_SPEED, 2, ct);
|
||||
@@ -188,6 +198,8 @@ namespace DeviceCommand.Devices
|
||||
/// 设置指定轴的运行速度(带 0 - 100000 范围检查)
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="speed">运行速度 (范围: 0 - 100000)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetAxisSpeedAsync(int axis, int speed, CancellationToken ct = default)
|
||||
{
|
||||
if (speed < 0 || speed > 100000)
|
||||
@@ -207,6 +219,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取指定轴当前设定的运行速度
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前设定的运行速度值</returns>
|
||||
public async Task<int> GetAxisSpeedAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -227,6 +242,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 写入指定轴的目标位置(动态安全校验:目标位置不能超过 [轴最大物理极限 - 当前轴原点设置值])
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="targetPos">目标位置</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetAxisTargetPositionAsync(int axis, int targetPos, CancellationToken ct = default)
|
||||
{
|
||||
var (xHome, yHome, zHome) = await GetHomePositionAsync(ct);
|
||||
@@ -272,6 +290,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取指定轴当前设定的目标指定位置
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前设定的目标位置值</returns>
|
||||
public async Task<int> GetAxisTargetPositionAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -293,6 +314,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置系统紧停锁定状态 (true: 锁定激活, false: 解除锁定)
|
||||
/// </summary>
|
||||
/// <param name="state">true: 锁定激活, false: 解除锁定</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetEStopStateAsync(bool state, CancellationToken ct = default)
|
||||
{
|
||||
await WriteSingleCoilAsync(_slaveAddress, ADDR_M_ESTOP, state, ct);
|
||||
@@ -301,6 +324,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置指定轴的停止控制状态 (true: 持续输出停止信号, false: 释放停止信号)
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="state">true: 持续输出停止信号, false: 释放停止信号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task SetStopStateAsync(int axis, bool state, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -317,6 +343,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 全局回零(安全校验版:先检查回原点速度是否为 0,为0则拒绝触发)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task HomeAsync(CancellationToken ct = default)
|
||||
{
|
||||
int currentSpeed = await GetHomePositionSpeedAsync(ct);
|
||||
@@ -331,6 +358,7 @@ namespace DeviceCommand.Devices
|
||||
/// 单轴指定位置启动(含速度判定、使能自动补齐、动作目标位置独立范围校验)
|
||||
/// </summary>
|
||||
/// <param name="axis">1: X轴, 2: Y轴, 3: Z轴</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task StartSingleAxisAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort startAddress;
|
||||
@@ -388,6 +416,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 三轴同时启动(全开:严格校验全部运行轴速度、批量检测与补正1~6号轴使能、联动校验三轴目标范围极限)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public async Task StartAllAxesAsync(CancellationToken ct = default)
|
||||
{
|
||||
// 1. 一次性读取三轴速度,严禁任何一轴速度为 0
|
||||
@@ -493,6 +522,8 @@ namespace DeviceCommand.Devices
|
||||
/// 读取指定轴的绝对位置(相对原点的实时位置,只读)
|
||||
/// </summary>
|
||||
/// <param name="axis">轴编号 (1-6)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>指定轴的绝对位置值</returns>
|
||||
public async Task<int> GetAbsolutePositionAsync(int axis, CancellationToken ct = default)
|
||||
{
|
||||
ushort address = axis switch
|
||||
@@ -516,6 +547,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 批量读取 1-6 轴的绝对位置(一次性读取 22 个寄存器,高效)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>返回 6 轴绝对位置元组</returns>
|
||||
public async Task<(int Axis1, int Axis2, int Axis3, int Axis4, int Axis5, int Axis6)> GetAllAbsolutePositionsAsync(CancellationToken ct = default)
|
||||
{
|
||||
|
||||
@@ -38,6 +38,21 @@ namespace DeviceCommand.Devices
|
||||
CURRent
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设备相位/输出模式[cite: 2]
|
||||
/// </summary>
|
||||
public enum DevicePhaseMode
|
||||
{
|
||||
/// <summary> 单相模式 </summary>
|
||||
ONE,
|
||||
/// <summary> 三相模式 </summary>
|
||||
THRee,
|
||||
/// <summary> 反相模式 </summary>
|
||||
DIFFerence,
|
||||
/// <summary> 多通道模式 </summary>
|
||||
MULTichannel
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
[ADPCommand]
|
||||
@@ -52,21 +67,39 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 1. IEEE 488.2 公共命令
|
||||
|
||||
/// <summary>
|
||||
/// 清除错误队列和状态字节
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除错误队列和状态字节(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*CLS{ScpiDelimiter}", ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询设备标识
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设备标识字符串(制造商, 产品型号, 序列号, 固件版本)</returns>
|
||||
public virtual async Task<string> 查询设备标识(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*IDN?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重置设备
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 重置设备(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*RST{ScpiDelimiter}", ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取状态字节
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>状态字节寄存器值</returns>
|
||||
public virtual async Task<string> 读取状态字节(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*STB?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
@@ -79,6 +112,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置电源输出源的电气模式/工作耦合模式 (AC, DC, ACDC, DCAC)[cite: 1]
|
||||
/// </summary>
|
||||
/// <param name="模式">电气耦合模式 (AC/DC/ACDC/DCAC)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电源模式(PowerCouplingMode 模式, CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($":SOURce:FUNCtion {模式}{ScpiDelimiter}", ct); //[cite: 1]
|
||||
@@ -87,17 +122,29 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询电源当前的工作电气模式[cite: 1]
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前工作电气模式字符串</returns>
|
||||
public virtual async Task<string> 查询电源模式(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":SOURce:FUNCtion?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置DC输出开关
|
||||
/// </summary>
|
||||
/// <param name="开启">true: 开启输出, false: 关闭输出</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置DC输出(bool 开启, CancellationToken ct = default)
|
||||
{
|
||||
string 参数 = 开启 ? "ON" : "OFF"; //[cite: 1]
|
||||
await SendAsync($":OUTPut {参数}{ScpiDelimiter}", ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询DC输出状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>输出状态字符串(ON 或 OFF)</returns>
|
||||
public virtual async Task<string> 查询DC输出状态(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":OUTPut?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
@@ -107,24 +154,44 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 3. 设定输出参数设置 (AC 电压/频率/DC 电压)
|
||||
|
||||
/// <summary>
|
||||
/// 设置交流电压
|
||||
/// </summary>
|
||||
/// <param name="电压">交流电压设定值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置交流电压(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, ":SOURce:VOLTage {0:F2}{1}", 电压, ScpiDelimiter); //[cite: 1]
|
||||
await SendAsync(cmd, ct);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置直流电压
|
||||
/// </summary>
|
||||
/// <param name="电压">直流电压设定值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置直流电压(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, ":SOURce:VOLTage:DC {0:F2}{1}", 电压, ScpiDelimiter); //[cite: 1]
|
||||
await SendAsync(cmd, ct);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置频率
|
||||
/// </summary>
|
||||
/// <param name="频率">频率设定值 (单位: Hz)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置频率(double 频率, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, ":SOURce:FREQuency {0:F2}{1}", 频率, ScpiDelimiter); //[cite: 1]
|
||||
await SendAsync(cmd, ct);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置电流
|
||||
/// </summary>
|
||||
/// <param name="电流">电流设定值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电流(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, ":SOURce:CURRent {0:F3}{1}", 电流, ScpiDelimiter); //[cite: 1]
|
||||
@@ -135,34 +202,64 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 4. 测量与数据回测(高频数据轮询核心)
|
||||
|
||||
/// <summary>
|
||||
/// 查询实际电压
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实际电压测量值 (单位: V)</returns>
|
||||
[Monitorable("交流电源电压")]
|
||||
public virtual async Task<string> 查询实际电压(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":MEASure:VOLTage?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询实际电流
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实际电流测量值 (单位: A)</returns>
|
||||
[Monitorable("交流电源电流")]
|
||||
public virtual async Task<string> 查询实际电流(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":MEASure:CURRent?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询实际功率
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实际有功功率测量值 (单位: W)</returns>
|
||||
[Monitorable("交流电源功率")]
|
||||
public virtual async Task<string> 查询实际功率(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":MEASure:POWer?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询视在功率
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>视在功率测量值 (单位: VA)</returns>
|
||||
public virtual async Task<string> 查询视在功率(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":MEASure:POWer:APParent?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询实际频率
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实际频率测量值 (单位: Hz)</returns>
|
||||
public virtual async Task<string> 查询实际频率(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":MEASure:FREQuency?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询功率因数
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>功率因数测量值</returns>
|
||||
public virtual async Task<string> 查询功率因数(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":MEASure:POWer:PFACtor?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
@@ -172,33 +269,60 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 5. 保护参数设置与系统监控
|
||||
|
||||
/// <summary>
|
||||
/// 设置过流保护_OCP
|
||||
/// </summary>
|
||||
/// <param name="电流">过流保护阈值 (单位: A, RMS值)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过流保护_OCP(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, ":SOURce:CURRent:PROTection:RMS {0:F3}{1}", 电流, ScpiDelimiter); //[cite: 1]
|
||||
await SendAsync(cmd, ct);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置过压保护_OVP
|
||||
/// </summary>
|
||||
/// <param name="电压">过压保护阈值 (单位: V, 峰值)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过压保护_OVP(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, ":SOURce:VOLTage:PROTection:PEAK {0:F2}{1}", 电压, ScpiDelimiter); //[cite: 1]
|
||||
await SendAsync(cmd, ct);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询错误信息
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>错误代码和描述信息</returns>
|
||||
public virtual async Task<string> 查询错误信息(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":SYSTem:ERRor?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 切换远程控制模式
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 切换远程控制模式(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($":SYSTem:REMote{ScpiDelimiter}", ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 切换本地控制模式
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 切换本地控制模式(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($":SYSTem:LOCal{ScpiDelimiter}", ct); //[cite: 1]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清除保护告警
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除保护告警(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($":OUTPut:PROTection:CLEar{ScpiDelimiter}", ct); //[cite: 1]
|
||||
@@ -211,6 +335,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 清除最近的安时(Ah)与瓦时(Wh)统计数据[cite: 1]
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除充放电电量统计(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"SENSe:AHOur:RESet{ScpiDelimiter}", ct); //[cite: 1]
|
||||
@@ -220,6 +345,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取当前充放电累计的安时值 (单位: Ah)[cite: 1]
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>累计安时值 (单位: Ah)</returns>
|
||||
public virtual async Task<string> 查询累计安时_Ah(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"FETCh:AHOur?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
@@ -228,6 +355,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取当前充放电累计的瓦时值 (单位: Wh)[cite: 1]
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>累计瓦时值 (单位: Wh)</returns>
|
||||
public virtual async Task<string> 查询累计瓦时_Wh(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"FETCh:WHOur?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
@@ -236,6 +365,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取充放电积分持续时间 (单位: 秒)[cite: 1]
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>积分持续时间 (单位: 秒)</returns>
|
||||
public virtual async Task<string> 查询积分时间(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"FETCh:ENERgy:TIME?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
@@ -244,6 +375,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 切换设备的操作模式 (VOLTage: 电源模式, LOAD: 负载模式/放电, CURRent: 电流源)[cite: 1]
|
||||
/// </summary>
|
||||
/// <param name="模式">操作模式 (VOLTage/LOAD/CURRent)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置操作模式(DeviceOperationMode 模式, CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"SYSTem:OPERation:MODE {模式}{ScpiDelimiter}", ct); //[cite: 1]
|
||||
@@ -252,6 +385,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置放电截止电压/电压下限 (单位: V,用于防止电池过放)[cite: 1]
|
||||
/// </summary>
|
||||
/// <param name="电压">放电截止电压/电压下限 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电压下限(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, ":SOURce:VOLTage:LIMit:LOW {0:F2}{1}", 电压, ScpiDelimiter); //[cite: 1]
|
||||
@@ -259,5 +394,47 @@ namespace DeviceCommand.Devices
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 7. 相位输出模式设置 (单相/三相/反相)[cite: 2]
|
||||
|
||||
/// <summary>
|
||||
/// 设置电源相位输出模式 (ONE:单相 / THRee:三相 / DIFFerence:反相 / MULTichannel:多通道)[cite: 2]
|
||||
/// </summary>
|
||||
/// <param name="模式">相位输出模式</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置输出模式(DevicePhaseMode 模式, CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"SYSTem:FUNCtion {模式}{ScpiDelimiter}", ct); //[cite: 2]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 切换为单相模式 (SYST:FUNC ONE)[cite: 2]
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 切换为单相模式(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"SYSTem:FUNCtion ONE{ScpiDelimiter}", ct); //[cite: 2]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 切换为反相模式 (SYST:FUNC DIFFerence)[cite: 2]
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 切换为反相模式(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"SYSTem:FUNCtion DIFFerence{ScpiDelimiter}", ct); //[cite: 2]
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询当前输出模式 (单相/三相/反相/多通道)[cite: 2]
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>返回 ONE, THRee, DIFFerence 或 MULTichannel[cite: 2]</returns>
|
||||
public virtual async Task<string> 查询输出模式(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"SYSTem:FUNCtion?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 2]
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.1. 清除标准事件状态寄存器和错误队列
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除错误队列和状态字节(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*CLS{ScpiDelimiter}", ct);
|
||||
@@ -35,6 +36,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.4. 读取直流电源相关信息(制造商、产品型号、系统 SN、软件版本号)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设备标识字符串(制造商, 产品型号, 序列号, 固件版本)</returns>
|
||||
public virtual async Task<string> 查询设备标识(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*IDN?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -43,6 +46,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.7. 恢复出厂设置 (注意:设备重置保存数据大约需要 10 秒)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 重置设备(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*RST{ScpiDelimiter}", ct);
|
||||
@@ -51,6 +55,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.8. 读取状态字节寄存器(只读寄存器,读取时不会清除位)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>状态字节寄存器值</returns>
|
||||
public virtual async Task<string> 读取状态字节(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*STB?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -63,6 +69,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.1. 设定输出电压值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="电压">输出电压设定值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电压(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "SOURce:VOLTage {0:F3}{1}", 电压, ScpiDelimiter);
|
||||
@@ -72,6 +80,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.1. 查询输出电压设定值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>输出电压设定值 (单位: V)</returns>
|
||||
public virtual async Task<string> 查询电压设定(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"SOURce:VOLTage?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -80,6 +90,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.2. 设置输出限流值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="电流">输出限流设定值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电流(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "SOURce:CURRent {0:F3}{1}", 电流, ScpiDelimiter);
|
||||
@@ -89,6 +101,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.2. 查询输出限流值设定值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>输出限流设定值 (单位: A)</returns>
|
||||
public virtual async Task<string> 查询电流设定(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"SOURce:CURRent?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -97,6 +111,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.3. 设置输出模拟内阻值 (单位: mΩ)
|
||||
/// </summary>
|
||||
/// <param name="内阻">模拟内阻设定值 (单位: mΩ)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置内阻(double 内阻, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "SOURce:INTErnalres {0:F1}{1}", 内阻, ScpiDelimiter);
|
||||
@@ -106,6 +122,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.4. 保存当前测试参数到指定存储组 (范围: 1-10)
|
||||
/// </summary>
|
||||
/// <param name="组别">存储组编号 (范围: 1-10)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 保存测试参数(int 组别, CancellationToken ct = default)
|
||||
{
|
||||
if (组别 < 1 || 组别 > 10) throw new ArgumentOutOfRangeException(nameof(组别), "组别有效范围为 1~10");
|
||||
@@ -115,6 +133,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.5. 调用指定存储组的测试参数 (范围: 1-10)
|
||||
/// </summary>
|
||||
/// <param name="组别">存储组编号 (范围: 1-10)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 调用测试参数(int 组别, CancellationToken ct = default)
|
||||
{
|
||||
if (组别 < 1 || 组别 > 10) throw new ArgumentOutOfRangeException(nameof(组别), "组别有效范围为 1~10");
|
||||
@@ -128,6 +148,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.1. 控制电源输出开关 (True: 开启, False: 关闭)
|
||||
/// </summary>
|
||||
/// <param name="开启">true: 开启输出, false: 关闭输出</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置DC输出(bool 开启, CancellationToken ct = default)
|
||||
{
|
||||
string 参数 = 开启 ? "ON" : "OFF";
|
||||
@@ -137,6 +159,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.1. 查询电源输出开关状态 (返回 "ON" 或 "OFF")
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>输出开关状态字符串("ON" 或 "OFF")</returns>
|
||||
public virtual async Task<string> 查询DC输出开关状态(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"OUTPut:ONOFF?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -146,6 +170,8 @@ namespace DeviceCommand.Devices
|
||||
/// 3.3.2. 设定电源工作模式
|
||||
/// (NORMal: 普通模式, CHARge: 电池充电, SEQuence: 序列模式, CPOWer: 恒功率模式, CARWave: 汽车测试, APG: 外部编程)
|
||||
/// </summary>
|
||||
/// <param name="模式">工作模式 (NORMal/CHARge/SEQuence/CPOWer/CARWave/APG)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置运行模式(string 模式, CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"OUTPut:MODE {模式}{ScpiDelimiter}", ct);
|
||||
@@ -154,6 +180,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.2. 查询电源当前运行工作模式
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前运行工作模式字符串</returns>
|
||||
public virtual async Task<string> 查询运行模式(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"OUTPut:MODE?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -162,6 +190,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.11. 设置电源输出 CV/CC 优先权 (CV 或 CC)
|
||||
/// </summary>
|
||||
/// <param name="优先模式">优先模式,只能为 "CV" 或 "CC"</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置CVCC优先权(string 优先模式, CancellationToken ct = default)
|
||||
{
|
||||
if (优先模式 != "CV" && 优先模式 != "CC") throw new ArgumentException("优先模式只能为 'CV' 或 'CC'");
|
||||
@@ -171,6 +201,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.12. 获取电源状态字(通过解析返回整数的二进制 Bit 位获取全状态环路及告警)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>电源状态字(整数字符串,通过二进制位标识各状态及告警)</returns>
|
||||
public virtual async Task<string> 查询设备状态字(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"OUTPut:STATe?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -179,6 +211,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.13. 获取电源事件告警状态值 (返回整数通过位定义标识 UVP/OVP/OCP/OPP/OTP)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>事件告警状态值(整数字符串,通过位定义标识 UVP/OVP/OCP/OPP/OTP)</returns>
|
||||
public virtual async Task<string> 查询事件告警状态(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"OUTPut:EVENT?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -187,6 +221,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.13. 清除当前的告警状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除告警(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"OUTPut:EVENT 0{ScpiDelimiter}", ct);
|
||||
@@ -195,6 +230,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.16. 打开/关闭设备定时关机功能
|
||||
/// </summary>
|
||||
/// <param name="开启">true: 开启定时关机, false: 关闭定时关机</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置定时关机开关(bool 开启, CancellationToken ct = default)
|
||||
{
|
||||
string 参数 = 开启 ? "ON" : "OFF";
|
||||
@@ -204,6 +241,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.17. 设定设备定时关机倒计时时间 (单位: s)
|
||||
/// </summary>
|
||||
/// <param name="秒数">定时关机倒计时时间 (单位: s)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置定时关机时间(double 秒数, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "OUTPut:TIMing:DWELI {0:F1}{1}", 秒数, ScpiDelimiter);
|
||||
@@ -213,6 +252,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.3.18. 控制泄放电路(Bleeder)开关状态
|
||||
/// </summary>
|
||||
/// <param name="开启">true: 开启泄放电路, false: 关闭泄放电路</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置泄放电路开关(bool 开启, CancellationToken ct = default)
|
||||
{
|
||||
string 参数 = 开启 ? "ON" : "OFF";
|
||||
@@ -226,6 +267,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.4.1. 回读通道输出端子上的实时测得电压值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时测量电压值 (单位: V)</returns>
|
||||
[Monitorable("高压直流电源电压")]
|
||||
public virtual async Task<string> 查询实际电压(CancellationToken ct = default)
|
||||
{
|
||||
@@ -235,6 +278,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.4.2. 回读通道输出端子上的实时测得电流值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时测量电流值 (单位: A)</returns>
|
||||
[Monitorable("高压直流电源电流")]
|
||||
public virtual async Task<string> 查询实际电流(CancellationToken ct = default)
|
||||
{
|
||||
@@ -244,6 +289,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.4.3. 回读通道输出端子上的实时测得功率值 (单位: W)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时测量功率值 (单位: W)</returns>
|
||||
[Monitorable("高压直流电源功率")]
|
||||
public virtual async Task<string> 查询实际功率(CancellationToken ct = default)
|
||||
{
|
||||
@@ -253,6 +300,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.4.4. 回读电池充电模式下当前累计已充入的容量值 (单位: mAh)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>累计已充入容量值 (单位: mAh)</returns>
|
||||
public virtual async Task<string> 查询已充电容量MAH(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"MEASure:MAH?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -261,6 +310,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.4.5. 获取当前电源的硬件额定电压上限值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>硬件额定电压上限值 (单位: V)</returns>
|
||||
public virtual async Task<string> 获取设备额定电压(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"MEASure:VOLTage:MAXimum?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -269,6 +320,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.4.6. 获取当前电源的硬件额定电流上限值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>硬件额定电流上限值 (单位: A)</returns>
|
||||
public virtual async Task<string> 获取设备额定电流(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"MEASure:CURRent:MAXimum?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -281,6 +334,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.1. 设置欠压保护门限值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="电压">欠压保护门限值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过欠压保护_UVP(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "PROTect:LESS:VOLTage {0:F3}{1}", 电压, ScpiDelimiter);
|
||||
@@ -290,6 +345,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.4. 设置过压保护门限值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="电压">过压保护门限值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过压保护_OVP(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "PROTect:OVER:VOLTage {0:F3}{1}", 电压, ScpiDelimiter);
|
||||
@@ -299,6 +356,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.6. 设置硬件硬件过流保护硬指标参数 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="电流">过流保护硬指标参数 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过流保护_OCP(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "PROTect:CURRent {0:F3}{1}", 电流, ScpiDelimiter);
|
||||
@@ -308,6 +367,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.8. 设置硬件过功率保护门限值 (单位: W)
|
||||
/// </summary>
|
||||
/// <param name="功率">过功率保护门限值 (单位: W)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过功率保护_OPP(double 功率, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "PROTect:POWer {0:F3}{1}", 功率, ScpiDelimiter);
|
||||
@@ -317,6 +378,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.12. 设置可调节的用户软输出电压下限值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="电压">输出电压下限值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电压下限(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "SOURce:VOLTage:LEVel:LIMit:LOW {0:F3}{1}", 电压, ScpiDelimiter);
|
||||
@@ -326,6 +389,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.13. 设置可调节的用户软输出电压上限值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="电压">输出电压上限值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电压上限(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "SOURce:VOLTage:LEVel:LIMit {0:F3}{1}", 电压, ScpiDelimiter);
|
||||
@@ -335,6 +400,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.14. 设置可调节的用户软输出电流下限值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="电流">输出电流下限值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电流下限(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "SOURce:CURRent:LEVel:LIMit:LOW {0:F3}{1}", 电流, ScpiDelimiter);
|
||||
@@ -344,6 +411,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.15. 设置可调节的用户软输出电流上限值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="电流">输出电流上限值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电流上限(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "SOURce:CURRent:LEVel:LIMit {0:F3}{1}", 电流, ScpiDelimiter);
|
||||
@@ -357,6 +426,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.6.1. 设定恒功率工作模式下的限定电压值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="电压">恒功率模式限定电压值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒功率模式电压(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "CPOWer:VOLTage {0:F3}{1}", 电压, ScpiDelimiter);
|
||||
@@ -366,6 +437,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.6.2. 设定恒功率工作模式下的限定电流值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="电流">恒功率模式限定电流值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒功率模式电流(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "CPOWer:CURRent {0:F3}{1}", 电流, ScpiDelimiter);
|
||||
@@ -375,6 +448,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.6.3. 设定恒功率工作模式下的运行功率目标值 (单位: W)
|
||||
/// </summary>
|
||||
/// <param name="功率">恒功率模式运行功率目标值 (单位: W)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒功率模式功率(double 功率, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "CPOWer:POWer {0:F3}{1}", 功率, ScpiDelimiter);
|
||||
@@ -383,4 +458,4 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 建立 TCP 连接,成功后自动激活心跳
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>连接是否成功</returns>
|
||||
public new async Task<bool> ConnectAsync(CancellationToken ct = default)
|
||||
{
|
||||
bool isConnected = await base.ConnectAsync(ct);
|
||||
@@ -124,6 +126,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.1 读取电源的相关信息(制造商, 产品标号, 产品序列号, 软件版本号)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设备标识字符串(制造商, 产品标号, 产品序列号, 软件版本号)</returns>
|
||||
public virtual async Task<string> 查询设备标识(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*IDN?{SCPIDelimiter}", SCPIDelimiter, ct);
|
||||
@@ -132,6 +136,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.2 从指定的单位中恢复 *SAV 命令保存的设定值 (参数:1~99)
|
||||
/// </summary>
|
||||
/// <param name="组别">存储组编号 (范围: 1~99)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 调用存储状态(int 组别, CancellationToken ct = default)
|
||||
{
|
||||
if (组别 < 1 || 组别 > 99) throw new ArgumentOutOfRangeException(nameof(组别), "组别有效范围为 1~99");
|
||||
@@ -141,6 +147,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.3 将仪器当前系统状态保存到非易失性内存中 (参数:1~99)
|
||||
/// </summary>
|
||||
/// <param name="组别">存储组编号 (范围: 1~99)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 保存当前状态(int 组别, CancellationToken ct = default)
|
||||
{
|
||||
if (组别 < 1 || 组别 > 99) throw new ArgumentOutOfRangeException(nameof(组别), "组别有效范围为 1~99");
|
||||
@@ -150,6 +158,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.4 远程控制触发一次
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 远程触发(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*TRG{SCPIDelimiter}", ct);
|
||||
@@ -158,6 +167,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.1.5 返回状态、采集电压、采集电流 (格式: 状态码,电压值,电流值)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>状态码,电压值,电流值的组合字符串</returns>
|
||||
public virtual async Task<string> 查询全部状态及采样(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*ALL?{SCPIDelimiter}", SCPIDelimiter, ct);
|
||||
@@ -170,6 +181,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.1 设置输出电压和输出电流值
|
||||
/// </summary>
|
||||
/// <param name="电压">输出电压设定值 (单位: V)</param>
|
||||
/// <param name="电流">输出电流设定值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 快捷设置电压电流(double 电压, double 电流, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号,规范应用 APPL 短格式
|
||||
@@ -180,6 +194,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.2.1 查询当前设定的输出电压和电流值
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前输出电压和电流设定值的组合字符串</returns>
|
||||
public virtual async Task<string> 查询快捷电压电流设定(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -193,6 +209,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.1 查询通道输出端子上测得的直流电流值 (A)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实测直流电流值 (单位: A)</returns>
|
||||
[Monitorable("低压直流电源电流")]
|
||||
public virtual async Task<string> 查询实际电流(CancellationToken ct = default)
|
||||
{
|
||||
@@ -203,6 +221,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.2 查询通道输出端子上测得的直流功率值 (W)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实测直流功率值 (单位: W)</returns>
|
||||
[Monitorable("低压直流电源功率")]
|
||||
public virtual async Task<string> 查询实际功率(CancellationToken ct = default)
|
||||
{
|
||||
@@ -213,6 +233,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.3 查询通道输出端子上测得的直流电压值 (V)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实测直流电压值 (单位: V)</returns>
|
||||
[Monitorable("低压直流电源电压")]
|
||||
public virtual async Task<string> 查询实际电压(CancellationToken ct = default)
|
||||
{
|
||||
@@ -223,6 +245,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.4 查询通道输出端子上测得的电压、电流和功率的组合值
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>电压、电流和功率的组合值字符串</returns>
|
||||
public virtual async Task<string> 查询电压电流功率数组(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -233,6 +257,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.5.5 查询通道输出端子上测得的输出时间长度
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>输出时间长度</returns>
|
||||
public virtual async Task<string> 查询总输出时间长度(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -246,6 +272,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.6.1 设置电源输出开关
|
||||
/// </summary>
|
||||
/// <param name="开启">true: 开启输出, false: 关闭输出</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置DC输出(bool 开启, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号,改用 OUTP 短格式
|
||||
@@ -256,6 +284,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.6.1 查询通道输出状态 (返回 ON 或 OFF)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>通道输出状态字符串("ON" 或 "OFF")</returns>
|
||||
public virtual async Task<string> 查询DC输出状态(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -265,6 +295,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.6.2 控制电源输出定时器的开关状态
|
||||
/// </summary>
|
||||
/// <param name="开启">true: 开启定时器, false: 关闭定时器</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置定时器状态(bool 开启, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -275,6 +307,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.6.3 设定电源输出定时器的时间 (单位: s, 范围: 0.1 ~ 999999.9)
|
||||
/// </summary>
|
||||
/// <param name="秒数">定时器时间 (单位: s, 范围: 0.1 ~ 999999.9)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置定时器时间(double 秒数, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -285,6 +319,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.6.4 设定电源输出的模式优先权 (CV优先 或 CC优先)
|
||||
/// </summary>
|
||||
/// <param name="是CV优先">true: CV优先, false: CC优先</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置输出模式优先(bool 是CV优先, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -299,6 +335,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.1.1 清除输出电流保护(OCP)电路状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除电流保护状态(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -308,6 +345,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.1.2 使能或禁止当前输出电流保护(OCP)电路
|
||||
/// </summary>
|
||||
/// <param name="启用">true: 使能OCP, false: 禁止OCP</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电流保护使能(bool 启用, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号,将 STATE 改为更常用的 STAT 简写
|
||||
@@ -318,6 +357,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.1.4 设置输出电流保护(OCP)阀值 (A)
|
||||
/// </summary>
|
||||
/// <param name="电流">OCP 保护阀值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过流保护值(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号。按 NGI 通用指令树,加上层级限制或者直接作用于 CURR:PROT
|
||||
@@ -328,6 +369,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.1.7 设置电源的输出电流值 (A)
|
||||
/// </summary>
|
||||
/// <param name="电流">输出电流设定值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电流(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号,改用标准 CURR 短格式
|
||||
@@ -338,6 +381,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.2.1 清除输出电压保护(OVP)电路状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除电压保护状态(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -347,6 +391,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.2.2 使能或禁止当前输出电压保护(OVP)电路
|
||||
/// </summary>
|
||||
/// <param name="启用">true: 使能OVP, false: 禁止OVP</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电压保护使能(bool 启用, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -357,6 +403,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.2.4 设置输出电压保护(OVP)阀值 (V)
|
||||
/// </summary>
|
||||
/// <param name="电压">OVP 保护阀值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过压保护值(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -367,6 +415,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.2.7 设置电源的输出电压值 (V)
|
||||
/// </summary>
|
||||
/// <param name="电压">输出电压设定值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电压(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号,改用标准 VOLT 短格式
|
||||
@@ -377,6 +427,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.2.8 设定电压输出范围的上限电压值 (V)
|
||||
/// </summary>
|
||||
/// <param name="电压">上限电压值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置电压上限限制(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -386,14 +438,17 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.2.9 清除电压上限限制(恢复为设备物理允许的最大电压值)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除电压上限限制(CancellationToken ct = default)
|
||||
{
|
||||
// 发送 MAXimum 设为最大值以达到“清除限制”的效果
|
||||
// 发送 MAXimum 设为最大值以达到"清除限制"的效果
|
||||
await SendAsync($"VOLT:LIMIT MAX{SCPIDelimiter}", ct); // 对应手册 3.7.2.8
|
||||
}
|
||||
/// <summary>
|
||||
/// 3.7.3.1 设置输出功率值 (W)
|
||||
/// </summary>
|
||||
/// <param name="功率">输出功率设定值 (单位: W)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置功率(double 功率, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号,改用标准 POW 短格式
|
||||
@@ -404,6 +459,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.7.3.2 禁止或使能当前恒功率(CP)输出
|
||||
/// </summary>
|
||||
/// <param name="启用">true: 使能恒功率输出, false: 禁止恒功率输出</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒功率输出使能(bool 启用, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -418,6 +475,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.9.1 控制蜂鸣器开关
|
||||
/// </summary>
|
||||
/// <param name="开启">true: 开启蜂鸣器, false: 关闭蜂鸣器</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置蜂鸣器状态(bool 开启, CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -428,6 +487,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.9.2 使蜂鸣器强制鸣叫一声
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 蜂鸣器鸣叫(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -437,6 +497,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.9.4 查询仪器当前出错记录数量 (最大 18 组)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前出错记录数量(最大 18 组)</returns>
|
||||
public virtual async Task<string> 查询错误记录数量(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -446,6 +508,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.9.5 读取仪器的出错信息 (成功返回 0,"No error")
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>错误代码和描述信息(成功返回 0,"No error")</returns>
|
||||
public virtual async Task<string> 查询错误信息(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -455,6 +519,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.9.7 设置电源为面板控制模式 (本地 Local 状态,前面板按键可用)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 切换本地控制模式(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -464,6 +529,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.9.8 设置电源为远程控制模式 (Remote 状态)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 切换远程控制模式(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -473,6 +539,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 3.9.9 通过通信接口设置电源为远程控制锁定模式
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 远程控制模式锁定(CancellationToken ct = default)
|
||||
{
|
||||
// 修正:去除前缀冒号
|
||||
@@ -481,4 +548,4 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 清除状态命令。清除标准事件状态寄存器和错误队列 (*CLS)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除错误队列和状态字节(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*CLS{ScpiDelimiter}", ct);
|
||||
@@ -33,6 +34,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询错误信息
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>错误代码和描述信息</returns>
|
||||
public virtual async Task<string> 查询错误信息(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":SYSTem:ERRor?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
@@ -41,6 +44,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取电子负载设备识别字符串 (*IDN?)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设备标识字符串(制造商, 产品型号, 序列号, 固件版本)</returns>
|
||||
public virtual async Task<string> 查询设备标识(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*IDN?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -49,6 +54,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 复位命令。使电子负载恢复到出厂默认配置状态 (*RST)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 重置设备(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*RST{ScpiDelimiter}", ct);
|
||||
@@ -57,6 +63,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取标准状态字节寄存器 (*STB?)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>标准状态字节寄存器值</returns>
|
||||
public virtual async Task<string> 读取状态字节(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*STB?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -65,6 +73,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 保存当前系统参数到指定的存储单元 (1~100)
|
||||
/// </summary>
|
||||
/// <param name="单元">存储单元编号 (范围: 1~100)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 保存当前状态(int 单元, CancellationToken ct = default)
|
||||
{
|
||||
if (单元 < 1 || 单元 > 100)
|
||||
@@ -76,6 +86,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 调用指定存储单元中保存的系统参数 (1~100)
|
||||
/// </summary>
|
||||
/// <param name="单元">存储单元编号 (范围: 1~100)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 调用存储状态(int 单元, CancellationToken ct = default)
|
||||
{
|
||||
if (单元 < 1 || 单元 > 100)
|
||||
@@ -91,6 +103,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 控制电子负载的输入控制开关(INPut:STATe <bool>)
|
||||
/// </summary>
|
||||
/// <param name="开启">true: 开启拉载, false: 关闭拉载</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置DC输入(bool 开启, CancellationToken ct = default)
|
||||
{
|
||||
string 参数 = 开启 ? "1" : "0";
|
||||
@@ -100,6 +114,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询电子负载当前的拉载开关状态 (返回 0 或 1)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>拉载开关状态("0" 或 "1")</returns>
|
||||
public virtual async Task<string> 查询DC输入状态(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"INPut:STATe?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -134,6 +150,11 @@ namespace DeviceCommand.Devices
|
||||
CPD,
|
||||
SZ
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置负载模式
|
||||
/// </summary>
|
||||
/// <param name="模式">电子负载工作模式枚举 (CC, CV, CR, CP 等)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置负载模式(DeviceWorkMode 模式, CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"INPut:FUNCtion {Enum.GetName(模式)}{ScpiDelimiter}", ct);
|
||||
@@ -142,6 +163,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询电子负载当前处于何种工作模式
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前工作模式字符串</returns>
|
||||
public virtual async Task<string> 查询负载模式(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"INPut:FUNCtion?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -154,6 +177,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设定恒电流模式(CC)大量程下的拉载电流目标值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="电流">拉载电流目标值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒电流CC(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "STATic:CC:HIGH:LEVel {0:F4}{1}", 电流, ScpiDelimiter);
|
||||
@@ -163,6 +188,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询恒电流模式大量程下设定的拉载电流值
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设定的拉载电流值 (单位: A)</returns>
|
||||
public virtual async Task<string> 查询恒电流CC设定(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"STATic:CC:HIGH:LEVel?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -171,6 +198,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设定恒电压模式(CV)大量程下的拉载电压目标值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="电压">拉载电压目标值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒电压CV(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "STATic:CV:HIGH:LEVel {0:F3}{1}", 电压, ScpiDelimiter);
|
||||
@@ -180,6 +209,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询恒电压模式大量程下设定的拉载电压值
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设定的拉载电压值 (单位: V)</returns>
|
||||
public virtual async Task<string> 查询恒电压CV设定(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"STATic:CV:HIGH:LEVel?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -188,6 +219,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设定恒功率模式(CP)大量程下的拉载功率目标值 (单位: W)
|
||||
/// </summary>
|
||||
/// <param name="功率">拉载功率目标值 (单位: W)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒功率CP(double 功率, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "STATic:CP:HIGH:LEVel {0:F3}{1}", 功率, ScpiDelimiter);
|
||||
@@ -197,6 +230,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询恒功率模式大量程下设定的拉载功率值
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设定的拉载功率值 (单位: W)</returns>
|
||||
public virtual async Task<string> 查询恒功率CP设定(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"STATic:CP:HIGH:LEVel?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -205,6 +240,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设定恒电阻模式(CR)大量程下的等效拉载电阻阻值 (单位: Ω)
|
||||
/// </summary>
|
||||
/// <param name="电阻">等效拉载电阻阻值 (单位: Ω)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒电阻CR(double 电阻, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "STATic:CR:HIGH:LEVel {0:F4}{1}", 电阻, ScpiDelimiter);
|
||||
@@ -214,6 +251,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询恒电阻模式大量程下设定的拉载电阻值
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设定的拉载电阻值 (单位: Ω)</returns>
|
||||
public virtual async Task<string> 查询恒电阻CR设定(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"STATic:CR:HIGH:LEVel?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -226,6 +265,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 回读电子负载输入端子上的实时测得电压值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时测量电压值 (单位: V)</returns>
|
||||
[Monitorable("高压直流负载电压")]
|
||||
public virtual async Task<string> 查询实际电压(CancellationToken ct = default)
|
||||
{
|
||||
@@ -235,6 +276,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 回读电子负载输入端子上的实时测得电流值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时测量电流值 (单位: A)</returns>
|
||||
[Monitorable("高压直流负载电流")]
|
||||
public virtual async Task<string> 查询实际电流(CancellationToken ct = default)
|
||||
{
|
||||
@@ -244,6 +287,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 回读电子负载输入端子上的实时测得功率值 (单位: W)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时测量功率值 (单位: W)</returns>
|
||||
[Monitorable("高压直流负载功率")]
|
||||
public virtual async Task<string> 查询实际功率(CancellationToken ct = default)
|
||||
{
|
||||
@@ -257,6 +302,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置电子负载的电流软保护阈值 (单位: A, 设置为 0 表示关闭)
|
||||
/// </summary>
|
||||
/// <param name="电流">电流软保护阈值 (单位: A, 0 表示关闭)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过流保护值_OCP(double 电流, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "INPut:CURRent:PROTection {0:F3}{1}", 电流, ScpiDelimiter);
|
||||
@@ -266,6 +313,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置电子负载的功率软保护阈值 (单位: W, 设置为 0 表示关闭)
|
||||
/// </summary>
|
||||
/// <param name="功率">功率软保护阈值 (单位: W, 0 表示关闭)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过功率保护值_OPP(double 功率, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "INPut:POWer:PROTection {0:F3}{1}", 功率, ScpiDelimiter);
|
||||
@@ -275,6 +324,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置电子负载的电压软保护阈值 (单位: V, 设置为 0 表示关闭)
|
||||
/// </summary>
|
||||
/// <param name="电压">电压软保护阈值 (单位: V, 0 表示关闭)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置过压保护值_OVP(double 电压, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "INPut:VOLTage:PROTection {0:F3}{1}", 电压, ScpiDelimiter);
|
||||
@@ -288,6 +339,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取负载报警/事件寄存器信息 (MEASure:EVENT?)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>报警/事件寄存器信息</returns>
|
||||
public virtual async Task<string> 查询报警事件信息(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"MEASure:EVENT?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -296,6 +349,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 清除负载当前的保护触发锁定状态 (INPut:CLearPROTect)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除保护告警(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"INPut:CLearPROTect{ScpiDelimiter}", ct);
|
||||
@@ -307,48 +361,123 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 组合测试 (COMBination:*)
|
||||
|
||||
/// <summary>
|
||||
/// 设置组合量程_CVCC
|
||||
/// </summary>
|
||||
/// <param name="量程">量程编号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置组合量程_CVCC(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"COMBination:CVCC:RANGE {量程}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置恒压速率_CVCC
|
||||
/// </summary>
|
||||
/// <param name="速率">恒压上升速率</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒压速率_CVCC(int 速率, CancellationToken ct = default)
|
||||
=> await SendAsync($"COMBination:CVCC:HIGH:RATE {速率}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置恒压大量程电压_CVCC
|
||||
/// </summary>
|
||||
/// <param name="电压">恒压大量程电压设定值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒压大量程电压_CVCC(double 电压, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CVCC:HIGH:LEVel {0:F3}{1}", 电压, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置限定电流_CVCC
|
||||
/// </summary>
|
||||
/// <param name="电流">限定电流值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置限定电流_CVCC(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CVCC:CLIMit {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置组合量程_CRCC
|
||||
/// </summary>
|
||||
/// <param name="量程">量程编号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置组合量程_CRCC(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"COMBination:CRCC:RANGE {量程}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置恒阻小量程电阻_CRCC
|
||||
/// </summary>
|
||||
/// <param name="电阻">恒阻小量程电阻值 (单位: Ω)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒阻小量程电阻_CRCC(double 电阻, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CRCC:LOW:LEVel {0:F4}{1}", 电阻, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置限定电流_CRCC
|
||||
/// </summary>
|
||||
/// <param name="电流">限定电流值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置限定电流_CRCC(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CRCC:CLIMit {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置上升斜率_CRCC
|
||||
/// </summary>
|
||||
/// <param name="斜率">电流上升斜率 (单位: A/μs)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置上升斜率_CRCC(double 斜率, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CRCC:LOW:SLEWRate:RAIse {0:F1}{1}", 斜率, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置下降斜率_CRCC
|
||||
/// </summary>
|
||||
/// <param name="斜率">电流下降斜率 (单位: A/μs)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置下降斜率_CRCC(double 斜率, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CRCC:LOW:SLEWRate:FALL {0:F1}{1}", 斜率, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置组合量程_CPCC
|
||||
/// </summary>
|
||||
/// <param name="量程">量程编号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置组合量程_CPCC(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"COMBination:CPCC:RANGE {量程}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置恒功率小量程功率_CPCC
|
||||
/// </summary>
|
||||
/// <param name="功率">恒功率小量程功率值 (单位: W)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒功率小量程功率_CPCC(double 功率, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CPCC:LOW:LEVel {0:F3}{1}", 功率, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置限定电流_CPCC
|
||||
/// </summary>
|
||||
/// <param name="电流">限定电流值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置限定电流_CPCC(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CPCC:CLIMit {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置组合量程_CVCR
|
||||
/// </summary>
|
||||
/// <param name="量程">量程编号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置组合量程_CVCR(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"COMBination:CVCR:RANGE {量程}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置恒压大量程电压_CVCR
|
||||
/// </summary>
|
||||
/// <param name="电压">恒压大量程电压设定值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置恒压大量程电压_CVCR(double 电压, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CVCR:HIGH:LEVel {0:F3}{1}", 电压, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置限定电阻_CVCR
|
||||
/// </summary>
|
||||
/// <param name="电阻">限定电阻值 (单位: Ω)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置限定电阻_CVCR(double 电阻, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "COMBination:CVCR:CLIMit {0:F4}{1}", 电阻, ScpiDelimiter), ct);
|
||||
|
||||
@@ -356,45 +485,115 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 瞬态测试 (DYNAmic:*)
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态运行方式_CC
|
||||
/// </summary>
|
||||
/// <param name="模式">运行方式 (0-连续, 1-单次, 2-A/B)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态运行方式_CC(int 模式, CancellationToken ct = default)
|
||||
=> await SendAsync($"DYNAmic:CC:MODe {模式}{ScpiDelimiter}", ct); // 0-连续, 1-单次, 2-A/B
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态量程_CC
|
||||
/// </summary>
|
||||
/// <param name="量程">量程编号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态量程_CC(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"DYNAmic:CC:RANGE {量程}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态主值电流_CC
|
||||
/// </summary>
|
||||
/// <param name="电流">主值电流 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态主值电流_CC(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CC:HIGH:LEVel:MAIN {0:F4}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态瞬态值电流_CC
|
||||
/// </summary>
|
||||
/// <param name="电流">瞬态值电流 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态瞬态值电流_CC(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CC:HIGH:LEVel:TRANSient {0:F4}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态上升斜率_CC
|
||||
/// </summary>
|
||||
/// <param name="斜率">电流上升斜率 (单位: A/μs)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态上升斜率_CC(double 斜率, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CC:HIGH:SLEWRate:RAIse {0:F1}{1}", 斜率, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态下降斜率_CC
|
||||
/// </summary>
|
||||
/// <param name="斜率">电流下降斜率 (单位: A/μs)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态下降斜率_CC(double 斜率, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CC:HIGH:SLEWRate:FALL {0:F1}{1}", 斜率, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态主值脉宽_CC
|
||||
/// </summary>
|
||||
/// <param name="时间_ms">主值脉宽 (单位: ms)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态主值脉宽_CC(double 时间_ms, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CC:WIDth:MAIN {0:F1}{1}", 时间_ms, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态瞬态脉宽_CC
|
||||
/// </summary>
|
||||
/// <param name="时间_ms">瞬态脉宽 (单位: ms)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态瞬态脉宽_CC(double 时间_ms, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CC:WIDth:TRANSient {0:F1}{1}", 时间_ms, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态运行方式_CV
|
||||
/// </summary>
|
||||
/// <param name="模式">运行方式</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态运行方式_CV(int 模式, CancellationToken ct = default)
|
||||
=> await SendAsync($"DYNAmic:CV:MODe {模式}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态量程_CV
|
||||
/// </summary>
|
||||
/// <param name="量程">量程编号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态量程_CV(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"DYNAmic:CV:RANGE {量程}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态主值电压_CV
|
||||
/// </summary>
|
||||
/// <param name="电压">主值电压 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态主值电压_CV(double 电压, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CV:HIGH:LEVel:MAIN {0:F3}{1}", 电压, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态瞬态值电压_CV
|
||||
/// </summary>
|
||||
/// <param name="电压">瞬态值电压 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态瞬态值电压_CV(double 电压, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CV:HIGH:LEVel:TRANSient {0:F3}{1}", 电压, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态主值脉宽_CV
|
||||
/// </summary>
|
||||
/// <param name="时间_ms">主值脉宽 (单位: ms)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态主值脉宽_CV(double 时间_ms, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CV:WIDth:MAIN {0:F1}{1}", 时间_ms, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置瞬态瞬态脉宽_CV
|
||||
/// </summary>
|
||||
/// <param name="时间_ms">瞬态脉宽 (单位: ms)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置瞬态瞬态脉宽_CV(double 时间_ms, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DYNAmic:CV:WIDth:TRANSient {0:F1}{1}", 时间_ms, ScpiDelimiter), ct);
|
||||
|
||||
@@ -402,30 +601,75 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 充放电测试 (DISCHarge:* / CHARge:*)
|
||||
|
||||
/// <summary>
|
||||
/// 设置放电电流
|
||||
/// </summary>
|
||||
/// <param name="电流">放电电流设定值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置放电电流(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DISCHarge:CURRent {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置放电终止电压
|
||||
/// </summary>
|
||||
/// <param name="电压">放电终止电压 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置放电终止电压(double 电压, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DISCHarge:VOLTage {0:F3}{1}", 电压, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置放电终止时间
|
||||
/// </summary>
|
||||
/// <param name="时间_s">放电终止时间 (单位: s)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置放电终止时间(double 时间_s, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DISCHarge:TIMe {0:F0}{1}", 时间_s, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置放电终止容量
|
||||
/// </summary>
|
||||
/// <param name="容量_Ah">放电终止容量 (单位: Ah)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置放电终止容量(double 容量_Ah, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "DISCHarge:CAPacity {0:F3}{1}", 容量_Ah, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 查询放电实时时间
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前放电已持续时间 (单位: s)</returns>
|
||||
public virtual async Task<string> 查询放电实时时间(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"DISCHarge:ECHO:TIMe?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 查询放电实时容量
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前放电已输出的容量 (单位: Ah)</returns>
|
||||
public virtual async Task<string> 查询放电实时容量(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"DISCHarge:ECHo:CAPacity?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置充电电流
|
||||
/// </summary>
|
||||
/// <param name="电流">充电电流设定值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置充电电流(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "CHARge:CURRent {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置充电电压
|
||||
/// </summary>
|
||||
/// <param name="电压">充电电压设定值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置充电电压(double 电压, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "CHARge:VOLTage {0:F3}{1}", 电压, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置充电恒压时间
|
||||
/// </summary>
|
||||
/// <param name="时间_s">恒压充电持续时间 (单位: s)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置充电恒压时间(int 时间_s, CancellationToken ct = default)
|
||||
=> await SendAsync($"CHARge:TIMe {时间_s}{ScpiDelimiter}", ct);
|
||||
|
||||
@@ -433,39 +677,99 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region OCP / OPP 保护扫描测试 (OCP:* / OPP:*)
|
||||
|
||||
/// <summary>
|
||||
/// 设置OCP初始电流
|
||||
/// </summary>
|
||||
/// <param name="电流">OCP扫描起始电流 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置OCP初始电流(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "OCP:BCURrent {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置OCP步进电流
|
||||
/// </summary>
|
||||
/// <param name="电流">每步递增电流值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置OCP步进电流(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "OCP:SCURrent {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置OCP单步时间
|
||||
/// </summary>
|
||||
/// <param name="时间_s">每步持续时间 (单位: s)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置OCP单步时间(double 时间_s, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "OCP:Time {0:F1}{1}", 时间_s, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置OCP终止电压
|
||||
/// </summary>
|
||||
/// <param name="电压">触发保护时的电压阈值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置OCP终止电压(double 电压, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "OCP:EVOLtage {0:F3}{1}", 电压, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 查询OCP状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>OCP扫描测试状态</returns>
|
||||
public virtual async Task<string> 查询OCP状态(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"OCP:STAtus?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取OCP结果电流
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>OCP测试触发时的电流值 (单位: A)</returns>
|
||||
public virtual async Task<string> 读取OCP结果电流(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"OCP:RCURrent?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置OPP初始功率
|
||||
/// </summary>
|
||||
/// <param name="功率">OPP扫描起始功率 (单位: W)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置OPP初始功率(double 功率, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "OPP:BPOWer {0:F3}{1}", 功率, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置OPP步进功率
|
||||
/// </summary>
|
||||
/// <param name="功率">每步递增功率值 (单位: W)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置OPP步进功率(double 功率, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "OPP:SPOWer {0:F3}{1}", 功率, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置OPP单步时间
|
||||
/// </summary>
|
||||
/// <param name="时间_s">每步持续时间 (单位: s)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置OPP单步时间(double 时间_s, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "OPP:TIME {0:F1}{1}", 时间_s, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置OPP终止电压
|
||||
/// </summary>
|
||||
/// <param name="电压">触发保护时的电压阈值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置OPP终止电压(double 电压, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "OPP:EVOLtage {0:F3}{1}", 电压, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 查询OPP状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>OPP扫描测试状态</returns>
|
||||
public virtual async Task<string> 查询OPP状态(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"OPP:STAtus?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取OPP结果功率
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>OPP测试触发时的功率值 (单位: W)</returns>
|
||||
public virtual async Task<string> 读取OPP结果功率(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"OPP:RPOWer?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
@@ -473,45 +777,115 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 扫频 SWEEP 与 波形拉载 WAVE (SWEEP:* / WAVE:*)
|
||||
|
||||
/// <summary>
|
||||
/// 设置扫频最小电流
|
||||
/// </summary>
|
||||
/// <param name="电流">扫频最小电流值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置扫频最小电流(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "SWEEP:TCURrent {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置扫频最大电流
|
||||
/// </summary>
|
||||
/// <param name="电流">扫频最大电流值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置扫频最大电流(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "SWEEP:MCURrent {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置扫频起始频率
|
||||
/// </summary>
|
||||
/// <param name="频率_Hz">扫频起始频率 (单位: Hz)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置扫频起始频率(double 频率_Hz, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "SWEEP:SFRequency {0:F1}{1}", 频率_Hz, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置扫频结束频率
|
||||
/// </summary>
|
||||
/// <param name="频率_Hz">扫频结束频率 (单位: Hz)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置扫频结束频率(double 频率_Hz, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "SWEEP:EFRequency {0:F1}{1}", 频率_Hz, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置扫频单步时间
|
||||
/// </summary>
|
||||
/// <param name="时间_ms">每个频率点停留时间 (单位: ms)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置扫频单步时间(double 时间_ms, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "SWEEP:STPTime {0:F1}{1}", 时间_ms, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置扫频占空比
|
||||
/// </summary>
|
||||
/// <param name="占空比">占空比值 (单位: %)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置扫频占空比(double 占空比, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "SWEEP:DUTYcycle {0:F1}{1}", 占空比, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取扫频当前运行频率
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前扫频运行频率 (单位: Hz)</returns>
|
||||
public virtual async Task<string> 读取扫频当前运行频率(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"SWEEP:CFRequency?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取扫频测试结果
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>扫频测试结果</returns>
|
||||
public virtual async Task<string> 读取扫频测试结果(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"SWEEP:RESult?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置波形量程
|
||||
/// </summary>
|
||||
/// <param name="量程">波形量程编号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置波形量程(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"WAVE:RANGe {量程}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置波形类型
|
||||
/// </summary>
|
||||
/// <param name="类型">波形类型 (0-正弦波, 1-方波, 2-三角波, 3-锯齿波, 4-自定义)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置波形类型(int 类型, CancellationToken ct = default)
|
||||
=> await SendAsync($"WAVE:TYPe {类型}{ScpiDelimiter}", ct); // 0-正弦波, 1-方波, 2-三角波, 3-锯齿波, 4-自定义
|
||||
|
||||
/// <summary>
|
||||
/// 设置波形频率
|
||||
/// </summary>
|
||||
/// <param name="频率_Hz">波形频率 (单位: Hz)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置波形频率(double 频率_Hz, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "WAVE:FREQuency {0:F1}{1}", 频率_Hz, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置波形幅值
|
||||
/// </summary>
|
||||
/// <param name="幅值">波形幅值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置波形幅值(double 幅值, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "WAVE:SETValue {0:F3}{1}", 幅值, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置波形时间
|
||||
/// </summary>
|
||||
/// <param name="时间_ms">波形周期时间 (单位: ms)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置波形时间(double 时间_ms, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "WAVE:TIMe {0:F1}{1}", 时间_ms, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置波形叠加值
|
||||
/// </summary>
|
||||
/// <param name="叠加值">直流叠加偏置值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置波形叠加值(double 叠加值, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "WAVE:BVALue {0:F3}{1}", 叠加值, ScpiDelimiter), ct);
|
||||
|
||||
@@ -519,21 +893,51 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region 内阻测试 ESR (ESR:*)
|
||||
|
||||
/// <summary>
|
||||
/// 设置ESR带载量程
|
||||
/// </summary>
|
||||
/// <param name="量程">带载量程编号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置ESR带载量程(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"ESR:LOADRange {量程}{ScpiDelimiter}", ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置ESR大量程带载电流
|
||||
/// </summary>
|
||||
/// <param name="电流">带载电流值 (单位: A)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置ESR大量程带载电流(double 电流, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "ESR:CURRenthigh {0:F3}{1}", 电流, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置ESR测量方法
|
||||
/// </summary>
|
||||
/// <param name="方法">测量方法 (0-方波平均法, 1-单脉冲法)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置ESR测量方法(int 方法, CancellationToken ct = default)
|
||||
=> await SendAsync($"ESR:MODE {方法}{ScpiDelimiter}", ct); // 0-方波平均法, 1-单脉冲法
|
||||
|
||||
/// <summary>
|
||||
/// 设置ESR采样量程
|
||||
/// </summary>
|
||||
/// <param name="量程">采样量程 (0-1000mV, 1-100mV, 2-10mV)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置ESR采样量程(int 量程, CancellationToken ct = default)
|
||||
=> await SendAsync($"ESR:MEASurerange {量程}{ScpiDelimiter}", ct); // 0-1000mV, 1-100mV, 2-10mV
|
||||
|
||||
/// <summary>
|
||||
/// 查询ESR状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>ESR测试状态</returns>
|
||||
public virtual async Task<string> 查询ESR状态(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"ESR:STAtus?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取ESR结果
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>ESR测试结果 (单位: Ω)</returns>
|
||||
public virtual async Task<string> 读取ESR结果(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"ESR:RESult?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
@@ -541,30 +945,75 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#region MPPT 测试 (MPP:*)
|
||||
|
||||
/// <summary>
|
||||
/// 设置MPPT步进电压
|
||||
/// </summary>
|
||||
/// <param name="电压_V">步进电压值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置MPPT步进电压(double 电压_V, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "MPP:BVOLtage {0:F3}{1}", 电压_V, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置MPPT步进时间
|
||||
/// </summary>
|
||||
/// <param name="时间_s">每步停留时间 (单位: s)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置MPPT步进时间(double 时间_s, CancellationToken ct = default)
|
||||
=> await SendAsync(string.Format(CultureInfo.InvariantCulture, "MPP:TIME {0:F1}{1}", 时间_s, ScpiDelimiter), ct);
|
||||
|
||||
/// <summary>
|
||||
/// 设置MPPT模式
|
||||
/// </summary>
|
||||
/// <param name="模式">工作模式 (0-扫描模式, 1-跟踪模式)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置MPPT模式(int 模式, CancellationToken ct = default)
|
||||
=> await SendAsync($"MPP:MODE {模式}{ScpiDelimiter}", ct); // 0-扫描模式, 1-跟踪模式
|
||||
|
||||
/// <summary>
|
||||
/// 查询MPPT状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>MPPT测试状态</returns>
|
||||
public virtual async Task<string> 查询MPPT状态(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"MPP:STATus?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取MPPT最大功率
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>最大功率值 (单位: W)</returns>
|
||||
public virtual async Task<string> 读取MPPT最大功率(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"MPP:MPOWer?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取MPPT最大功率电压
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>最大功率点对应电压 (单位: V)</returns>
|
||||
public virtual async Task<string> 读取MPPT最大功率电压(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"MPP:MVOLtage?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取MPPT最大功率电流
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>最大功率点对应电流 (单位: A)</returns>
|
||||
public virtual async Task<string> 读取MPPT最大功率电流(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"MPP:MCURrent?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取MPPT开路电压
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>开路电压值 (单位: V)</returns>
|
||||
public virtual async Task<string> 读取MPPT开路电压(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"MPP:OVOLtage?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
/// <summary>
|
||||
/// 读取MPPT短路电流
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>短路电流值 (单位: A)</returns>
|
||||
public virtual async Task<string> 读取MPPT短路电流(CancellationToken ct = default)
|
||||
=> await WriteReadAsync($"MPP:SCURrent?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 清除标准事件状态寄存器和错误队列
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除状态(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*CLS{ScpiDelimiter}", ct);
|
||||
@@ -34,6 +35,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询错误信息
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>错误代码和描述信息</returns>
|
||||
public virtual async Task<string> 查询错误信息(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":SYSTem:ERRor?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1]
|
||||
@@ -41,6 +44,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取示波器识别字符串(制造商、型号、序列号、固件版本)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设备标识字符串(制造商, 型号, 序列号, 固件版本)</returns>
|
||||
public virtual async Task<string> 查询设备标识(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*IDN?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -49,6 +54,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 复位命令。使示波器恢复到默认的出厂设置
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 重置设备(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*RST{ScpiDelimiter}", ct);
|
||||
@@ -57,6 +63,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询先前操作是否完成。
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>true: 操作已完成, false: 操作仍在执行中</returns>
|
||||
public virtual async Task<bool> 检查操作完成_OPC(CancellationToken ct = default)
|
||||
{
|
||||
string res = await WriteReadAsync($"*OPC?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -70,6 +78,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 控制示波器开始捕获波形
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 启动捕获_RUN(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($":TRIGger:RUN{ScpiDelimiter}", ct);
|
||||
@@ -78,6 +87,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 停止捕获波形
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 停止捕获_STOP(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"TRIGger:STOP{ScpiDelimiter}", ct);
|
||||
@@ -86,6 +96,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 强制示波器进入单次触发捕获模式
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 单次触发_SINGLE(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($":TRIGger:MODE SINGle{ScpiDelimiter}", ct);
|
||||
@@ -94,6 +105,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 触发一次波形采样
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 强制触发(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"::TRIGger:MODE FTRIG{ScpiDelimiter}", ct);
|
||||
@@ -136,6 +148,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 开启或关闭指定的模拟通道 (符合手册 57 页规范)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="enable">true: 开启通道, false: 关闭通道</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置通道开关(int channel, bool enable, CancellationToken ct = default)
|
||||
{
|
||||
string state = enable ? "ON" : "OFF";
|
||||
@@ -145,6 +160,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置指定通道的垂直电压档位 (Volts/Div)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="volts">电压档位 (Volts/Div)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置通道电压档位(int channel, double volts, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "C{0}:VDIV {1:F4}{2}", channel, volts, ScpiDelimiter);
|
||||
@@ -154,6 +172,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道当前的电压档位
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>当前电压档位值 (Volts/Div)</returns>
|
||||
public virtual async Task<string> 查询通道电压档位(int channel, CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"C{channel}:VDIV?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -162,6 +183,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置指定通道的垂直偏移量 (Offset)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="offset">垂直偏移量 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置通道垂直偏移(int channel, double offset, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "C{0}:OFST {1:F4}{2}", channel, offset, ScpiDelimiter);
|
||||
@@ -178,6 +202,13 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>1MΩ 阻抗</summary>
|
||||
ONEM
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置指定通道的输入阻抗类型
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="impedance">阻抗类型枚举 (FIFty: 50Ω, ONEM: 1MΩ)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置通道阻抗(int channel, ImpedanceType impedance, CancellationToken ct = default)
|
||||
{
|
||||
// 例如发送:C1:IMPedance FIFty\n 或 C1:IMPedance ONEM\n
|
||||
@@ -192,6 +223,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置示波器的水平时基档位 (Time/Div)
|
||||
/// </summary>
|
||||
/// <param name="scale">水平时基档位 (Time/Div)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置水平时基(double scale, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "TDIV {0:E6}{1}", scale, ScpiDelimiter);
|
||||
@@ -201,6 +234,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置示波器的触发水平延迟位置 (Horizontal Delay)
|
||||
/// </summary>
|
||||
/// <param name="delay">水平延迟位置 (单位: s)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置水平延迟(double delay, CancellationToken ct = default)
|
||||
{
|
||||
string cmd = string.Format(CultureInfo.InvariantCulture, "TRDL {0:E6}{1}", delay, ScpiDelimiter);
|
||||
@@ -214,6 +249,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置边沿触发的电平值 (Trigger Level)
|
||||
/// </summary>
|
||||
/// <param name="level">触发电平值 (单位: V)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置触发电平(double level, CancellationToken ct = default)
|
||||
{
|
||||
|
||||
@@ -224,6 +261,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 设置边沿触发的触发源 (例如: C1, C2, C3, C4, EX, LINE)
|
||||
/// </summary>
|
||||
/// <param name="source">触发源通道标识 (例如: "C1", "C2", "EX", "LINE")</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置触发源(string source, CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"TRSE EDGE,SR,{source.ToUpper()}{ScpiDelimiter}", ct);
|
||||
@@ -236,6 +275,10 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道自动测量项的当前实时测量数值
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="paramName">测量参数名称 (如 "PKPK", "FREQ", "RMS" 等)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>测量参数的实时数值字符串</returns>
|
||||
public virtual async Task<string> 查询通道测量项参数(int channel, string paramName, CancellationToken ct = default)
|
||||
{
|
||||
string query = string.Format(CultureInfo.InvariantCulture, "C{0}:PAVA? {1}{2}", channel, paramName.ToUpper(), ScpiDelimiter);
|
||||
@@ -245,6 +288,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道的电压峰峰值 (Vpp)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>电压峰峰值 (Vpp)</returns>
|
||||
public virtual async Task<string> 查询实际电压峰峰值(int channel, CancellationToken ct = default)
|
||||
{
|
||||
return await 查询通道测量项参数(channel, "PKPK", ct);
|
||||
@@ -253,6 +299,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道的频率值 (Frequency)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>频率值 (单位: Hz)</returns>
|
||||
public virtual async Task<string> 查询实际频率(int channel, CancellationToken ct = default)
|
||||
{
|
||||
return await 查询通道测量项参数(channel, "FREQ", ct);
|
||||
@@ -261,6 +310,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道的真均方根电压值 (Vrms)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号 (1 - 4)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>真均方根电压值 (Vrms)</returns>
|
||||
public virtual async Task<string> 查询实际电压均方根(int channel, CancellationToken ct = default)
|
||||
{
|
||||
return await 查询通道测量项参数(channel, "RMS", ct);
|
||||
@@ -269,6 +321,7 @@ namespace DeviceCommand.Devices
|
||||
#endregion
|
||||
|
||||
#region 7. 屏幕截图导出子系统
|
||||
/// <summary>
|
||||
/// 【一键获取并保存截图】
|
||||
/// 自动下发 :PRINt? PNG 指令,接收示波器返回的纯 PNG 二进制流并直接保存到指定路径。
|
||||
/// </summary>
|
||||
@@ -323,4 +376,4 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 清除状态命令。清除标准事件状态寄存器和错误队列
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 清除错误队列和状态字节(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*CLS{ScpiDelimiter}", ct);
|
||||
@@ -42,6 +43,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取功率分析仪识别字符串(制造商、产品型号、系统 SN、软件版本号)
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>设备标识字符串(制造商, 产品型号, 系统 SN, 软件版本号)</returns>
|
||||
public virtual async Task<string> 查询设备标识(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*IDN?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -50,6 +53,7 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 复位命令。使功率分析仪恢复到出厂默认配置状态
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 重置设备(CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($"*RST{ScpiDelimiter}", ct);
|
||||
@@ -58,6 +62,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 读取标准状态字节寄存器
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>标准状态字节寄存器值</returns>
|
||||
public virtual async Task<string> 读取状态字节(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($"*STB?{ScpiDelimiter}", ScpiDelimiter, ct);
|
||||
@@ -70,6 +76,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道的实时 RMS 电压值 (单位: V)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号/单元号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时 RMS 电压值 (单位: V)</returns>
|
||||
public virtual async Task<string> 查询实际电压(int channel, CancellationToken ct = default)
|
||||
{
|
||||
// 1. 先配置 ITEM1 为指定通道的电压有效值 (URMS)
|
||||
@@ -84,6 +93,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道的实时 RMS 电流值 (单位: A)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号/单元号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时 RMS 电流值 (单位: A)</returns>
|
||||
public virtual async Task<string> 查询实际电流(int channel, CancellationToken ct = default)
|
||||
{
|
||||
// 1. 配置 ITEM1 为指定通道的电流有效值 (IRMS)
|
||||
@@ -98,6 +110,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道的实时有功功率值 (单位: W)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号/单元号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时有功功率值 (单位: W)</returns>
|
||||
public virtual async Task<string> 查询实际功率(int channel, CancellationToken ct = default)
|
||||
{
|
||||
// 1. 配置 ITEM1 为指定通道的有功功率 (P)
|
||||
@@ -112,6 +127,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道的实时频率值 (单位: Hz)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号/单元号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>实时频率值 (单位: Hz)</returns>
|
||||
public virtual async Task<string> 查询频率(int channel, CancellationToken ct = default)
|
||||
{
|
||||
// 1. 配置 ITEM1 为指定通道的电压频率 (FU)
|
||||
@@ -126,6 +144,9 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 查询指定通道的功率因数 (Power Factor)
|
||||
/// </summary>
|
||||
/// <param name="channel">通道号/单元号</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>功率因数值</returns>
|
||||
public virtual async Task<string> 查询功率因数(int channel, CancellationToken ct = default)
|
||||
{
|
||||
// 1. 配置 ITEM1 为指定通道的功率因数 (LAMBda)
|
||||
@@ -204,6 +225,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 14. 查询仪器型号名称
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>仪器型号名称字符串</returns>
|
||||
public virtual async Task<string> 查询设备型号(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":SYSTem:MODel?{ScpiDelimiter}", ScpiDelimiter, ct); //
|
||||
@@ -212,6 +235,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 16. 查询仪器唯一序列号
|
||||
/// </summary>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
/// <returns>仪器唯一序列号字符串</returns>
|
||||
public virtual async Task<string> 查询设备序列号(CancellationToken ct = default)
|
||||
{
|
||||
return await WriteReadAsync($":SYSTem:SERial?{ScpiDelimiter}", ScpiDelimiter, ct); //
|
||||
@@ -221,6 +246,7 @@ namespace DeviceCommand.Devices
|
||||
/// 15. 设置数值数据显示的分辨率 (5位或6位)
|
||||
/// </summary>
|
||||
/// <param name="resolution">有效值只能为 5 或 6</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置显示分辨率(int resolution, CancellationToken ct = default)
|
||||
{
|
||||
if (resolution != 5 && resolution != 6) throw new ArgumentException("分辨率只能设置为 5 或 6 位");
|
||||
@@ -230,6 +256,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 13. 设置或查询屏幕 LCD 的亮度级别 (1-10)
|
||||
/// </summary>
|
||||
/// <param name="brightness">亮度级别 (范围: 1 - 10)</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置显示亮度(int brightness, CancellationToken ct = default)
|
||||
{
|
||||
if (brightness < 1 || brightness > 10) throw new ArgumentOutOfRangeException(nameof(brightness), "亮度范围必须在 1~10 之间");
|
||||
@@ -239,6 +267,8 @@ namespace DeviceCommand.Devices
|
||||
/// <summary>
|
||||
/// 18. 设置或查询触摸锁的开/关状态 (锁定时防止人工误触触控屏)
|
||||
/// </summary>
|
||||
/// <param name="isLocked">true: 锁定触摸, false: 解锁触摸</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置屏幕触摸锁定(bool isLocked, CancellationToken ct = default)
|
||||
{
|
||||
string state = isLocked ? "ON" : "OFF";
|
||||
@@ -249,6 +279,7 @@ namespace DeviceCommand.Devices
|
||||
/// 17. 设置或读取分析仪当前的系统内部时间
|
||||
/// </summary>
|
||||
/// <param name="timeStr">格式必须为 "HH:MM:SS"</param>
|
||||
/// <param name="ct">取消令牌</param>
|
||||
public virtual async Task 设置系统时间(string timeStr, CancellationToken ct = default)
|
||||
{
|
||||
await SendAsync($":SYSTem:TIME \"{timeStr}\"{ScpiDelimiter}", ct); //
|
||||
@@ -256,4 +287,4 @@ namespace DeviceCommand.Devices
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user