1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using Aitex.Core.Common.DeviceData;
- using Aitex.Core.RT.Device;
- using Aitex.Core.RT.Device.Unit;
- using Aitex.Core.RT.Event;
- using Aitex.Core.Util;
- using Aitex.Core.Utilities;
- using MECF.Framework.Common.Event;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using MECF.Framework.Common.SubstrateTrackings;
- using Aitex.Core.Common;
- using FurnaceRT.Equipments.Systems;
- using Aitex.Core.RT.IOCore;
- using MECF.Framework.Common.Equipment;
- using MECF.Framework.RT.Core.IoProviders;
- using MECF.Framework.Common.Device.Bases;
- using FurnaceRT.Equipments.Boats;
- using IoHeater = FurnaceRT.Devices.IoHeater;
- using IoPressureMeter = FurnaceRT.Devices.IoPressureMeter;
- using FurnaceRT.Devices;
- using Aitex.Core.RT.Log;
- using FurnaceRT.Equipments.PMs.Devices;
- namespace FurnaceRT.Equipments.PMs
- {
- public partial class PMModule
- {
- enum N2PurgeMode
- {
- Auto,
- Manual_N2Purge,
- Manual_ATM,
- Manual_Maintenance,
- Auto_Check,
- }
- private Dictionary<string, Tuple<R_TRIG, List<Tuple<IoValve, bool>>>> _n2PurgeSequenceAction;
- private Dictionary<string, Func<bool>> _n2PurgeSequenceStatus;
- private N2PurgeMode _N2PurgeMode = N2PurgeMode.Auto;
- private bool GetN2PurgeAIRTo20PPMStatus()
- {
- return ValveLABacksideDoorCylinderControl.DOOpen.Value;
- }
- private bool GetN2PurgeUnder20PPMStatus()
- {
- return ConcentrationO2.Value < 20;
- }
- private bool GetN2PurgeAIRStatus()
- {
- return ValveLABacksideDoorCylinderControl.DOClose.Value && !AlarmSignalFilterBox1DoorSwitch.Value;
- }
- private bool GetN2PurgeDoorOpenStatus()
- {
- return ValveLABacksideDoorCylinderControl.DOClose.Value && AlarmSignalFilterBox1DoorSwitch.Value;
- }
- private bool GetN2PurgeFoup1Status()
- {
- return GetN2PurgeAIRTo20PPMStatus() && GetN2PurgeUnder20PPMStatus() && FIMS1.IsFoupExist && FIMS1.CollisionAvoidanceUpDownStatus == DeviceStatus.Down;
- }
- private bool GetN2PurgeFoup2Status()
- {
- return GetN2PurgeAIRTo20PPMStatus() && GetN2PurgeUnder20PPMStatus() && FIMS2.IsFoupExist && FIMS2.CollisionAvoidanceUpDownStatus == DeviceStatus.Down; ;
- }
- private void MonitorN2Purge()
- {
- if (_N2PurgeMode != N2PurgeMode.Auto)
- return;
- if(_n2PurgeSequenceAction != null && _n2PurgeSequenceStatus != null)
- {
- foreach(var key in _n2PurgeSequenceAction.Keys)
- {
- var value = _n2PurgeSequenceAction[key];
- value.Item1.CLK = _n2PurgeSequenceStatus[key].Invoke();
- if(value.Item1.Q && value.Item2 != null)
- {
- LOG.Write($"N2 purge sequence trig: {key}");
- //EV.PostWarningLog("System",$"N2 purge sequence trig: {key}");
- foreach(var valve in value.Item2)
- {
- if (valve.Item1.Status != valve.Item2)
- valve.Item1.TurnValve(valve.Item2, out _);
- }
- }
- }
- }
- }
-
- }
- }
|