2024-04-25 14:08:08 +08:00
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using Aitex.Core.RT.IOCore;
|
2024-04-25 00:08:25 +08:00
|
|
|
|
using Aitex.Core.Util;
|
|
|
|
|
|
|
|
|
|
namespace Aitex.Core.RT.Device.Devices
|
|
|
|
|
{
|
|
|
|
|
internal class IoTCHeaterLoop
|
|
|
|
|
{
|
|
|
|
|
private readonly DeviceTimer _rampTimer;
|
|
|
|
|
|
2024-04-25 14:08:08 +08:00
|
|
|
|
public IoTCHeaterLoop(int id, AOAccessor aoTargetSP, AOAccessor aoTempFromSensorToTC)
|
2024-04-25 00:08:25 +08:00
|
|
|
|
{
|
2024-04-25 14:08:08 +08:00
|
|
|
|
Debug.Assert(aoTargetSP != null);
|
|
|
|
|
Debug.Assert(aoTempFromSensorToTC != null);
|
|
|
|
|
|
2024-04-25 00:08:25 +08:00
|
|
|
|
Name = $"L{id}";
|
|
|
|
|
_rampTimer = new DeviceTimer();
|
|
|
|
|
AOTargetSP = aoTargetSP;
|
2024-04-25 14:08:08 +08:00
|
|
|
|
AOTempFromSensorTC = aoTempFromSensorToTC;
|
2024-04-25 00:08:25 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Name { get; }
|
|
|
|
|
|
2024-04-25 14:08:08 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// TC Auto模式时控温目标温度。
|
|
|
|
|
/// </summary>
|
2024-04-25 00:08:25 +08:00
|
|
|
|
public AOAccessor AOTargetSP { get; private set; }
|
|
|
|
|
|
2024-04-25 14:08:08 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 从温度传感器读到的实时温度通过此AO写入2704.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public AOAccessor AOTempFromSensorTC { get; private set; }
|
|
|
|
|
|
2024-04-25 00:08:25 +08:00
|
|
|
|
public DeviceTimer RampTimer => _rampTimer;
|
|
|
|
|
|
|
|
|
|
public float RampInitTemp { get; set; }
|
|
|
|
|
|
|
|
|
|
public float RampTargetTemp { get; set; }
|
|
|
|
|
|
|
|
|
|
public int RampDurationMs { get; private set; }
|
|
|
|
|
|
|
|
|
|
public void StartRamp(int duration)
|
|
|
|
|
{
|
|
|
|
|
RampDurationMs = duration;
|
|
|
|
|
_rampTimer.Start(duration);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void StopRamp()
|
|
|
|
|
{
|
|
|
|
|
RampDurationMs = 0;
|
|
|
|
|
_rampTimer.Stop();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|