[RT.Equipment]

IoPSU支持通过Recipe设置OutputLimitHigh,同时可根据配置切换设置模式到手动。
This commit is contained in:
SL 2023-08-02 18:28:20 +08:00
parent 6db597171b
commit 9a43416869
1 changed files with 36 additions and 11 deletions

View File

@ -220,6 +220,27 @@ namespace Aitex.Core.RT.Device.Devices
return false; 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<bool>($"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) => OP.Subscribe($"{Module}.{Name}.SetOutputLimitHigh", (function, args) =>
{ {
if (args.Length == 1 && args[0] is double value) if (args.Length == 1 && args[0] is double value)
@ -302,7 +323,7 @@ namespace Aitex.Core.RT.Device.Devices
public void SetOutputLimitHigh(double value) public void SetOutputLimitHigh(double value)
{ {
SC.SetItemValue($"PM.{Module}.Heater.PSU2OutputLimitHigh", value); SC.SetItemValue($"PM.{Module}.Heater.PSU2OutputLimitHigh", value);
} }
public void SetOutputLimitLow(double value) public void SetOutputLimitLow(double value)
@ -434,18 +455,22 @@ namespace Aitex.Core.RT.Device.Devices
{ {
if (Name == "PSU2") if (Name == "PSU2")
{ {
var limitHigh = (float)SC.GetValue<double>($"PM.{Module}.Heater.PSU2OutputLimitHigh"); var tunedByRecipe = SC.GetValue<bool>($"PM.{Module}.Heater.PSU2OutputLimitHighTuningByRecipe");
_outputLimitHighTuningTemp = (float)SC.GetValue<double>($"PM.{Module}.Heater.PSU2OutputLimitHighTuningTemp"); if (!tunedByRecipe)
if (AETemp >= _outputLimitHighTuningTemp)
{ {
if(Math.Abs(_aoOutputLimitHigh.FloatValue - limitHigh) > 1E-6) var limitHigh = (float)SC.GetValue<double>($"PM.{Module}.Heater.PSU2OutputLimitHigh");
_aoOutputLimitHigh.FloatValue = limitHigh; _outputLimitHighTuningTemp =
(float)SC.GetValue<double>($"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<double>($"PM.{Module}.Heater.PSU2OutputLimitLow"); var limitLow = (float)SC.GetValue<double>($"PM.{Module}.Heater.PSU2OutputLimitLow");
if (Math.Abs(_aoOutputLimitLow.FloatValue - limitLow) > 1E-6) if (Math.Abs(_aoOutputLimitLow.FloatValue - limitLow) > 1E-6)