JetPM.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Aitex.Core.Common.DeviceData;
  7. using Aitex.Core.RT.DataCenter;
  8. using Aitex.Core.RT.Device;
  9. using Aitex.Core.RT.Device.Unit;
  10. using Aitex.Core.RT.Event;
  11. using Aitex.Core.RT.OperationCenter;
  12. using Aitex.Core.RT.SCCore;
  13. using Aitex.Core.Util;
  14. using MECF.Framework.Common.Device.Bases;
  15. using MECF.Framework.Common.Equipment;
  16. using MECF.Framework.Common.Schedulers;
  17. using MECF.Framework.Common.SubstrateTrackings;
  18. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
  19. using Venus_RT.Devices.IODevices;
  20. using Venus_Core;
  21. namespace Venus_RT.Devices
  22. {
  23. enum ValveType
  24. {
  25. PNV21,
  26. PNV22,
  27. PV11,
  28. PV12,
  29. PV21,
  30. PV22,
  31. PV31,
  32. PV32,
  33. PV41,
  34. PV42,
  35. N2,
  36. Mfc1,
  37. Mfc2,
  38. Mfc3,
  39. Mfc4,
  40. Mfc5,
  41. Mfc6,
  42. Mfc7,
  43. Mfc8,
  44. PVHe1,
  45. PVHe2,
  46. GasFinal,
  47. SoftPump,
  48. FastPump,
  49. CHBPurge,
  50. CHBVent,
  51. TurboPumpPurge,
  52. Guage,
  53. LoadlockVent,
  54. LoadlockPumping
  55. }
  56. class JetPM : PM
  57. {
  58. private readonly IoLid _Lid;
  59. private readonly IoLid _LidLoadlock;
  60. private readonly IoCylinder _slitDoor;
  61. private readonly IoCylinder _LiftPin;
  62. private readonly IoCylinder _LoadLockArm;
  63. private readonly IoSensor _CDAPressure;
  64. private readonly IoValve _PNV21Valve;
  65. private readonly IoValve _PNV22Valve;
  66. private readonly IoValve _PV11Valve;
  67. private readonly IoValve _PV12Valve;
  68. private readonly IoValve _PV21Valve;
  69. private readonly IoValve _PV22Valve;
  70. private readonly IoValve _PV31Valve;
  71. private readonly IoValve _PV32Valve;
  72. private readonly IoValve _PV41Valve;
  73. private readonly IoValve _PV42Valve;
  74. private readonly IoValve _N2Valve;
  75. private readonly IoValve _Mfc1Valve;
  76. private readonly IoValve _Mfc2Valve;
  77. private readonly IoValve _Mfc3Valve;
  78. private readonly IoValve _Mfc4Valve;
  79. private readonly IoValve _Mfc5Valve;
  80. private readonly IoValve _Mfc6Valve;
  81. private readonly IoValve _Mfc7Valve;
  82. private readonly IoValve _Mfc8Valve;
  83. private readonly IoValve _PVHe1Valve;
  84. private readonly IoValve _PVHe2Valve;
  85. private readonly IoValve _GasFinalValve;
  86. private readonly IoValve _SoftPumpValve;
  87. private readonly IoValve _FastPumpValve;
  88. private readonly IoValve _CHBPurgeValve;
  89. private readonly IoValve _CHBVentValve;
  90. private readonly IoValve _TurboPumpPurgeValve;
  91. private readonly IoValve _GuageValve;
  92. private readonly IoValve _LoadlockVentValve;
  93. private readonly IoValve _LoadlockPumpingValve;
  94. private readonly PumpBase _MainPump;
  95. // 盖子的状态
  96. public bool IsLidClosed => _Lid.OFFFeedback;
  97. public bool IsLidLoadlockClosed => _LidLoadlock.OFFFeedback;
  98. public bool IsSlitDoorClosed => !_slitDoor.ONFeedback && _slitDoor.OFFFeedback;
  99. public bool IsPumpRunning => _MainPump.IsRunning;
  100. public bool HasPumpError => _MainPump.IsError || !_MainPump.IsRunning;
  101. public bool IsCDA_OK => _CDAPressure.Value;
  102. public new ModuleName Module { get; }
  103. public JetPM(ModuleName mod) : base(mod.ToString())
  104. {
  105. Module = mod;
  106. _Lid = DEVICE.GetDevice<IoLid>($"{Module}.{VenusDevice.Lid}");
  107. _LidLoadlock = DEVICE.GetDevice<IoLid>($"{Module}.{VenusDevice.LidLoadlock}");
  108. _slitDoor = DEVICE.GetDevice<IoCylinder>($"{Module}.{VenusDevice.SlitDoor}");
  109. _LiftPin = DEVICE.GetDevice<IoCylinder>($"{Module}.{VenusDevice.LiftPin}");
  110. _LoadLockArm = DEVICE.GetDevice<IoCylinder>($"{Module}.{VenusDevice.LoadLockArm}");
  111. _PNV21Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePVN21}");
  112. _PNV22Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePVN22}");
  113. _PV11Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV11}");
  114. _PV12Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV12}");
  115. _PV21Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV21}");
  116. _PV22Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV22}");
  117. _PV31Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV31}");
  118. _PV32Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV32}");
  119. _PV41Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV41}");
  120. _PV42Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV42}");
  121. _N2Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveN2}");
  122. _Mfc1Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc1}");
  123. _Mfc2Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
  124. _Mfc3Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
  125. _Mfc4Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
  126. _Mfc5Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
  127. _Mfc6Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
  128. _Mfc7Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
  129. _Mfc8Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
  130. _PVHe1Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePVHe1}");
  131. _PVHe2Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePVHe2}");
  132. _GasFinalValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveGasFinal}");
  133. _SoftPumpValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveSoftPump}");
  134. _FastPumpValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveFastPump}");
  135. _CHBPurgeValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveCHBPurge}");
  136. _CHBVentValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveCHBVent}");
  137. _TurboPumpPurgeValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveTurboPumpPurge}");
  138. _GuageValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveGuage}");
  139. _LoadlockVentValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveLoadlockVent}");
  140. _LoadlockPumpingValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveLoadlockPumping}");
  141. _MainPump = DEVICE.GetDevice<PumpBase>($"{Module}.{VenusDevice.MainPump}");
  142. _CDAPressure = DEVICE.GetDevice<IoSensor>($"{Module}.SensorCDAPressureOk");
  143. // RS232 Dry pump, SKY
  144. if (SC.GetValue<int>($"{mod}.DryPump.CommunicationType") == (int)CommunicationType.RS232)
  145. {
  146. if (SC.GetValue<int>($"{mod}.DryPump.MFG") == (int)DryPumpMFG.SKY)
  147. {
  148. _MainPump = DEVICE.GetDevice<SkyPump>($"{Module}.{VenusDevice.MainPump}");
  149. }
  150. else if (SC.GetValue<int>($"{mod}.DryPump.MFG") == (int)DryPumpMFG.Edwards)
  151. {
  152. _MainPump = DEVICE.GetDevice<EdwardsPump>($"{Module}.{VenusDevice.MainPump}");
  153. }
  154. }
  155. }
  156. public void CloseValves()
  157. {
  158. _PNV21Valve.TurnValve(false, out _);
  159. _PNV22Valve.TurnValve(false, out _);
  160. _PV11Valve.TurnValve(false, out _);
  161. _PV12Valve.TurnValve(false, out _);
  162. _PV21Valve.TurnValve(false, out _);
  163. _PV22Valve.TurnValve(false, out _);
  164. _PV31Valve.TurnValve(false, out _);
  165. _PV32Valve.TurnValve(false, out _);
  166. _PV41Valve.TurnValve(false, out _);
  167. _PV42Valve.TurnValve(false, out _);
  168. _PVHe1Valve.TurnValve(false, out _);
  169. _PVHe2Valve.TurnValve(false, out _);
  170. _GasFinalValve.TurnValve(false, out _);
  171. _SoftPumpValve.TurnValve(false, out _);
  172. _FastPumpValve.TurnValve(false, out _);
  173. _CHBPurgeValve.TurnValve(false, out _);
  174. _CHBVentValve.TurnValve(false, out _);
  175. _TurboPumpPurgeValve.TurnValve(false, out _);
  176. _GuageValve.TurnValve(false, out _);
  177. _LoadlockVentValve.TurnValve(false, out _);
  178. _LoadlockPumpingValve.TurnValve(false, out _);
  179. _N2Valve.TurnValve(false, out _);
  180. _FastPumpValve.TurnValve(false, out _);
  181. _Mfc1Valve.TurnValve(false, out _);
  182. _Mfc2Valve.TurnValve(false, out _);
  183. _Mfc3Valve.TurnValve(false, out _);
  184. _Mfc4Valve.TurnValve(false, out _);
  185. _Mfc5Valve.TurnValve(false, out _);
  186. _Mfc6Valve.TurnValve(false, out _);
  187. _Mfc7Valve.TurnValve(false, out _);
  188. _Mfc8Valve.TurnValve(false, out _);
  189. //foreach (var stick in _gasLines)
  190. //{
  191. // stick.Stop();
  192. //}
  193. }
  194. public void OpenValve(ValveType vlvType, bool on)
  195. {
  196. switch (vlvType)
  197. {
  198. case ValveType.PNV21:
  199. _PNV21Valve.TurnValve(on, out _);
  200. break;
  201. case ValveType.PNV22:
  202. _PNV22Valve.TurnValve(on, out _);
  203. break;
  204. case ValveType.PV11:
  205. _PV11Valve.TurnValve(on, out _);
  206. break;
  207. case ValveType.PV12:
  208. _PV12Valve.TurnValve(on, out _);
  209. break;
  210. case ValveType.PV21:
  211. _PV21Valve.TurnValve(on, out _);
  212. break;
  213. case ValveType.PV22:
  214. _PV22Valve.TurnValve(on, out _);
  215. break;
  216. case ValveType.PV31:
  217. _PV31Valve.TurnValve(on, out _);
  218. break;
  219. case ValveType.PV32:
  220. _PV32Valve.TurnValve(on, out _);
  221. break;
  222. case ValveType.PV41:
  223. _PV41Valve.TurnValve(on, out _);
  224. break;
  225. case ValveType.PV42:
  226. _PV42Valve.TurnValve(on, out _);
  227. break;
  228. case ValveType.N2:
  229. _N2Valve.TurnValve(on, out _);
  230. break;
  231. case ValveType.PVHe1:
  232. _PVHe1Valve.TurnValve(on, out _);
  233. break;
  234. case ValveType.PVHe2:
  235. _PVHe2Valve.TurnValve(on, out _);
  236. break;
  237. case ValveType.GasFinal:
  238. _GasFinalValve.TurnValve(on, out _);
  239. break;
  240. case ValveType.SoftPump:
  241. _SoftPumpValve.TurnValve(on, out _);
  242. break;
  243. case ValveType.FastPump:
  244. _FastPumpValve.TurnValve(on, out _);
  245. break;
  246. case ValveType.CHBPurge:
  247. _CHBPurgeValve.TurnValve(on, out _);
  248. break;
  249. case ValveType.CHBVent:
  250. _CHBVentValve.TurnValve(on, out _);
  251. break;
  252. case ValveType.TurboPumpPurge:
  253. _TurboPumpPurgeValve.TurnValve(on, out _);
  254. break;
  255. case ValveType.Guage:
  256. _GuageValve.TurnValve(on, out _);
  257. break;
  258. case ValveType.LoadlockVent:
  259. _LoadlockVentValve.TurnValve(on, out _);
  260. break;
  261. case ValveType.LoadlockPumping:
  262. _LoadlockPumpingValve.TurnValve(on, out _);
  263. break;
  264. case ValveType.Mfc1:
  265. _Mfc1Valve.TurnValve(on, out _);
  266. break;
  267. case ValveType.Mfc2:
  268. _Mfc2Valve.TurnValve(on, out _);
  269. break;
  270. case ValveType.Mfc3:
  271. _Mfc3Valve.TurnValve(on, out _);
  272. break;
  273. case ValveType.Mfc4:
  274. _Mfc4Valve.TurnValve(on, out _);
  275. break;
  276. case ValveType.Mfc5:
  277. _Mfc5Valve.TurnValve(on, out _);
  278. break;
  279. case ValveType.Mfc6:
  280. _Mfc6Valve.TurnValve(on, out _);
  281. break;
  282. case ValveType.Mfc7:
  283. _Mfc7Valve.TurnValve(on, out _);
  284. break;
  285. case ValveType.Mfc8:
  286. _Mfc8Valve.TurnValve(on, out _);
  287. break;
  288. default:
  289. throw new ArgumentOutOfRangeException($"Argument error {vlvType}-{on}");
  290. }
  291. }
  292. }
  293. }