using Aitex.Core.Common.DeviceData;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Unit;
using Aitex.Core.RT.Event;
using Aitex.Core.Utilities;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.Event;
using MECF.Framework.Common.Schedulers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Aitex.Core.RT.Log;
using Aitex.Core.RT.SCCore;
using MECF.Framework.Common.PLC;
using Aitex.Core.Util;
using SicPM.Devices;
using Aitex.Core.RT.IOCore;
using static SicPM.PmDevices.DicMode;
using Aitex.Sorter.Common;
namespace SicPM
{
public enum IoGroupName
{
A, B, C, D, E, F, G, H, I, J, K, Final1, Final2, EPV2, GasIn1, GasIn2, VentPump, ArSupply, GasSupply, All,
V27, V888990, V76, V75, V70, V69, V25, V94, GroupIWithoutV94, V92V93V95, V96, V31, V32, V35V36, V65, V68
};
public enum MfcGroupName
{
Final1, Final2, M1to16, M2toM40, M2toM40NoFinal1MFC, M27toM38, M2toM26, M27toM40, M19toM33, M32toM38, M36, M28293140,
M19toM26, All, M32M35M37, M38, AllWithoutM28M29M31M40
};
public partial class PMModule
{
///
/// 当PM腔压力超过设定的ATM参考值时,在DO-240上输出报警。
///
private DOAccessor _doChamPressureAboveATMSW;
#region InterLock
[Tag("PMInterLock")]
public Devices.IoInterLock _pmInterLock { get; set; }
#endregion
#region Servo & SignalTower && TV
[Tag("SignalTower")]
public Devices.IoSignalTower _signalTower { get; set; }
[Tag("PMServo")]
public Devices.SicServo _sicServo { get; set; }
[Tag("PMAETemp")]
public Devices.SicAETemp _sicAETemp { get; set; }
[Tag("PMHeatEnable")]
public Devices.IoHeat _IoHeat { get; set; }
[Tag("TV")]
public IoThrottleValve2 _ioThrottleValve { get; set; }
#endregion
#region Valve
[Tag("V25")]
public IoValve V25 { get; set; }
[Tag("V27")]
public IoValve V27 { get; set; }
[Tag("V31")]
public IoValve V31 { get; set; }
[Tag("V32")]
public IoValve V32 { get; set; }
[Tag("V33")]
public IoValve V33 { get; set; }
[Tag("V33s")]
public IoValve V33s { get; set; }
[Tag("V35")]
public IoValve V35 { get; set; }
[Tag("V36")]
public IoValve V36 { get; set; }
[Tag("V37")]
public IoValve V37 { get; set; }
[Tag("V37s")]
public IoValve V37s { get; set; }
[Tag("V39")]
public IoValve V39 { get; set; }
[Tag("V39s")]
public IoValve V39s { get; set; }
[Tag("V40")]
public IoValve V40 { get; set; }
[Tag("V40s")]
public IoValve V40s { get; set; }
[Tag("V41")]
public IoValve V41 { get; set; }
[Tag("V42")]
public IoValve V42 { get; set; }
[Tag("V43")]
public IoValve V43 { get; set; }
[Tag("V43s")]
public IoValve V43s { get; set; }
[Tag("V45")]
public IoValve V45 { get; set; }
[Tag("V46")]
public IoValve V46 { get; set; }
[Tag("V46s")]
public IoValve V46s { get; set; }
[Tag("V48")]
public IoValve V48 { get; set; }
[Tag("V48s")]
public IoValve V48s { get; set; }
[Tag("V49")]
public IoValve V49 { get; set; }
[Tag("V50")]
public IoValve V50 { get; set; }
[Tag("V50s")]
public IoValve V50s { get; set; }
[Tag("V51")]
public IoValve V51 { get; set; }
[Tag("V51s")]
public IoValve V51s { get; set; }
[Tag("V52")]
public IoValve V52 { get; set; }
[Tag("V52s")]
public IoValve V52s { get; set; }
[Tag("V53")]
public IoValve V53 { get; set; }
[Tag("V53s")]
public IoValve V53s { get; set; }
[Tag("V54")]
public IoValve V54 { get; set; }
[Tag("V54s")]
public IoValve V54s { get; set; }
[Tag("V55")]
public IoValve V55 { get; set; }
[Tag("V56")]
public IoValve V56 { get; set; }
[Tag("V58")]
public IoValve V58 { get; set; }
[Tag("V58s")]
public IoValve V58s { get; set; }
[Tag("V59")]
public IoValve V59 { get; set; }
[Tag("V60")]
public IoValve V60 { get; set; }
[Tag("V61")]
public IoValve V61 { get; set; }
[Tag("V62")]
public IoValve V62 { get; set; }
[Tag("V63")]
public IoValve V63 { get; set; }
[Tag("V64")]
public IoValve V64 { get; set; }
[Tag("V65")]
public IoValve V65 { get; set; }
[Tag("V68")]
public IoValve V68 { get; set; }
[Tag("V69")]
public IoValve V69 { get; set; }
[Tag("V70")]
public IoValve V70 { get; set; }
[Tag("V72")]
public IoValve V72 { get; set; }
[Tag("V73")]
public IoValve V73 { get; set; }
[Tag("V74")]
public IoValve V74 { get; set; }
[Tag("V75")]
public IoValve V75 { get; set; }
[Tag("V76")]
public IoValve V76 { get; set; }
[Tag("V97")]
public IoValve V97 { get; set; }
[Tag("EPV2")]
public IoValve EPV2 { get; set; }
#endregion
#region MFC
[Tag("Mfc1")]
public IoMFC Mfc1 { get; set; }
[Tag("Mfc2")]
public IoMFC Mfc2 { get; set; }
[Tag("Mfc3")]
public IoMFC Mfc3 { get; set; }
[Tag("Mfc4")]
public IoMFC Mfc4 { get; set; }
[Tag("Mfc5")]
public IoMFC Mfc5 { get; set; }
[Tag("Mfc6")]
public IoMFC Mfc6 { get; set; }
[Tag("Mfc7")]
public IoMFC Mfc7 { get; set; }
[Tag("Mfc8")]
public IoMFC Mfc8 { get; set; }
[Tag("Mfc9")]
public IoMFC Mfc9 { get; set; }
[Tag("Mfc10")]
public IoMFC Mfc10 { get; set; }
[Tag("Mfc11")]
public IoMFC Mfc11 { get; set; }
[Tag("Mfc12")]
public IoMFC Mfc12 { get; set; }
[Tag("Mfc13")]
public IoMFC Mfc13 { get; set; }
[Tag("Mfc14")]
public IoMFC Mfc14 { get; set; }
[Tag("Mfc15")]
public IoMFC Mfc15 { get; set; }
[Tag("Mfc16")]
public IoMFC Mfc16 { get; set; }
[Tag("Mfc19")]
public IoMFC Mfc19 { get; set; }
[Tag("Mfc20")]
public IoMFC Mfc20 { get; set; }
[Tag("Mfc22")]
public IoMFC Mfc22 { get; set; }
[Tag("Mfc23")]
public IoMFC Mfc23 { get; set; }
[Tag("Mfc25")]
public IoMFC Mfc25 { get; set; }
[Tag("Mfc26")]
public IoMFC Mfc26 { get; set; }
[Tag("Mfc27")]
public IoMFC Mfc27 { get; set; }
[Tag("Mfc28")]
public IoMFC Mfc28 { get; set; }
[Tag("Mfc29")]
public IoMFC Mfc29 { get; set; }
[Tag("Mfc40")]
public IoMFC Mfc40 { get; set; }
[Tag("Mfc31")]
public IoMFC Mfc31 { get; set; }
[Tag("Mfc32")]
public IoMFC Mfc32 { get; set; }
[Tag("Mfc33")]
public IoMFC Mfc33 { get; set; }
[Tag("Mfc35")]
public IoMFC Mfc35 { get; set; }
[Tag("Mfc36")]
public IoMFC Mfc36 { get; set; }
[Tag("Mfc37")]
public IoMFC Mfc37 { get; set; }
[Tag("Mfc38")]
public IoMFC Mfc38 { get; set; }
#endregion
#region Pressure
[Tag("Pressure1")]
public IoPressure Pressure1 { get; set; }
[Tag("Pressure2")]
public IoPressure Pressure2 { get; set; }
[Tag("Pressure3")]
public IoPressure Pressure3 { get; set; }
[Tag("Pressure4")]
public IoPressure Pressure4 { get; set; }
[Tag("Pressure5")]
public IoPressure Pressure5 { get; set; }
[Tag("Pressure6")]
public IoPressure Pressure6 { get; set; }
[Tag("Pressure7")]
public IoPressure Pressure7 { get; set; }
[Tag("PT1")]
public IoPressure PT1 { get; set; }
[Tag("PT2")]
public IoPressure PT2 { get; set; }
#endregion
#region Sensor
[Tag("SensorChamPressAboveATMSW")]
public Devices.IoSensor SensorChamPressAboveATMSW { get; set; }
[Tag("SensorDORPressATMSW")]
public Devices.IoSensor SensorDORPressATMSW { get; set; }
[Tag("SensorPMATMSW")]
public Devices.IoSensor SensorPMATMSW { get; set; }
[Tag("SensorSusceptorAtSafeSpeed")]
public Devices.IoSensor SensorSusceptorAtSafeSpeed { get; set; }
#endregion
#region ChamberMoveBody
[Tag("ChamberMoveBody")]
public IoChamberMoveBody ChamberMoveBody { get; set; }
#endregion
#region SHLidSwing
[Tag("SHLidSwing")]
public IoLidSwing SHLidSwing { get; set; }
[Tag("MiddleLidSwing")]
public IoLidSwing MiddleLidSwing { get; set; }
#endregion
#region ConfinementRing
[Tag("ConfinementRing")]
public IoConfinementRing ConfinementRing { get; set; }
#endregion
#region Pump
[Tag("Pump")]
public Devices.IoPump Pump { get; set; }
#endregion
#region Sevro
[Subscription("PM1.NAISServo.AlarmStatus")]
public bool IsAlarmStatus { get; set; }
[Subscription("PM1.NAISServo.PositionComplete")]
public bool IsPositionComplete { get; set; }
[Subscription("PM1.NAISServo.MotorBusy")]
public bool IsMotorBusy { get; set; }
#endregion
#region Heater
[Tag("TC1")]
public IoTC TC1 { get; set; }
[Tag("TC2")]
public IoTC TC2 { get; set; }
[Tag("PSU1")]
public IoPSU PSU1 { get; set; }
[Tag("PSU2")]
public IoPSU PSU2 { get; set; }
[Tag("PSU3")]
public IoPSU PSU3 { get; set; }
[Tag("SCR1")]
public IoSCR SCR1 { get; set; }
[Tag("SCR2")]
public IoSCR SCR2 { get; set; }
[Tag("SCR3")]
public IoSCR SCR3 { get; set; }
#endregion
Func _hasTagAttribute;
Func