From 9a43416869a082fd6a32ae689e40dc4e0ab9c8db Mon Sep 17 00:00:00 2001 From: SL <123@123.com> Date: Wed, 2 Aug 2023 18:28:20 +0800 Subject: [PATCH] =?UTF-8?q?[RT.Equipment]=20IoPSU=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=80=9A=E8=BF=87Recipe=E8=AE=BE=E7=BD=AEOutputLimitHigh?= =?UTF-8?q?=EF=BC=8C=E5=90=8C=E6=97=B6=E5=8F=AF=E6=A0=B9=E6=8D=AE=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=88=87=E6=8D=A2=E8=AE=BE=E7=BD=AE=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=88=B0=E6=89=8B=E5=8A=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Devices/IoPSU.cs | 47 ++++++++++++++----- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/MECF.Framework.RT.EquipmentLibrary/Devices/IoPSU.cs b/MECF.Framework.RT.EquipmentLibrary/Devices/IoPSU.cs index 6f2781a..cc01257 100644 --- a/MECF.Framework.RT.EquipmentLibrary/Devices/IoPSU.cs +++ b/MECF.Framework.RT.EquipmentLibrary/Devices/IoPSU.cs @@ -220,6 +220,27 @@ namespace Aitex.Core.RT.Device.Devices return false; }); + OP.Subscribe($"{Module}.{Name}.SetOutputLimitHighByRecipe", (out string reason, int time, object[] args) => + { + reason = string.Empty; + + if (_aoOutputLimitHigh == null) + { + return true; + } + + if (args.Length == 1 && args[0] is double value) + { + var tunedByRecipe = SC.GetValue($"PM.{Module}.Heater.PSU2OutputLimitHighTuningByRecipe"); + if(tunedByRecipe) + _aoOutputLimitHigh.FloatValue = Convert.ToSingle(value); + return true; + } + + EV.PostWarningLog(Module, $"SetOutputLimitHighByRecipe fail, args error"); + return true; + }); + OP.Subscribe($"{Module}.{Name}.SetOutputLimitHigh", (function, args) => { if (args.Length == 1 && args[0] is double value) @@ -302,7 +323,7 @@ namespace Aitex.Core.RT.Device.Devices public void SetOutputLimitHigh(double value) { - SC.SetItemValue($"PM.{Module}.Heater.PSU2OutputLimitHigh", value); + SC.SetItemValue($"PM.{Module}.Heater.PSU2OutputLimitHigh", value); } public void SetOutputLimitLow(double value) @@ -434,18 +455,22 @@ namespace Aitex.Core.RT.Device.Devices { if (Name == "PSU2") { - var limitHigh = (float)SC.GetValue($"PM.{Module}.Heater.PSU2OutputLimitHigh"); - _outputLimitHighTuningTemp = (float)SC.GetValue($"PM.{Module}.Heater.PSU2OutputLimitHighTuningTemp"); - if (AETemp >= _outputLimitHighTuningTemp) + var tunedByRecipe = SC.GetValue($"PM.{Module}.Heater.PSU2OutputLimitHighTuningByRecipe"); + if (!tunedByRecipe) { - if(Math.Abs(_aoOutputLimitHigh.FloatValue - limitHigh) > 1E-6) - _aoOutputLimitHigh.FloatValue = limitHigh; + var limitHigh = (float)SC.GetValue($"PM.{Module}.Heater.PSU2OutputLimitHigh"); + _outputLimitHighTuningTemp = + (float)SC.GetValue($"PM.{Module}.Heater.PSU2OutputLimitHighTuningTemp"); + if (AETemp >= _outputLimitHighTuningTemp) + { + if (Math.Abs(_aoOutputLimitHigh.FloatValue - limitHigh) > 1E-6) + _aoOutputLimitHigh.FloatValue = limitHigh; + } + else + { + _aoOutputLimitHigh.FloatValue = 100; + } } - else - { - _aoOutputLimitHigh.FloatValue = 100; - } - var limitLow = (float)SC.GetValue($"PM.{Module}.Heater.PSU2OutputLimitLow"); if (Math.Abs(_aoOutputLimitLow.FloatValue - limitLow) > 1E-6)