DeviceManager.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. using Aitex.Core.Common;
  2. using Aitex.Core.RT.Device;
  3. using MECF.Framework.Common.Beckhoff.IOAxis;
  4. using MECF.Framework.Common.Device.Galil;
  5. using MECF.Framework.Common.Device.LinMot;
  6. using MECF.Framework.Common.Equipment;
  7. using MECF.Framework.Common.ToolLayout;
  8. using MECF.Framework.Common.TwinCat;
  9. using MECF.Framework.RT.Core.Equipments;
  10. using PunkHPX8_RT.Devices;
  11. using PunkHPX8_RT.Devices.AXIS;
  12. using PunkHPX8_RT.Devices.EFEM;
  13. using PunkHPX8_RT.Devices.Facilities;
  14. using PunkHPX8_RT.Devices.LinMot;
  15. using PunkHPX8_RT.Devices.PlatingCell;
  16. using PunkHPX8_RT.Devices.PowerSupplier;
  17. using PunkHPX8_RT.Devices.Reservoir;
  18. using PunkHPX8_RT.Devices.Resistivity;
  19. using PunkHPX8_RT.Devices.Safety;
  20. using PunkHPX8_RT.Devices.SignalLight;
  21. using PunkHPX8_RT.Devices.SRD;
  22. using PunkHPX8_RT.Devices.Temperature;
  23. using PunkHPX8_RT.Devices.VpwCell;
  24. using PunkHPX8_RT.Devices.VpwMain;
  25. using SecsGem.Core.ItemModel;
  26. using System;
  27. using System.Collections.Generic;
  28. using System.IO;
  29. using System.Reflection;
  30. using System.Threading;
  31. using System.Windows.Media.Imaging;
  32. namespace PunkHPX8_RT.Instances
  33. {
  34. public class DeviceEntity : DeviceEntityT<DeviceManager>
  35. {
  36. public DeviceEntity()
  37. {
  38. }
  39. }
  40. public class DeviceManager : DeviceManagerBase
  41. {
  42. #region 常量
  43. #endregion
  44. /// <summary>
  45. /// 初始化
  46. /// </summary>
  47. /// <returns></returns>
  48. public override bool Initialize()
  49. {
  50. TotalSRDDevice totalSRDDevice = new TotalSRDDevice();
  51. AddCustomDevice(totalSRDDevice);
  52. if (ModuleHelper.IsInstalled(ModuleName.SRD1))
  53. {
  54. InitialSRD(ModuleName.SRD1);
  55. }
  56. if(ModuleHelper.IsInstalled(ModuleName.SRD2))
  57. {
  58. InitialSRD(ModuleName.SRD2);
  59. }
  60. SRDDeviceTimer srdDeviceTimer = new SRDDeviceTimer();
  61. AddCustomDevice(srdDeviceTimer);
  62. InitLinMotAxis();
  63. InitResisitivity();
  64. InitializeTemperature();
  65. InitializePowerSuppliers();
  66. InitializeVpw();
  67. InitializeReservoir();
  68. InitializePlatingCells();
  69. SystemFacilities systemFacilities = new SystemFacilities();
  70. AddCustomModuleDevice(systemFacilities);
  71. SafetyDevice safetyDevice = new SafetyDevice();
  72. AddCustomDevice(safetyDevice);
  73. TotalReservoirDevice totalReservoirDevice = new TotalReservoirDevice();
  74. AddCustomDevice(totalReservoirDevice);
  75. AddCustomModuleDevice(new SunWaySignalTower("System", "SignalTower"));
  76. return true;
  77. }
  78. /// <summary>
  79. /// 初始化SRD
  80. /// </summary>
  81. /// <param name="moduleName"></param>
  82. private void InitialSRD(ModuleName moduleName)
  83. {
  84. BeckhoffAxis rotationBeckhoffAxis = BeckhoffAxisManager.Instance.GetAxis($"{moduleName.ToString()}.Rotation");
  85. if (rotationBeckhoffAxis != null)
  86. {
  87. JetAxisBase rotationAxis = AxisManager.Instance.GetAxisInstance(rotationBeckhoffAxis.MotorType, moduleName.ToString(), "Rotation");
  88. AddCustomModuleDevice(rotationAxis);
  89. rotationAxis.InterLock = new SrdRotationAxisInterLock(rotationAxis);
  90. AxisManager.Instance.AddModuleAxis(moduleName.ToString(), rotationAxis);
  91. }
  92. SrdCommonDevice srdCommon = new SrdCommonDevice(moduleName.ToString());
  93. AddCustomModuleDevice(srdCommon);
  94. }
  95. /// <summary>
  96. /// 初始化VPW
  97. /// </summary>
  98. private void InitializeVpw()
  99. {
  100. foreach (string item in VpwMainItemManager.Instance.InstalledModules)
  101. {
  102. VpwMainDevice vpwMainDevice = new VpwMainDevice(item);
  103. AddCustomDevice(vpwMainDevice);
  104. }
  105. foreach(string item in VpwCellItemManager.Instance.InstalledModules)
  106. {
  107. BeckhoffAxis rotationBeckhoffAxis = BeckhoffAxisManager.Instance.GetAxis($"{item}.Rotation");
  108. if (rotationBeckhoffAxis != null)
  109. {
  110. JetAxisBase rotationAxis = AxisManager.Instance.GetAxisInstance(rotationBeckhoffAxis.MotorType, item.ToString(), "Rotation");
  111. AddCustomModuleDevice(rotationAxis);
  112. rotationAxis.InterLock = new VpwRotationAxisInterLock(rotationAxis);
  113. AxisManager.Instance.AddModuleAxis(item.ToString(), rotationAxis);
  114. }
  115. VpwCellDevice vpwCellDevice= new VpwCellDevice(item);
  116. AddCustomDevice(vpwCellDevice);
  117. }
  118. VpwDeviceTimer vpwDeviceTimer = new VpwDeviceTimer();
  119. AddCustomDevice(vpwDeviceTimer);
  120. }
  121. /// <summary>
  122. /// 初始化PlatingCell
  123. /// </summary>
  124. private void InitializePlatingCells()
  125. {
  126. foreach (string item in PlatingCellItemManager.Instance.InstalledModules)
  127. {
  128. PlatingCellItem platingCellItem = PlatingCellItemManager.Instance.GetPlatingCellItem(item);
  129. if (platingCellItem.SubType == "DM")
  130. {
  131. DMPlatingCellDevice platingCellDevice = new DMPlatingCellDevice(item);
  132. AddCustomDevice(platingCellDevice);
  133. }
  134. else if(platingCellItem.SubType == "HS")
  135. {
  136. HSPlatingCellDevice platingCellDevice = new HSPlatingCellDevice(item);
  137. AddCustomDevice(platingCellDevice);
  138. }
  139. else
  140. {
  141. DIPlatingCellDevice platingCellDevice = new DIPlatingCellDevice(item);
  142. AddCustomDevice(platingCellDevice);
  143. }
  144. }
  145. }
  146. /// <summary>
  147. /// 初始化Reservoir
  148. /// </summary>
  149. private void InitializeReservoir()
  150. {
  151. foreach (string item in ReservoirItemManager.Instance.InstalledModules)
  152. {
  153. ReservoirItem reservoirItem = ReservoirItemManager.Instance.GetReservoirItem(item);
  154. if (reservoirItem.SubType == "DM")
  155. {
  156. DMReservoirDevice reservoirDevice = new DMReservoirDevice(item);
  157. AddCustomDevice(reservoirDevice);
  158. }
  159. else if(reservoirItem.SubType == "HS")
  160. {
  161. HSReservoirDevice reservoirDevice = new HSReservoirDevice(item);
  162. AddCustomDevice(reservoirDevice);
  163. }
  164. else
  165. {
  166. DIReservoirDevice reservoirDevice = new DIReservoirDevice(item);
  167. AddCustomDevice(reservoirDevice);
  168. }
  169. }
  170. }
  171. /// <summary>
  172. /// 初始化LinMotAxis
  173. /// </summary>
  174. private void InitLinMotAxis()
  175. {
  176. foreach(string item in LinmotItemManager.Instance.InstalledModules)
  177. {
  178. LinmotItem linmotItem=LinmotItemManager.Instance.GetLinmotItem(item);
  179. for(int i = 0;i< linmotItem.Count; i++)
  180. {
  181. LinMotAxis linMotAxis = new LinMotAxis($"{item}-{i + 1}");
  182. linMotAxis.LastSwitchOff = linmotItem.ResetSwitchOff == 1;
  183. AddCustomDevice(linMotAxis);
  184. }
  185. }
  186. LinmotDeviceTimer linmotDeviceTimer = new LinmotDeviceTimer();
  187. AddCustomDevice(linmotDeviceTimer);
  188. }
  189. /// <summary>
  190. /// 初始化水阻计
  191. /// </summary>
  192. private void InitResisitivity()
  193. {
  194. foreach(string item in ResistivityProbeItemManager.Instance.InstalledModules)
  195. {
  196. ResistivityProbeItem resistivityItem = ResistivityProbeItemManager.Instance.GetResistivityProbeItem(item);
  197. for(int i=0;i<resistivityItem.Count;i++)
  198. {
  199. ResistivityController resistivityController = new ResistivityController($"{item}-{i + 1}");
  200. AddCustomDevice(resistivityController);
  201. }
  202. }
  203. }
  204. /// <summary>
  205. /// 初始化温度计
  206. /// </summary>
  207. private void InitializeTemperature()
  208. {
  209. foreach (string item in TemperatureItemManager.Instance.InstalledModules)
  210. {
  211. TemperatureItem temperatureItem = TemperatureItemManager.Instance.GetTemperatureItem(item);
  212. for (int i = 0; i < temperatureItem.Count; i++)
  213. {
  214. TemperatureController tempController = new TemperatureController($"{item}-{i + 1}");
  215. AddCustomDevice(tempController);
  216. }
  217. }
  218. }
  219. /// <summary>
  220. /// 初始化PowerSupplier
  221. /// </summary>
  222. private void InitializePowerSuppliers()
  223. {
  224. foreach(string item in PowerSupplierItemManager.Instance.InstalledModules)
  225. {
  226. PowerSupplierItem powerSupplierItem=PowerSupplierItemManager.Instance.GetPowerSupplierItem(item);
  227. for (int i = 0; i < powerSupplierItem.Count; i++)
  228. {
  229. CellPowerSupplier cellPowerSupplier = new CellPowerSupplier($"{item}-{i + 1}");
  230. AddCustomDevice(cellPowerSupplier);
  231. }
  232. }
  233. foreach(string item in CmmPowerItemManager.Instance.InstalledModules)
  234. {
  235. CmmPowerItem powerSupplierItem = CmmPowerItemManager.Instance.GetCmmPowerSupplierItem(item);
  236. for (int i = 0; i < powerSupplierItem.Count; i++)
  237. {
  238. CellPowerSupplier cellPowerSupplier = new CellPowerSupplier($"{item}-{i + 1}");
  239. AddCustomDevice(cellPowerSupplier);
  240. }
  241. }
  242. }
  243. private bool Invoke(string arg1, object[] args)
  244. {
  245. string name = (string)args[0];
  246. string func = (string)args[1];
  247. object[] param = new object[args.Length - 2];
  248. for (int i = 2; i < args.Length; i++)
  249. param[i - 2] = args[i].ToString();
  250. DEVICE.Do(string.Format("{0}.{1}", name, func), 0, true, param);
  251. return true;
  252. }
  253. }
  254. }