revert(TC): 恢复IoTC对象在Pyro模式时,Ramp到目标温度的逻辑。

This commit is contained in:
SL 2024-04-24 23:12:23 +08:00
parent ccffb542e0
commit b04e9af5d8
1 changed files with 46 additions and 66 deletions

View File

@ -1,6 +1,5 @@
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Xml;
using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.Device.PmDevices;
@ -768,93 +767,75 @@ namespace Aitex.Core.RT.Device.Devices
/// </summary>
/// <param name="loop"></param>
/// <param name="targetTemp">目标温度</param>
/// <param name="time"></param>
/// <param name="time">SP爬升时间。如果为1表示Recipe中定义为Jump模式。</param>
/// <returns></returns>
public bool SetTargetSP(string loop, float targetTemp, int time)
{
// float startPoint = 0;
switch (loop)
{
case "L1":
//如果是Pyro模式直接设置SP即可
if (HeaterModeSetPoint == HeatStrategy.PyroFollow ||
HeaterModeSetPoint == HeatStrategy.PyroAuto)
//如果是Power模式直接设置SP即可
if (HeaterModeSetPoint == HeatStrategy.Power)
{
L1TargetSPSetPoint = targetTemp;
return true;
}
/* else
else
{
_rampTimerL1.Stop(); // 停止正在Ramp的过程
_rampInitValueL1 = L1InputTempSetPoint; // 保存当前温度SP
_rampTimeL1 = time; // 接下来Ramp的总耗时
if (time == 0) // 如果没有指定Ramp耗时则根据系统配置的温度爬升速率计算当前温差所需的爬升时间
_rampTimeL1 = Math.Abs((int)((targetTemp - _rampInitValueL1) / _tempRampRatio.DoubleValue) * 1000);
_rampTimerL1.Stop();
_rampInitValueL1 = L1InputTempSetPoint;
startPoint = L1InputTempSetPoint;
_rampTimeL1 = time;
if (time == 0)
{
_rampTimeL1 = Math.Abs((int)((TargetSP - startPoint) / _tempRampRatio.DoubleValue) * 1000);
}
_rampTargetL1 = TargetSP;
_rampTimerL1.Start(_rampTimeL1);
_rampTargetL1 = targetTemp; // 本次温度Ramp的目标值
_rampTimerL1.Start(_rampTimeL1); // 启动Ramp计时器
}
*/
break;
case "L2":
//如果是Pyro模式直接设置SP即可
if (HeaterModeSetPoint == HeatStrategy.PyroFollow ||
HeaterModeSetPoint == HeatStrategy.PyroAuto)
//如果是Power模式直接设置SP即可
if (HeaterModeSetPoint == HeatStrategy.Power)
{
L2TargetSPSetPoint = targetTemp;
return true;
}
/*else
else
{
_rampTimerL2.Stop();
_rampInitValueL2 = L2InputTempSetPoint;
startPoint = L2InputTempSetPoint;
_rampTimeL2 = time;
if (time == 0)
{
_rampTimeL2 = Math.Abs((int)((TargetSP - startPoint) / _tempRampRatio.DoubleValue) * 1000);
}
_rampTimeL2 = Math.Abs((int)((targetTemp - _rampInitValueL2) / _tempRampRatio.DoubleValue) * 1000);
_rampTargetL2 = TargetSP;
_rampTargetL2 = targetTemp;
_rampTimerL2.Start(_rampTimeL2);
}*/
}
break;
case "L3":
//如果是Pyro模式直接设置SP即可
if (HeaterModeSetPoint == HeatStrategy.PyroFollow ||
HeaterModeSetPoint == HeatStrategy.PyroAuto)
//如果是Power模式直接设置SP即可
if (HeaterModeSetPoint == HeatStrategy.Power)
{
L3TargetSPSetPoint = targetTemp;
return true;
}
/*else
else
{
_rampTimerL3.Stop();
_rampInitValueL3 = L3InputTempSetPoint;
startPoint = L3InputTempSetPoint;
_rampTimeL3 = time;
if (time == 0)
{
_rampTimeL3 = Math.Abs((int)((TargetSP - startPoint) / _tempRampRatio.DoubleValue) * 1000);
}
_rampTimeL3 = Math.Abs((int)((targetTemp - _rampInitValueL3) / _tempRampRatio.DoubleValue) * 1000);
_rampTargetL3 = TargetSP;
_rampTargetL3 = targetTemp;
_rampTimerL3.Start(_rampTimeL3);
}*/
}
break;
}
@ -862,8 +843,7 @@ namespace Aitex.Core.RT.Device.Devices
return true;
}
/*
private void MonitorL1Ramping()
private void MonitorL1Ramping()
{
if (!_rampTimerL1.IsIdle())
{
@ -895,22 +875,22 @@ namespace Aitex.Core.RT.Device.Devices
}
}
private void MonitorL3Ramping()
{
if (!_rampTimerL3.IsIdle())
{
if (_rampTimerL3.IsTimeout() || _rampTimeL3 == 0)
{
_rampTimerL3.Stop();
L3TargetSPSetPoint = _rampTargetL3;
}
else
{
L3TargetSPSetPoint = _rampInitValueL3 + (_rampTargetL3 - _rampInitValueL3) * (float)_rampTimerL3.GetElapseTime() / _rampTimeL3;
}
}
}
*/
private void MonitorL3Ramping()
{
if (!_rampTimerL3.IsIdle())
{
if (_rampTimerL3.IsTimeout() || _rampTimeL3 == 0)
{
_rampTimerL3.Stop();
L3TargetSPSetPoint = _rampTargetL3;
}
else
{
L3TargetSPSetPoint = _rampInitValueL3 + (_rampTargetL3 - _rampInitValueL3) * (float)_rampTimerL3.GetElapseTime() / _rampTimeL3;
}
}
}
#endregion Pyro自动模式
@ -986,9 +966,9 @@ namespace Aitex.Core.RT.Device.Devices
{
try
{
/* MonitorL1Ramping();
MonitorL2Ramping();
MonitorL3Ramping();*/
MonitorL1Ramping();
MonitorL2Ramping();
MonitorL3Ramping();
MonitorSetOP();
@ -1754,7 +1734,7 @@ namespace Aitex.Core.RT.Device.Devices
/// 将数字转换为<see cref="HeatStrategy"/>枚举。
/// </summary>
/// <remarks>
/// 如果传入的mode不在<see cref="HeatStrategy"/>定义范围内则默认返回HeaterControlMode.Power。
/// 如果传入的mode不在<see cref="HeatStrategy"/>定义范围内则默认返回HeatStrategy.Power。
/// </remarks>
/// <param name="ao"></param>
/// <returns></returns>