现场程序优化

This commit is contained in:
2026-08-12 18:16:50 +08:00
parent b43090e56e
commit 30f5f6f8d6
16 changed files with 1020 additions and 26 deletions
+76 -1
View File
@@ -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
}
}
}