From b04e9af5d8c07f625415546a1aa51b1e245607a4 Mon Sep 17 00:00:00 2001
From: SL <123@123.com>
Date: Wed, 24 Apr 2024 23:12:23 +0800
Subject: [PATCH] =?UTF-8?q?revert(TC):=20=E6=81=A2=E5=A4=8DIoTC=E5=AF=B9?=
=?UTF-8?q?=E8=B1=A1=E5=9C=A8Pyro=E6=A8=A1=E5=BC=8F=E6=97=B6=EF=BC=8CRamp?=
=?UTF-8?q?=E5=88=B0=E7=9B=AE=E6=A0=87=E6=B8=A9=E5=BA=A6=E7=9A=84=E9=80=BB?=
=?UTF-8?q?=E8=BE=91=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Devices/IoTC.cs | 112 +++++++-----------
1 file changed, 46 insertions(+), 66 deletions(-)
diff --git a/MECF.Framework.RT.EquipmentLibrary/Devices/IoTC.cs b/MECF.Framework.RT.EquipmentLibrary/Devices/IoTC.cs
index d4e62ce..4b17fda 100644
--- a/MECF.Framework.RT.EquipmentLibrary/Devices/IoTC.cs
+++ b/MECF.Framework.RT.EquipmentLibrary/Devices/IoTC.cs
@@ -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
///
///
/// 目标温度
- ///
+ /// SP爬升时间。如果为1,表示Recipe中定义为Jump模式。
///
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
/// 将数字转换为枚举。
///
///
- /// 如果传入的mode不在定义范围内,则默认返回HeaterControlMode.Power。
+ /// 如果传入的mode不在定义范围内,则默认返回HeatStrategy.Power。
///
///
///