Files
ACP/DeviceCommand/Devices/PW8001.cs
T
2026-08-06 14:04:28 +08:00

244 lines
8.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Common;
using Common.Attributes;
using DeviceCommand.Base;
using Model.Models;
using System.Threading;
using System.Threading.Tasks;
namespace DeviceCommand.Device
{
/// <summary>
/// 功率分析仪(型号:HIOKI PW8001) 一拖三
/// </summary>
[ACPCommand]
public class PW8001 : Tcp
{
/// <summary>
/// 构造函数:SCPI 通信使用端口 23
/// </summary>
public PW8001(TcpConfig config) : base(config)
{
}
/// <summary>
/// 执行引擎注入的设备实例会话键
/// </summary>
public string? SessionKey { get; set; }
#region 1. IEEE 488.2 基础标准命令
public virtual async Task<string> 查询机器信息(CancellationToken ct = default)
{
return await WriteReadAsync("*IDN?\r\n", "\n", ct);
}
public virtual async Task<string> 查询硬件选项(CancellationToken ct = default)
{
return await WriteReadAsync("*OPT?\r\n", "\n", ct);
}
public virtual async Task 复位仪器(CancellationToken ct = default)
{
await SendAsync("*RST\r\n", ct);
}
public virtual async Task 清除状态(CancellationToken ct = default)
{
await SendAsync("*CLS\r\n", ct);
}
#endregion
#region 2. 仪器系统与测试模式设置设置 (System & Mode)
public virtual async Task 设置测试模式_WIDE(CancellationToken ct = default)
{
await SendAsync(":MODE WIDE\r\n", ct);
}
public virtual async Task 设置测试模式_IEC(CancellationToken ct = default)
{
await SendAsync(":MODE IEC\r\n", ct);
}
public virtual async Task<string> 查询测试模式(CancellationToken ct = default)
{
return await WriteReadAsync(":MODE?\r\n", "\n", ct);
}
public virtual async Task 设置同步源(string , CancellationToken ct = default)
{
await SendAsync($":SYNC:SOURce {源}\r\n", ct);
}
public virtual async Task<string> 查询同步源(CancellationToken ct = default)
{
return await WriteReadAsync(":SYNC:SOURce?\r\n", "\n", ct);
}
public virtual async Task 设置零点调整(string 状态, CancellationToken ct = default)
{
await SendAsync($":ZERO {状态}\r\n", ct);
}
public virtual async Task<string> 查询零点调整(CancellationToken ct = default)
{
return await WriteReadAsync(":ZERO?\r\n", "\n", ct);
}
public virtual async Task 设置零点抑制(string 状态, CancellationToken ct = default)
{
await SendAsync($":ZSP {状态}\r\n", ct);
}
public virtual async Task<string> 查询零点抑制(CancellationToken ct = default)
{
return await WriteReadAsync(":ZSP?\r\n", "\n", ct);
}
public virtual async Task 设置响应消息头(string 状态, CancellationToken ct = default)
{
await SendAsync($":HEADer {状态}\r\n", ct);
}
public virtual async Task<string> 查询响应消息头(CancellationToken ct = default)
{
return await WriteReadAsync(":HEADer?\r\n", "\n", ct);
}
public virtual async Task 设置按键锁定(string 状态, CancellationToken ct = default)
{
await SendAsync($":KLOCk {状态}\r\n", ct);
}
public virtual async Task<string> 查询按键锁定(CancellationToken ct = default)
{
return await WriteReadAsync(":KLOCk?\r\n", "\n", ct);
}
#endregion
#region 3. 积分控制 (Integration)
public virtual async Task 设置积分控制(string 模式, CancellationToken ct = default)
{
await SendAsync($":INTEG:CONTROL {模式}\r\n", ct);
}
public virtual async Task<string> 查询积分控制(CancellationToken ct = default)
{
return await WriteReadAsync(":INTEG:CONTROL?\r\n", "\n", ct);
}
public virtual async Task 设置积分模式(string 通道号, string 模式, CancellationToken ct = default)
{
await SendAsync($":INTEG:MODE{通道号} {模式}\r\n", ct);
}
public virtual async Task<string> 查询积分模式(string 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":INTEG:MODE{通道号}?\r\n", "\n", ct);
}
#endregion
#region 4. 测量值查询 (Measurement Query)
// ---------------- 基础测量(不含变比) ----------------
public virtual async Task<string> 查询电压_不含变比(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:U{通道号}?\r\n", "\n", ct);
}
public virtual async Task<string> 查询电流_不含变比(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:I{通道号}?\r\n", "\n", ct);
}
public virtual async Task<string> 查询功率_不含变比(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:P{通道号}?\r\n", "\n", ct);
}
// ---------------- 基础测量(含变比 CT ----------------
public virtual async Task<string> 查询电压_含变比(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:U{通道号}:CT?\r\n", "\n", ct);
}
public virtual async Task<string> 查询电流_含变比(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:I{通道号}:CT?\r\n", "\n", ct);
}
public virtual async Task<string> 查询功率_含变比(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:P{通道号}:CT?\r\n", "\n", ct);
}
// ---------------- 其他高阶参数测量 ----------------
public virtual async Task<string> 查询有功功率积分(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:WP{通道号}?\r\n", "\n", ct);
}
public virtual async Task<string> 查询电压THD(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:UTHD{通道号}?\r\n", "\n", ct);
}
public virtual async Task<string> 查询电流THD(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:ITHD{通道号}?\r\n", "\n", ct);
}
public virtual async Task<string> 查询线电压U12(CancellationToken ct = default)
{
return await WriteReadAsync(":MEAS:U12?\r\n", "\n", ct);
}
public virtual async Task<string> 查询总功率P123(CancellationToken ct = default)
{
return await WriteReadAsync(":MEAS:P123?\r\n", "\n", ct);
}
// ---------------- 整流平均值 ----------------
public virtual async Task<string> 查询电压整流平均值(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:UMN{通道号}?\r\n", "\n", ct);
}
public virtual async Task<string> 查询电流整流平均值(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:IMN{通道号}?\r\n", "\n", ct);
}
public virtual async Task<string> 查询电压整流平均值_含变比(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:UMN{通道号}:CT?\r\n", "\n", ct);
}
public virtual async Task<string> 查询电流整流平均值_含变比(int 通道号, CancellationToken ct = default)
{
return await WriteReadAsync($":MEAS:IMN{通道号}:CT?\r\n", "\n", ct);
}
#endregion
#region 5. 自定义透传指令
/// <summary>
/// 发送自定义命令
/// </summary>
public virtual async Task 发送自定义命令(string 命令, CancellationToken ct = default)
{
await SendAsync($"{命令}\r\n", ct);
}
#endregion
}
}