源适应性修改
This commit is contained in:
@@ -12,6 +12,8 @@ namespace DeviceCommand.Devices
|
|||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 交流源 一拖三 (Chroma 61800系列)
|
/// 交流源 一拖三 (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>
|
/// </summary>
|
||||||
[ACPCommand]
|
[ACPCommand]
|
||||||
public class Chroma61800 : Tcp
|
public class Chroma61800 : Tcp
|
||||||
@@ -155,7 +157,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置交流电压 (VOLT:AC)
|
/// 设置交流电压 (VOLT:AC)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置交流电压Async(double voltage, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
|
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
|
||||||
@@ -165,6 +167,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置直流电压 (VOLT:DC)
|
/// 设置直流电压 (VOLT:DC)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="voltage">电压值 (-495.0 ~ 495.0V)</param>
|
||||||
public virtual async Task 设置直流电压Async(double voltage, CancellationToken ct = default)
|
public virtual async Task 设置直流电压Async(double voltage, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
|
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
|
||||||
@@ -174,7 +177,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置输出频率 (FREQ)
|
/// 设置输出频率 (FREQ)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置频率Async(double frequency, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = frequency.ToString("0.###", CultureInfo.InvariantCulture);
|
string valStr = frequency.ToString("0.###", CultureInfo.InvariantCulture);
|
||||||
@@ -182,8 +185,11 @@ namespace DeviceCommand.Devices
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置波形选择 (FUNC:SHAP:A SINE / SQUA / CSIN 等)
|
/// 设置波形 A 组形状 (FUNC:SHAP:A)
|
||||||
|
/// <para>冒号后的 A 是波形组别(仪器有 A/B 两组波形寄存器),不是波形形状;
|
||||||
|
/// 三角波拼写为 TRIAN(TRIA/TRI 均非法,仪器只接受精确的 TRIAN)</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="shape">SINE | SQUA | TRIAN | CSIN | DST01~DST30(内建)| USR01~USR30(用户自定义)</param>
|
||||||
public virtual async Task 设置波形Async(string shape, CancellationToken ct = default)
|
public virtual async Task 设置波形Async(string shape, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
await SendAsync($"FUNC:SHAP:A {shape}{ScpiDelimiter}", ct);
|
await SendAsync($"FUNC:SHAP:A {shape}{ScpiDelimiter}", ct);
|
||||||
@@ -194,7 +200,7 @@ namespace DeviceCommand.Devices
|
|||||||
#region 4. 相位与多相模式控制 (INST & PHASE 子系统)
|
#region 4. 相位与多相模式控制 (INST & PHASE 子系统)
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置单/三相工作模式 (INST:PHAS THREE / SINGLE)
|
/// 设置单/三相工作模式 (INST:PHAS THREE / SINGLE / SPLIT)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="isThreePhase">true: 三相模式, false: 单相模式</param>
|
/// <param name="isThreePhase">true: 三相模式, false: 单相模式</param>
|
||||||
public virtual async Task 设置单三相模式Async(bool isThreePhase, CancellationToken ct = default)
|
public virtual async Task 设置单三相模式Async(bool isThreePhase, CancellationToken ct = default)
|
||||||
@@ -373,7 +379,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设定波形缓冲区列表点数的顺序 (SOUR:LIST:SHAP)
|
/// 设定波形缓冲区列表点数的顺序 (SOUR:LIST:SHAP)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置列表波形顺序Async(string[] shapes, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = string.Join(",", shapes);
|
string valStr = string.Join(",", shapes);
|
||||||
@@ -389,10 +395,28 @@ namespace DeviceCommand.Devices
|
|||||||
await SendAsync($"SOUR:LIST:BASE {timeBase}{ScpiDelimiter}", ct);
|
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>
|
/// <summary>
|
||||||
/// 设定 AC 起始电压列表点数的顺序 (SOUR:LIST:VOLT:AC:STAR)
|
/// 设定 AC 起始电压列表点数的顺序 (SOUR:LIST:VOLT:AC:STAR)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置列表AC起始电压顺序Async(double[] voltages, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
|
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
|
||||||
@@ -402,7 +426,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设定 AC 结束电压列表点数的顺序 (SOUR:LIST:VOLT:AC:END)
|
/// 设定 AC 结束电压列表点数的顺序 (SOUR:LIST:VOLT:AC:END)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置列表AC结束电压顺序Async(double[] voltages, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
|
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
|
||||||
@@ -412,7 +436,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设定 DC 起始电压列表点数的顺序 (SOUR:LIST:VOLT:DC:STAR)
|
/// 设定 DC 起始电压列表点数的顺序 (SOUR:LIST:VOLT:DC:STAR)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置列表DC起始电压顺序Async(double[] voltages, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
|
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
|
||||||
@@ -422,7 +446,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设定 DC 结束电压列表点数的顺序 (SOUR:LIST:VOLT:DC:END)
|
/// 设定 DC 结束电压列表点数的顺序 (SOUR:LIST:VOLT:DC:END)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置列表DC结束电压顺序Async(double[] voltages, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
|
string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
|
||||||
@@ -432,7 +456,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设定起始频率列表点数的顺序 (SOUR:LIST:FREQ:STAR)
|
/// 设定起始频率列表点数的顺序 (SOUR:LIST:FREQ:STAR)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置列表起始频率顺序Async(double[] frequencies, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = string.Join(",", Array.ConvertAll(frequencies, v => v.ToString("0.##", CultureInfo.InvariantCulture)));
|
string valStr = string.Join(",", Array.ConvertAll(frequencies, v => v.ToString("0.##", CultureInfo.InvariantCulture)));
|
||||||
@@ -442,7 +466,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设定结束频率列表点数的顺序 (SOUR:LIST:FREQ:END)
|
/// 设定结束频率列表点数的顺序 (SOUR:LIST:FREQ:END)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置列表结束频率顺序Async(double[] frequencies, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = string.Join(",", Array.ConvertAll(frequencies, v => v.ToString("0.##", CultureInfo.InvariantCulture)));
|
string valStr = string.Join(",", Array.ConvertAll(frequencies, v => v.ToString("0.##", CultureInfo.InvariantCulture)));
|
||||||
@@ -623,7 +647,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设定 SYNTHESIS 模式的基波交流电压 (SOUR:SYNT:FUND)
|
/// 设定 SYNTHESIS 模式的基波交流电压 (SOUR:SYNT:FUND)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置合成基波电压Async(double voltage, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
|
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
|
||||||
@@ -633,7 +657,7 @@ namespace DeviceCommand.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设定叠加于 SYNTHESIS 波形的直流电压 (SOUR:SYNT:DC)
|
/// 设定叠加于 SYNTHESIS 波形的直流电压 (SOUR:SYNT:DC)
|
||||||
/// </summary>
|
/// </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)
|
public virtual async Task 设置合成直流电压Async(double voltage, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
|
string valStr = voltage.ToString("0.###", CultureInfo.InvariantCulture);
|
||||||
|
|||||||
@@ -173,6 +173,10 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
/// <summary>列表时间基础 (TIME / CYCLE)</summary>
|
/// <summary>列表时间基础 (TIME / CYCLE)</summary>
|
||||||
public string ListTimeBase { get => _listTimeBase; set => SetProperty(ref _listTimeBase, value); }
|
public string ListTimeBase { get => _listTimeBase; set => SetProperty(ref _listTimeBase, value); }
|
||||||
|
|
||||||
|
private string _listPhaseContinue = "DISABLE";
|
||||||
|
/// <summary>相位连续功能 (LIST:PHAS:CONT, DISABLE / ENABLE)</summary>
|
||||||
|
public string ListPhaseContinue { get => _listPhaseContinue; set => SetProperty(ref _listPhaseContinue, value); }
|
||||||
|
|
||||||
/// <summary>三相各自的 LIST 序列配置(索引 0=A/Φ1, 1=B/Φ2, 2=C/Φ3),INST:EDIT EACH 逐相下发</summary>
|
/// <summary>三相各自的 LIST 序列配置(索引 0=A/Φ1, 1=B/Φ2, 2=C/Φ3),INST:EDIT EACH 逐相下发</summary>
|
||||||
private readonly ListPhaseConfig[] _phaseConfigs = { new(), new(), new() };
|
private readonly ListPhaseConfig[] _phaseConfigs = { new(), new(), new() };
|
||||||
|
|
||||||
@@ -195,8 +199,6 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
private ListPhaseConfig CurCfg => _phaseConfigs[_listEditPhaseIndex];
|
private ListPhaseConfig CurCfg => _phaseConfigs[_listEditPhaseIndex];
|
||||||
|
|
||||||
// —— 以下文本属性均代理到"当前编辑相位"的配置,切换相位时统一刷新 ——
|
// —— 以下文本属性均代理到"当前编辑相位"的配置,切换相位时统一刷新 ——
|
||||||
/// <summary>当前相波形 (FUNC:SHAP:A)</summary>
|
|
||||||
public string ListWaveform { get => CurCfg.Waveform; set { if (CurCfg.Waveform != value) { CurCfg.Waveform = value; RaisePropertyChanged(); } } }
|
|
||||||
/// <summary>相位角度序列 (LIST:DEGR, °)</summary>
|
/// <summary>相位角度序列 (LIST:DEGR, °)</summary>
|
||||||
public string ListDegrText { get => CurCfg.Degr; set { if (CurCfg.Degr != value) { CurCfg.Degr = value; RaisePropertyChanged(); } } }
|
public string ListDegrText { get => CurCfg.Degr; set { if (CurCfg.Degr != value) { CurCfg.Degr = value; RaisePropertyChanged(); } } }
|
||||||
/// <summary>AC 起始电压序列 (LIST:VOLT:AC:STAR, V)</summary>
|
/// <summary>AC 起始电压序列 (LIST:VOLT:AC:STAR, V)</summary>
|
||||||
@@ -213,13 +215,12 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
public string ListFreqEndText { get => CurCfg.FreqEnd; set { if (CurCfg.FreqEnd != value) { CurCfg.FreqEnd = value; RaisePropertyChanged(); } } }
|
public string ListFreqEndText { get => CurCfg.FreqEnd; set { if (CurCfg.FreqEnd != value) { CurCfg.FreqEnd = value; RaisePropertyChanged(); } } }
|
||||||
/// <summary>静止时间序列 (LIST:DWEL, ms)</summary>
|
/// <summary>静止时间序列 (LIST:DWEL, ms)</summary>
|
||||||
public string ListDwellText { get => CurCfg.Dwell; set { if (CurCfg.Dwell != value) { CurCfg.Dwell = value; RaisePropertyChanged(); } } }
|
public string ListDwellText { get => CurCfg.Dwell; set { if (CurCfg.Dwell != value) { CurCfg.Dwell = value; RaisePropertyChanged(); } } }
|
||||||
/// <summary>波形缓冲顺序 (LIST:SHAP, A/B)</summary>
|
/// <summary>波形顺序 (LIST:SHAP,可直接写形状名或引用 A/B 组)</summary>
|
||||||
public string ListShapeText { get => CurCfg.ShapeSeq; set { if (CurCfg.ShapeSeq != value) { CurCfg.ShapeSeq = value; RaisePropertyChanged(); } } }
|
public string ListShapeText { get => CurCfg.ShapeSeq; set { if (CurCfg.ShapeSeq != value) { CurCfg.ShapeSeq = value; RaisePropertyChanged(); } } }
|
||||||
|
|
||||||
/// <summary>切换编辑相位后,通知所有序列文本框刷新为新相位内容</summary>
|
/// <summary>切换编辑相位后,通知所有序列文本框刷新为新相位内容</summary>
|
||||||
private void RaiseListSequenceChanged()
|
private void RaiseListSequenceChanged()
|
||||||
{
|
{
|
||||||
RaisePropertyChanged(nameof(ListWaveform));
|
|
||||||
RaisePropertyChanged(nameof(ListDegrText));
|
RaisePropertyChanged(nameof(ListDegrText));
|
||||||
RaisePropertyChanged(nameof(ListVoltAcStartText));
|
RaisePropertyChanged(nameof(ListVoltAcStartText));
|
||||||
RaisePropertyChanged(nameof(ListVoltAcEndText));
|
RaisePropertyChanged(nameof(ListVoltAcEndText));
|
||||||
@@ -233,11 +234,12 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 下拉选项
|
#region 下拉选项
|
||||||
public IReadOnlyList<string> WaveformOptions { get; } = new[] { "SINE", "SQUA", "CSIN" };
|
public IReadOnlyList<string> WaveformOptions { get; } = new[] { "SINE", "SQUA", "TRIAN", "CSIN" };
|
||||||
public IReadOnlyList<string> CouplingOptions { get; } = new[] { "AC", "DC", "ACDC" };
|
public IReadOnlyList<string> CouplingOptions { get; } = new[] { "AC", "DC", "ACDC" };
|
||||||
public IReadOnlyList<string> RelationOptions { get; } = new[] { "INDEPEND", "SAMEFREQ", "BALANCE" };
|
public IReadOnlyList<string> RelationOptions { get; } = new[] { "INDEPEND", "SAMEFREQ", "BALANCE" };
|
||||||
public IReadOnlyList<string> ListTriggerOptions { get; } = new[] { "AUTO", "MANUAL", "EXCITE" };
|
public IReadOnlyList<string> ListTriggerOptions { get; } = new[] { "AUTO", "MANUAL", "EXCITE" };
|
||||||
public IReadOnlyList<string> ListTimeBaseOptions { get; } = new[] { "TIME", "CYCLE" };
|
public IReadOnlyList<string> ListTimeBaseOptions { get; } = new[] { "TIME", "CYCLE" };
|
||||||
|
public IReadOnlyList<string> ListPhaseContinueOptions { get; } = new[] { "DISABLE", "ENABLE" };
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 输入参数(SYNTHESIS 自定义谐波波形输出)
|
#region 输入参数(SYNTHESIS 自定义谐波波形输出)
|
||||||
@@ -257,11 +259,11 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
public int SynthFrequency { get => _synthFrequency; set => SetProperty(ref _synthFrequency, value); }
|
public int SynthFrequency { get => _synthFrequency; set => SetProperty(ref _synthFrequency, value); }
|
||||||
|
|
||||||
private double _synthFundamental = 220;
|
private double _synthFundamental = 220;
|
||||||
/// <summary>基波交流电压 (SYNT:FUND, 0.0 ~ 300.0 V)</summary>
|
/// <summary>基波交流电压 (SYNT:FUND, 0.0 ~ 350.0 V)</summary>
|
||||||
public double SynthFundamental { get => _synthFundamental; set => SetProperty(ref _synthFundamental, value); }
|
public double SynthFundamental { get => _synthFundamental; set => SetProperty(ref _synthFundamental, value); }
|
||||||
|
|
||||||
private double _synthDc;
|
private double _synthDc;
|
||||||
/// <summary>叠加直流电压 (SYNT:DC, -424.2 ~ 424.2 V)</summary>
|
/// <summary>叠加直流电压 (SYNT:DC, -495.0 ~ 495.0 V)</summary>
|
||||||
public double SynthDc { get => _synthDc; set => SetProperty(ref _synthDc, value); }
|
public double SynthDc { get => _synthDc; set => SetProperty(ref _synthDc, value); }
|
||||||
|
|
||||||
private double _synthStartPhase;
|
private double _synthStartPhase;
|
||||||
@@ -526,6 +528,9 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
ListCount = p.Count;
|
ListCount = p.Count;
|
||||||
ListTrigger = p.Trigger;
|
ListTrigger = p.Trigger;
|
||||||
ListTimeBase = p.TimeBase;
|
ListTimeBase = p.TimeBase;
|
||||||
|
// 旧测试项文件没有相位连续键(PhaseContinue 为 null)时保持界面当前值不动
|
||||||
|
if (!string.IsNullOrWhiteSpace(p.PhaseContinue))
|
||||||
|
ListPhaseContinue = p.PhaseContinue;
|
||||||
for (int i = 0; i < 3 && i < p.Phases.Length; i++)
|
for (int i = 0; i < 3 && i < p.Phases.Length; i++)
|
||||||
_phaseConfigs[i] = p.Phases[i].Clone();
|
_phaseConfigs[i] = p.Phases[i].Clone();
|
||||||
|
|
||||||
@@ -534,7 +539,7 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
PresetName = p.Name; // 名称框回显当前文件名
|
PresetName = p.Name; // 名称框回显当前文件名
|
||||||
PresetNote = p.Note;
|
PresetNote = p.Note;
|
||||||
_currentPresetPath = PresetPathOf(p.Name); // 记住当前打开的文件,此后“保存”只覆盖它
|
_currentPresetPath = PresetPathOf(p.Name); // 记住当前打开的文件,此后“保存”只覆盖它
|
||||||
Log($"已载入测试项:{p.Name}(次数={(p.Count == 0 ? "无限" : p.Count.ToString())} 触发={p.Trigger} 时基={p.TimeBase})");
|
Log($"已载入测试项:{p.Name}(次数={(p.Count == 0 ? "无限" : p.Count.ToString())} 触发={p.Trigger} 时基={p.TimeBase} 相位连续={p.PhaseContinue ?? "未指定(保持当前)"})");
|
||||||
});
|
});
|
||||||
|
|
||||||
// 保存:覆盖当前打开的测试项文件(未打开文件时按“另存为”新建)
|
// 保存:覆盖当前打开的测试项文件(未打开文件时按“另存为”新建)
|
||||||
@@ -579,7 +584,8 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
await _dev.设置列表执行次数Async(ListCount, Ct()); // LIST:COUN(0=无限循环)
|
await _dev.设置列表执行次数Async(ListCount, Ct()); // LIST:COUN(0=无限循环)
|
||||||
await _dev.设置列表触发形态Async(ListTrigger, Ct()); // LIST:TRIG
|
await _dev.设置列表触发形态Async(ListTrigger, Ct()); // LIST:TRIG
|
||||||
await _dev.设置列表时间基础Async(ListTimeBase, Ct()); // LIST:BASE
|
await _dev.设置列表时间基础Async(ListTimeBase, Ct()); // LIST:BASE
|
||||||
await 下发单相序列Async(_phaseConfigs[p]); // FUNC:SHAP:A + LIST:xxx 序列
|
await _dev.设置列表相位连续Async(ListPhaseContinue, Ct()); // LIST:PHAS:CONT(相位连续,随相位上下文分相)
|
||||||
|
await 下发单相序列Async(_phaseConfigs[p]); // LIST:xxx 序列
|
||||||
}
|
}
|
||||||
|
|
||||||
await _dev.延时Async(StartDelayMs, Ct()); // *D 200(等待仪器就绪)
|
await _dev.延时Async(StartDelayMs, Ct()); // *D 200(等待仪器就绪)
|
||||||
@@ -929,7 +935,7 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
string stem = Path.GetFileNameWithoutExtension(file);
|
string stem = Path.GetFileNameWithoutExtension(file);
|
||||||
return string.Equals(item.Name, stem, StringComparison.Ordinal)
|
return string.Equals(item.Name, stem, StringComparison.Ordinal)
|
||||||
? item
|
? item
|
||||||
: new ListPreset(stem, item.Note, item.Count, item.Phases, item.Trigger, item.TimeBase);
|
: new ListPreset(stem, item.Note, item.Count, item.Phases, item.Trigger, item.TimeBase, item.PhaseContinue);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>按名称拼出测试项文件完整路径(写入、另存、删除共用同一规则)。</summary>
|
/// <summary>按名称拼出测试项文件完整路径(写入、另存、删除共用同一规则)。</summary>
|
||||||
@@ -952,7 +958,8 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
ListCount,
|
ListCount,
|
||||||
new[] { _phaseConfigs[0].Clone(), _phaseConfigs[1].Clone(), _phaseConfigs[2].Clone() },
|
new[] { _phaseConfigs[0].Clone(), _phaseConfigs[1].Clone(), _phaseConfigs[2].Clone() },
|
||||||
ListTrigger,
|
ListTrigger,
|
||||||
ListTimeBase);
|
ListTimeBase,
|
||||||
|
ListPhaseContinue);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 保存:覆盖写入“当前打开的文件”,不改变文件名(名称框内容不参与)。
|
/// 保存:覆盖写入“当前打开的文件”,不改变文件名(名称框内容不参与)。
|
||||||
@@ -1446,7 +1453,7 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
.ToArray();
|
.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>解析波形缓冲顺序(A/B)序列。</summary>
|
/// <summary>解析波形顺序序列(形状名或 A/B)。</summary>
|
||||||
private static string[] ParseShapes(string text)
|
private static string[] ParseShapes(string text)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(text)) return Array.Empty<string>();
|
if (string.IsNullOrWhiteSpace(text)) return Array.Empty<string>();
|
||||||
@@ -1457,13 +1464,11 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 下发单个相位的 LIST 序列(调用前须已通过 INST:NSEL 选定目标相、并已 INST:EDIT EACH)。
|
/// 下发单个相位的 LIST 序列(调用前须已通过 INST:NSEL 选定目标相、并已 INST:EDIT EACH)。
|
||||||
/// <para>依次下发 FUNC:SHAP:A 波形,以及 DEGR / VOLT:AC / VOLT:DC / FREQ / DWEL / SHAP 各序列,留空的序列跳过。</para>
|
/// <para>依次下发 DEGR / VOLT:AC / VOLT:DC / FREQ / DWEL / SHAP 各序列,留空的序列跳过;
|
||||||
|
/// LIST:SHAP 各点可直接写形状名 SINE/SQUA/TRIAN/CSIN/DST01~30/USR01~30,也可引用仪器 A/B 波形组。</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private async Task 下发单相序列Async(ListPhaseConfig cfg)
|
private async Task 下发单相序列Async(ListPhaseConfig cfg)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrWhiteSpace(cfg.Waveform))
|
|
||||||
await _dev!.设置波形Async(cfg.Waveform.Trim(), Ct()); // FUNC:SHAP:A
|
|
||||||
|
|
||||||
var degr = ParseDoubles(cfg.Degr);
|
var degr = ParseDoubles(cfg.Degr);
|
||||||
if (degr.Length > 0) await _dev!.设置列表相位角度顺序Async(degr, Ct()); // LIST:DEGR
|
if (degr.Length > 0) await _dev!.设置列表相位角度顺序Async(degr, Ct()); // LIST:DEGR
|
||||||
|
|
||||||
@@ -1532,12 +1537,11 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
/// 构建三相对称的 LIST 相位配置:以给定参数为 A 相,B/C 相复制后 DEGR 自动 +120°/+240°。
|
/// 构建三相对称的 LIST 相位配置:以给定参数为 A 相,B/C 相复制后 DEGR 自动 +120°/+240°。
|
||||||
/// 适用于三相平衡试验(电压/频率范围、骤变、瞬时跌落等)。DWEL 单位 ms。
|
/// 适用于三相平衡试验(电压/频率范围、骤变、瞬时跌落等)。DWEL 单位 ms。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static ListPhaseConfig[] Sym(string waveform, string degr, string vacS, string vacE,
|
private static ListPhaseConfig[] Sym(string degr, string vacS, string vacE,
|
||||||
string vdcS, string vdcE, string fS, string fE, string dwell, string shape = "")
|
string vdcS, string vdcE, string fS, string fE, string dwell, string shape = "")
|
||||||
{
|
{
|
||||||
var a = new ListPhaseConfig
|
var a = new ListPhaseConfig
|
||||||
{
|
{
|
||||||
Waveform = waveform,
|
|
||||||
Degr = degr,
|
Degr = degr,
|
||||||
VoltAcStart = vacS,
|
VoltAcStart = vacS,
|
||||||
VoltAcEnd = vacE,
|
VoltAcEnd = vacE,
|
||||||
@@ -1562,66 +1566,66 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
// ===== 5.1 交流电压范围(三相平衡渐变,2 循环,DWEL 单位 ms)=====
|
// ===== 5.1 交流电压范围(三相平衡渐变,2 循环,DWEL 单位 ms)=====
|
||||||
new ListPreset("5.1 上限电压范围 220→265V",
|
new ListPreset("5.1 上限电压范围 220→265V",
|
||||||
"三相平衡:额定 220V 线性升至上限 265V 再回落,各段 90s,2 循环。判定 A。",
|
"三相平衡:额定 220V 线性升至上限 265V 再回落,各段 90s,2 循环。判定 A。",
|
||||||
2, Sym("SINE", "0,0", "220,265", "265,220", "", "", "50,50", "50,50", "90000,90000")),
|
2, Sym("0,0", "220,265", "265,220", "", "", "50,50", "50,50", "90000,90000")),
|
||||||
new ListPreset("5.1 下限电压范围 220→85V",
|
new ListPreset("5.1 下限电压范围 220→85V",
|
||||||
"三相平衡:220V 降至下限 85V 再回升,各段 90s,2 循环。判定 B。",
|
"三相平衡:220V 降至下限 85V 再回升,各段 90s,2 循环。判定 B。",
|
||||||
2, Sym("SINE", "0,0", "220,85", "85,220", "", "", "50,50", "50,50", "90000,90000")),
|
2, Sym("0,0", "220,85", "85,220", "", "", "50,50", "50,50", "90000,90000")),
|
||||||
new ListPreset("5.1 上限保护电压 220→275V",
|
new ListPreset("5.1 上限保护电压 220→275V",
|
||||||
"验证过压保护点与恢复点:220V 升至 275V 再回落,2 循环。判定 C。",
|
"验证过压保护点与恢复点:220V 升至 275V 再回落,2 循环。判定 C。",
|
||||||
2, Sym("SINE", "0,0", "220,275", "275,220", "", "", "50,50", "50,50", "90000,90000")),
|
2, Sym("0,0", "220,275", "275,220", "", "", "50,50", "50,50", "90000,90000")),
|
||||||
new ListPreset("5.1 下限保护电压 220→80V",
|
new ListPreset("5.1 下限保护电压 220→80V",
|
||||||
"验证欠压保护点与恢复点:220V 降至 80V 再回升,2 循环。判定 C。",
|
"验证欠压保护点与恢复点:220V 降至 80V 再回升,2 循环。判定 C。",
|
||||||
2, Sym("SINE", "0,0", "220,80", "80,220", "", "", "50,50", "50,50", "90000,90000")),
|
2, Sym("0,0", "220,80", "80,220", "", "", "50,50", "50,50", "90000,90000")),
|
||||||
|
|
||||||
// ===== 5.3 交流频率范围(220V 恒定,频率渐变,2 循环)=====
|
// ===== 5.3 交流频率范围(220V 恒定,频率渐变,2 循环)=====
|
||||||
new ListPreset("5.3 上限频率范围 50→65Hz",
|
new ListPreset("5.3 上限频率范围 50→65Hz",
|
||||||
"220V 恒定,频率 50Hz 升至 65Hz 再回落,各段 60s,2 循环。判定 B。",
|
"220V 恒定,频率 50Hz 升至 65Hz 再回落,各段 60s,2 循环。判定 B。",
|
||||||
2, Sym("SINE", "0,0", "220,220", "220,220", "", "", "50,65", "65,50", "60000,60000")),
|
2, Sym("0,0", "220,220", "220,220", "", "", "50,65", "65,50", "60000,60000")),
|
||||||
new ListPreset("5.3 下限频率范围 50→40Hz",
|
new ListPreset("5.3 下限频率范围 50→40Hz",
|
||||||
"220V 恒定,频率 50Hz 降至 40Hz 再回升,各段 60s,2 循环。判定 B。",
|
"220V 恒定,频率 50Hz 降至 40Hz 再回升,各段 60s,2 循环。判定 B。",
|
||||||
2, Sym("SINE", "0,0", "220,220", "220,220", "", "", "50,40", "40,50", "60000,60000")),
|
2, Sym("0,0", "220,220", "220,220", "", "", "50,40", "40,50", "60000,60000")),
|
||||||
new ListPreset("5.3 上限保护频率 50→75Hz",
|
new ListPreset("5.3 上限保护频率 50→75Hz",
|
||||||
"验证过频保护点与恢复点:50Hz 升至 75Hz 再回落,2 循环。判定 C。",
|
"验证过频保护点与恢复点:50Hz 升至 75Hz 再回落,2 循环。判定 C。",
|
||||||
2, Sym("SINE", "0,0", "220,220", "220,220", "", "", "50,75", "75,50", "60000,60000")),
|
2, Sym("0,0", "220,220", "220,220", "", "", "50,75", "75,50", "60000,60000")),
|
||||||
|
|
||||||
// ===== 5.4 交流电压骤变(指定相位角阶跃,2 循环)=====
|
// ===== 5.4 交流电压骤变(指定相位角阶跃,2 循环)=====
|
||||||
new ListPreset("5.4 上限电压骤变 220→265V@90°",
|
new ListPreset("5.4 上限电压骤变 220→265V@90°",
|
||||||
"稳态 220V(5s)→在 90° 相位瞬间跳到 265V(0.5s)→跳回。改 DEGR 中间值可切 0/180/270°。判定 B。",
|
"稳态 220V(5s)→在 90° 相位瞬间跳到 265V(0.5s)→跳回。改 DEGR 中间值可切 0/180/270°。判定 B。",
|
||||||
2, Sym("SINE", "0,90,0", "220,265,220", "220,265,220", "", "", "50,50,50", "50,50,50", "5000,500,5000")),
|
2, Sym("0,90,0", "220,265,220", "220,265,220", "", "", "50,50,50", "50,50,50", "5000,500,5000")),
|
||||||
new ListPreset("5.4 下限电压骤变 220→90V@90°",
|
new ListPreset("5.4 下限电压骤变 220→90V@90°",
|
||||||
"稳态 220V→在 90° 瞬间跌到 90V(0.5s)→恢复。判定 B。",
|
"稳态 220V→在 90° 瞬间跌到 90V(0.5s)→恢复。判定 B。",
|
||||||
2, Sym("SINE", "0,90,0", "220,90,220", "220,90,220", "", "", "50,50,50", "50,50,50", "5000,500,5000")),
|
2, Sym("0,90,0", "220,90,220", "220,90,220", "", "", "50,50,50", "50,50,50", "5000,500,5000")),
|
||||||
|
|
||||||
// ===== 5.5 交流频率骤变(2 循环)=====
|
// ===== 5.5 交流频率骤变(2 循环)=====
|
||||||
new ListPreset("5.5 上限频率骤变 50→75Hz",
|
new ListPreset("5.5 上限频率骤变 50→75Hz",
|
||||||
"220V 恒定,频率 50Hz 瞬间跳到 75Hz(1s)再回落。判定 B。",
|
"220V 恒定,频率 50Hz 瞬间跳到 75Hz(1s)再回落。判定 B。",
|
||||||
2, Sym("SINE", "0,90,0", "220,220,220", "220,220,220", "", "", "50,75,50", "50,75,50", "5000,1000,5000")),
|
2, Sym("0,90,0", "220,220,220", "220,220,220", "", "", "50,75,50", "50,75,50", "5000,1000,5000")),
|
||||||
new ListPreset("5.5 下限频率骤变 50→40Hz",
|
new ListPreset("5.5 下限频率骤变 50→40Hz",
|
||||||
"220V 恒定,频率 50Hz 瞬间跌到 40Hz(1s)再回升。判定 B。",
|
"220V 恒定,频率 50Hz 瞬间跌到 40Hz(1s)再回升。判定 B。",
|
||||||
2, Sym("SINE", "0,90,0", "220,220,220", "220,220,220", "", "", "50,40,50", "50,40,50", "5000,1000,5000")),
|
2, Sym("0,90,0", "220,220,220", "220,220,220", "", "", "50,40,50", "50,40,50", "5000,1000,5000")),
|
||||||
|
|
||||||
// ===== 5.12 瞬时电压跌落/冲击(1ms 突变,2 循环)=====
|
// ===== 5.12 瞬时电压跌落/冲击(1ms 突变,2 循环)=====
|
||||||
new ListPreset("5.12 0°冲击 310V/1ms",
|
new ListPreset("5.12 0°冲击 310V/1ms",
|
||||||
"稳态 220V→0° 相位冲击到 310V 峰值持续 1ms→恢复。1ms 接近 LIST 最小 dwell,若不精确请改 BASE CYCLE。判定不低于 C。",
|
"稳态 220V→0° 相位冲击到 310V 峰值持续 1ms→恢复。1ms 接近 LIST 最小 dwell,若不精确请改 BASE CYCLE。判定不低于 C。",
|
||||||
2, Sym("SINE", "0,0,0", "220,310,220", "220,310,220", "", "", "50,50,50", "50,50,50", "5000,1,5000")),
|
2, Sym("0,0,0", "220,310,220", "220,310,220", "", "", "50,50,50", "50,50,50", "5000,1,5000")),
|
||||||
new ListPreset("5.12 90°跌落 0V/1ms",
|
new ListPreset("5.12 90°跌落 0V/1ms",
|
||||||
"稳态 220V→90° 相位跌到 0V 持续 1ms→恢复。判定不低于 C。",
|
"稳态 220V→90° 相位跌到 0V 持续 1ms→恢复。判定不低于 C。",
|
||||||
2, Sym("SINE", "0,90,0", "220,0,220", "220,0,220", "", "", "50,50,50", "50,50,50", "5000,1,5000")),
|
2, Sym("0,90,0", "220,0,220", "220,0,220", "", "", "50,50,50", "50,50,50", "5000,1,5000")),
|
||||||
|
|
||||||
// ===== 单相深跌(不对称,A 相深跌 / B·C 相浅跌,无限循环)=====
|
// ===== 单相深跌(不对称,A 相深跌 / B·C 相浅跌,无限循环)=====
|
||||||
new ListPreset("5.x 单相深跌 A相11.5V(不对称示例)",
|
new ListPreset("5.x 单相深跌 A相11.5V(不对称示例)",
|
||||||
"A 相跌到 11.5V、B/C 相跌到 200.1V,跌落 280ms,前后各稳态 20s;三相 DEGR 基准 0/120/240、中间点各异。无限循环,需手动停止。",
|
"A 相跌到 11.5V、B/C 相跌到 200.1V,跌落 280ms,前后各稳态 20s;三相 DEGR 基准 0/120/240、中间点各异。无限循环,需手动停止。",
|
||||||
0, new[]
|
0, new[]
|
||||||
{
|
{
|
||||||
new ListPhaseConfig { Waveform = "SINE", Degr = "0,0,0", VoltAcStart = "230,11.5,230", VoltAcEnd = "230,11.5,230", VoltDcStart = "10,10,10", VoltDcEnd = "10,10,10", FreqStart = "50,50,50", FreqEnd = "50,50,50", Dwell = "20000,280,20000" },
|
new ListPhaseConfig { Degr = "0,0,0", VoltAcStart = "230,11.5,230", VoltAcEnd = "230,11.5,230", VoltDcStart = "10,10,10", VoltDcEnd = "10,10,10", FreqStart = "50,50,50", FreqEnd = "50,50,50", Dwell = "20000,280,20000" },
|
||||||
new ListPhaseConfig { Waveform = "SINE", Degr = "120,92,120", VoltAcStart = "230,200.1,230", VoltAcEnd = "230,200.1,230", VoltDcStart = "10,10,10", VoltDcEnd = "10,10,10", FreqStart = "50,50,50", FreqEnd = "50,50,50", Dwell = "20000,280,20000" },
|
new ListPhaseConfig { Degr = "120,92,120", VoltAcStart = "230,200.1,230", VoltAcEnd = "230,200.1,230", VoltDcStart = "10,10,10", VoltDcEnd = "10,10,10", FreqStart = "50,50,50", FreqEnd = "50,50,50", Dwell = "20000,280,20000" },
|
||||||
new ListPhaseConfig { Waveform = "SINE", Degr = "240,268,240", VoltAcStart = "230,200.1,230", VoltAcEnd = "230,200.1,230", VoltDcStart = "10,10,10", VoltDcEnd = "10,10,10", FreqStart = "50,50,50", FreqEnd = "50,50,50", Dwell = "20000,280,20000" },
|
new ListPhaseConfig { Degr = "240,268,240", VoltAcStart = "230,200.1,230", VoltAcEnd = "230,200.1,230", VoltDcStart = "10,10,10", VoltDcEnd = "10,10,10", FreqStart = "50,50,50", FreqEnd = "50,50,50", Dwell = "20000,280,20000" },
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// ===== 6.3 直流电压骤变(注意量程与耦合模式)=====
|
// ===== 6.3 直流电压骤变(注意量程与耦合模式)=====
|
||||||
new ListPreset("6.3 直流骤变 680→860→450V【注意量程】",
|
new ListPreset("6.3 直流骤变 680→860→450V【注意量程】",
|
||||||
"直流侧瞬时骤变。⚠ 需先在“耦合模式”设为 DC;且 680~860V 已超 Chroma61800.cs 标注的 DC 量程(-424.2~414.2V),须确认设备为高压选配档,否则命令会被拒绝或截顶。",
|
"直流侧瞬时骤变。⚠ 需先在“耦合模式”设为 DC;且 680~860V 已超 Chroma61800.cs 标注的 DC 量程(-495.0~495.0V),须确认设备为高压选配档,否则命令会被拒绝或截顶。",
|
||||||
2, Sym("SINE", "0,0,0,0", "", "", "680,860,450,680", "680,860,450,680", "", "", "5000,5000,5000,5000")),
|
2, Sym("0,0,0,0", "", "", "680,860,450,680", "680,860,450,680", "", "", "5000,5000,5000,5000")),
|
||||||
};
|
};
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -1639,8 +1643,6 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class ListPhaseConfig
|
public class ListPhaseConfig
|
||||||
{
|
{
|
||||||
/// <summary>该相波形 (FUNC:SHAP:A),如 SINE / SQUA</summary>
|
|
||||||
public string Waveform { get; set; } = "SINE";
|
|
||||||
/// <summary>相位角度序列 (LIST:DEGR, °)</summary>
|
/// <summary>相位角度序列 (LIST:DEGR, °)</summary>
|
||||||
public string Degr { get; set; } = "";
|
public string Degr { get; set; } = "";
|
||||||
/// <summary>AC 起始电压序列 (LIST:VOLT:AC:STAR, V)</summary>
|
/// <summary>AC 起始电压序列 (LIST:VOLT:AC:STAR, V)</summary>
|
||||||
@@ -1657,7 +1659,7 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
public string FreqEnd { get; set; } = "";
|
public string FreqEnd { get; set; } = "";
|
||||||
/// <summary>静止时间序列 (LIST:DWEL, ms)</summary>
|
/// <summary>静止时间序列 (LIST:DWEL, ms)</summary>
|
||||||
public string Dwell { get; set; } = "";
|
public string Dwell { get; set; } = "";
|
||||||
/// <summary>波形缓冲顺序 (LIST:SHAP, A/B)</summary>
|
/// <summary>波形顺序 (LIST:SHAP,可直接写形状名或引用 A/B 组)</summary>
|
||||||
public string ShapeSeq { get; set; } = "";
|
public string ShapeSeq { get; set; } = "";
|
||||||
|
|
||||||
/// <summary>浅拷贝一份配置(用于"复制到三相")。</summary>
|
/// <summary>浅拷贝一份配置(用于"复制到三相")。</summary>
|
||||||
@@ -1665,7 +1667,7 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 大纲典型试验预设:一次载入即可填充三相 LIST 序列与基础参数(次数/触发/时基)。
|
/// 大纲典型试验预设:一次载入即可填充三相 LIST 序列与基础参数(次数/触发/时基/相位连续)。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ListPreset
|
public class ListPreset
|
||||||
{
|
{
|
||||||
@@ -1679,12 +1681,14 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
public string Trigger { get; }
|
public string Trigger { get; }
|
||||||
/// <summary>时间基础 (LIST:BASE)</summary>
|
/// <summary>时间基础 (LIST:BASE)</summary>
|
||||||
public string TimeBase { get; }
|
public string TimeBase { get; }
|
||||||
|
/// <summary>相位连续功能 (LIST:PHAS:CONT);旧文件无此键时为 null,载入时保持界面当前值</summary>
|
||||||
|
public string? PhaseContinue { get; }
|
||||||
/// <summary>三相序列配置(索引 0=A/Φ1, 1=B/Φ2, 2=C/Φ3)</summary>
|
/// <summary>三相序列配置(索引 0=A/Φ1, 1=B/Φ2, 2=C/Φ3)</summary>
|
||||||
public ListPhaseConfig[] Phases { get; }
|
public ListPhaseConfig[] Phases { get; }
|
||||||
|
|
||||||
[JsonConstructor]
|
[JsonConstructor]
|
||||||
public ListPreset(string name, string note, int count, ListPhaseConfig[] phases,
|
public ListPreset(string name, string note, int count, ListPhaseConfig[] phases,
|
||||||
string trigger = "AUTO", string timeBase = "TIME")
|
string trigger = "AUTO", string timeBase = "TIME", string? phaseContinue = null)
|
||||||
{
|
{
|
||||||
Name = name;
|
Name = name;
|
||||||
Note = note;
|
Note = note;
|
||||||
@@ -1692,6 +1696,7 @@ namespace PowerAdaptabilityModule.ViewModels
|
|||||||
Phases = phases;
|
Phases = phases;
|
||||||
Trigger = trigger;
|
Trigger = trigger;
|
||||||
TimeBase = timeBase;
|
TimeBase = timeBase;
|
||||||
|
PhaseContinue = phaseContinue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -163,7 +163,8 @@
|
|||||||
<TextBlock Text="波形" Style="{StaticResource ParamLabel}" />
|
<TextBlock Text="波形" Style="{StaticResource ParamLabel}" />
|
||||||
<ComboBox Width="130" Height="32" FontSize="12" Margin="4,0"
|
<ComboBox Width="130" Height="32" FontSize="12" Margin="4,0"
|
||||||
ItemsSource="{Binding WaveformOptions}"
|
ItemsSource="{Binding WaveformOptions}"
|
||||||
SelectedItem="{Binding Waveform}" />
|
SelectedItem="{Binding Waveform}"
|
||||||
|
ToolTip="FUNC:SHAP:A — SINE / SQUA / TRIAN(三角)/ CSIN、内建 DST01~30、自定义 USR01~30" />
|
||||||
<Button Content="设置" Command="{Binding SetWaveformCommand}"
|
<Button Content="设置" Command="{Binding SetWaveformCommand}"
|
||||||
Style="{StaticResource CmdBtn}" />
|
Style="{StaticResource CmdBtn}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@@ -228,6 +229,11 @@
|
|||||||
<ComboBox Width="80" Height="32" FontSize="12" Margin="4,0"
|
<ComboBox Width="80" Height="32" FontSize="12" Margin="4,0"
|
||||||
ItemsSource="{Binding ListTimeBaseOptions}"
|
ItemsSource="{Binding ListTimeBaseOptions}"
|
||||||
SelectedItem="{Binding ListTimeBase}" />
|
SelectedItem="{Binding ListTimeBase}" />
|
||||||
|
<TextBlock Text="相位连续" Style="{StaticResource ParamLabel}" />
|
||||||
|
<ComboBox Width="88" Height="32" FontSize="12" Margin="4,0"
|
||||||
|
ToolTip="SOUR:LIST:PHAS:CONT — 相位连续功能:DISABLE | ENABLE"
|
||||||
|
ItemsSource="{Binding ListPhaseContinueOptions}"
|
||||||
|
SelectedItem="{Binding ListPhaseContinue}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<Separator Margin="0,6" />
|
<Separator Margin="0,6" />
|
||||||
@@ -236,10 +242,6 @@
|
|||||||
<ComboBox Width="100" Height="32" FontSize="12" Margin="4,0"
|
<ComboBox Width="100" Height="32" FontSize="12" Margin="4,0"
|
||||||
ItemsSource="{Binding ListPhaseOptions}"
|
ItemsSource="{Binding ListPhaseOptions}"
|
||||||
SelectedIndex="{Binding ListEditPhaseIndex}" />
|
SelectedIndex="{Binding ListEditPhaseIndex}" />
|
||||||
<TextBlock Text="该相波形" Style="{StaticResource ParamLabel}" />
|
|
||||||
<ComboBox Width="80" Height="32" FontSize="12" Margin="4,0"
|
|
||||||
ItemsSource="{Binding WaveformOptions}"
|
|
||||||
SelectedItem="{Binding ListWaveform}" />
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Button Content="复制当前相到三相(B/C 相位角自动 ±120°)"
|
<Button Content="复制当前相到三相(B/C 相位角自动 ±120°)"
|
||||||
Command="{Binding CopyPhaseToThreeCommand}"
|
Command="{Binding CopyPhaseToThreeCommand}"
|
||||||
@@ -315,7 +317,7 @@
|
|||||||
<TextBlock Grid.Row="8" Grid.Column="0" Text="波形顺序"
|
<TextBlock Grid.Row="8" Grid.Column="0" Text="波形顺序"
|
||||||
Style="{StaticResource ParamLabel}" />
|
Style="{StaticResource ParamLabel}" />
|
||||||
<TextBox Grid.Row="8" Grid.Column="1" Style="{StaticResource NumInput}"
|
<TextBox Grid.Row="8" Grid.Column="1" Style="{StaticResource NumInput}"
|
||||||
Width="240" ToolTip="LIST:SHAP,A / B 序列,如 A,A,A(可留空)"
|
Width="240" ToolTip="LIST:SHAP 序列:可直接写形状名 SINE/SQUA/TRIAN/CSIN/DST01~30/USR01~30,或引用 A/B 组,如 SINE,SQUA,TRIAN(可留空)"
|
||||||
Text="{Binding ListShapeText, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding ListShapeText, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user