BOB/DeviceCommand/Device/EAEL9080.cs

205 lines
8.8 KiB
C#

using Common.Attributes;
using DeviceCommand.Base;
using System.Threading;
using System.Threading.Tasks;
namespace DeviceCommand.Device
{
[BOBCommand]
public class EAEL9080 : ModbusTcp
{
public EAEL9080(string IpAddress, int port, int SendTimeout, int ReceiveTimeout)
{
ConfigureDevice(IpAddress, port, SendTimeout, ReceiveTimeout);
}
public EAEL9080() { }
#region
public virtual async Task (bool , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( ? 0xFF00 : 0x0000);
await WriteSingleRegisterAsync(slaveAddress, 402, value, ct);
}
public virtual async Task (bool , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( ? 0xFF00 : 0x0000);
await WriteSingleRegisterAsync(slaveAddress, 405, value, ct);
}
public virtual async Task (bool 使, byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)(使 ? 0xFF00 : 0x0000);
await WriteSingleRegisterAsync(slaveAddress, 409, value, ct);
}
public virtual async Task<uint> (byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 505, 2, ct);
return (uint)(reg[0] << 16 | reg[1]);
}
public virtual async Task<bool> (byte slaveAddress = 1, CancellationToken ct = default)
{
uint status = await (slaveAddress, ct);
return (status & (1 << 7)) != 0;
}
public virtual async Task<bool> (byte slaveAddress = 1, CancellationToken ct = default)
{
uint status = await (slaveAddress, ct);
return (status & (1 << 10)) != 0;
}
public virtual async Task<bool> Sink模式状态(byte slaveAddress = 1, CancellationToken ct = default)
{
uint status = await (slaveAddress, ct);
return (status & (1 << 12)) != 0;
}
#endregion
#region / / /
public virtual async Task (double , double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 500, value, ct);
}
public virtual async Task<double> (double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 500, 1, ct);
return reg[0] / (double)0xCCCC * ;
}
public virtual async Task (double , double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 501, value, ct);
}
public virtual async Task<double> (double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 501, 1, ct);
return reg[0] / (double)0xCCCC * ;
}
public virtual async Task (double , double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 502, value, ct);
}
public virtual async Task<double> (double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 502, 1, ct);
return reg[0] / (double)0xCCCC * ;
}
public virtual async Task (double , double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 503, value, ct);
}
public virtual async Task<double> (double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 503, 1, ct);
return reg[0] / (double)0xCCCC * ;
}
#endregion
#region Sink
public virtual async Task Sink功率(double , double Sink额定功率, byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / Sink额定功率 * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 498, value, ct);
}
public virtual async Task Sink电流(double , double Sink额定电流, byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / Sink额定电流 * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 499, value, ct);
}
public virtual async Task Sink电阻(double , double Sink最大电阻, byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / Sink最大电阻 * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 504, value, ct);
}
public virtual async Task<double> Sink功率(double Sink额定功率, byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 498, 1, ct);
return reg[0] / (double)0xCCCC * Sink额定功率;
}
public virtual async Task<double> Sink电流(double Sink额定电流, byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 499, 1, ct);
return reg[0] / (double)0xCCCC * Sink额定电流;
}
public virtual async Task<double> Sink电阻(double Sink最大电阻, byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 504, 1, ct);
return reg[0] / (double)0xCCCC * Sink最大电阻;
}
#endregion
#region
public virtual async Task<double> (double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 507, 1, ct);
return reg[0] / (double)0xCCCC * ;
}
public virtual async Task<double> (double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 508, 1, ct);
double current = reg[0] / (double)0xCCCC * ;
if (await Sink模式状态(slaveAddress, ct)) current = -current;
return current;
}
public virtual async Task<double> (double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort[] reg = await ReadHoldingRegistersAsync(slaveAddress, 509, 1, ct);
double power = reg[0] / (double)0xCCCC * ;
if (await Sink模式状态(slaveAddress, ct)) power = -power;
return power;
}
#endregion
#region
public virtual async Task (double , double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 510, value, ct);
}
public virtual async Task (double , double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 511, value, ct);
}
public virtual async Task (double , double , byte slaveAddress = 1, CancellationToken ct = default)
{
ushort value = (ushort)( / * 0xCCCC);
await WriteSingleRegisterAsync(slaveAddress, 512, value, ct);
}
#endregion
}
}