| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 | 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.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<DeviceManager>    {        public DeviceEntity()        {        }    }    public class DeviceManager : DeviceManagerBase    {        #region 常量        #endregion        /// <summary>        /// 初始化        /// </summary>        /// <returns></returns>        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;        }        /// <summary>        /// 初始化SRD        /// </summary>        /// <param name="moduleName"></param>        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);        }        /// <summary>        /// 初始化VPW        /// </summary>        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);        }        /// <summary>        /// 初始化PlatingCell        /// </summary>        private void InitializePlatingCells()        {            foreach (string item in PlatingCellItemManager.Instance.InstalledModules)            {                PlatingCellItem platingCellItem = PlatingCellItemManager.Instance.GetPlatingCellItem(item);                if (platingCellItem.SubType == "DM")                {                    DMPlatingCellDevice platingCellDevice = new DMPlatingCellDevice(item);                    AddCustomDevice(platingCellDevice);                }                else if(platingCellItem.SubType == "HS")                {                    HSPlatingCellDevice platingCellDevice = new HSPlatingCellDevice(item);                    AddCustomDevice(platingCellDevice);                }                else                {                    DIPlatingCellDevice platingCellDevice = new DIPlatingCellDevice(item);                    AddCustomDevice(platingCellDevice);                }            }        }        /// <summary>        /// 初始化Reservoir        /// </summary>        private void InitializeReservoir()        {            foreach (string item in ReservoirItemManager.Instance.InstalledModules)            {                ReservoirItem reservoirItem = ReservoirItemManager.Instance.GetReservoirItem(item);                if (reservoirItem.SubType == "DM")                {                    DMReservoirDevice reservoirDevice = new DMReservoirDevice(item);                    AddCustomDevice(reservoirDevice);                }                else if(reservoirItem.SubType == "HS")                {                    HSReservoirDevice reservoirDevice = new HSReservoirDevice(item);                    AddCustomDevice(reservoirDevice);                }                else                {                    DIReservoirDevice reservoirDevice = new DIReservoirDevice(item);                    AddCustomDevice(reservoirDevice);                }            }        }        /// <summary>        /// 初始化LinMotAxis        /// </summary>        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);        }        /// <summary>        /// 初始化水阻计        /// </summary>        private void InitResisitivity()        {            foreach(string item in ResistivityProbeItemManager.Instance.InstalledModules)            {                ResistivityProbeItem resistivityItem = ResistivityProbeItemManager.Instance.GetResistivityProbeItem(item);                for(int i=0;i<resistivityItem.Count;i++)                {                    ResistivityController resistivityController = new ResistivityController($"{item}-{i + 1}");                    AddCustomDevice(resistivityController);                }            }        }        /// <summary>        /// 初始化温度计        /// </summary>        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);                }            }        }        /// <summary>        /// 初始化PowerSupplier        /// </summary>        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;        }    }}
 |