using Aitex.Core.Common.DeviceData;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.Device.Unit;
using MECF.Framework.Common.Equipment;
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.TMs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Venus_Core;
namespace Venus_RT.Devices
{
public class HongHuTM : TM
{
///
/// 针对VenusSE设计
///
#region io 信号抽象
//控制阀信号
private readonly IoValve _TMFastPumpValve;
private readonly IoValve _TMSoftPumpValve;
private readonly IoValve _VCESoftPumpValve;
private readonly IoValve _VCEFastPumpValve;
private readonly IoValve _TMFastVentValve;
private readonly IoValve _TMSoftVentValve;
private readonly IoValve _VCESoftVentValve;
private readonly IoValve _VCEFastVentValve;
//判断信号
private readonly IoSensor _VCESlitDoorOpen;
private readonly IoSensor _PMASlitDoorOpen;
private readonly IoSensor _PMBSlitDoorOpen;
private readonly IoSensor _PMCSlitDoorOpen;
private readonly IoSensor _VCESlitDoorOpenEnable;
private readonly IoSensor _PMASlitDoorOpenEnable;
private readonly IoSensor _PMBSlitDoorOpenEnable;
private readonly IoSensor _PMCSlitDoorOpenEnable;
private readonly IoSensor _TMExtendVCEEnable;
private readonly IoSensor _TMExtendPMAEnable;
private readonly IoSensor _TMExtendPMBEnable;
private readonly IoSensor _TMExtendPMCEnable;
private readonly IoSensor _TMATMSensor;
private readonly IoSensor _VCEATMSensor;
//控制门信号
private readonly IoCylinder _VCESlitDoor;
private readonly IoCylinder _PMASlitDoor;
private readonly IoCylinder _PMBSlitDoor;
private readonly IoCylinder _PMCSlitDoor;
#endregion
#region 暴露变量
//ATM VAC信号
public bool IsTMATM => _TMATMSensor.Value;
public bool IsVCEATM => _VCEATMSensor.Value;
//valve开关状态
public bool IsTMFastPumpOpen => _TMFastPumpValve.Status;
public bool IsTMSoftPumpOpen => _TMSoftPumpValve.Status;
public bool IsTMFastVentOpen => _TMFastVentValve.Status;
public bool IsTMSoftVentOpen => _TMSoftVentValve.Status;
public bool IsVCEFastPumpOpen => _VCEFastPumpValve.Status;
public bool IsVCESoftPumpOpen => _VCESoftPumpValve.Status;
public bool IsVCEFastVentOpen => _VCEFastVentValve.Status;
public bool IsVCESoftVentOpen => _VCESoftVentValve.Status;
//SlitDoor
public bool VCESlitDoorClosed => _VCESlitDoor.State == CylinderState.Close;
public bool PMASlitDoorClosed => _PMASlitDoor.State == CylinderState.Close;
public bool PMBSlitDoorClosed => _PMBSlitDoor.State == CylinderState.Close;
public bool PMCSlitDoorClosed => _PMCSlitDoor.State == CylinderState.Close;
public bool VCESlitDoorOpenEnable => _VCESlitDoorOpenEnable.Value;
public bool PMASlitDoorOpenEnable => _PMASlitDoorOpenEnable.Value;
public bool PMBSlitDoorOpenEnable => _PMBSlitDoorOpenEnable.Value;
public bool PMCSlitDoorOpenEnable => _PMCSlitDoorOpenEnable.Value;
//Robot动作
public bool TMExtendVCEEnable => _TMExtendVCEEnable.Value;
public bool TMExtendPMAEnable => _TMExtendPMAEnable.Value;
public bool TMExtendPMBEnable => _TMExtendPMBEnable.Value;
public bool TMExtendPMCEnable => _TMExtendPMCEnable.Value;
#endregion
public HongHuTM(string module) : base(module)
{
_TMFastPumpValve = DEVICE.GetDevice($"TM.{VenusDevice.TMFastPumpValve}");
_TMSoftPumpValve = DEVICE.GetDevice($"TM.{VenusDevice.TMSoftPumpValve}");
_VCESoftPumpValve = DEVICE.GetDevice($"TM.{VenusDevice.VCESoftPumpValve}");
_VCEFastPumpValve = DEVICE.GetDevice($"TM.{VenusDevice.VCEFastPumpValve}");
_TMFastVentValve = DEVICE.GetDevice($"TM.{VenusDevice.TMFastPumpValve}");
_TMSoftVentValve = DEVICE.GetDevice($"TM.{VenusDevice.TMSoftVentValve}");
_VCESoftVentValve = DEVICE.GetDevice($"TM.{VenusDevice.VCESoftVentValve}");
_VCEFastVentValve = DEVICE.GetDevice($"TM.{VenusDevice.VCEFastVentValve}");
_VCESlitDoorOpenEnable = DEVICE.GetDevice($"TM.{VenusDevice.VCESlitDoorOpenEnable}");
_PMASlitDoorOpenEnable = DEVICE.GetDevice($"TM.{VenusDevice.PMASlitDoorOpenEnable}");
_PMBSlitDoorOpenEnable = DEVICE.GetDevice($"TM.{VenusDevice.PMBSlitDoorOpenEnable}");
_PMCSlitDoorOpenEnable = DEVICE.GetDevice($"TM.{VenusDevice.PMCSlitDoorOpenEnable}");
_TMExtendVCEEnable = DEVICE.GetDevice($"TM.{VenusDevice.TMExtendVCEEnable}");
_TMExtendPMAEnable = DEVICE.GetDevice($"TM.{VenusDevice.TMExtendPMAEnable}");
_TMExtendPMBEnable = DEVICE.GetDevice($"TM.{VenusDevice.TMExtendPMBEnable}");
_TMExtendPMCEnable = DEVICE.GetDevice($"TM.{VenusDevice.TMExtendPMCEnable}");
_TMATMSensor = DEVICE.GetDevice($"TM.{VenusDevice.TMATMSensor}");
_VCEATMSensor = DEVICE.GetDevice($"TM.{VenusDevice.VCEATMSensor}");
_VCESlitDoor = DEVICE.GetDevice($"TM.{VenusDevice.VCESlitDoor}");
_PMASlitDoor = DEVICE.GetDevice($"TM.{VenusDevice.PMASlitDoor}");
_PMBSlitDoor = DEVICE.GetDevice($"TM.{VenusDevice.PMBSlitDoor}");
_PMCSlitDoor = DEVICE.GetDevice($"TM.{VenusDevice.PMCSlitDoor}");
}
#region IO控制方法
//slitdoor
public void TurnSlitDoor(ModuleName mod, bool bOn)
{
switch(mod)
{
case ModuleName.VCE1:
_VCESlitDoor.SetCylinder(bOn, out _);
break;
case ModuleName.PMA:
_PMASlitDoor.SetCylinder(bOn, out _);
break;
case ModuleName.PMB:
_PMBSlitDoor.SetCylinder(bOn, out _);
break;
case ModuleName.PMC:
_PMCSlitDoor.SetCylinder(bOn, out _);
break;
}
}
//valve
public void TurnFastPumpValve(ModuleName mod, bool bOn)
{
switch (mod)
{
case ModuleName.TM:
_TMFastPumpValve.TurnValve(bOn, out string _);
break;
case ModuleName.VCE1:
_VCEFastPumpValve.TurnValve(bOn, out string _);
break;
}
}
public void TurnSoftPumpValve(ModuleName mod, bool bOn)
{
switch (mod)
{
case ModuleName.TM:
_TMSoftPumpValve.TurnValve(bOn, out string _);
break;
case ModuleName.VCE1:
_VCESoftPumpValve.TurnValve(bOn, out string _);
break;
}
}
public void TurnFastVentValve(ModuleName mod, bool bOn)
{
switch (mod)
{
case ModuleName.TM:
_TMFastVentValve.TurnValve(bOn, out string _);
break;
case ModuleName.VCE1:
_VCEFastVentValve.TurnValve(bOn, out string _);
break;
}
}
public void TurnSoftVentValve(ModuleName mod, bool bOn)
{
switch (mod)
{
case ModuleName.TM:
_TMSoftVentValve.TurnValve(bOn, out string _);
break;
case ModuleName.VCE1:
_VCESoftVentValve.TurnValve(bOn, out string _);
break;
}
}
#endregion
}
}