源适应性修改

This commit is contained in:
“hsc”
2026-10-21 16:44:15 +08:00
parent 12b532382d
commit 6bbca727ca
3 changed files with 91 additions and 60 deletions
+37 -13
View File
@@ -12,6 +12,8 @@ namespace DeviceCommand.Devices
{
/// <summary>
/// 交流源 一拖三 (Chroma 61800系列)
/// <para>SCPI 命令与参数范围按新手册 (61809/61812/61815, 新chromascpi.pdf) 校准:
/// 波形参数 SINE/SQUA/TRIAN/CSIN/DST01~30/USR01~30,Vac 0.0~350.0V,Vdc -495.0~495.0V,FREQ 30.00~100.00Hz</para>
/// </summary>
[ACPCommand]
public class Chroma61800 : Tcp
@@ -155,7 +157,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设置交流电压 (VOLT:AC)
/// </summary>
/// <param name="voltage">电压值 (0 ~ 300V 或高压选配范围)</param>
/// <param name="voltage">电压值 (0.0 ~ 350.0V)</param>
public virtual async Task 设置交流电压Async(double voltage, CancellationToken ct = default)
{
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
@@ -165,6 +167,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设置直流电压 (VOLT:DC)
/// </summary>
/// <param name="voltage">电压值 (-495.0 ~ 495.0V)</param>
public virtual async Task 设置直流电压Async(double voltage, CancellationToken ct = default)
{
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
@@ -174,7 +177,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设置输出频率 (FREQ)
/// </summary>
/// <param name="frequency">频率值 (Hz)</param>
/// <param name="frequency">频率值 (30.00 ~ 100.00 Hz)</param>
public virtual async Task 设置频率Async(double frequency, CancellationToken ct = default)
{
string valStr = frequency.ToString("0.###", CultureInfo.InvariantCulture);
@@ -182,8 +185,11 @@ namespace DeviceCommand.Devices
}
/// <summary>
/// 设置波形选择 (FUNC:SHAP:A SINE / SQUA / CSIN 等)
/// 设置波形 A 组形状 (FUNC:SHAP:A)
/// <para>冒号后的 A 是波形组别(仪器有 A/B 两组波形寄存器),不是波形形状;
/// 三角波拼写为 TRIAN(TRIA/TRI 均非法,仪器只接受精确的 TRIAN)</para>
/// </summary>
/// <param name="shape">SINE | SQUA | TRIAN | CSIN | DST01~DST30(内建)| USR01~USR30(用户自定义)</param>
public virtual async Task 设置波形Async(string shape, CancellationToken ct = default)
{
await SendAsync($"FUNC:SHAP:A {shape}{ScpiDelimiter}", ct);
@@ -194,7 +200,7 @@ namespace DeviceCommand.Devices
#region 4. 相位与多相模式控制 (INST & PHASE 子系统)
/// <summary>
/// 设置单/三相工作模式 (INST:PHAS THREE / SINGLE)
/// 设置单/三相工作模式 (INST:PHAS THREE / SINGLE / SPLIT)
/// </summary>
/// <param name="isThreePhase">true: 三相模式, false: 单相模式</param>
public virtual async Task 设置单三相模式Async(bool isThreePhase, CancellationToken ct = default)
@@ -373,7 +379,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设定波形缓冲区列表点数的顺序 (SOUR:LIST:SHAP)
/// </summary>
/// <param name="shapes">波形缓冲区顺序,每个元素为 A 或 B</param>
/// <param name="shapes">各点波形: A | B | SINE | SQUA | TRIAN | CSIN | DST01~DST30 | USR01~USR30(可直接写形状名,也可引用 A/B 波形组)</param>
public virtual async Task 设置列表波形顺序Async(string[] shapes, CancellationToken ct = default)
{
string valStr = string.Join(",", shapes);
@@ -389,10 +395,28 @@ namespace DeviceCommand.Devices
await SendAsync($"SOUR:LIST:BASE {timeBase}{ScpiDelimiter}", ct);
}
/// <summary>
/// 设定列表功能的相位连续功能 (SOUR:LIST:PHAS:CONT)
/// </summary>
/// <param name="state">DISABLE | ENABLE</param>
public virtual async Task 设置列表相位连续Async(string state, CancellationToken ct = default)
{
await SendAsync($"SOUR:LIST:PHAS:CONT {state}{ScpiDelimiter}", ct);
}
/// <summary>
/// 查询列表功能的相位连续功能 (SOUR:LIST:PHAS:CONT?),返回 DISABLE 或 ENABLE
/// </summary>
public virtual async Task<string> 查询列表相位连续Async(CancellationToken ct = default)
{
string resp = await WriteReadAsync($"SOUR:LIST:PHAS:CONT?{ScpiDelimiter}", ScpiDelimiter, ct);
return resp?.Trim() ?? string.Empty;
}
/// <summary>
/// 设定 AC 起始电压列表点数的顺序 (SOUR:LIST:VOLT:AC:STAR)
/// </summary>
/// <param name="voltages">AC 起始电压序列 (单位: V,每个值 0.0 ~ 300.0)</param>
/// <param name="voltages">AC 起始电压序列 (单位: V,每个值 0.0 ~ 350.0)</param>
public virtual async Task 设置列表AC起始电压顺序Async(double[] voltages, CancellationToken ct = default)
{
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
@@ -402,7 +426,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设定 AC 结束电压列表点数的顺序 (SOUR:LIST:VOLT:AC:END)
/// </summary>
/// <param name="voltages">AC 结束电压序列 (单位: V,每个值 0.0 ~ 300.0)</param>
/// <param name="voltages">AC 结束电压序列 (单位: V,每个值 0.0 ~ 350.0)</param>
public virtual async Task 设置列表AC结束电压顺序Async(double[] voltages, CancellationToken ct = default)
{
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
@@ -412,7 +436,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设定 DC 起始电压列表点数的顺序 (SOUR:LIST:VOLT:DC:STAR)
/// </summary>
/// <param name="voltages">DC 起始电压序列 (单位: V,每个值 -424.2 ~ 414.2)</param>
/// <param name="voltages">DC 起始电压序列 (单位: V,每个值 -495.0 ~ 495.0)</param>
public virtual async Task 设置列表DC起始电压顺序Async(double[] voltages, CancellationToken ct = default)
{
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
@@ -422,7 +446,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设定 DC 结束电压列表点数的顺序 (SOUR:LIST:VOLT:DC:END)
/// </summary>
/// <param name="voltages">DC 结束电压序列 (单位: V,每个值 -424.2 ~ 414.2)</param>
/// <param name="voltages">DC 结束电压序列 (单位: V,每个值 -495.0 ~ 495.0)</param>
public virtual async Task 设置列表DC结束电压顺序Async(double[] voltages, CancellationToken ct = default)
{
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
@@ -432,7 +456,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设定起始频率列表点数的顺序 (SOUR:LIST:FREQ:STAR)
/// </summary>
/// <param name="frequencies">起始频率序列 (单位: Hz,每个值 15.00 ~ 100.00)</param>
/// <param name="frequencies">起始频率序列 (单位: Hz,每个值 30.00 ~ 100.00)</param>
public virtual async Task 设置列表起始频率顺序Async(double[] frequencies, CancellationToken ct = default)
{
string valStr = string.Join(",", Array.ConvertAll(frequencies, v => v.ToString("0.##", CultureInfo.InvariantCulture)));
@@ -442,7 +466,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设定结束频率列表点数的顺序 (SOUR:LIST:FREQ:END)
/// </summary>
/// <param name="frequencies">结束频率序列 (单位: Hz,每个值 15.00 ~ 100.00)</param>
/// <param name="frequencies">结束频率序列 (单位: Hz,每个值 30.00 ~ 100.00)</param>
public virtual async Task 设置列表结束频率顺序Async(double[] frequencies, CancellationToken ct = default)
{
string valStr = string.Join(",", Array.ConvertAll(frequencies, v => v.ToString("0.##", CultureInfo.InvariantCulture)));
@@ -623,7 +647,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设定 SYNTHESIS 模式的基波交流电压 (SOUR:SYNT:FUND)
/// </summary>
/// <param name="voltage">基波交流电压 (单位: V,0.0 ~ 300.0)</param>
/// <param name="voltage">基波交流电压 (单位: V,0.0 ~ 350.0)</param>
public virtual async Task 设置合成基波电压Async(double voltage, CancellationToken ct = default)
{
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
@@ -633,7 +657,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 设定叠加于 SYNTHESIS 波形的直流电压 (SOUR:SYNT:DC)
/// </summary>
/// <param name="voltage">直流电压 (单位: V,-424.2 ~ 424.2)</param>
/// <param name="voltage">直流电压 (单位: V,-495.0 ~ 495.0)</param>
public virtual async Task 设置合成直流电压Async(double voltage, CancellationToken ct = default)
{
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);