PlatformViewModel.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. //using Aitex.Core.Common;
  2. using Aitex.Core.Common.DeviceData;
  3. using log4net.Util.TypeConverters;
  4. using MECF.Framework.Common.CommonData.DeviceData;
  5. using MECF.Framework.Common.DataCenter;
  6. using MECF.Framework.Common.OperationCenter;
  7. using OpenSEMI.ClientBase;
  8. using Prism.Commands;
  9. using Prism.Mvvm;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Windows;
  16. using System.Windows.Threading;
  17. using Venus_Core;
  18. using Venus_MainPages.Unity;
  19. using Venus_Themes.CustomControls;
  20. using WPF.Themes.UserControls;
  21. namespace Venus_MainPages.ViewModels
  22. {
  23. public class PlatformViewModel : BindableBase
  24. {
  25. #region 私有字段
  26. private bool m_LoadLockDoorIsOpen;
  27. private bool m_LoadLockPumpValveIsOpen;
  28. private bool m_LoadLockVentValveIsOpen;
  29. private bool m_IsATM;
  30. private string ModuleName="PMA";
  31. private List<string> m_RtDataKeys=new List<string> ();
  32. private Dictionary<string, object> m_RtDataValues=new Dictionary<string, object> ();
  33. private bool m_PumpIsOpen;
  34. private int m_PurgeCounter;
  35. private Visibility m_PMAWaferIsVisibility;
  36. private Visibility m_LLAWaferIsVisibility;
  37. private PMState m_PMCurrentState;
  38. private WaferInfo m_LLAWafer;
  39. private WaferInfo m_PMAWafer;
  40. private bool m_WaferInPosSensor;
  41. private bool m_SoftPumpValveIsOpen;
  42. private bool m_FastPumpValveIsOpen;
  43. private bool m_PVHe1ValveIsOpen;
  44. private bool m_PVHe2ValveIsOpen;
  45. private bool m_TurboPumpPumpingValveIsOpen;
  46. private bool m_TurboPumpPurgeValveIsOpen;
  47. private bool m_GuageValveIsOpen;
  48. private bool m_PendulumValveIsOpen;
  49. private bool m_TurboIsOpen;
  50. private int m_PositionValue;
  51. private float m_PendulumValvePosition;
  52. private float m_ChamberPressure;
  53. private float m_ProcessPressure;
  54. private float m_ForelinePressurePressure;
  55. private int m_TurboPumpRotationalSpeed;
  56. private AITMfcData m_MFCN2Data;
  57. private AITPendulumValveData m_PendulumValveData;
  58. private int soltCount;
  59. #endregion
  60. #region 属性
  61. public bool WaferInPosSensor
  62. {
  63. get { return m_WaferInPosSensor; }
  64. set
  65. {
  66. if (m_WaferInPosSensor != value)
  67. {
  68. if (value == true && PMCurrentState!=PMState.LLPicking && PMCurrentState != PMState.LLPlacing)
  69. {
  70. InvokeClient.Instance.Service.DoOperation("CreateWafer", "LLA", 1);
  71. }
  72. else if (value == false && PMCurrentState != PMState.LLPicking && PMCurrentState != PMState.LLPlacing)
  73. {
  74. InvokeClient.Instance.Service.DoOperation("DeleteWafer", "LLA", 1);
  75. }
  76. }
  77. SetProperty(ref m_WaferInPosSensor, value);
  78. }
  79. }
  80. public WaferInfo LLAWafer
  81. {
  82. get { return m_LLAWafer; }
  83. set { SetProperty(ref m_LLAWafer, value); }
  84. }
  85. public WaferInfo PMAWafer
  86. {
  87. get { return m_PMAWafer; }
  88. set { SetProperty(ref m_PMAWafer, value); }
  89. }
  90. public bool LoadLockDoorIsOpen
  91. {
  92. get { return m_LoadLockDoorIsOpen; }
  93. set { SetProperty(ref m_LoadLockDoorIsOpen, value); }
  94. }
  95. public bool LoadLockPumpValveIsOpen
  96. {
  97. get { return m_LoadLockPumpValveIsOpen; }
  98. set { SetProperty(ref m_LoadLockPumpValveIsOpen, value); }
  99. }
  100. public bool LoadLockVentValveIsOpen
  101. {
  102. get { return m_LoadLockVentValveIsOpen; }
  103. set { SetProperty(ref m_LoadLockVentValveIsOpen, value); }
  104. }
  105. public bool IsATM
  106. {
  107. get { return m_IsATM; }
  108. set { SetProperty(ref m_IsATM, value); }
  109. }
  110. public Dictionary<string, object> RtDataValues
  111. {
  112. get { return m_RtDataValues; }
  113. set { SetProperty(ref m_RtDataValues, value); }
  114. }
  115. public bool PumpIsOpen
  116. {
  117. get { return m_PumpIsOpen; }
  118. set { SetProperty(ref m_PumpIsOpen, value); }
  119. }
  120. public int PurgeCounter
  121. {
  122. get { return m_PurgeCounter; }
  123. set { SetProperty(ref m_PurgeCounter, value); }
  124. }
  125. public Visibility PMAWaferIsVisibility
  126. {
  127. get { return m_PMAWaferIsVisibility; }
  128. set { SetProperty(ref m_PMAWaferIsVisibility, value); }
  129. }
  130. public Visibility LLAWaferIsVisibility
  131. {
  132. get { return m_LLAWaferIsVisibility; }
  133. set { SetProperty(ref m_LLAWaferIsVisibility, value); }
  134. }
  135. public PMState PMCurrentState
  136. {
  137. get { return m_PMCurrentState; }
  138. set { SetProperty(ref m_PMCurrentState, value); }
  139. }
  140. public bool TurboPumpPumpingValveIsOpen
  141. {
  142. get { return m_TurboPumpPumpingValveIsOpen; }
  143. set { SetProperty(ref m_TurboPumpPumpingValveIsOpen, value); }
  144. }
  145. public bool TurboPumpPurgeValveIsOpen
  146. {
  147. get { return m_TurboPumpPurgeValveIsOpen; }
  148. set { SetProperty(ref m_TurboPumpPurgeValveIsOpen, value); }
  149. }
  150. public bool SoftPumpValveIsOpen
  151. {
  152. get { return m_SoftPumpValveIsOpen; }
  153. set { SetProperty(ref m_SoftPumpValveIsOpen, value); }
  154. }
  155. public bool FastPumpValveIsOpen
  156. {
  157. get { return m_FastPumpValveIsOpen; }
  158. set { SetProperty(ref m_FastPumpValveIsOpen, value); }
  159. }
  160. public bool GuageValveIsOpen
  161. {
  162. get { return m_GuageValveIsOpen; }
  163. set { SetProperty(ref m_GuageValveIsOpen, value); }
  164. }
  165. public bool PendulumValveIsOpen
  166. {
  167. get { return m_PendulumValveIsOpen; }
  168. set { SetProperty(ref m_PendulumValveIsOpen, value); }
  169. }
  170. public bool TurboIsOpen
  171. {
  172. get { return m_TurboIsOpen; }
  173. set { SetProperty(ref m_TurboIsOpen, value); }
  174. }
  175. public bool PVHe1ValveIsOpen
  176. {
  177. get { return m_PVHe1ValveIsOpen; }
  178. set { SetProperty(ref m_PVHe1ValveIsOpen, value); }
  179. }
  180. public bool PVHe2ValveIsOpen
  181. {
  182. get { return m_PVHe2ValveIsOpen; }
  183. set { SetProperty(ref m_PVHe2ValveIsOpen, value); }
  184. }
  185. public int PositionValue
  186. {
  187. get { return m_PositionValue; }
  188. set { SetProperty(ref m_PositionValue, value); }
  189. }
  190. public float PendulumValvePosition
  191. {
  192. get { return m_PendulumValvePosition; }
  193. set { SetProperty(ref m_PendulumValvePosition, value); }
  194. }
  195. public float ChamberPressure
  196. {
  197. get { return m_ChamberPressure; }
  198. set
  199. {
  200. SetProperty(ref m_ChamberPressure, value);
  201. }
  202. }
  203. public float ProcessPressure
  204. {
  205. get { return m_ProcessPressure; }
  206. set
  207. {
  208. SetProperty(ref m_ProcessPressure, value);
  209. }
  210. }
  211. public float ForelinePressure
  212. {
  213. get { return m_ForelinePressurePressure; }
  214. set
  215. {
  216. SetProperty(ref m_ForelinePressurePressure, value);
  217. }
  218. }
  219. public int TurboPumpRotationalSpeed
  220. {
  221. get { return m_TurboPumpRotationalSpeed; }
  222. set
  223. {
  224. SetProperty(ref m_TurboPumpRotationalSpeed, value);
  225. }
  226. }
  227. public AITMfcData MFCN2Data
  228. {
  229. get { return m_MFCN2Data; }
  230. set { SetProperty(ref m_MFCN2Data, value); }
  231. }
  232. public AITPendulumValveData PendulumValveData
  233. {
  234. get { return m_PendulumValveData; }
  235. set
  236. {
  237. SetProperty(ref m_PendulumValveData, value);
  238. }
  239. }
  240. #endregion
  241. #region 命令
  242. private DelegateCommand _PurgeCommand;
  243. public DelegateCommand PurgeCommand =>
  244. _PurgeCommand ?? (_PurgeCommand = new DelegateCommand(OnPurge));
  245. private DelegateCommand _VentCommand;
  246. public DelegateCommand VentCommand =>
  247. _VentCommand ?? (_VentCommand = new DelegateCommand(OnVent));
  248. private DelegateCommand _PumpCommand;
  249. public DelegateCommand PumpCommand =>
  250. _PumpCommand ?? (_PumpCommand = new DelegateCommand(OnPump));
  251. private DelegateCommand _OpenPumpCommand;
  252. public DelegateCommand OpenPumpCommand =>
  253. _OpenPumpCommand ?? (_OpenPumpCommand = new DelegateCommand(OnOpenPump));
  254. private DelegateCommand _ClosePumpCommand;
  255. public DelegateCommand ClosePumpCommand =>
  256. _ClosePumpCommand ?? (_ClosePumpCommand = new DelegateCommand(OnClosePump));
  257. private DelegateCommand _OpenDoorCommand;
  258. public DelegateCommand OpenDoorCommand =>
  259. _OpenDoorCommand ?? (_OpenDoorCommand = new DelegateCommand(OnOpenDoor));
  260. private DelegateCommand _CloseDoorCommand;
  261. public DelegateCommand CloseDoorCommand =>
  262. _CloseDoorCommand ?? (_CloseDoorCommand = new DelegateCommand(OnCloseDoor));
  263. private DelegateCommand _NewWaferCommand;
  264. public DelegateCommand NewWaferCommand =>
  265. _NewWaferCommand ?? (_NewWaferCommand = new DelegateCommand(OnNewWafer));
  266. private DelegateCommand _DeleteWaferCommand;
  267. public DelegateCommand DeleteWaferCommand =>
  268. _DeleteWaferCommand ?? (_DeleteWaferCommand = new DelegateCommand(OnDeleteWafer));
  269. private DelegateCommand _PlaceWaferCommand;
  270. public DelegateCommand PlaceWaferCommand =>
  271. _PlaceWaferCommand ?? (_PlaceWaferCommand = new DelegateCommand(OnPlaceWafer));
  272. private DelegateCommand _MoveWaferCommand;
  273. public DelegateCommand MoveWaferCommand =>
  274. _MoveWaferCommand ?? (_MoveWaferCommand = new DelegateCommand(OnMoveWafer));
  275. private DelegateCommand<object> _ControlValveCommand;
  276. public DelegateCommand<object> ControlValveCommand =>
  277. _ControlValveCommand ?? (_ControlValveCommand = new DelegateCommand<object>(OnControlValve));
  278. private DelegateCommand _OpenPendulumValveCommand;
  279. public DelegateCommand OpenPendulumValveCommand =>
  280. _OpenPendulumValveCommand ?? (_OpenPendulumValveCommand = new DelegateCommand(OnOpenPendulumValve));
  281. private DelegateCommand _ClosePendulumValveCommand;
  282. public DelegateCommand ClosePendulumValveCommand =>
  283. _ClosePendulumValveCommand ?? (_ClosePendulumValveCommand = new DelegateCommand(OnClosePendulumValve));
  284. //private DelegateCommand _OpenButterflyValveViewCommand;
  285. //public DelegateCommand OpenButterflyValveViewCommand =>
  286. // _OpenButterflyValveViewCommand ?? (_OpenButterflyValveViewCommand = new DelegateCommand(OnOpenButterflyValveView));
  287. private DelegateCommand _OpenTurboPumpCommand;
  288. public DelegateCommand OpenTurboPumpCommand =>
  289. _OpenTurboPumpCommand ?? (_OpenTurboPumpCommand = new DelegateCommand(OnOpenTurboPump));
  290. #endregion
  291. #region 构造函数
  292. public PlatformViewModel()
  293. {
  294. //m_PMAWaferIsVisibility = Visibility.Collapsed;
  295. //m_IsATM = true;
  296. //var test = RTData.GetRTData().RtDataValues;
  297. addDataKeys();
  298. DispatcherTimer timer = new DispatcherTimer();
  299. timer.Interval = TimeSpan.FromSeconds(0.5);
  300. timer.Tick += timer_Tick;
  301. timer.Start();
  302. soltCount = Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"LLA.SlotNumber"));
  303. }
  304. #endregion
  305. #region 命令方法
  306. private void OnPump()
  307. {
  308. if (PMCurrentState == PMState.PumpingLoadLock)
  309. {
  310. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
  311. }
  312. else
  313. {
  314. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.PumpLoadLock");
  315. }
  316. }
  317. private void OnPurge()
  318. {
  319. if (PMCurrentState == PMState.PurgingLoadLock)
  320. {
  321. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
  322. }
  323. else
  324. {
  325. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.PurgeLoadLock");
  326. }
  327. }
  328. private void OnVent()
  329. {
  330. if (PMCurrentState == PMState.VentingLoadLock)
  331. {
  332. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
  333. }
  334. else
  335. {
  336. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.VentLoadLock");
  337. }
  338. }
  339. private void OnOpenPump()
  340. {
  341. if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == "LaunchingPump")
  342. {
  343. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
  344. return;
  345. }
  346. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartPump");
  347. }
  348. private void OnClosePump()
  349. {
  350. //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
  351. }
  352. private void OnOpenDoor()
  353. {
  354. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetSlitDoor",true);
  355. }
  356. private void OnCloseDoor()
  357. {
  358. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetSlitDoor",false);
  359. }
  360. private void OnNewWafer()
  361. {
  362. InvokeClient.Instance.Service.DoOperation("CreateWafer", "PMA", 0);
  363. }
  364. private void OnDeleteWafer()
  365. {
  366. InvokeClient.Instance.Service.DoOperation("DeleteWafer", "PMA", 0);
  367. }
  368. private void OnPlaceWafer()
  369. {
  370. if (PMCurrentState == PMState.LLPlacing)
  371. {
  372. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
  373. return;
  374. }
  375. else
  376. {
  377. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.LLPlace}");
  378. }
  379. }
  380. private void OnMoveWafer()
  381. {
  382. if (PMCurrentState == PMState.LLPicking)
  383. {
  384. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
  385. return;
  386. }
  387. else
  388. {
  389. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.LLPick}");
  390. }
  391. }
  392. private void OnControlValve(object obj)
  393. {
  394. CommonValveControl commonValveControl = (CommonValveControl)obj;
  395. if (commonValveControl.IsCanEdit == true)
  396. {
  397. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", Convert.ToInt32(commonValveControl.Tag.ToString()), !commonValveControl.Status);
  398. }
  399. }
  400. private void OnOpenPendulumValve()
  401. {
  402. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.TurnPendulumValve", true);
  403. }
  404. private void OnClosePendulumValve()
  405. {
  406. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.TurnPendulumValve", false);
  407. }
  408. private void OnOpenTurboPump()
  409. {
  410. //TurboIsOpen = true;
  411. //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == "LaunchingTurbo")
  412. if (PMCurrentState == PMState.LaunchingTurboPump)
  413. {
  414. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
  415. return;
  416. }
  417. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartTurboPump");
  418. }
  419. #endregion
  420. #region 私有方法
  421. void timer_Tick(object sender, EventArgs e)
  422. {
  423. RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
  424. LoadLockPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveLoadlockPumping.IsOpen");
  425. LoadLockVentValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveLoadlockVent.IsOpen");
  426. PumpIsOpen = (bool)RtDataValues[$"{ModuleName}.PumpIsRunning"];
  427. PurgeCounter=(int)RtDataValues[$"{ModuleName}.LoadLockPurge.PurgeCounter"];
  428. LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers[soltCount-1];
  429. PMAWafer = ModuleManager.ModuleInfos["PMA"].WaferManager.Wafers[0];
  430. PMCurrentState= (PMState)Enum.Parse(typeof(PMState), RtDataValues[$"{ModuleName}.FsmState"].ToString());
  431. WaferInPosSensor = (bool)RtDataValues[$"{ModuleName}.SensorSmallWaferInPos.Value"];
  432. SoftPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveSoftPump.IsOpen");
  433. FastPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveFastPump.IsOpen");
  434. GuageValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveGuage.IsOpen");
  435. TurboPumpPumpingValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPumping.IsOpen");
  436. TurboPumpPurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPurge.IsOpen");
  437. PVHe1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe1.IsOpen");
  438. PVHe2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe2.IsOpen");
  439. PumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.PumpIsRunning");
  440. TurboIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.TurboPumpIsRunning");
  441. PendulumValvePosition = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.GetPVPosition");
  442. PositionValue = -((int)((PendulumValvePosition) * 0.09));
  443. ChamberPressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ChamberPressure");
  444. ProcessPressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ProcessPressure");
  445. ForelinePressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ForelinePressure");
  446. TurboPumpRotationalSpeed = Convert.ToInt32(RtDataValues[$"{ModuleName}.TurboPumpRotationalSpeed"].ToString());
  447. MFCN2Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcN2");
  448. PendulumValveData = CommonFunction.GetValue<AITPendulumValveData>(RtDataValues, $"{ModuleName}.{VenusDevice.PendulumValve}.DeviceData");
  449. }
  450. private void addDataKeys()
  451. {
  452. m_RtDataKeys.Add($"{ModuleName}.FsmState");
  453. m_RtDataKeys.Add($"{ModuleName}.ValveLoadlockPumping.IsOpen");
  454. m_RtDataKeys.Add($"{ModuleName}.ValveLoadlockVent.IsOpen");
  455. m_RtDataKeys.Add($"{ModuleName}.PumpIsRunning");
  456. m_RtDataKeys.Add($"{ModuleName}.LoadLockPurge.PurgeCounter");
  457. m_RtDataKeys.Add($"{ModuleName}.IsSlitDoorClosed");
  458. m_RtDataKeys.Add($"{ModuleName}.LoadlockPressure");
  459. m_RtDataKeys.Add($"{ModuleName}.ForelinePressure");
  460. m_RtDataKeys.Add($"{ModuleName}.IsATMLoadlock");
  461. m_RtDataKeys.Add($"{ModuleName}.IsVACLoadlock");
  462. m_RtDataKeys.Add($"PMA.HasWafer");
  463. m_RtDataKeys.Add($"PMA.ModuleWaferList");
  464. m_RtDataKeys.Add($"LLA.HasWafer");
  465. m_RtDataKeys.Add($"LLA.ModuleWaferList");
  466. m_RtDataKeys.Add($"{ModuleName}.SensorSmallWaferInPos.Value");
  467. m_RtDataKeys.Add($"{ModuleName}.ValveSoftPump.IsOpen");
  468. m_RtDataKeys.Add($"{ModuleName}.ValveFastPump.IsOpen");
  469. m_RtDataKeys.Add($"{ModuleName}.ValveN2.IsOpen");
  470. m_RtDataKeys.Add($"{ModuleName}.ValvePVHe1.IsOpen");
  471. m_RtDataKeys.Add($"{ModuleName}.ValvePVHe2.IsOpen");
  472. m_RtDataKeys.Add($"{ModuleName}.ValveTurboPumpPumping.IsOpen");
  473. m_RtDataKeys.Add($"{ModuleName}.ValveTurboPumpPurge.IsOpen");
  474. m_RtDataKeys.Add($"{ModuleName}.ValveGuage.IsOpen");
  475. m_RtDataKeys.Add($"{ModuleName}.TurboPumpIsRunning");
  476. m_RtDataKeys.Add($"{ModuleName}.PumpIsRunning");
  477. m_RtDataKeys.Add($"{ModuleName}.IsATM");
  478. m_RtDataKeys.Add($"{ModuleName}.IsVAC");
  479. m_RtDataKeys.Add($"{ModuleName}.GetPVPosition");
  480. m_RtDataKeys.Add($"{ModuleName}.TurboPumpRotationalSpeed");
  481. m_RtDataKeys.Add($"{ModuleName}.MfcN2");
  482. m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.PendulumValve}.DeviceData");
  483. m_RtDataKeys.Add($"{ModuleName}.ChamberPressure");
  484. m_RtDataKeys.Add($"{ModuleName}.ProcessPressure");
  485. }
  486. #endregion
  487. }
  488. }