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_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.PowerSupplier; 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; using static Mono.Security.X509.X520; namespace PunkHPX8_RT.Instances { public class DeviceEntity : DeviceEntityT { public DeviceEntity() { } } public class DeviceManager : DeviceManagerBase { #region 常量 private const string STRATUS = "Stratus"; #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(); SystemFacilities systemFacilities = new SystemFacilities(); AddCustomModuleDevice(systemFacilities); SafetyDevice safetyDevice = new SafetyDevice(); AddCustomDevice(safetyDevice); AddCustomModuleDevice(new SunWaySignalTower("System", "SignalTower")); return true; } /// /// 初始化SRD /// /// private void InitialSRD(ModuleName moduleName) { GalilAxisConfig rotationBeckhoffAxis = GalilControllerCfgManager.Instance.GetGalilAxisConfig(moduleName.ToString(), "Rotation"); if (rotationBeckhoffAxis != null) { JetAxisBase rotationAxis = AxisManager.Instance.GetAxisInstance(rotationBeckhoffAxis.Type, 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) { VpwCellDevice vpwCellDevice= new VpwCellDevice(item); AddCustomDevice(vpwCellDevice); 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); } } VpwCellDeviceTimer vpwDeviceTimer = new VpwCellDeviceTimer(); AddCustomDevice(vpwDeviceTimer); } /// /// 初始化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; } } }