Update from svn
This commit is contained in:
parent
4a5ac7a011
commit
0119222ab6
|
@ -266,6 +266,28 @@ namespace MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig
|
|||
item.TextSaved = true;
|
||||
|
||||
Reload();
|
||||
//
|
||||
if(key == "PM.PM1.PT.PT1Offset"
|
||||
|| key == "PM.PM1.PT.PT2Offset"
|
||||
)
|
||||
{
|
||||
SetPTOffset(key,value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void SetPTOffset(string sKey, string sValue)
|
||||
{
|
||||
if (sKey == "PM.PM1.PT.PT1Offset")
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"PM1.PT1Offset.SetSCPTOffset", new object[] { "PT1Offset", sValue});
|
||||
}
|
||||
else if(sKey == "PM.PM1.PT.PT2Offset")
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"PM1.PT2Offset.SetSCPTOffset", new object[] { "PT2Offset", sValue });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void Reload()
|
||||
|
|
|
@ -478,7 +478,7 @@ namespace Mainframe.LLs
|
|||
QueueRoutine.Clear();
|
||||
ModuleName mod = (ModuleName)param[0];
|
||||
|
||||
if (mod == ModuleName.TrayRobot)
|
||||
if (mod == ModuleName.TrayRobot || mod == ModuleName.WaferRobot)
|
||||
{
|
||||
//if ((EnumTransferType)param[2] == EnumTransferType.Place)
|
||||
{
|
||||
|
|
|
@ -236,12 +236,17 @@
|
|||
diDryPump1Warning="DI_PM1DryPump1Warning"/>
|
||||
</IoPumps>
|
||||
|
||||
<IoPTOffsets classType="SicPM.Devices.IoPTOffset" assembly="SicPM" >
|
||||
<IoPTOffset id="PT1Offset" module="" display="PT1Offset" schematicId="" unit="" aioType="float" ao="AO_PT1Offset" />
|
||||
<IoPTOffset id="PT2Offset" module="" display="PT2Offset" schematicId="" unit="" aioType="float" ao="AO_PT2Offset" />
|
||||
</IoPTOffsets>
|
||||
|
||||
<DoSensors classType="SicPM.Devices.DoSensor" assembly="SicPM">
|
||||
<DoSensor id="CleanRoutineSucceed" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" do="DO_CleanRoutineSucceed" infoText="" warningText="" alarmText=""/>
|
||||
</DoSensors>
|
||||
|
||||
<IoSensors classType="SicPM.Devices.IoSensor" assembly="SicPM">
|
||||
<IoSensor id="SensorChamBodyOTSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ChamBodyOTSW" infoText ="Information9 ChamBodyOT.SW [DI-2]" warningText="" alarmText=""/>
|
||||
<!--<IoSensor id="SensorChamBodyOTSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ChamBodyOTSW" infoText ="Information9 ChamBodyOT.SW [DI-2]" warningText="" alarmText=""/>-->
|
||||
<IoSensor id="SensorChamPressAboveATMSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_ChamPressAboveATMSW" infoText="" warningText="" alarmText ="Alarm3 Chamber Press Above ATM [DI-4]"/>
|
||||
<IoSensor id="SensorChamAtSafeProcessPressSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ChamAtSafeProcessPressSW" infoText ="Information3 Chamber At Safe Process Press [DI-5]" warningText="" alarmText=""/>
|
||||
<IoSensor id="SensorPMATMSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_PMATMSW" infoText ="Information2 PM At ATM [DI-9]" warningText="" alarmText=""/>
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
<IO_DEFINE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<VersionID Name="V2.2.3.0" />
|
||||
<Dig_In>
|
||||
<DI_ITEM Index="0" Name="DI_ChamLidClosed" BufferOffset="0" Addr="0" Description="" />
|
||||
<DI_ITEM Index="2" Name="DI_ChamBodyOTSW" BufferOffset="2" Addr="2" Description="" />
|
||||
<DI_ITEM Index="0" Name="DI_ChamLidClosed" BufferOffset="0" Addr="0" Description="" />
|
||||
<DI_ITEM Index="3" Name="DI_ChamCabDoorClosed" BufferOffset="3" Addr="3" Description="" />
|
||||
<DI_ITEM Index="4" Name="DI_ChamPressAboveATMSW" BufferOffset="4" Addr="4" Description="" />
|
||||
<DI_ITEM Index="5" Name="DI_ChamAtSafeProcessPressSW" BufferOffset="5" Addr="5" Description="" />
|
||||
|
|
|
@ -587,19 +587,7 @@ namespace SicPM.Devices
|
|||
L3TargetSPSetPoint = 600;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
strHeaterMode = "TC";
|
||||
L1LoopModeSetPoint = 1;
|
||||
if (L2LoopModeSetPoint == 1)
|
||||
{
|
||||
_rampTimerL2.Stop();
|
||||
L2TargetSPSetPoint = L2InputTempSetPoint;
|
||||
}
|
||||
L2LoopModeSetPoint = 0;
|
||||
L3LoopModeSetPoint = 1;
|
||||
TCPyroModeSetPoint = 0;
|
||||
break;
|
||||
case 2:
|
||||
case 1:
|
||||
strHeaterMode = "Pyro";
|
||||
if (L1LoopModeSetPoint == 1)
|
||||
{
|
||||
|
@ -649,17 +637,7 @@ namespace SicPM.Devices
|
|||
TCPyroModeSetPoint = 0;
|
||||
break;
|
||||
case 1:
|
||||
strHeaterMode = "TC";
|
||||
L1LoopModeSetPoint = 1;
|
||||
L2LoopModeSetPoint = 1;
|
||||
if (L3LoopModeSetPoint != 0)
|
||||
{
|
||||
L3TargetSPSetPoint = L3PVFeedBack;
|
||||
}
|
||||
L3LoopModeSetPoint = 0;
|
||||
TCPyroModeSetPoint = 0;
|
||||
break;
|
||||
case 2:
|
||||
|
||||
strHeaterMode = "Pyro";
|
||||
L1LoopModeSetPoint = 1;
|
||||
L2LoopModeSetPoint = 1;
|
||||
|
|
|
@ -20,6 +20,7 @@ namespace SicPM.Routines
|
|||
RotationEnable,
|
||||
HeatEnable,
|
||||
VentPumpClose,
|
||||
VentPumpOpen,
|
||||
ArSupply,
|
||||
|
||||
SetGroupB,
|
||||
|
@ -34,6 +35,7 @@ namespace SicPM.Routines
|
|||
SetM1to16,
|
||||
SetPC,
|
||||
SetGroupJ,
|
||||
SetGroupJ_1,
|
||||
SetM291519to38,
|
||||
|
||||
SetGasOut,
|
||||
|
@ -64,8 +66,8 @@ namespace SicPM.Routines
|
|||
|
||||
PressureTo1050,
|
||||
SetPressureUp,
|
||||
SetPressureUp1,
|
||||
SetPressureDown,
|
||||
VentPumpOpen,
|
||||
|
||||
PressureToMax,
|
||||
PressureToMin,
|
||||
|
@ -84,8 +86,7 @@ namespace SicPM.Routines
|
|||
|
||||
SetV76,
|
||||
SetV75,
|
||||
SetV751,
|
||||
SetV761,
|
||||
SetTVto300,
|
||||
|
||||
CheckPM1000,
|
||||
SetMfc28to40Special,
|
||||
|
@ -107,12 +108,28 @@ namespace SicPM.Routines
|
|||
SetPressureDown1,
|
||||
SetMfc28to31Default1,
|
||||
CheckFinal1Open,
|
||||
SetGroupV25,
|
||||
SetGroupV25,
|
||||
CloseGroupV25,
|
||||
SetM39,
|
||||
CheckEPV1Open1,
|
||||
CheckEPV2Open1,
|
||||
CheckTVOpen1,
|
||||
CheckEPV1Open2,
|
||||
SetTVEnable,
|
||||
SetTVPressMode,
|
||||
SetTv1,
|
||||
SetM2toM40,
|
||||
SetV31,
|
||||
SetV32,
|
||||
SetV35V36,
|
||||
WaitTv1,
|
||||
SetTVPositionMode,
|
||||
SetTVPositionMax,
|
||||
SetTVPressMode1,
|
||||
SetM2TOM40Default,
|
||||
SetM2toM40_1,
|
||||
SetMfc27to40Default,
|
||||
|
||||
|
||||
SetV92V93V95,
|
||||
SetV94,
|
||||
|
@ -170,20 +187,11 @@ namespace SicPM.Routines
|
|||
private int _IoValueOpenCloseTimeout = 10; //开关阀门超时时间
|
||||
private double _pmPressureMaxDiff; //蝶阀与目标压力的差值范围(认为调整到位了)
|
||||
private int _throttleTimeout; //蝶阀调整到指定压力的超时时间
|
||||
private int _EPV2OpenTimeDelay =10; //EPV2
|
||||
private int _waitChamberTo1000TimeOut = 180; //等待腔体压力上升到1000的超时时间
|
||||
|
||||
private double _mfc28SpecialFlow = 15000;
|
||||
private double _mfc29SpecialFlow = 5000;
|
||||
private double _mfc31SpecialFlow = 10000;
|
||||
private double _mfc40SpecialFlow = 10000;
|
||||
private double _ventBasePressure = 1000;
|
||||
|
||||
//private int _EPV2OpenDelayTime = 9;
|
||||
private double _throttleFinalPressure = 300;//蝶阀最终调整对的压力
|
||||
|
||||
|
||||
private int _pmCleanTime = 20;
|
||||
//private int _routineTimeOut;
|
||||
|
||||
private Stopwatch _swTimer = new Stopwatch();
|
||||
|
||||
|
@ -201,10 +209,6 @@ namespace SicPM.Routines
|
|||
{
|
||||
Reset();
|
||||
|
||||
_mfc28SpecialFlow = SC.GetValue<double>($"PM.{Module}.Mfc28FlowSpecail");
|
||||
_mfc29SpecialFlow = SC.GetValue<double>($"PM.{Module}.Mfc29FlowSpecail");
|
||||
_mfc31SpecialFlow = SC.GetValue<double>($"PM.{Module}.Mfc31FlowSpecail");
|
||||
_mfc40SpecialFlow = SC.GetValue<double>($"PM.{Module}.Mfc40FlowSpecail");
|
||||
_pmPressureMaxDiff = SC.GetValue<double>($"PM.{Module}.ThrottlePressureMaxDiff");
|
||||
_throttleTimeout = SC.GetValue<int>($"PM.{Module}.ThrottlePressureTimeout");
|
||||
|
||||
|
@ -217,9 +221,7 @@ namespace SicPM.Routines
|
|||
_pressureMaxTimeout = SC.GetValue<int>($"PM.{Module}.Clean.VentTimeout");
|
||||
_pmCleanTime = SC.GetValue<int>($"PM.{Module}.Clean.CleanTime");
|
||||
|
||||
//_EPV2OpenDelayTime = SC.GetValue<int>($"PM.{Module}.TimeDelayAlterEPV2Open");
|
||||
|
||||
_ventBasePressure = SC.GetValue<double>($"PM.{Module}.Clean.VentBasePressure");
|
||||
_throttleFinalPressure = SC.GetValue<double>($"PM.{Module}.Clean.FinalPressure");
|
||||
|
||||
//Purge Succeed 清掉
|
||||
_pmIoInterLock.DoLidOpenRoutineSucceed = false;
|
||||
|
@ -241,150 +243,143 @@ namespace SicPM.Routines
|
|||
return Result.RUN;
|
||||
}
|
||||
|
||||
//PM Clean
|
||||
public override Result Monitor()
|
||||
{
|
||||
try
|
||||
{
|
||||
//CheckRoutineTimeOut();
|
||||
|
||||
if (SC.GetValue<bool>("System.IsATMMode"))
|
||||
{
|
||||
return Result.DONE;
|
||||
}
|
||||
//关闭V76,打开V75
|
||||
SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//旋转停止,加热停止
|
||||
SetHeatEnable((int)RoutineStep.HeatEnable, false, _heatTimeOut);
|
||||
SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed,false, _rotationCloseTimeout);
|
||||
SetRotationValve((int)RoutineStep.RotationEnable, _rotationCheckSpeed, false, _rotationCloseTimeout);
|
||||
|
||||
//关闭V72,打开V25
|
||||
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.ArSupply, IoGroupName.ArSupply, true, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//打开V31,打开V32
|
||||
SetIoValueByGroup((int)RoutineStep.SetV31, IoGroupName.V31, true, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetV32, IoGroupName.V32, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//打开V35,打开V36
|
||||
SetIoValueByGroup((int)RoutineStep.SetV35V36, IoGroupName.V35V36, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//关闭B/C/E/F/H/K 阀门
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupB, IoGroupName.B, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupC, IoGroupName.C, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupE, IoGroupName.E, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupF, IoGroupName.F, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupH, IoGroupName.H, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupK, IoGroupName.K, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupV25, IoGroupName.V25, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//打开D/G 阀门
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupD, IoGroupName.D, true, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupG, IoGroupName.G, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
SetIoValueByGroup((int)RoutineStep.SetV76, IoGroupName.V76, false, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.SetV75, IoGroupName.V75, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//设置MFC和PC的模式
|
||||
SetMfcModeToNormalByGroup((int)RoutineStep.SetMFCMode, MfcGroupName.All);
|
||||
SetPcModeToNormal((int)RoutineStep.SetPCMode, _lstPcList);
|
||||
|
||||
//打开J阀门
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupJ, IoGroupName.J, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//M1-M16设定为default值(M2、M9、M15除外)
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetM1to16, MfcGroupName.M1to16, 0);
|
||||
|
||||
//设置所有PC到默认值
|
||||
SetPcToDefault((int)RoutineStep.SetPC, _lstPcList);
|
||||
|
||||
CheckFinalIoStatue((int)RoutineStep.CheckFinal1Open);
|
||||
if (!_finalOpen)
|
||||
{
|
||||
SetMfcByGroup((int)RoutineStep.SetM291519to38, MfcGroupName.M2toM40, 0, 5);
|
||||
TimeDelay((int)RoutineStep.TimeDelay1, 5);
|
||||
}
|
||||
//设置M2,M9,M15,M19-M26 3s ramp 到default 值
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3);
|
||||
|
||||
GetPressureConditionPT2((int)RoutineStep.CheckPMPt21000, 1000);
|
||||
if (!_checkPMPt2Over1000)
|
||||
{
|
||||
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8);
|
||||
SetThrottleDisable((int)RoutineStep.SetTvPositionToZero, _IoThrottle, 8);
|
||||
TimeDelay((int)RoutineStep.TimeDelay18, 1);
|
||||
}
|
||||
//打开EPV2
|
||||
SetIoValueByGroup((int)RoutineStep.SetEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay1, 3);
|
||||
|
||||
//设置蝶阀Enable
|
||||
SetThrottleEnableAndWait((int)RoutineStep.SetTVEnable, _IoThrottle, 5);
|
||||
|
||||
//设置蝶阀为压力模式
|
||||
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode, _IoThrottle, 5);
|
||||
|
||||
//伺服压力设定值到0mbar
|
||||
SetThrottlePressureAndWaitSetPoint((int)RoutineStep.SetTv1, _IoThrottle, _pressureMin, _pmPressureMaxDiff, _throttleTimeout);
|
||||
|
||||
//M2、M9、M15、M19-M40 MFC 3s ramp到0
|
||||
SetMfcByGroup((int)RoutineStep.SetM2toM40, MfcGroupName.M2toM40, 0, 3);
|
||||
|
||||
//等待腔体压力Pump到设定值
|
||||
WaitChamberPressDownTo((int)RoutineStep.WaitTv1, _pressureMin, _pmPressureMaxDiff, _throttleTimeout);
|
||||
|
||||
//蝶阀设置为位置模式,开度设置为最大
|
||||
SetThrottleToPositionMode((int)RoutineStep.SetTVPositionMode, _IoThrottle, _throttleTimeout);
|
||||
SetThrottleSetPosition((int)RoutineStep.SetTVPositionMax, _IoThrottle, 100, _throttleTimeout);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//打开Final valves 和对应的MFC值
|
||||
SetIoValueByGroup((int)RoutineStep.OpenFinal2, IoGroupName.Final2, true, _IoValueOpenCloseTimeout);
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal2, MfcGroupName.Final2, 3);
|
||||
TimeDelay((int)RoutineStep.TimeDelay3, 3);
|
||||
//SetIoValueByGroup((int)RoutineStep.OpenFinal1, IoGroupName.Final1, true, _IoValueOpenCloseTimeout);
|
||||
//SetMfcToDefaultByGroup((int)RoutineStep.SetMfcFinal1, MfcGroupName.Final1, 3);
|
||||
TimeDelay((int)RoutineStep.TimeDelay2, 3);
|
||||
|
||||
//修改打开Final1的MFC和阀的开关流程
|
||||
//1.打开V92,V93和V95,再打开V94,在打开V96,在打开V68
|
||||
//打开V92,V93和V95,再打开V94,在打开V96,在打开V68
|
||||
SetIoValueByGroup((int)RoutineStep.SetV92V93V95, IoGroupName.V92V93V95, true, _IoValueOpenCloseTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay20, 3);
|
||||
TimeDelay((int)RoutineStep.TimeDelay3, 3);
|
||||
SetIoValueByGroup((int)RoutineStep.SetV94, IoGroupName.V94, true, _IoValueOpenCloseTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay21, 3);
|
||||
TimeDelay((int)RoutineStep.TimeDelay4, 3);
|
||||
SetIoValueByGroup((int)RoutineStep.SetV96, IoGroupName.V96, true, _IoValueOpenCloseTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay22, 3);
|
||||
TimeDelay((int)RoutineStep.TimeDelay5, 3);
|
||||
SetIoValueByGroup((int)RoutineStep.SetV68, IoGroupName.GasIn1, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//2.设置M32,M35,M37到默认值,再设置M36,延时2s,再设置M38,不用Ramp
|
||||
//设置M32,M35,M37到默认值,再设置M36,延时2s,再设置M38,不用Ramp
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetM32M35M37, MfcGroupName.M32M35M37, 5);
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetM36, MfcGroupName.M36, 5);
|
||||
TimeDelay((int)RoutineStep.TimeDelay10, 2);
|
||||
TimeDelay((int)RoutineStep.TimeDelay6, 2);
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetM38, MfcGroupName.M38, 5);
|
||||
TimeDelay((int)RoutineStep.TimeDelay4, 3);
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
TimeDelay((int)RoutineStep.TimeDelay7, 3);
|
||||
|
||||
//设置蝶阀为压力模式
|
||||
SetThrottleToPressModeAndWait((int)RoutineStep.SetTVPressMode1, _IoThrottle, 5);
|
||||
|
||||
//4.打开J Valves
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupJOpen, IoGroupName.J, true, _IoValueOpenCloseTimeout);
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetM291519to26, MfcGroupName.M2toM26, 3);
|
||||
|
||||
|
||||
if (!_checkPMPt2Over1000)
|
||||
{
|
||||
//判断反应腔压力是否超过1000mbar
|
||||
GetPressureCondition((int)RoutineStep.CheckPM1000, _ventBasePressure);
|
||||
if (!_checkPMPressureOver1000)
|
||||
{
|
||||
//设置M28,M29,M31,M40 为特定值
|
||||
SetMfc28to40Special((int)RoutineStep.SetMfc28to40Special, _mfc28SpecialFlow, _mfc29SpecialFlow, _mfc31SpecialFlow, _mfc40SpecialFlow, 1);
|
||||
}
|
||||
|
||||
//等待反应腔压力到达1000
|
||||
NotifyInfo((int)RoutineStep.Notify1, $"Wait PM Pressure over {_ventBasePressure} mbar");
|
||||
WaitChamberPressUpTo((int)RoutineStep.WaitPressUpTo1000, _ventBasePressure, _waitChamberTo1000TimeOut);
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetMfc28to40Default, MfcGroupName.M27toM40, 0);
|
||||
}
|
||||
|
||||
|
||||
NotifyInfo((int)RoutineStep.Notify2, "Wait V27 open!");
|
||||
WaitV27Open((int)RoutineStep.WaitV27Open,60);
|
||||
TimeDelay((int)RoutineStep.TimeDelay5, _pmCleanTime);
|
||||
|
||||
if (_checkPMPt2Over1000)
|
||||
{
|
||||
//1.打开EPV1,等待10s
|
||||
SetThrottleToCloseMode((int)RoutineStep.SetTVCloseMode, _IoThrottle, 8);
|
||||
SetThrottleDisable((int)RoutineStep.SetTvPositionToZero, _IoThrottle, 8);
|
||||
}
|
||||
|
||||
//打开EPV2,等待9秒,打开蝶阀
|
||||
//打开EPV2,等待9秒,打开蝶阀
|
||||
CheckEPV2Open((int)RoutineStep.CheckEPV2Open1);
|
||||
if (!_isEPV2Open)
|
||||
{
|
||||
SetIoValueByGroup((int)RoutineStep.OpenEPV2, IoGroupName.EPV2, true, _IoValueOpenCloseTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay6, 2);
|
||||
}
|
||||
CheckTvOpen((int)RoutineStep.CheckTVOpen1);
|
||||
if (!_isTvOpen)
|
||||
{
|
||||
SetThrottleEnableAndWait((int)RoutineStep.SetTvOpen, _IoThrottle, 10);
|
||||
SetThrottleToPressModeAndWait((int)RoutineStep.SetTvModeToPress, _IoThrottle, 10);
|
||||
}
|
||||
SetThrottleToTargetAndNoWait((int)RoutineStep.SetTvTo1150, _IoThrottle, 1150);
|
||||
|
||||
//打开V72
|
||||
//SetIoValueByGroup((int)RoutineStep.VentPumpOpen, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//循环开始
|
||||
Loop((int)RoutineStep.StartLoop, _pressureLoopCount);
|
||||
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Dowing);
|
||||
SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin);
|
||||
WaitThrottleToPressureAndSetMfcSpecialForLidOpen((int)RoutineStep.WaitPressureDown, _IoThrottle, _pressureMin, _pmPressureMaxDiff, _pressureMinTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay8, _pressureMinDelay);
|
||||
|
||||
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown2, PressureUpOrDown.Uping);
|
||||
|
||||
//M2、M9、M15、M19-M40 MFC 3s ramp 到 default 值
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetM2TOM40Default, MfcGroupName.M2toM40, 3);
|
||||
|
||||
//使用动态流量伺服到300mbar
|
||||
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping);
|
||||
SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp, _IoThrottle, _pressureMax);
|
||||
WaitThrottleToPressureAndSetMfcSpecialForLidOpen((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _pmPressureMaxDiff, _pressureMaxTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay9, _pressureMaxDelay);
|
||||
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureUp, _IoThrottle, _pressureMax, _pmPressureMaxDiff, _pressureMaxTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay8, _pressureMaxDelay);
|
||||
|
||||
//M2、M9、M15、M19-M40 MFC 3s ramp 0
|
||||
SetMfcByGroup((int)RoutineStep.SetM2toM40_1, MfcGroupName.M2toM40, 0, 3);
|
||||
|
||||
//使用动态流量伺服到0mbar
|
||||
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown2, PressureUpOrDown.Dowing);
|
||||
SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureDown, _IoThrottle, _pressureMin);
|
||||
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.WaitPressureDown, _IoThrottle, _pressureMin, _pmPressureMaxDiff, _pressureMinTimeout);
|
||||
TimeDelay((int)RoutineStep.TimeDelay9, _pressureMinDelay);
|
||||
|
||||
EndLoop((int)RoutineStep.EndLoop);
|
||||
|
||||
//M27-M40 MFC 3s ramp 到 default 值
|
||||
SetMfcToDefaultByGroup((int)RoutineStep.SetMfc27to40Default, MfcGroupName.M27toM40, 3);
|
||||
|
||||
//打开J阀门
|
||||
SetIoValueByGroup((int)RoutineStep.SetGroupJ_1, IoGroupName.J, true, _IoValueOpenCloseTimeout);
|
||||
|
||||
//打开V72,关闭V25
|
||||
SetIoValueByGroup((int)RoutineStep.VentPumpClose, IoGroupName.VentPump, true, _IoValueOpenCloseTimeout);
|
||||
SetIoValueByGroup((int)RoutineStep.CloseGroupV25, IoGroupName.V25, false, _IoValueOpenCloseTimeout);
|
||||
|
||||
//压力伺服到300mbar
|
||||
SetPressureUpOrDown((int)RoutineStep.SetPressUpOrDown1, PressureUpOrDown.Uping);
|
||||
SetThrottleToTargetAndNoWait((int)RoutineStep.SetPressureUp1, _IoThrottle, _throttleFinalPressure);
|
||||
WaitThrottleToPressureAndSetMfcSpecial((int)RoutineStep.SetTVto300, _IoThrottle, _throttleFinalPressure, _pmPressureMaxDiff, _throttleTimeout);
|
||||
}
|
||||
catch (RoutineBreakException)
|
||||
{
|
||||
|
|
|
@ -398,7 +398,6 @@ namespace SicPM.Routines
|
|||
//等待反应腔压力到达1020
|
||||
NotifyInfo((int)RoutineStep.Notify1, "Wait pm pressure to 1020 mbar!");
|
||||
WaitChamberPressUpTo((int)RoutineStep.WaitPressUpTo1000, 1020, _waitChamberTo1000TimeOut);
|
||||
|
||||
}
|
||||
catch (RoutineBreakException)
|
||||
{
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
<Compile Include="Devices\IoInterLock.cs" />
|
||||
<Compile Include="Devices\IoOmronTemp.cs" />
|
||||
<Compile Include="Devices\DoSensor.cs" />
|
||||
<Compile Include="Devices\IoPTOffset.cs" />
|
||||
<Compile Include="Devices\IoUPS.cs" />
|
||||
<Compile Include="Devices\IoSCR.cs" />
|
||||
<Compile Include="Devices\IoTC.cs" />
|
||||
|
|
|
@ -192,8 +192,6 @@
|
|||
<config default="0" name="SCRMiddleRatio" description="SCR Middle Ratio" max="100" min="0" paramter="" tag="" unit="%" type="Double" />
|
||||
<config default="0" name="SCRLowerRatio" description="SCR Lower Ratio" max="100" min="0" paramter="" tag="" unit="%" type="Double" />
|
||||
<config default="250" name="RoutineTimeOut" description="Routine超时时间" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
<!--<config default="1000" name="Pressure1" description="V72未打开时,低于此压力值需要开启M28,M29,M31大流量值" max="1100" min="600" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="1020" name="Pressure2" description="V72未打开时,等待腔体压力值大于此压力开启EPV2" max="1100" min="600" paramter="" tag="" unit="s" type="Integer" />-->
|
||||
<config default="30" name="MFC1to16RampTime" description="Process Abort后MFC1到16Ramp到Default值的时间" max="100" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="30" name="MFC19to38RampTime" description="Process Abort后MFC19到38Ramp到Default值的时间" max="100" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
</configs>
|
||||
|
@ -246,6 +244,7 @@
|
|||
<config default="100" name="VentTimeout" description="Vent超时时间" max="1000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="20" name="CleanTime" description="吹扫时间" max="1000" min="1" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="3000" name="RoutineTimeOut" description="Routine超时时间" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
<config default="300" name="FinalPressure" description="最后保持的压力" max="1100" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
</configs>
|
||||
|
||||
<configs name="MoExchange">
|
||||
|
@ -1229,6 +1228,11 @@
|
|||
<config default="5" name="CleanRunCount" description="每运行多少炉需要执行Clean Recipe" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" visible="true"/>
|
||||
<config default="0" name="CurrentRunCount" description="当前炉计数" max="10000" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
|
||||
</configs>
|
||||
|
||||
<configs name="PT">
|
||||
<config default="0" name="PT1Offset" description="PT1Offset" max="100" min="-100" paramter="" tag="" unit="" type="Double" />
|
||||
<config default="0" name="PT2Offset" description="PT2Offset" max="100" min="-100" paramter="" tag="" unit="" type="Double" />
|
||||
</configs>
|
||||
</configs>
|
||||
|
||||
</configs>
|
||||
|
|
|
@ -2004,7 +2004,7 @@ namespace SicRT.Modules
|
|||
return;
|
||||
|
||||
//pick from pm
|
||||
if (_tmRobot.NoWafer(0))
|
||||
if (_tmRobot.NoWafer(0)&&_tmRobot.NoTray(0))
|
||||
{
|
||||
Hand pickBlade = Hand.Blade1;
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ namespace SicRT.Scheduler
|
|||
private ModuleName _taskRobot;
|
||||
private int _taskSlot;
|
||||
private int _entityTaskToken = (int)FSM_MSG.NONE;
|
||||
public bool IsInPumping { get => _task == TaskType.Pump || _task == TaskType.Purge || (_task == TaskType.PrepareTransfer && _taskRobot == ModuleName.TMRobot); }
|
||||
public bool IsInPumping { get => _task == TaskType.Pump || _task == TaskType.Purge || _task == TaskType.PrepareTransfer ; }
|
||||
|
||||
public SchedulerLoadLock(ModuleName module) : base(module.ToString())
|
||||
{
|
||||
|
|
|
@ -208,7 +208,7 @@ namespace SicRT.Scheduler
|
|||
if (wafer.NextSequenceStep >= wafer.ProcessJob.Sequence.Steps.Count)
|
||||
return null;
|
||||
|
||||
if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Any(m => m == ModuleName.LoadLock || m == ModuleName.Load))
|
||||
if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(Module))
|
||||
return null;
|
||||
|
||||
if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepParameter.ContainsKey("PurgeCount"))
|
||||
|
@ -235,7 +235,7 @@ namespace SicRT.Scheduler
|
|||
if (wafer.NextSequenceStep >= wafer.ProcessJob.Sequence.Steps.Count)
|
||||
return null;
|
||||
|
||||
if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Any(m => m == ModuleName.LoadLock || m == ModuleName.Load))
|
||||
if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(Module))
|
||||
return null;
|
||||
|
||||
if (!wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepParameter.ContainsKey("PumpDelayTime"))
|
||||
|
|
|
@ -164,6 +164,7 @@ namespace SicRT.Equipments.Systems
|
|||
private SicPM.Devices.IoSignalTower _st = null;
|
||||
//
|
||||
private SicPM.Devices.IoTC _tc = null;
|
||||
private SicPM.Devices.IoPTOffset _pt1 = null, _pt2 = null;
|
||||
|
||||
public EquipmentManager()
|
||||
{
|
||||
|
@ -196,6 +197,7 @@ namespace SicRT.Equipments.Systems
|
|||
SubscribeOperation();
|
||||
|
||||
InitSetPSUY();
|
||||
InitPTOffset();
|
||||
|
||||
Singleton<EventManager>.Instance.OnAlarmEvent += Instance_OnAlarmEvent;
|
||||
|
||||
|
@ -283,6 +285,8 @@ namespace SicRT.Equipments.Systems
|
|||
//
|
||||
_st = DEVICE.GetDevice<SicPM.Devices.IoSignalTower>("PM1.SignalTower");
|
||||
_tc = DEVICE.GetDevice<SicPM.Devices.IoTC>("PM1.TC1");
|
||||
_pt1 = DEVICE.GetDevice<SicPM.Devices.IoPTOffset>("PM1.PT1Offset");
|
||||
_pt2 = DEVICE.GetDevice<SicPM.Devices.IoPTOffset>("PM1.PT2Offset");
|
||||
//
|
||||
_thread = new PeriodicJob(200, OnTimer, "PmSlitDoor", false, true);
|
||||
Task.Delay(15000).ContinueWith((a) => _thread.Start());
|
||||
|
@ -498,6 +502,11 @@ namespace SicRT.Equipments.Systems
|
|||
_tc.SetPCPSUY();
|
||||
|
||||
}
|
||||
void InitPTOffset()
|
||||
{
|
||||
_pt1.GetSCPTOffset("PT1Offset");
|
||||
_pt2.GetSCPTOffset("PT2Offset");
|
||||
}
|
||||
|
||||
//EventManager触发OnAlarmEvent事件,即EV.PostAlarmLog触发
|
||||
//具体值到 EventManager里面找
|
||||
|
|
|
@ -52,6 +52,6 @@ using System.Windows;
|
|||
// 方法是按如下所示使用“*”: :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
|
||||
[assembly: AssemblyVersion("1.1.0.1")]
|
||||
[assembly: AssemblyFileVersion("1.1.0.1")]
|
||||
[assembly: AssemblyVersion("1.1.0.3")]
|
||||
[assembly: AssemblyFileVersion("1.1.0.3")]
|
||||
|
||||
|
|
|
@ -9,6 +9,14 @@
|
|||
Sic 系统更新历史记录
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
Sic03 2022-08-02 Version 1.1.0.3
|
||||
1、PM Heater界面 heater mode 中去掉TC模式;
|
||||
2、PM DI-2 ;
|
||||
3、解决PM PT1和PT2 offset 值掉电丢失的问题;
|
||||
|
||||
Sic03 2022-08-02 Version 1.1.0.2
|
||||
1.PM Clean Routine重新整理
|
||||
|
||||
Sic03 2022-08-02 Version 1.1.0.1
|
||||
1.更新
|
||||
|
||||
|
|
|
@ -1920,16 +1920,6 @@
|
|||
x:Name="Devices"
|
||||
Canvas.Left="0"
|
||||
Canvas.Top="150">
|
||||
|
||||
<Line
|
||||
Canvas.Left="12"
|
||||
Canvas.Top="-82"
|
||||
Stroke="Gray"
|
||||
StrokeThickness="8"
|
||||
X1="295"
|
||||
X2="300"
|
||||
Y1="415"
|
||||
Y2="415" />
|
||||
<Line
|
||||
Canvas.Top="-25"
|
||||
Stroke="Gray"
|
||||
|
@ -2050,9 +2040,9 @@
|
|||
Canvas.Top="463"
|
||||
Content="V82" />
|
||||
<Label
|
||||
Canvas.Left="225"
|
||||
Canvas.Top="300"
|
||||
Content="PT4" />
|
||||
Canvas.Left="127"
|
||||
Canvas.Top="10"
|
||||
Content="PS7" />
|
||||
<Label
|
||||
Canvas.Left="111"
|
||||
Canvas.Top="384"
|
||||
|
@ -2064,7 +2054,7 @@
|
|||
<Label
|
||||
Canvas.Left="225"
|
||||
Canvas.Top="354"
|
||||
Content="PS7" />
|
||||
Content="PT4" />
|
||||
<Label
|
||||
Canvas.Left="125"
|
||||
Canvas.Top="354"
|
||||
|
@ -2132,11 +2122,11 @@
|
|||
Visibility="{Binding IsLLInstalled, Converter={StaticResource BoolVisibilityConverter}}" />
|
||||
|
||||
<deviceControl:AITPressureMeter
|
||||
Canvas.Left="220"
|
||||
Canvas.Top="318"
|
||||
Canvas.Left="122"
|
||||
Canvas.Top="28"
|
||||
Width="90"
|
||||
Height="30"
|
||||
DeviceData="{Binding TMPressure}" />
|
||||
DeviceData="{Binding ForelinePressure}" />
|
||||
<deviceControl:AITPressureMeter
|
||||
Canvas.Left="105"
|
||||
Canvas.Top="377"
|
||||
|
@ -2154,7 +2144,7 @@
|
|||
Canvas.Top="376"
|
||||
Width="90"
|
||||
Height="30"
|
||||
DeviceData="{Binding ForelinePressure}" />
|
||||
DeviceData="{Binding TMPressure}" />
|
||||
|
||||
<controlUI:AITPumpSIC
|
||||
Canvas.Left="344"
|
||||
|
@ -3722,7 +3712,10 @@
|
|||
|
||||
</Grid>
|
||||
|
||||
<Grid Width="420" Margin="0,50" HorizontalAlignment="Left">
|
||||
<Grid
|
||||
Width="420"
|
||||
Margin="0,50"
|
||||
HorizontalAlignment="Left">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="*" />
|
||||
|
@ -3784,8 +3777,7 @@
|
|||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Home"
|
||||
IsEnabled="{Binding IsEFEMEnableManualOperation}"
|
||||
>
|
||||
IsEnabled="{Binding IsEFEMEnableManualOperation}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="EFEMHomeRoutine">
|
||||
|
@ -3809,8 +3801,7 @@
|
|||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Abort"
|
||||
IsEnabled="{Binding IsEFEMEnableManualOperation}"
|
||||
>
|
||||
IsEnabled="{Binding IsEFEMEnableManualOperation}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="EFEMAbortRoutine">
|
||||
|
@ -3821,25 +3812,21 @@
|
|||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<!-- Line2 -->
|
||||
<!-- Line2 -->
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
|
||||
</Border>
|
||||
BorderThickness="1,0,1,1" />
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Grid.Column="1"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,0,1">
|
||||
|
||||
</Border>
|
||||
BorderThickness="0,0,0,1" />
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="2"
|
||||
|
@ -3853,8 +3840,7 @@
|
|||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Online"
|
||||
IsEnabled="{Binding EFEMIsOffline}"
|
||||
>
|
||||
IsEnabled="{Binding EFEMIsOffline}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetModuleOnline">
|
||||
|
@ -3878,8 +3864,7 @@
|
|||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Offline"
|
||||
IsEnabled="{Binding EFEMIsOnline}"
|
||||
>
|
||||
IsEnabled="{Binding EFEMIsOnline}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="SetModuleOffline">
|
||||
|
@ -3891,7 +3876,7 @@
|
|||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
|
|
|
@ -198,7 +198,7 @@ namespace SicUI.Models.PMs
|
|||
|
||||
public string strTCPyroMode
|
||||
{
|
||||
get { return TCPyroMode == 0 ? "TC" : "Pyro"; }
|
||||
get { return TCPyroMode == 0 ? "Power" : "Pyro"; }
|
||||
}
|
||||
[Subscription("TC1.TCPyroModeSetPoint")]
|
||||
public float TCPyroMode { get; set; }
|
||||
|
@ -221,7 +221,7 @@ namespace SicUI.Models.PMs
|
|||
[Subscription("TC1.L3TempLowLimitSetPoint")]
|
||||
public float L3TempLowLimit { get; set; }
|
||||
|
||||
private List<string> _HeaterModeGroup = new List<string>() { "Power", "TC", "Pyro" };
|
||||
private List<string> _HeaterModeGroup = new List<string>() { "Power", "Pyro" };
|
||||
public List<string> HeaterModeGroup
|
||||
{
|
||||
get { return _HeaterModeGroup; }
|
||||
|
@ -234,9 +234,8 @@ namespace SicUI.Models.PMs
|
|||
{
|
||||
switch (HeaterMode)
|
||||
{
|
||||
case 0: return "Power";
|
||||
case 1: return "TC";
|
||||
case 2: return "Pyro";
|
||||
case 0: return "Power";
|
||||
case 1: return "Pyro";
|
||||
}
|
||||
return "Power";
|
||||
|
||||
|
@ -409,7 +408,7 @@ namespace SicUI.Models.PMs
|
|||
|
||||
public string strTCPyroMode2
|
||||
{
|
||||
get { return TCPyroMode2 == 0 ? "TC" : "Pyro"; }
|
||||
get { return TCPyroMode2 == 0 ? "Power" : "Pyro"; }
|
||||
}
|
||||
[Subscription("TC2.TCPyroModeSetPoint")]
|
||||
public float TCPyroMode2 { get; set; }
|
||||
|
@ -445,9 +444,8 @@ namespace SicUI.Models.PMs
|
|||
{
|
||||
switch (HeaterMode2)
|
||||
{
|
||||
case 0: return "Power";
|
||||
case 1: return "TC";
|
||||
case 2: return "Pyro";
|
||||
case 0: return "Power";
|
||||
case 1: return "Pyro";
|
||||
}
|
||||
return "Power";
|
||||
|
||||
|
@ -618,9 +616,8 @@ namespace SicUI.Models.PMs
|
|||
float ControlMode = 0;
|
||||
switch (SelectedHeaterMode)
|
||||
{
|
||||
case "Power": ControlMode = 0; break;
|
||||
case "TC": ControlMode = 1; break;
|
||||
case "Pyro": ControlMode = 2; break;
|
||||
case "Power": ControlMode = 0; break;
|
||||
case "Pyro": ControlMode = 1; break;
|
||||
}
|
||||
InvokeClient.Instance.Service.DoOperation($"{SystemName}.{TCname}.SetHeaterMode", ControlMode);
|
||||
}
|
||||
|
@ -630,9 +627,8 @@ namespace SicUI.Models.PMs
|
|||
float ControlMode = 0;
|
||||
switch (SelectedHeaterMode2)
|
||||
{
|
||||
case "Power": ControlMode = 0; break;
|
||||
case "TC": ControlMode = 1; break;
|
||||
case "Pyro": ControlMode = 2; break;
|
||||
case "Power": ControlMode = 0; break;
|
||||
case "Pyro": ControlMode = 1; break;
|
||||
}
|
||||
InvokeClient.Instance.Service.DoOperation($"{SystemName}.{TCname}.SetHeaterMode2", ControlMode);
|
||||
}
|
||||
|
|
|
@ -54,6 +54,6 @@ using System.Windows;
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly: AssemblyVersion("1.1.0.1")]
|
||||
[assembly: AssemblyFileVersion("1.1.0.1")]
|
||||
[assembly: AssemblyVersion("1.1.0.3")]
|
||||
[assembly: AssemblyFileVersion("1.1.0.3")]
|
||||
|
||||
|
|
Loading…
Reference in New Issue