using Aitex.Core.Common; using Aitex.Core.RT.Device; using MECF.Framework.Common.Beckhoff.IOAxis; using MECF.Framework.Common.Device.Galil; using MECF.Framework.Common.Device.LinMot; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.ToolLayout; using MECF.Framework.Common.TwinCat; using MECF.Framework.RT.Core.Equipments; using PunkHPX8_Core; using PunkHPX8_RT.Devices; using PunkHPX8_RT.Devices.AXIS; using PunkHPX8_RT.Devices.EFEM; using PunkHPX8_RT.Devices.Facilities; using PunkHPX8_RT.Devices.LinMot; using PunkHPX8_RT.Devices.PlatingCell; using PunkHPX8_RT.Devices.PowerSupplier; using PunkHPX8_RT.Devices.Reservoir; using PunkHPX8_RT.Devices.Resistivity; using PunkHPX8_RT.Devices.Safety; using PunkHPX8_RT.Devices.SignalLight; using PunkHPX8_RT.Devices.SRD; using PunkHPX8_RT.Devices.Temperature; using PunkHPX8_RT.Devices.VpwCell; using PunkHPX8_RT.Devices.VpwMain; using SecsGem.Core.ItemModel; using System; using System.Collections.Generic; using System.IO; using System.Reflection; using System.Threading; using System.Windows.Media.Imaging; namespace PunkHPX8_RT.Instances { public class DeviceEntity : DeviceEntityT { public DeviceEntity() { } } public class DeviceManager : DeviceManagerBase { #region 常量 #endregion /// /// 初始化 /// /// public override bool Initialize() { TotalSRDDevice totalSRDDevice = new TotalSRDDevice(); AddCustomDevice(totalSRDDevice); if (ModuleHelper.IsInstalled(ModuleName.SRD1)) { InitialSRD(ModuleName.SRD1); } if(ModuleHelper.IsInstalled(ModuleName.SRD2)) { InitialSRD(ModuleName.SRD2); } SRDDeviceTimer srdDeviceTimer = new SRDDeviceTimer(); AddCustomDevice(srdDeviceTimer); InitLinMotAxis(); InitResisitivity(); InitializeTemperature(); InitializePowerSuppliers(); InitializeVpw(); InitializeReservoir(); InitializePlatingCells(); SystemFacilities systemFacilities = new SystemFacilities(); AddCustomModuleDevice(systemFacilities); SafetyDevice safetyDevice = new SafetyDevice(); AddCustomDevice(safetyDevice); TotalReservoirDevice totalReservoirDevice = new TotalReservoirDevice(); AddCustomDevice(totalReservoirDevice); AddCustomModuleDevice(new SunWaySignalTower("System", "SignalTower")); return true; } /// /// 初始化SRD /// /// private void InitialSRD(ModuleName moduleName) { BeckhoffAxis rotationBeckhoffAxis = BeckhoffAxisManager.Instance.GetAxis($"{moduleName.ToString()}.Rotation"); if (rotationBeckhoffAxis != null) { JetAxisBase rotationAxis = AxisManager.Instance.GetAxisInstance(rotationBeckhoffAxis.MotorType, moduleName.ToString(), "Rotation"); AddCustomModuleDevice(rotationAxis); rotationAxis.InterLock = new SrdRotationAxisInterLock(rotationAxis); AxisManager.Instance.AddModuleAxis(moduleName.ToString(), rotationAxis); } SrdCommonDevice srdCommon = new SrdCommonDevice(moduleName.ToString()); AddCustomModuleDevice(srdCommon); } /// /// 初始化VPW /// private void InitializeVpw() { foreach (string item in VpwMainItemManager.Instance.InstalledModules) { VpwMainDevice vpwMainDevice = new VpwMainDevice(item); AddCustomDevice(vpwMainDevice); } foreach(string item in VpwCellItemManager.Instance.InstalledModules) { BeckhoffAxis rotationBeckhoffAxis = BeckhoffAxisManager.Instance.GetAxis($"{item}.Rotation"); if (rotationBeckhoffAxis != null) { JetAxisBase rotationAxis = AxisManager.Instance.GetAxisInstance(rotationBeckhoffAxis.MotorType, item.ToString(), "Rotation"); AddCustomModuleDevice(rotationAxis); rotationAxis.InterLock = new VpwRotationAxisInterLock(rotationAxis); AxisManager.Instance.AddModuleAxis(item.ToString(), rotationAxis); } VpwCellDevice vpwCellDevice= new VpwCellDevice(item); AddCustomDevice(vpwCellDevice); } VpwDeviceTimer vpwDeviceTimer = new VpwDeviceTimer(); AddCustomDevice(vpwDeviceTimer); } /// /// 初始化PlatingCell /// private void InitializePlatingCells() { foreach (string item in PlatingCellItemManager.Instance.InstalledModules) { PlatingCellItem platingCellItem = PlatingCellItemManager.Instance.GetPlatingCellItem(item); if (platingCellItem.SubType == ReservoirType.DegasMembrance.ToString()) { DMPlatingCellDevice platingCellDevice = new DMPlatingCellDevice(item); AddCustomDevice(platingCellDevice); } else if(platingCellItem.SubType == ReservoirType.HotStandard.ToString()) { HSPlatingCellDevice platingCellDevice = new HSPlatingCellDevice(item); AddCustomDevice(platingCellDevice); } else { DIPlatingCellDevice platingCellDevice = new DIPlatingCellDevice(item); AddCustomDevice(platingCellDevice); } } } /// /// 初始化Reservoir /// private void InitializeReservoir() { foreach (string item in ReservoirItemManager.Instance.InstalledModules) { ReservoirItem reservoirItem = ReservoirItemManager.Instance.GetReservoirItem(item); if (reservoirItem.SubType == ReservoirType.DegasMembrance.ToString()) { DMReservoirDevice reservoirDevice = new DMReservoirDevice(item); AddCustomDevice(reservoirDevice); } else if(reservoirItem.SubType == ReservoirType.HotStandard.ToString()) { HSReservoirDevice reservoirDevice = new HSReservoirDevice(item); AddCustomDevice(reservoirDevice); } else { DIReservoirDevice reservoirDevice = new DIReservoirDevice(item); AddCustomDevice(reservoirDevice); } } } /// /// 初始化LinMotAxis /// private void InitLinMotAxis() { foreach(string item in LinmotItemManager.Instance.InstalledModules) { LinmotItem linmotItem=LinmotItemManager.Instance.GetLinmotItem(item); for(int i = 0;i< linmotItem.Count; i++) { LinMotAxis linMotAxis = new LinMotAxis($"{item}-{i + 1}"); linMotAxis.LastSwitchOff = linmotItem.ResetSwitchOff == 1; AddCustomDevice(linMotAxis); } } LinmotDeviceTimer linmotDeviceTimer = new LinmotDeviceTimer(); AddCustomDevice(linmotDeviceTimer); } /// /// 初始化水阻计 /// private void InitResisitivity() { foreach(string item in ResistivityProbeItemManager.Instance.InstalledModules) { ResistivityProbeItem resistivityItem = ResistivityProbeItemManager.Instance.GetResistivityProbeItem(item); for(int i=0;i /// 初始化温度计 /// private void InitializeTemperature() { foreach (string item in TemperatureItemManager.Instance.InstalledModules) { TemperatureItem temperatureItem = TemperatureItemManager.Instance.GetTemperatureItem(item); for (int i = 0; i < temperatureItem.Count; i++) { TemperatureController tempController = new TemperatureController($"{item}-{i + 1}"); AddCustomDevice(tempController); } } } /// /// 初始化PowerSupplier /// private void InitializePowerSuppliers() { foreach(string item in PowerSupplierItemManager.Instance.InstalledModules) { PowerSupplierItem powerSupplierItem=PowerSupplierItemManager.Instance.GetPowerSupplierItem(item); for (int i = 0; i < powerSupplierItem.Count; i++) { CellPowerSupplier cellPowerSupplier = new CellPowerSupplier($"{item}-{i + 1}"); AddCustomDevice(cellPowerSupplier); } } foreach(string item in CmmPowerItemManager.Instance.InstalledModules) { CmmPowerItem powerSupplierItem = CmmPowerItemManager.Instance.GetCmmPowerSupplierItem(item); for (int i = 0; i < powerSupplierItem.Count; i++) { CellPowerSupplier cellPowerSupplier = new CellPowerSupplier($"{item}-{i + 1}"); AddCustomDevice(cellPowerSupplier); } } } private bool Invoke(string arg1, object[] args) { string name = (string)args[0]; string func = (string)args[1]; object[] param = new object[args.Length - 2]; for (int i = 2; i < args.Length; i++) param[i - 2] = args[i].ToString(); DEVICE.Do(string.Format("{0}.{1}", name, func), 0, true, param); return true; } } }