DeviceManager.cs 10 KB

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