GasPanelViewModel.cs 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644
  1. using Aitex.Core.Common.DeviceData;
  2. using Aitex.Core.RT.Log;
  3. using Aitex.Core.UI.ControlDataContext;
  4. using Aitex.Core.UI.MVVM;
  5. using Aitex.Core.Util;
  6. using FurnaceGasPanelUI.Models;
  7. using MECF.Framework.Common.DataCenter;
  8. using MECF.Framework.Common.OperationCenter;
  9. using MECF.Framework.UI.Core.Control;
  10. using MECF.Framework.UI.Core.ExtendedControls;
  11. using OpenSEMI.ClientBase;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Linq;
  15. using System.Reflection;
  16. using System.Windows;
  17. using System.Windows.Input;
  18. namespace FurnaceGasPanelUI.Views.Maintenances.ELK
  19. {
  20. public class GasPanelViewModel : ThermalGasPanelUIViewModelBase
  21. {
  22. public ICommand CmdSetMfcFlow { get; set; }
  23. public ICommand CmdSetMfmFlow { get; set; }
  24. public bool _ismanagerPermission = true;
  25. public Window WinOwner { get; set; }
  26. public bool IsManagerPermission
  27. {
  28. get
  29. {
  30. return _ismanagerPermission;
  31. }
  32. set
  33. {
  34. _ismanagerPermission = value;
  35. NotifyOfPropertyChange("IsManagerPermission");
  36. }
  37. }
  38. private bool _isRecipeEdit = false;
  39. private string backGroundStr = "#FFB0D1F1";
  40. public bool ManualEnable { get; set; } = true;
  41. public string ManualEnableColor
  42. {
  43. get
  44. {
  45. if (ManualEnable)
  46. {
  47. return "Green";
  48. }
  49. return backGroundStr;
  50. }
  51. }
  52. public void SwichManualEnable()
  53. {
  54. ManualEnable = true;
  55. }
  56. public void SwichMonitor()
  57. {
  58. ManualEnable = false;
  59. }
  60. public void SwichRecipe()
  61. {
  62. IsRecipeEdit = true;
  63. }
  64. public bool MonitorChecked { get; set; } = true;
  65. public bool ManualChecked { get; set; } = false;
  66. public bool IsRecipeEdit
  67. {
  68. get
  69. {
  70. return _isRecipeEdit;
  71. }
  72. set
  73. {
  74. _isRecipeEdit = value;
  75. NotifyOfPropertyChange("IsRecipeEdit");
  76. }
  77. }
  78. public bool EditTrue { get; set; } = false;
  79. [Subscription("PM1.SensorRecipeOK")]
  80. public AITSensorData SensorRecipeOK { get; set; }
  81. [Subscription("PM1.SensorPROCManualOK")]
  82. public AITSensorData SensorPROCManualOK { get; set; }
  83. [Subscription("System.VentValve.DeviceData")]
  84. public AITValveData VentValveData { get; set; }
  85. [Subscription("System.PumpValve.DeviceData")]
  86. public AITValveData PumpValveData { get; set; }
  87. [Subscription("PM1.SensorTubeATMPressure.DeviceData")]
  88. public AITSensorData SensorTubeATMPressure { get; set; }
  89. [Subscription("System.TubePressure.DeviceData")]
  90. public AITPressureMeterData TubePressureData { get; set; }
  91. [Subscription("PM1.SensorVAC1.Value")]
  92. public bool VAC1 { get; set; }
  93. [Subscription("PM1.SensorVAC2.Value")]
  94. public bool VAC2 { get; set; }
  95. [Subscription("PM1.SensorVAC3.Value")]
  96. public bool VAC3 { get; set; }
  97. [Subscription("PM1.SensorVAC4.Value")]
  98. public bool VAC4 { get; set; }
  99. [Subscription("PM1.SensorVAC5.Value")]
  100. public bool VAC5 { get; set; }
  101. [Subscription("PM1.SensorVAC6.Value")]
  102. public bool VAC6 { get; set; }
  103. [Subscription("PM1.SensorVAC7.Value")]
  104. public bool VAC7 { get; set; }
  105. [Subscription("PM1.SensorVAC8.Value")]
  106. public bool VAC8 { get; set; }
  107. [Subscription("PM1.SensorPS13LStatus.Value")]
  108. public bool VACATM { get; set; }
  109. [Subscription("PM1.SensorVACDEPOOK.Value")]
  110. public bool DEPOOK { get; set; }
  111. [Subscription("PM1.SensorVACHFOK.Value")]
  112. public bool HFClnOK { get; set; }
  113. [Subscription("PM1.SensorVACF2OK.Value")]
  114. public bool F2ClnOK { get; set; }
  115. [Subscription("PM1.SensorHCDTANKHH.Value")]
  116. public bool HCDTANKHH { get; set; }
  117. [Subscription("PM1.SensorHCDTANKH.Value")]
  118. public bool HCDTANKH { get; set; }
  119. [Subscription("PM1.SensorHCDTANKM.Value")]
  120. public bool HCDTANKM { get; set; }
  121. [Subscription("PM1.SensorHCDTANKL.Value")]
  122. public bool HCDTANKL { get; set; }
  123. [Subscription("PM1.SensorCSOURCETANKHH.Value")]
  124. public bool CSOURCETANKHH { get; set; }
  125. [Subscription("PM1.SensorCSOURCETANKH.Value")]
  126. public bool CSOURCETANKH { get; set; }
  127. [Subscription("PM1.SensorCSOURCETANKM.Value")]
  128. public bool CSOURCETANKM { get; set; }
  129. [Subscription("PM1.SensorCSOURCETANKL.Value")]
  130. public bool CSOURCETANKL { get; set; }
  131. [Subscription("PM1.SensorLDS1SystemReady.Value")]
  132. public bool LDS1SystemReady { get; set; }
  133. [Subscription("PM1.SensorLDS2SystemReady.Value")]
  134. public bool LDS2SystemReady { get; set; }
  135. [Subscription("PM1.SensorDEPOOKILK.Value")]
  136. public bool SensorDEPOOKILK { get; set; }
  137. [Subscription("PM1.SensorCLNOKILK.Value")]
  138. public bool SensorCLNOKILK { get; set; }
  139. [Subscription("PM1.SensorNVAC.Value")]
  140. public bool SensorNVAC { get; set; }
  141. [Subscription("PM1.SensorHREFILK.Value")]
  142. public bool SensorHREFILK { get; set; }
  143. [Subscription("PM1.SensorCREFILK.Value")]
  144. public bool SensorCREFILK { get; set; }
  145. #region Valves
  146. [Subscription("PM1.ValveAV1.DeviceData")] public AITValveData ValveAV1 { get; set; }
  147. [Subscription("PM1.ValveAV2.DeviceData")] public AITValveData ValveAV2 { get; set; }
  148. [Subscription("PM1.ValveAV3.DeviceData")] public AITValveData ValveAV3 { get; set; }
  149. [Subscription("PM1.ValveAV4.DeviceData")] public AITValveData ValveAV4 { get; set; }
  150. [Subscription("PM1.ValveAV5.DeviceData")] public AITValveData ValveAV5 { get; set; }
  151. [Subscription("PM1.ValveAV6.DeviceData")] public AITValveData ValveAV6 { get; set; }
  152. [Subscription("PM1.ValveAV7.DeviceData")] public AITValveData ValveAV7 { get; set; }
  153. [Subscription("PM1.ValveAV8.DeviceData")] public AITValveData ValveAV8 { get; set; }
  154. [Subscription("PM1.ValveAV9.DeviceData")] public AITValveData ValveAV9 { get; set; }
  155. [Subscription("PM1.ValveAV10.DeviceData")] public AITValveData ValveAV10 { get; set; }
  156. [Subscription("PM1.ValveAV11.DeviceData")] public AITValveData ValveAV11 { get; set; }
  157. [Subscription("PM1.ValveAV12.DeviceData")] public AITValveData ValveAV12 { get; set; }
  158. [Subscription("PM1.ValveAV13.DeviceData")] public AITValveData ValveAV13 { get; set; }
  159. [Subscription("PM1.ValveAV14.DeviceData")] public AITValveData ValveAV14 { get; set; }
  160. [Subscription("PM1.ValveAV15.DeviceData")] public AITValveData ValveAV15 { get; set; }
  161. [Subscription("PM1.ValveAV16.DeviceData")] public AITValveData ValveAV16 { get; set; }
  162. [Subscription("PM1.ValveAV17.DeviceData")] public AITValveData ValveAV17 { get; set; }
  163. [Subscription("PM1.ValveAV18.DeviceData")] public AITValveData ValveAV18 { get; set; }
  164. [Subscription("PM1.ValveAV19.DeviceData")] public AITValveData ValveAV19 { get; set; }
  165. [Subscription("PM1.ValveAV20.DeviceData")] public AITValveData ValveAV20 { get; set; }
  166. [Subscription("PM1.ValveAV21.DeviceData")] public AITValveData ValveAV21 { get; set; }
  167. [Subscription("PM1.ValveAV22.DeviceData")] public AITValveData ValveAV22 { get; set; }
  168. [Subscription("PM1.ValveAV23.DeviceData")] public AITValveData ValveAV23 { get; set; }
  169. [Subscription("PM1.ValveAV24.DeviceData")] public AITValveData ValveAV24 { get; set; }
  170. [Subscription("PM1.ValveAV25.DeviceData")] public AITValveData ValveAV25 { get; set; }
  171. [Subscription("PM1.ValveAV26.DeviceData")] public AITValveData ValveAV26 { get; set; }
  172. [Subscription("PM1.ValveAV27.DeviceData")] public AITValveData ValveAV27 { get; set; }
  173. [Subscription("PM1.ValveAV28.DeviceData")] public AITValveData ValveAV28 { get; set; }
  174. [Subscription("PM1.ValveAV29.DeviceData")] public AITValveData ValveAV29 { get; set; }
  175. [Subscription("PM1.ValveAV30.DeviceData")] public AITValveData ValveAV30 { get; set; }
  176. [Subscription("PM1.ValveAV31.DeviceData")] public AITValveData ValveAV31 { get; set; }
  177. [Subscription("PM1.ValveAV32.DeviceData")] public AITValveData ValveAV32 { get; set; }
  178. [Subscription("PM1.ValveAV33.DeviceData")] public AITValveData ValveAV33 { get; set; }
  179. [Subscription("PM1.ValveAV34.DeviceData")] public AITValveData ValveAV34 { get; set; }
  180. [Subscription("PM1.ValveAV35.DeviceData")] public AITValveData ValveAV35 { get; set; }
  181. [Subscription("PM1.ValveAV36.DeviceData")] public AITValveData ValveAV36 { get; set; }
  182. [Subscription("PM1.ValveAV37.DeviceData")] public AITValveData ValveAV37 { get; set; }
  183. [Subscription("PM1.ValveAV38.DeviceData")] public AITValveData ValveAV38 { get; set; }
  184. [Subscription("PM1.ValveAV39.DeviceData")] public AITValveData ValveAV39 { get; set; }
  185. [Subscription("PM1.ValveAV40.DeviceData")] public AITValveData ValveAV40 { get; set; }
  186. [Subscription("PM1.ValveAV41.DeviceData")] public AITValveData ValveAV41 { get; set; }
  187. [Subscription("PM1.ValveAV42.DeviceData")] public AITValveData ValveAV42 { get; set; }
  188. [Subscription("PM1.ValveAV43.DeviceData")] public AITValveData ValveAV43 { get; set; }
  189. [Subscription("PM1.ValveAV44.DeviceData")] public AITValveData ValveAV44 { get; set; }
  190. [Subscription("PM1.ValveAV45.DeviceData")] public AITValveData ValveAV45 { get; set; }
  191. [Subscription("PM1.ValveAV46.DeviceData")] public AITValveData ValveAV46 { get; set; }
  192. [Subscription("PM1.ValveAV47.DeviceData")] public AITValveData ValveAV47 { get; set; }
  193. [Subscription("PM1.ValveAV48.DeviceData")] public AITValveData ValveAV48 { get; set; }
  194. [Subscription("PM1.ValveAV49.DeviceData")] public AITValveData ValveAV49 { get; set; }
  195. [Subscription("PM1.ValveAV50.DeviceData")] public AITValveData ValveAV50 { get; set; }
  196. [Subscription("PM1.ValveAV51.DeviceData")] public AITValveData ValveAV51 { get; set; }
  197. [Subscription("PM1.ValveAV52.DeviceData")] public AITValveData ValveAV52 { get; set; }
  198. [Subscription("PM1.ValveAV53.DeviceData")] public AITValveData ValveAV53 { get; set; }
  199. [Subscription("PM1.ValveAV54.DeviceData")] public AITValveData ValveAV54 { get; set; }
  200. [Subscription("PM1.ValveAV55.DeviceData")] public AITValveData ValveAV55 { get; set; }
  201. [Subscription("PM1.ValveAV56.DeviceData")] public AITValveData ValveAV56 { get; set; }
  202. [Subscription("PM1.ValveAV57.DeviceData")] public AITValveData ValveAV57 { get; set; }
  203. [Subscription("PM1.ValveAV58.DeviceData")] public AITValveData ValveAV58 { get; set; }
  204. [Subscription("PM1.ValveAV59.DeviceData")] public AITValveData ValveAV59 { get; set; }
  205. [Subscription("PM1.ValveAV60.DeviceData")] public AITValveData ValveAV60 { get; set; }
  206. [Subscription("PM1.ValveAV61.DeviceData")] public AITValveData ValveAV61 { get; set; }
  207. [Subscription("PM1.ValveAV62.DeviceData")] public AITValveData ValveAV62 { get; set; }
  208. [Subscription("PM1.ValveAV65.DeviceData")] public AITValveData ValveAV65 { get; set; }
  209. [Subscription("PM1.ValveAV66.DeviceData")] public AITValveData ValveAV66 { get; set; }
  210. [Subscription("PM1.ValveAV67.DeviceData")] public AITValveData ValveAV67 { get; set; }
  211. [Subscription("PM1.ValveAV68.DeviceData")] public AITValveData ValveAV68 { get; set; }
  212. [Subscription("PM1.ValveAV69.DeviceData")] public AITValveData ValveAV69 { get; set; }
  213. [Subscription("PM1.ValveAV70.DeviceData")] public AITValveData ValveAV70 { get; set; }
  214. [Subscription("PM1.APC.ModeFeedback")]
  215. public int APCModeFeedback { get; set; }
  216. [Subscription("PM1.ValveAV71.DeviceData")] public AITValveData ValveAV71Data { get; set; }
  217. public AITValveData ValveAV71
  218. {
  219. get
  220. {
  221. return new AITValveData()
  222. {
  223. DeviceName = ValveAV71Data.DeviceName,
  224. DisplayName = ValveAV71Data.DisplayName,
  225. UniqueName = ValveAV71Data.UniqueName,
  226. DefaultValue = ValveAV71Data.DefaultValue,
  227. SetPoint = ValveAV71Data.SetPoint,
  228. Feedback = APCModeFeedback != 5,
  229. ILKDiValue = ValveAV71Data.ILKDiValue,
  230. IsILKOK = true,
  231. VirtualFeedback = ValveAV71Data.VirtualFeedback
  232. };
  233. }
  234. }
  235. [Subscription("PM1.ValveAV72.DeviceData")] public AITValveData ValveAV72 { get; set; }
  236. [Subscription("PM1.ValveAV73.DeviceData")] public AITValveData ValveAV73 { get; set; }
  237. [Subscription("PM1.ValveAV74.DeviceData")] public AITValveData ValveAV74 { get; set; }
  238. [Subscription("PM1.ValveAV75.DeviceData")] public AITValveData ValveAV75 { get; set; }
  239. [Subscription("PM1.ValveAV76.DeviceData")] public AITValveData ValveAV76 { get; set; }
  240. [Subscription("PM1.ValveAV77.DeviceData")] public AITValveData ValveAV77 { get; set; }
  241. [Subscription("PM1.ValveAV78.DeviceData")] public AITValveData ValveAV78 { get; set; }
  242. [Subscription("PM1.ValveAV79.DeviceData")] public AITValveData ValveAV79 { get; set; }
  243. [Subscription("PM1.ValveAV80.DeviceData")] public AITValveData ValveAV80 { get; set; }
  244. [Subscription("PM1.ValveAV81.DeviceData")] public AITValveData ValveAV81 { get; set; }
  245. [Subscription("PM1.ValveAV82.DeviceData")] public AITValveData ValveAV82 { get; set; }
  246. [Subscription("PM1.ValveAV83.DeviceData")] public AITValveData ValveAV83 { get; set; }
  247. [Subscription("PM1.ValveAV84.DeviceData")] public AITValveData ValveAV84 { get; set; }
  248. [Subscription("PM1.ValveAV85.DeviceData")] public AITValveData ValveAV85 { get; set; }
  249. [Subscription("PM1.ValveAV86.DeviceData")] public AITValveData ValveAV86 { get; set; }
  250. [Subscription("PM1.ValveAV87.DeviceData")] public AITValveData ValveAV87 { get; set; }
  251. [Subscription("PM1.ValveAV88.DeviceData")] public AITValveData ValveAV88 { get; set; }
  252. [Subscription("PM1.ValveAV89.DeviceData")] public AITValveData ValveAV89 { get; set; }
  253. [Subscription("PM1.ValveAV90.DeviceData")] public AITValveData ValveAV90 { get; set; }
  254. [Subscription("PM1.ValveAV91.DeviceData")] public AITValveData ValveAV91 { get; set; }
  255. [Subscription("PM1.ValveAV92.DeviceData")] public AITValveData ValveAV92 { get; set; }
  256. [Subscription("PM1.ValveAV93.DeviceData")] public AITValveData ValveAV93 { get; set; }
  257. [Subscription("PM1.ValveAV94.DeviceData")] public AITValveData ValveAV94 { get; set; }
  258. [Subscription("PM1.ValveAV95.DeviceData")] public AITValveData ValveAV95 { get; set; }
  259. [Subscription("PM1.ValveAV96.DeviceData")] public AITValveData ValveAV96 { get; set; }
  260. [Subscription("PM1.ValveAV97.DeviceData")] public AITValveData ValveAV97 { get; set; }
  261. [Subscription("PM1.ValveAV98.DeviceData")] public AITValveData ValveAV98 { get; set; }
  262. [Subscription("PM1.ValveAV99.DeviceData")] public AITValveData ValveAV99 { get; set; }
  263. [Subscription("PM1.ValveAV100.DeviceData")] public AITValveData ValveAV100 { get; set; }
  264. [Subscription("PM1.ValveAV101.DeviceData")] public AITValveData ValveAV101 { get; set; }
  265. [Subscription("PM1.ValveAV102.DeviceData")] public AITValveData ValveAV102 { get; set; }
  266. [Subscription("PM1.ValveAV103.DeviceData")] public AITValveData ValveAV103 { get; set; }
  267. [Subscription("PM1.ValveAV104.DeviceData")] public AITValveData ValveAV104 { get; set; }
  268. [Subscription("PM1.ValveAV105.DeviceData")] public AITValveData ValveAV105 { get; set; }
  269. [Subscription("PM1.ValveAV106.DeviceData")] public AITValveData ValveAV106 { get; set; }
  270. [Subscription("PM1.ValveAV107.DeviceData")] public AITValveData ValveAV107 { get; set; }
  271. [Subscription("PM1.ValveAV108.DeviceData")] public AITValveData ValveAV108 { get; set; }
  272. [Subscription("PM1.ValveAV109.DeviceData")] public AITValveData ValveAV109 { get; set; }
  273. [Subscription("PM1.ValveAV110.DeviceData")] public AITValveData ValveAV110 { get; set; }
  274. [Subscription("PM1.ValveAV111.DeviceData")] public AITValveData ValveAV111 { get; set; }
  275. [Subscription("PM1.ValveAV112.DeviceData")] public AITValveData ValveAV112 { get; set; }
  276. [Subscription("PM1.ValveAV113.DeviceData")] public AITValveData ValveAV113 { get; set; }
  277. [Subscription("PM1.ValveAV114.DeviceData")] public AITValveData ValveAV114 { get; set; }
  278. [Subscription("PM1.ValveAV115.DeviceData")] public AITValveData ValveAV115 { get; set; }
  279. [Subscription("PM1.ValveAV116.DeviceData")] public AITValveData ValveAV116 { get; set; }
  280. [Subscription("PM1.ValveAV117.DeviceData")] public AITValveData ValveAV117 { get; set; }
  281. [Subscription("PM1.ValveAV118.DeviceData")] public AITValveData ValveAV118 { get; set; }
  282. [Subscription("PM1.ValveAV119.DeviceData")] public AITValveData ValveAV119 { get; set; }
  283. [Subscription("PM1.ValveAV120.DeviceData")] public AITValveData ValveAV120 { get; set; }
  284. [Subscription("PM1.ValveAV121.DeviceData")] public AITValveData ValveAV121 { get; set; }
  285. [Subscription("PM1.ValveAV122.DeviceData")] public AITValveData ValveAV122 { get; set; }
  286. [Subscription("PM1.ValveAV123.DeviceData")] public AITValveData ValveAV123 { get; set; }
  287. [Subscription("PM1.ValveAV124.DeviceData")] public AITValveData ValveAV124 { get; set; }
  288. [Subscription("PM1.ValveAV125.DeviceData")] public AITValveData ValveAV125 { get; set; }
  289. [Subscription("PM1.ValveAV126.DeviceData")] public AITValveData ValveAV126 { get; set; }
  290. [Subscription("PM1.ValveAV127.DeviceData")] public AITValveData ValveAV127 { get; set; }
  291. [Subscription("PM1.ValveAV128.DeviceData")] public AITValveData ValveAV128 { get; set; }
  292. [Subscription("PM1.ValveAV129.DeviceData")] public AITValveData ValveAV129 { get; set; }
  293. [Subscription("PM1.ValveAV130.DeviceData")] public AITValveData ValveAV130 { get; set; }
  294. [Subscription("PM1.ValveAV131.DeviceData")] public AITValveData ValveAV131 { get; set; }
  295. [Subscription("PM1.ValveAV132.DeviceData")] public AITValveData ValveAV132 { get; set; }
  296. [Subscription("PM1.ValveAV133.DeviceData")] public AITValveData ValveAV133 { get; set; }
  297. [Subscription("PM1.ValveAV134.DeviceData")] public AITValveData ValveAV134 { get; set; }
  298. [Subscription("PM1.ValveAV135.DeviceData")] public AITValveData ValveAV135 { get; set; }
  299. [Subscription("PM1.ValveAV136.DeviceData")] public AITValveData ValveAV136 { get; set; }
  300. [Subscription("PM1.ValveAV91.DeviceData")]
  301. public AITValveData ValveDPR { get; set; }
  302. public string ValveDPRBrush
  303. {
  304. get
  305. {
  306. if (ValveDPR != null && ValveDPR.Feedback)
  307. {
  308. return "Green";
  309. }
  310. return backGroundStr;
  311. }
  312. }
  313. [Subscription("PM1.ValveBlowerPowerOn.DeviceData")]
  314. public AITValveData ValveBWR { get; set; }
  315. public string ValveBWRBrush
  316. {
  317. get
  318. {
  319. if (ValveBWR != null && ValveBWR.Feedback)
  320. {
  321. return "Green";
  322. }
  323. return backGroundStr;
  324. }
  325. }
  326. [Subscription("PM1.IsCEXHOn")]
  327. public bool IsCEXHOn { get; set; }
  328. public string CEXHBrush
  329. {
  330. get
  331. {
  332. if (IsCEXHOn)
  333. {
  334. return "Green";
  335. }
  336. return backGroundStr;
  337. }
  338. }
  339. [Subscription("PM1.IsF2ClnOn")]
  340. public bool IsF2ClnOn { get; set; }
  341. public string F2ClnBrush
  342. {
  343. get
  344. {
  345. if (IsF2ClnOn)
  346. {
  347. return "Green";
  348. }
  349. return backGroundStr;
  350. }
  351. }
  352. [Subscription("PM1.IsHFClnOn")]
  353. public bool IsHFClnOn { get; set; }
  354. public string HFClnBrush
  355. {
  356. get
  357. {
  358. if (IsHFClnOn)
  359. {
  360. return "Green";
  361. }
  362. return backGroundStr;
  363. }
  364. }
  365. [Subscription("PM1.IsDEPOOn")]
  366. public bool IsDEPOOn { get; set; }
  367. public string DEPOBrush
  368. {
  369. get
  370. {
  371. if (IsDEPOOn)
  372. {
  373. return "Green";
  374. }
  375. return backGroundStr;
  376. }
  377. }
  378. [Subscription("PM1.HTR1Enable")]
  379. public bool IsHTR1Enable { get; set; }
  380. public string HTR1Brush
  381. {
  382. get
  383. {
  384. if (IsHTR1Enable)
  385. {
  386. return "Green";
  387. }
  388. return backGroundStr;
  389. }
  390. }
  391. [Subscription("PM1.HTR2Enable")]
  392. public bool IsHTR2Enable { get; set; }
  393. public string HTR2Brush
  394. {
  395. get
  396. {
  397. if (IsHTR2Enable)
  398. {
  399. return "Green";
  400. }
  401. return backGroundStr;
  402. }
  403. }
  404. [Subscription("PM1.HTR3Enable")]
  405. public bool IsHTR3Enable { get; set; }
  406. public string HTR3Brush
  407. {
  408. get
  409. {
  410. if (IsHTR3Enable)
  411. {
  412. return "Green";
  413. }
  414. return backGroundStr;
  415. }
  416. }
  417. [Subscription("PM1.AUCPump.DeviceData")]
  418. public AITValveData AUCPump { get; set; }
  419. public string AUCPumpBrush
  420. {
  421. get
  422. {
  423. if (AUCPump != null && AUCPump.Feedback)
  424. {
  425. return "Green";
  426. }
  427. return backGroundStr;
  428. }
  429. }
  430. [Subscription("PM1.BothPump1.DeviceData")]
  431. public AITValveData BothPump1 { get; set; }
  432. public string BothPump1Brush
  433. {
  434. get
  435. {
  436. if (BothPump1 != null && BothPump1.Feedback)
  437. {
  438. return "Green";
  439. }
  440. return backGroundStr;
  441. }
  442. }
  443. [Subscription("PM1.BothPump2.DeviceData")]
  444. public AITValveData BothPump2 { get; set; }
  445. public string BothPump2Brush
  446. {
  447. get
  448. {
  449. if (BothPump2 != null && BothPump2.Feedback)
  450. {
  451. return "Green";
  452. }
  453. return backGroundStr;
  454. }
  455. }
  456. [Subscription("PM1.AGVPump.DeviceData")]
  457. public AITValveData AGVPump { get; set; }
  458. public string AGVPumpBrush
  459. {
  460. get
  461. {
  462. if (AGVPump != null && AGVPump.Feedback)
  463. {
  464. return "Green";
  465. }
  466. return backGroundStr;
  467. }
  468. }
  469. [Subscription("PM1.AGV2Pump.DeviceData")]
  470. public AITValveData AGV2Pump { get; set; }
  471. public string AGV2PumpBrush
  472. {
  473. get
  474. {
  475. if (AGV2Pump != null && AGV2Pump.Feedback)
  476. {
  477. return "Green";
  478. }
  479. return backGroundStr;
  480. }
  481. }
  482. [Subscription("PM1.HMNT.DeviceData")]
  483. public AITValveData HMNT { get; set; }
  484. public string HMNTBrush
  485. {
  486. get
  487. {
  488. if (HMNT != null && HMNT.Feedback)
  489. {
  490. return "Green";
  491. }
  492. return "#FFB0D1F1";
  493. }
  494. }
  495. [Subscription("PM1.HZERO.DeviceData")]
  496. public AITValveData HZERO { get; set; }
  497. public string HZEROBrush
  498. {
  499. get
  500. {
  501. if (HZERO != null && HZERO.Feedback)
  502. {
  503. return "Green";
  504. }
  505. return "#FFB0D1F1";
  506. }
  507. }
  508. [Subscription("PM1.CMNT.DeviceData")]
  509. public AITValveData CMNT { get; set; }
  510. public string CMNTBrush
  511. {
  512. get
  513. {
  514. if (CMNT != null && CMNT.Feedback)
  515. {
  516. return "Green";
  517. }
  518. return "#FFB0D1F1";
  519. }
  520. }
  521. [Subscription("PM1.CZERO.DeviceData")]
  522. public AITValveData CZERO { get; set; }
  523. public string CZEROBrush
  524. {
  525. get
  526. {
  527. if (CZERO != null && CZERO.Feedback)
  528. {
  529. return "Green";
  530. }
  531. return "#FFB0D1F1";
  532. }
  533. }
  534. [Subscription("PM1.HREF.DeviceData")]
  535. public AITValveData HREF { get; set; }
  536. public string HREFBrush
  537. {
  538. get
  539. {
  540. if (HREF != null && HREF.Feedback)
  541. {
  542. return "Green";
  543. }
  544. return "#FFB0D1F1";
  545. }
  546. }
  547. [Subscription("PM1.CREF.DeviceData")]
  548. public AITValveData CREF2 { get; set; }
  549. public string CREF2Brush
  550. {
  551. get
  552. {
  553. if (CREF2 != null && CREF2.Feedback)
  554. {
  555. return "Green";
  556. }
  557. return "#FFB0D1F1";
  558. }
  559. }
  560. [Subscription("PM1.IsCREFOn")]
  561. public bool IsCREFOn { get; set; }
  562. public string CREFBrush
  563. {
  564. get
  565. {
  566. if (IsCREFOn)
  567. {
  568. return "Green";
  569. }
  570. return "#FFB0D1F1";
  571. }
  572. }
  573. [Subscription("PM1.IsSIREFOn")]
  574. public bool IsSIREFOn { get; set; }
  575. public string SIREFBrush
  576. {
  577. get
  578. {
  579. if (IsSIREFOn)
  580. {
  581. return "Green";
  582. }
  583. return "#FFB0D1F1";
  584. }
  585. }
  586. #endregion
  587. private Dictionary<string, bool> DictValveIsILKOK = new Dictionary<string, bool>();
  588. #region MFCs
  589. [Subscription("PM1.MFC1.DeviceData")]
  590. public AITMfcData MFC1Data { get; set; }
  591. [Subscription("PM1.MFC2.DeviceData")]
  592. public AITMfcData MFC2Data { get; set; }
  593. [Subscription("PM1.MFC3.DeviceData")]
  594. public AITMfcData MFC3Data { get; set; }
  595. [Subscription("PM1.MFC4.DeviceData")]
  596. public AITMfcData MFC4Data { get; set; }
  597. [Subscription("PM1.MFC5.DeviceData")]
  598. public AITMfcData MFC5Data { get; set; }
  599. [Subscription("PM1.MFC6.DeviceData")]
  600. public AITMfcData MFC6Data { get; set; }
  601. [Subscription("PM1.MFC7.DeviceData")]
  602. public AITMfcData MFC7Data { get; set; }
  603. [Subscription("PM1.MFC8.DeviceData")]
  604. public AITMfcData MFC8Data { get; set; }
  605. [Subscription("PM1.MFC9.DeviceData")]
  606. public AITMfcData MFC9Data { get; set; }
  607. [Subscription("PM1.MFC10.DeviceData")]
  608. public AITMfcData MFC10Data { get; set; }
  609. [Subscription("PM1.MFC11.DeviceData")]
  610. public AITMfcData MFC11Data { get; set; }
  611. [Subscription("PM1.MFC12.DeviceData")]
  612. public AITMfcData MFC12Data { get; set; }
  613. [Subscription("PM1.MFC13.DeviceData")]
  614. public AITMfcData MFC13Data { get; set; }
  615. [Subscription("PM1.MFC16.DeviceData")]
  616. public AITMfcData MFC16Data { get; set; }
  617. [Subscription("PM1.MFC17.DeviceData")]
  618. public AITMfcData MFC17Data { get; set; }
  619. [Subscription("PM1.MFC31.DeviceData")]
  620. public AITMfcData MFC31Data { get; set; }
  621. [Subscription("PM1.MFC32.DeviceData")]
  622. public AITMfcData MFC32Data { get; set; }
  623. #endregion
  624. [Subscription("PM1.MFM6.DeviceData")]
  625. public AITWaterFlowMeterData MFM6Flow { get; set; }
  626. [Subscription("PM1.MFM7.DeviceData")]
  627. public AITWaterFlowMeterData MFM7Flow { get; set; }
  628. [Subscription("PM1.MFM8.DeviceData")]
  629. public AITWaterFlowMeterData MFM8Flow { get; set; }
  630. [Subscription("PM1.MFM9.DeviceData")]
  631. public AITWaterFlowMeterData MFM9Flow { get; set; }
  632. [Subscription("PM1.MFM11.DeviceData")]
  633. public AITWaterFlowMeterData MFM11Flow { get; set; }
  634. [Subscription("PM1.MFM12.DeviceData")]
  635. public AITWaterFlowMeterData MFM12Flow { get; set; }
  636. [Subscription("PM1.MFM13.DeviceData")]
  637. public AITWaterFlowMeterData MFM13Flow { get; set; }
  638. [Subscription("PM1.MFM16.DeviceData")]
  639. public AITWaterFlowMeterData MFM16Flow { get; set; }
  640. [Subscription("PM1.RfPower.IsPowerOn")]
  641. public bool IsPowerOn { get; set; }
  642. [Subscription("PM1.RfPower.PowerSetPoint")]
  643. public float PowerSetPoint { get; set; }
  644. [Subscription("PM1.RfPower.ForwardPower")]
  645. public float ForwardPower { get; set; }
  646. [Subscription("PM1.RfMatch.Capacitance1PositionFeedBack")]
  647. public float Capacitance1PositionFeedBack { get; set; }
  648. [Subscription("PM1.RfMatch.Capacitance2PositionFeedBack")]
  649. public float Capacitance2PositionFeedBack { get; set; }
  650. [Subscription("PM1.RfMatch.VppFeedBack")]
  651. public float VppFeedBack { get; set; }
  652. public ICommand CmdSetValve { get; set; }
  653. private GasPanelStateType _selectedGasStateType = GasPanelStateType.Monitor;
  654. public GasPanelStateType SelectedGasStateType
  655. {
  656. get
  657. {
  658. return _selectedGasStateType;
  659. }
  660. set
  661. {
  662. _selectedGasStateType = value;
  663. NotifyOfPropertyChange(nameof(SelectedGasStateType));
  664. }
  665. }
  666. public AnalogDeviceDataItem MFC1
  667. {
  668. get
  669. {
  670. return new AnalogDeviceDataItem
  671. {
  672. Type = "MFC",
  673. DeviceName = MFC1Data.UniqueName,
  674. DeviceId = MFC1Data.DeviceSchematicId,
  675. DisplayName = MFC1Data.DisplayName,
  676. Scale = MFC1Data.Scale,
  677. Unit = MFC1Data.Unit,
  678. FeedBack = MFC1Data.FeedBack,
  679. SetPoint = MFC1Data.SetPoint,
  680. VirtualFeedBack = MFC1Data.VirtualFeedBack
  681. };
  682. }
  683. }
  684. public AnalogDeviceDataItem MFC2
  685. {
  686. get
  687. {
  688. return new AnalogDeviceDataItem
  689. {
  690. Type = "MFC",
  691. DeviceName = MFC2Data.UniqueName,
  692. DeviceId = MFC2Data.DeviceSchematicId,
  693. DisplayName = MFC2Data.DisplayName,
  694. Scale = MFC2Data.Scale,
  695. Unit = MFC2Data.Unit,
  696. FeedBack = MFC2Data.FeedBack,
  697. SetPoint = MFC2Data.SetPoint,
  698. VirtualFeedBack = MFC2Data.VirtualFeedBack
  699. };
  700. }
  701. }
  702. public AnalogDeviceDataItem MFC3
  703. {
  704. get
  705. {
  706. return new AnalogDeviceDataItem
  707. {
  708. Type = "MFC",
  709. DeviceName = MFC3Data.UniqueName,
  710. DeviceId = MFC3Data.DeviceSchematicId,
  711. DisplayName = MFC3Data.DisplayName,
  712. Scale = MFC3Data.Scale,
  713. Unit = MFC3Data.Unit,
  714. FeedBack = MFC3Data.FeedBack,
  715. SetPoint = MFC3Data.SetPoint,
  716. VirtualFeedBack = MFC3Data.VirtualFeedBack
  717. };
  718. }
  719. }
  720. public AnalogDeviceDataItem MFC4
  721. {
  722. get
  723. {
  724. return new AnalogDeviceDataItem
  725. {
  726. Type = "MFC",
  727. DeviceName = MFC4Data.UniqueName,
  728. DeviceId = MFC4Data.DeviceSchematicId,
  729. DisplayName = MFC4Data.DisplayName,
  730. Scale = MFC4Data.Scale,
  731. Unit = MFC4Data.Unit,
  732. FeedBack = MFC4Data.FeedBack,
  733. SetPoint = MFC4Data.SetPoint,
  734. VirtualFeedBack = MFC4Data.VirtualFeedBack
  735. };
  736. }
  737. }
  738. public AnalogDeviceDataItem MFC5
  739. {
  740. get
  741. {
  742. return new AnalogDeviceDataItem
  743. {
  744. Type = "MFC",
  745. DeviceName = MFC5Data.UniqueName,
  746. DeviceId = MFC5Data.DeviceSchematicId,
  747. DisplayName = MFC5Data.DisplayName,
  748. Scale = MFC5Data.Scale,
  749. Unit = MFC5Data.Unit,
  750. FeedBack = MFC5Data.FeedBack,
  751. SetPoint = MFC5Data.SetPoint,
  752. VirtualFeedBack = MFC5Data.VirtualFeedBack
  753. };
  754. }
  755. }
  756. public AnalogDeviceDataItem MFC6
  757. {
  758. get
  759. {
  760. return new AnalogDeviceDataItem
  761. {
  762. Type = "MFC",
  763. DeviceName = MFC6Data.UniqueName,
  764. DeviceId = MFC6Data.DeviceSchematicId,
  765. DisplayName = MFC6Data.DisplayName,
  766. Scale = MFC6Data.Scale,
  767. Unit = MFC6Data.Unit,
  768. FeedBack = MFC6Data.FeedBack,
  769. SetPoint = MFC6Data.SetPoint,
  770. VirtualFeedBack = MFC6Data.VirtualFeedBack
  771. };
  772. }
  773. }
  774. public AnalogDeviceDataItem MFC7
  775. {
  776. get
  777. {
  778. return new AnalogDeviceDataItem
  779. {
  780. Type = "MFC",
  781. DeviceName = MFC7Data.UniqueName,
  782. DeviceId = MFC7Data.DeviceSchematicId,
  783. DisplayName = MFC7Data.DisplayName,
  784. Scale = MFC7Data.Scale,
  785. Unit = MFC7Data.Unit,
  786. FeedBack = MFC7Data.FeedBack,
  787. SetPoint = MFC7Data.SetPoint,
  788. VirtualFeedBack = MFC7Data.VirtualFeedBack
  789. };
  790. }
  791. }
  792. public AnalogDeviceDataItem MFC8
  793. {
  794. get
  795. {
  796. return new AnalogDeviceDataItem
  797. {
  798. Type = "MFC",
  799. DeviceName = MFC8Data.UniqueName,
  800. DeviceId = MFC8Data.DeviceSchematicId,
  801. DisplayName = MFC8Data.DisplayName,
  802. Scale = MFC8Data.Scale,
  803. Unit = MFC8Data.Unit,
  804. FeedBack = MFC8Data.FeedBack,
  805. SetPoint = MFC8Data.SetPoint,
  806. VirtualFeedBack = MFC8Data.VirtualFeedBack
  807. };
  808. }
  809. }
  810. public AnalogDeviceDataItem MFC9
  811. {
  812. get
  813. {
  814. return new AnalogDeviceDataItem
  815. {
  816. Type = "MFC",
  817. DeviceName = MFC9Data.UniqueName,
  818. DeviceId = MFC9Data.DeviceSchematicId,
  819. DisplayName = MFC9Data.DisplayName,
  820. Scale = MFC9Data.Scale,
  821. Unit = MFC9Data.Unit,
  822. FeedBack = MFC9Data.FeedBack,
  823. SetPoint = MFC9Data.SetPoint,
  824. VirtualFeedBack = MFC9Data.VirtualFeedBack
  825. };
  826. }
  827. }
  828. public AnalogDeviceDataItem MFC10
  829. {
  830. get
  831. {
  832. return new AnalogDeviceDataItem
  833. {
  834. Type = "MFC",
  835. DeviceName = MFC10Data.UniqueName,
  836. DeviceId = MFC10Data.DeviceSchematicId,
  837. DisplayName = MFC10Data.DisplayName,
  838. Scale = MFC10Data.Scale,
  839. Unit = MFC10Data.Unit,
  840. FeedBack = MFC10Data.FeedBack,
  841. SetPoint = MFC10Data.SetPoint,
  842. VirtualFeedBack = MFC10Data.VirtualFeedBack
  843. };
  844. }
  845. }
  846. public AnalogDeviceDataItem MFC11
  847. {
  848. get
  849. {
  850. return new AnalogDeviceDataItem
  851. {
  852. Type = "MFC",
  853. DeviceName = MFC11Data.UniqueName,
  854. DeviceId = MFC11Data.DeviceSchematicId,
  855. DisplayName = MFC11Data.DisplayName,
  856. Scale = MFC11Data.Scale,
  857. Unit = MFC11Data.Unit,
  858. FeedBack = MFC11Data.FeedBack,
  859. SetPoint = MFC11Data.SetPoint,
  860. VirtualFeedBack = MFC11Data.VirtualFeedBack
  861. };
  862. }
  863. }
  864. public AnalogDeviceDataItem MFC12
  865. {
  866. get
  867. {
  868. return new AnalogDeviceDataItem
  869. {
  870. Type = "MFC",
  871. DeviceName = MFC12Data.UniqueName,
  872. DeviceId = MFC12Data.DeviceSchematicId,
  873. DisplayName = MFC12Data.DisplayName,
  874. Scale = MFC12Data.Scale,
  875. Unit = MFC12Data.Unit,
  876. FeedBack = MFC12Data.FeedBack,
  877. SetPoint = MFC12Data.SetPoint,
  878. VirtualFeedBack = MFC12Data.VirtualFeedBack
  879. };
  880. }
  881. }
  882. public AnalogDeviceDataItem MFC13
  883. {
  884. get
  885. {
  886. return new AnalogDeviceDataItem
  887. {
  888. Type = "MFC",
  889. DeviceName = MFC13Data.UniqueName,
  890. DeviceId = MFC13Data.DeviceSchematicId,
  891. DisplayName = MFC13Data.DisplayName,
  892. Scale = MFC13Data.Scale,
  893. Unit = MFC13Data.Unit,
  894. FeedBack = MFC13Data.FeedBack,
  895. SetPoint = MFC13Data.SetPoint,
  896. VirtualFeedBack = MFC13Data.VirtualFeedBack
  897. };
  898. }
  899. }
  900. public AnalogDeviceDataItem MFC16
  901. {
  902. get
  903. {
  904. return new AnalogDeviceDataItem
  905. {
  906. Type = "MFC",
  907. DeviceName = MFC16Data.UniqueName,
  908. DeviceId = MFC16Data.DeviceSchematicId,
  909. DisplayName = MFC16Data.DisplayName,
  910. Scale = MFC16Data.Scale,
  911. Unit = MFC16Data.Unit,
  912. FeedBack = MFC16Data.FeedBack,
  913. SetPoint = MFC16Data.SetPoint,
  914. VirtualFeedBack = MFC16Data.VirtualFeedBack
  915. };
  916. }
  917. }
  918. public AnalogDeviceDataItem MFC17
  919. {
  920. get
  921. {
  922. return new AnalogDeviceDataItem
  923. {
  924. Type = "MFC",
  925. DeviceName = MFC17Data.UniqueName,
  926. DeviceId = MFC17Data.DeviceSchematicId,
  927. DisplayName = MFC17Data.DisplayName,
  928. Scale = MFC17Data.Scale,
  929. Unit = MFC17Data.Unit,
  930. FeedBack = MFC17Data.FeedBack,
  931. SetPoint = MFC17Data.SetPoint,
  932. VirtualFeedBack = MFC17Data.VirtualFeedBack
  933. };
  934. }
  935. }
  936. public AnalogDeviceDataItem MFC31
  937. {
  938. get
  939. {
  940. return new AnalogDeviceDataItem
  941. {
  942. Type = "MFC",
  943. DeviceName = MFC31Data.UniqueName,
  944. DeviceId = MFC31Data.DeviceSchematicId,
  945. DisplayName = MFC31Data.DisplayName,
  946. Scale = MFC31Data.Scale,
  947. Unit = MFC31Data.Unit,
  948. FeedBack = MFC31Data.FeedBack,
  949. SetPoint = MFC31Data.SetPoint,
  950. VirtualFeedBack = MFC31Data.VirtualFeedBack
  951. };
  952. }
  953. }
  954. public AnalogDeviceDataItem MFC32
  955. {
  956. get
  957. {
  958. return new AnalogDeviceDataItem
  959. {
  960. Type = "MFC",
  961. DeviceName = MFC32Data.UniqueName,
  962. DeviceId = MFC32Data.DeviceSchematicId,
  963. DisplayName = MFC32Data.DisplayName,
  964. Scale = MFC32Data.Scale,
  965. Unit = MFC32Data.Unit,
  966. FeedBack = MFC32Data.FeedBack,
  967. SetPoint = MFC32Data.SetPoint,
  968. VirtualFeedBack = MFC32Data.VirtualFeedBack
  969. };
  970. }
  971. }
  972. public AnalogDeviceDataItem MFM6
  973. {
  974. get
  975. {
  976. return new AnalogDeviceDataItem
  977. {
  978. Type = "MFM",
  979. DeviceName = MFM6Flow.DisplayName,
  980. DeviceId = MFM6Flow.DeviceSchematicId,
  981. DisplayName = MFM6Flow.DisplayName,
  982. Scale = MFM6Flow.Scale,
  983. Unit = MFM6Flow.Unit,
  984. FeedBack = MFM6Flow.FeedBack,
  985. SetPoint = MFM6Flow.SetPoint,
  986. };
  987. }
  988. }
  989. public AnalogDeviceDataItem MFM7
  990. {
  991. get
  992. {
  993. return new AnalogDeviceDataItem
  994. {
  995. Type = "MFM",
  996. DeviceName = MFM7Flow.DisplayName,
  997. DeviceId = MFM7Flow.DeviceSchematicId,
  998. DisplayName = MFM7Flow.DisplayName,
  999. Scale = MFM7Flow.Scale,
  1000. Unit = MFM7Flow.Unit,
  1001. FeedBack = MFM7Flow.FeedBack,
  1002. SetPoint = MFM7Flow.SetPoint,
  1003. };
  1004. }
  1005. }
  1006. public AnalogDeviceDataItem MFM8
  1007. {
  1008. get
  1009. {
  1010. return new AnalogDeviceDataItem
  1011. {
  1012. Type = "MFM",
  1013. DeviceName = MFM8Flow.DisplayName,
  1014. DeviceId = MFM8Flow.DeviceSchematicId,
  1015. DisplayName = MFM8Flow.DisplayName,
  1016. Scale = MFM8Flow.Scale,
  1017. Unit = MFM8Flow.Unit,
  1018. FeedBack = MFM8Flow.FeedBack,
  1019. SetPoint = MFM8Flow.SetPoint,
  1020. };
  1021. }
  1022. }
  1023. public AnalogDeviceDataItem MFM9
  1024. {
  1025. get
  1026. {
  1027. return new AnalogDeviceDataItem
  1028. {
  1029. Type = "MFM",
  1030. DeviceName = MFM9Flow.DisplayName,
  1031. DeviceId = MFM9Flow.DeviceSchematicId,
  1032. DisplayName = MFM9Flow.DisplayName,
  1033. Scale = MFM9Flow.Scale,
  1034. Unit = MFM9Flow.Unit,
  1035. FeedBack = MFM9Flow.FeedBack,
  1036. SetPoint = MFM9Flow.SetPoint,
  1037. };
  1038. }
  1039. }
  1040. public AnalogDeviceDataItem MFM11
  1041. {
  1042. get
  1043. {
  1044. return new AnalogDeviceDataItem
  1045. {
  1046. Type = "MFM",
  1047. DeviceName = MFM11Flow.DisplayName,
  1048. DeviceId = MFM11Flow.DeviceSchematicId,
  1049. DisplayName = MFM11Flow.DisplayName,
  1050. Scale = MFM11Flow.Scale,
  1051. Unit = MFM11Flow.Unit,
  1052. FeedBack = MFM11Flow.FeedBack,
  1053. SetPoint = MFM11Flow.SetPoint,
  1054. };
  1055. }
  1056. }
  1057. public AnalogDeviceDataItem MFM12
  1058. {
  1059. get
  1060. {
  1061. return new AnalogDeviceDataItem
  1062. {
  1063. Type = "MFM",
  1064. DeviceName = MFM12Flow.DisplayName,
  1065. DeviceId = MFM12Flow.DeviceSchematicId,
  1066. DisplayName = MFM12Flow.DisplayName,
  1067. Scale = MFM12Flow.Scale,
  1068. Unit = MFM12Flow.Unit,
  1069. FeedBack = MFM12Flow.FeedBack,
  1070. SetPoint = MFM12Flow.SetPoint,
  1071. };
  1072. }
  1073. }
  1074. public AnalogDeviceDataItem MFM13
  1075. {
  1076. get
  1077. {
  1078. return new AnalogDeviceDataItem
  1079. {
  1080. Type = "MFM",
  1081. DeviceName = MFM13Flow.DisplayName,
  1082. DeviceId = MFM13Flow.DeviceSchematicId,
  1083. DisplayName = MFM13Flow.DisplayName,
  1084. Scale = MFM13Flow.Scale,
  1085. Unit = MFM13Flow.Unit,
  1086. FeedBack = MFM13Flow.FeedBack,
  1087. SetPoint = MFM13Flow.SetPoint,
  1088. };
  1089. }
  1090. }
  1091. public AnalogDeviceDataItem MFM16
  1092. {
  1093. get
  1094. {
  1095. return new AnalogDeviceDataItem
  1096. {
  1097. Type = "MFM",
  1098. DeviceName = MFM16Flow.DisplayName,
  1099. DeviceId = MFM16Flow.DeviceSchematicId,
  1100. DisplayName = MFM16Flow.DisplayName,
  1101. Scale = MFM16Flow.Scale,
  1102. Unit = MFM16Flow.Unit,
  1103. FeedBack = MFM16Flow.FeedBack,
  1104. SetPoint = MFM16Flow.SetPoint,
  1105. };
  1106. }
  1107. }
  1108. public string IsRfPowerOn
  1109. {
  1110. get
  1111. {
  1112. return IsPowerOn ? "On" : "Off";
  1113. }
  1114. }
  1115. private bool _manualCheckSelect = false;
  1116. private bool _manualCheck = true;
  1117. public bool ManualCheck
  1118. {
  1119. get => _manualCheck;
  1120. set
  1121. {
  1122. _manualCheck = value;
  1123. NotifyOfPropertyChange(nameof(ManualCheck));
  1124. }
  1125. }
  1126. private bool _manualCheckHide;
  1127. public bool ManumalCheckHide
  1128. {
  1129. get => _manualCheckHide;
  1130. set
  1131. {
  1132. _manualCheckHide = value;
  1133. NotifyOfPropertyChange(nameof(ManumalCheckHide));
  1134. }
  1135. }
  1136. public bool ValveTrue { get; set; } = true;
  1137. public bool ValveFalse { get; set; } = false;
  1138. private bool _enablePLCPointControl = false;
  1139. public bool EnablePLCPointControl
  1140. {
  1141. get => _enablePLCPointControl;
  1142. set
  1143. {
  1144. _enablePLCPointControl = value;
  1145. NotifyOfPropertyChange(nameof(EnablePLCPointControl));
  1146. }
  1147. }
  1148. public GasPanelViewModel()
  1149. {
  1150. CmdSetMfcFlow = new DelegateCommand<object>(PerformCmdSetMfcFlow);
  1151. CmdSetMfmFlow = new DelegateCommand<object>(PerformCmdSetMfmFlow);
  1152. }
  1153. public void SelectedGasStateTypeCmd(string cmd)
  1154. {
  1155. switch (cmd)
  1156. {
  1157. case "Manual":
  1158. SelectedGasStateType = GasPanelStateType.Manual;
  1159. ManualEnable = true;
  1160. break;
  1161. case "Monitor":
  1162. SelectedGasStateType = GasPanelStateType.Monitor;
  1163. ManualEnable = true;
  1164. break;
  1165. case "Recipe":
  1166. SelectedGasStateType = GasPanelStateType.Recipe;
  1167. ManualEnable = false;
  1168. break;
  1169. default:
  1170. break;
  1171. }
  1172. }
  1173. protected override void OnActivate()
  1174. {
  1175. base.OnActivate();
  1176. // EnableServiceControl = (bool)QueryDataClient.Instance.Service.GetConfig("System.IsServiceControlMode");
  1177. // IsMfcNRInstalled = (bool)QueryDataClient.Instance.Service.GetConfig("PM1.MFC.MfcNR.IsMFCInstalled");
  1178. }
  1179. public void SetEditClick()
  1180. {
  1181. IsRecipeEdit = true;
  1182. // EnableServiceControl = false;
  1183. }
  1184. protected override void OnDeactivate(bool close)
  1185. {
  1186. base.OnDeactivate(close);
  1187. //IsManagerPermission = false;
  1188. }
  1189. public void SetManual()
  1190. {
  1191. if (!_manualCheckSelect)
  1192. {
  1193. _manualCheckSelect = !_manualCheckSelect;
  1194. IsManagerPermission = true;
  1195. EnablePLCPointControl = false;
  1196. }
  1197. else
  1198. {
  1199. IsManagerPermission = true;
  1200. ManualCheck = false;
  1201. ManumalCheckHide = true;
  1202. _manualCheckSelect = !_manualCheckSelect;
  1203. EnablePLCPointControl = true;
  1204. }
  1205. }
  1206. public void OpenAll()
  1207. {
  1208. if (!VentValveData.IsOpen)
  1209. InvokeClient.Instance.Service.DoOperation($"{VentValveData.UniqueName}.{AITValveOperation.GVTurnValve}", true);
  1210. if (!PumpValveData.IsOpen)
  1211. InvokeClient.Instance.Service.DoOperation($"{PumpValveData.UniqueName}.{AITValveOperation.GVTurnValve}", true);
  1212. }
  1213. public void CloseAll()
  1214. {
  1215. if (PumpValveData.IsOpen)
  1216. InvokeClient.Instance.Service.DoOperation($"{PumpValveData.UniqueName}.{AITValveOperation.GVTurnValve}", false);
  1217. if (VentValveData.IsOpen)
  1218. InvokeClient.Instance.Service.DoOperation($"{VentValveData.UniqueName}.{AITValveOperation.GVTurnValve}", false);
  1219. }
  1220. private void PerformCmdSetMfcFlow(object param)
  1221. {
  1222. object[] args = (object[])param; //0:devicename, 1:operation, 2:args
  1223. if (args.Length == 3)
  1224. {
  1225. InvokeClient.Instance.Service.DoOperation($"{args[0]}.{args[1]}", args[2]);
  1226. }
  1227. }
  1228. private void PerformCmdSetMfmFlow(object param)
  1229. {
  1230. //object[] args = (object[])param; //0:devicename, 1:operation, 2:args
  1231. //if (args.Length == 3)
  1232. //{
  1233. // InvokeClient.Instance.Service.DoOperation($"PM1.{args[0]}.{args[1]}", args[2]);
  1234. //}
  1235. }
  1236. bool isSensorRecipeOK = false;
  1237. Dictionary<string, object> oldresult;
  1238. private Dictionary<string, object> ClearNotChangedValue(Dictionary<string, object> result)
  1239. {
  1240. Dictionary<string, object> temp = result;
  1241. if (oldresult == null)
  1242. {
  1243. oldresult = result;
  1244. }
  1245. else
  1246. {
  1247. try
  1248. {
  1249. List<string> strkeys = new List<string>();
  1250. foreach (var key in result.Keys)
  1251. {
  1252. if (_subscribedKeys.Contains(key) && oldresult.ContainsKey(key) && result.ContainsKey(key))
  1253. {
  1254. if (result[key].GetType() == typeof(AITValveData) && (((AITValveData)oldresult[key]).Feedback != ((AITValveData)result[key]).Feedback
  1255. || ((AITValveData)oldresult[key]).VirtualFeedback != ((AITValveData)result[key]).VirtualFeedback))
  1256. {
  1257. strkeys.Add(key);
  1258. }
  1259. else if (result[key].GetType() == typeof(AITSensorData) && ((AITSensorData)oldresult[key]).Value != ((AITSensorData)result[key]).Value)
  1260. {
  1261. strkeys.Add(key);
  1262. }
  1263. else if (result[key].GetType() == typeof(AITMfcData) && (((AITMfcData)oldresult[key]).FeedBack != ((AITMfcData)result[key]).FeedBack ||
  1264. ((AITMfcData)oldresult[key]).VirtualFeedBack != ((AITMfcData)result[key]).VirtualFeedBack))
  1265. {
  1266. strkeys.Add(key);
  1267. }
  1268. else if (result[key].GetType() == typeof(float) && (float)oldresult[key] == (float)result[key])
  1269. {
  1270. strkeys.Add(key);
  1271. }
  1272. else if (result[key].GetType() == typeof(int) && (int)oldresult[key] == (int)result[key])
  1273. {
  1274. strkeys.Add(key);
  1275. }
  1276. else if (result[key].GetType() == typeof(bool) && (bool)oldresult[key] == (bool)result[key])
  1277. {
  1278. strkeys.Add(key);
  1279. }
  1280. }
  1281. }
  1282. for (int i = 0; i < strkeys.Count; i++)
  1283. {
  1284. temp.Remove(strkeys[i]);
  1285. }
  1286. }
  1287. catch (Exception ex)
  1288. {
  1289. LOG.Error("由RT返回的数据更新失败" + "ClearNotChangedValue", ex);
  1290. }
  1291. }
  1292. return temp;
  1293. }
  1294. protected override void Poll()
  1295. {
  1296. if (_subscribedKeys.Count > 0)
  1297. {
  1298. Dictionary<string, object> result = QueryDataClient.Instance.Service.PollData(_subscribedKeys);
  1299. Dictionary<string, object> Tempresult = new Dictionary<string, object>(result);
  1300. if (SelectedGasStateType != GasPanelStateType.Monitor)
  1301. {
  1302. result = ClearNotChangedValue(result);
  1303. }
  1304. oldresult = Tempresult;
  1305. if (result == null)
  1306. {
  1307. LOG.Error("获取RT数据失败");
  1308. return;
  1309. }
  1310. if (result.Count != _subscribedKeys.Count)
  1311. {
  1312. string unknowKeys = string.Empty;
  1313. foreach (string key in _subscribedKeys)
  1314. {
  1315. if (!result.ContainsKey(key))
  1316. {
  1317. unknowKeys += key + "\r\n";
  1318. }
  1319. }
  1320. }
  1321. InvokeBeforeUpdateProperty(result);
  1322. UpdateValue(result);
  1323. Application.Current?.Dispatcher.Invoke(new Action(() =>
  1324. {
  1325. if (result.Count != 0)
  1326. {
  1327. InvokePropertyChanged();
  1328. }
  1329. InvokeAfterUpdateProperty(result);
  1330. }));
  1331. }
  1332. }
  1333. protected override void InvokeBeforeUpdateProperty(Dictionary<string, object> data)
  1334. {
  1335. base.InvokeBeforeUpdateProperty(data);
  1336. }
  1337. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  1338. {
  1339. base.InvokeAfterUpdateProperty(data);
  1340. if (SensorRecipeOK != null && SensorRecipeOK.Value)
  1341. {
  1342. if (isSensorRecipeOK != SensorRecipeOK.Value)
  1343. {
  1344. _manualCheckSelect = false;
  1345. IsManagerPermission = true;
  1346. IsRecipeEdit = true;
  1347. // EnableServiceControl = false;
  1348. }
  1349. isSensorRecipeOK = SensorRecipeOK.Value;
  1350. var properties = GetType().GetProperties();
  1351. if (SelectedGasStateType == GasPanelStateType.Monitor )
  1352. {
  1353. foreach (var item in properties)
  1354. {
  1355. var tempObj = item.GetValue(this);
  1356. if (tempObj is AITValveData)
  1357. {
  1358. var aitTempObj = (AITValveData)tempObj;
  1359. if (DictValveIsILKOK.ContainsKey(aitTempObj.DeviceName) && DictValveIsILKOK[aitTempObj.DeviceName] != aitTempObj.IsILKOK)
  1360. {
  1361. DictValveIsILKOK[aitTempObj.DeviceName] = aitTempObj.IsILKOK;
  1362. NotifyOfPropertyChange(aitTempObj.DeviceName);
  1363. }
  1364. }
  1365. }
  1366. }
  1367. }
  1368. if (SelectedGasStateType == GasPanelStateType.Monitor)
  1369. {
  1370. PropertyInfo[] tempProperties = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
  1371. foreach (PropertyInfo property in tempProperties)
  1372. {
  1373. if (property.Name.Contains("MFC"))
  1374. {
  1375. // 触发属性更改通知
  1376. NotifyOfPropertyChange(property.Name);
  1377. }
  1378. }
  1379. }
  1380. }
  1381. public void SwichValue(string name)
  1382. {
  1383. if (SelectedGasStateType == GasPanelStateType.Monitor || SelectedGasStateType == GasPanelStateType.Recipe) return;
  1384. var dialog = new SwitchValueDialog { };
  1385. dialog.IsOpen = true;
  1386. switch (name.ToUpper())
  1387. {
  1388. case "BWR":
  1389. dialog.IsOpen = ValveBWR.Feedback;
  1390. break;
  1391. case "DPR":
  1392. dialog.IsOpen = ValveDPR.Feedback;
  1393. break;
  1394. case "CEXH":
  1395. dialog.IsOpen = IsCEXHOn;
  1396. break;
  1397. case "F2":
  1398. dialog.IsOpen = IsF2ClnOn;
  1399. break;
  1400. case "HF":
  1401. dialog.IsOpen = IsHFClnOn;
  1402. break;
  1403. case "DEPO":
  1404. dialog.IsOpen = IsDEPOOn;
  1405. break;
  1406. }
  1407. dialog.Owner = WinOwner;
  1408. dialog.Topmost = true;
  1409. dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen;
  1410. dialog.DeviceName = $"Swich {name}";
  1411. dialog.ShowDialog();
  1412. if ((bool)dialog.IsSave)
  1413. {
  1414. switch (name.ToUpper())
  1415. {
  1416. case "BWR":
  1417. InvokeClient.Instance.Service.DoOperation($"{ValveBWR.UniqueName}.{AITValveOperation.GVTurnValve}", dialog.IsOpen);
  1418. break;
  1419. case "DPR":
  1420. InvokeClient.Instance.Service.DoOperation($"{ValveDPR.UniqueName}.{AITValveOperation.GVTurnValve}", dialog.IsOpen);
  1421. break;
  1422. case "CEXH":
  1423. InvokeClient.Instance.Service.DoOperation($"PM1.SetCEXHEnable", dialog.IsOpen);
  1424. break;
  1425. case "F2":
  1426. InvokeClient.Instance.Service.DoOperation($"PM1.SetF2ClnEnable", dialog.IsOpen);
  1427. break;
  1428. case "HF":
  1429. InvokeClient.Instance.Service.DoOperation($"PM1.SetHFClnEnable", dialog.IsOpen);
  1430. break;
  1431. case "DEPO":
  1432. InvokeClient.Instance.Service.DoOperation($"PM1.SetDEPOEnable", dialog.IsOpen);
  1433. break;
  1434. }
  1435. }
  1436. }
  1437. public void SetEnable(string name)
  1438. {
  1439. if (SelectedGasStateType == GasPanelStateType.Monitor || SelectedGasStateType == GasPanelStateType.Recipe) return;
  1440. var dialog = new SwitchValueDialog2 { };
  1441. dialog.IsOpen = true;
  1442. switch (name.ToUpper())
  1443. {
  1444. case "HTR1":
  1445. dialog.IsOpen = IsHTR1Enable;
  1446. break;
  1447. case "HTR2":
  1448. dialog.IsOpen = IsHTR2Enable;
  1449. break;
  1450. case "HTR3":
  1451. dialog.IsOpen = IsHTR3Enable;
  1452. break;
  1453. }
  1454. dialog.Owner = WinOwner;
  1455. dialog.Topmost = true;
  1456. dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen;
  1457. dialog.DeviceName = $"Swich {name}";
  1458. dialog.ShowDialog();
  1459. if ((bool)dialog.IsSave)
  1460. {
  1461. switch (name.ToUpper())
  1462. {
  1463. case "HTR1":
  1464. InvokeClient.Instance.Service.DoOperation($"PM1.SetHTR1Enable", dialog.IsOpen);
  1465. break;
  1466. case "HTR2":
  1467. InvokeClient.Instance.Service.DoOperation($"PM1.SetHTR2Enable", dialog.IsOpen);
  1468. break;
  1469. case "HTR3":
  1470. InvokeClient.Instance.Service.DoOperation($"PM1.SetHTR3Enable", dialog.IsOpen);
  1471. break;
  1472. }
  1473. }
  1474. }
  1475. public void SelectPump(string _pumpname)
  1476. {
  1477. if (SelectedGasStateType == GasPanelStateType.Monitor || SelectedGasStateType == GasPanelStateType.Recipe) return;
  1478. if (!DialogBox.Confirm($"Are you sure change {_pumpname} status?"))
  1479. return;
  1480. if (_pumpname == "AUC")
  1481. {
  1482. InvokeClient.Instance.Service.DoOperation($"{AUCPump.UniqueName}.{AITValveOperation.GVTurnValve}", !AUCPump.Feedback);
  1483. }
  1484. if (_pumpname == "AGV1")
  1485. {
  1486. InvokeClient.Instance.Service.DoOperation($"{AGVPump.UniqueName}.{AITValveOperation.GVTurnValve}", !AGVPump.Feedback);
  1487. }
  1488. if (_pumpname == "AGV2")
  1489. {
  1490. InvokeClient.Instance.Service.DoOperation($"{AGV2Pump.UniqueName}.{AITValveOperation.GVTurnValve}", !AGV2Pump.Feedback);
  1491. }
  1492. if (_pumpname == "Both")
  1493. {
  1494. InvokeClient.Instance.Service.DoOperation($"{BothPump1.UniqueName}.{AITValveOperation.GVTurnValve}", !BothPump1.Feedback);
  1495. }
  1496. }
  1497. }
  1498. }