SelfCheckInitViewModel.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. using Aitex.Core.Util;
  2. using MECF.Framework.Common.OperationCenter;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using FurnaceUI.Models;
  10. namespace FurnaceUI.Views.Operations
  11. {
  12. public class SelfCheckInitViewModel : FurnaceUIViewModelBase
  13. {
  14. [Subscription("Rt.Status")]
  15. public string RtStatus { get; set; }
  16. [Subscription("System.IsInitialized")]
  17. public bool SystemIsInitialized { get; set; }
  18. [Subscription("CarrierRobot.Status")]
  19. public string CarrierRobotStatus { get; set; }
  20. [Subscription("WaferRobot.Status")]
  21. public string WaferRobotStatus { get; set; }
  22. [Subscription("LP1.Status")]
  23. public string LP1Status { get; set; }
  24. [Subscription("LP2.Status")]
  25. public string LP2Status { get; set; }
  26. [Subscription("LP3.Status")]
  27. public string LP3Status { get; set; }
  28. [Subscription("LP4.Status")]
  29. public string LP4Status { get; set; }
  30. [Subscription("FIMS1.Status")]
  31. public string FIMS1Status { get; set; }
  32. [Subscription("FIMS2.Status")]
  33. public string FIMS2Status { get; set; }
  34. [Subscription("Boat.Status")]
  35. public string BoatStatus { get; set; }
  36. public bool IsRtInitialized
  37. {
  38. get
  39. {
  40. return RtStatus != "Init" && RtStatus != "Initializing";
  41. }
  42. }
  43. public bool IsRtRunning
  44. {
  45. get
  46. {
  47. return RtStatus != "Init" && RtStatus != "Idle" && RtStatus != "AutoIdle";
  48. }
  49. }
  50. public bool IsRtError
  51. {
  52. get
  53. {
  54. return RtStatus == "Error";
  55. }
  56. }
  57. public bool IsEnableInitialize
  58. {
  59. get { return (RtStatus == "Init" || RtStatus == "Idle") && AllInitializeEnable; }
  60. }
  61. public bool IsAuto
  62. {
  63. get { return RtStatus == "AutoRunning" || RtStatus == "AutoIdle"; }
  64. }
  65. public bool IsCarrierRobotInitialized
  66. {
  67. get
  68. {
  69. return CarrierRobotStatus != "Init" && CarrierRobotStatus != "Homing";
  70. }
  71. }
  72. public bool IsWaferRobotInitialized
  73. {
  74. get
  75. {
  76. return WaferRobotStatus != "Init" && WaferRobotStatus != "Homing";
  77. }
  78. }
  79. public bool IsLP1Initialized
  80. {
  81. get
  82. {
  83. return LP1Status != "Init" && LP1Status != "Homing";
  84. }
  85. }
  86. public bool IsLP2Initialized
  87. {
  88. get
  89. {
  90. return LP2Status != "Init" && LP2Status != "Homing";
  91. }
  92. }
  93. public bool IsBoatInitialized
  94. {
  95. get
  96. {
  97. return BoatStatus != "Init" && BoatStatus != "Homing";
  98. }
  99. }
  100. public bool IsFIMS1Initialized
  101. {
  102. get
  103. {
  104. return FIMS1Status != "Init" && FIMS1Status != "Homing";
  105. }
  106. }
  107. public bool IsFIMS2Initialized
  108. {
  109. get
  110. {
  111. return FIMS1Status != "Init" && FIMS1Status != "Homing";
  112. }
  113. }
  114. public int AllInitializeCount { get; set; }
  115. public int CarrierRobotInitializeCount { get; set; }
  116. public int WaferRobotInitializeCount { get; set; }
  117. public int LP1InitializeCount { get; set; }
  118. public int LP2InitializeCount { get; set; }
  119. public int LP3InitializeCount { get; set; }
  120. public int LP4InitializeCount { get; set; }
  121. public int BoatInitializeCount { get; set; }
  122. private int _FIMS1InitializeCount;
  123. private int _FIMS2InitializeCount;
  124. private bool _FIMS1InitializeEnable;
  125. private bool _FIMS2InitializeEnable;
  126. //public bool AllInitializeEnable { get; set; } = false;
  127. //public bool CarrierRobotInitializeEnable { get; set; } = false;
  128. //public bool WaferRobotInitializeEnable { get; set; } = false;
  129. //public bool SMIFAInitializeEnable { get; set; } = false;
  130. //public bool SMIFBInitializeEnable { get; set; } = false;
  131. //public bool BoatInitializeEnable { get; set; } = false;
  132. private bool _AllInitializeEnable;
  133. public bool AllInitializeEnable
  134. {
  135. get => _AllInitializeEnable;
  136. set
  137. {
  138. _AllInitializeEnable = value;
  139. NotifyOfPropertyChange("AllInitializeEnable");
  140. }
  141. }
  142. private bool _CarrierRobotInitializeEnable;
  143. public bool CarrierRobotInitializeEnable
  144. {
  145. get => _CarrierRobotInitializeEnable;
  146. set
  147. {
  148. _CarrierRobotInitializeEnable = value;
  149. NotifyOfPropertyChange("CarrierRobotInitializeEnable");
  150. }
  151. }
  152. private bool _WaferRobotInitializeEnable;
  153. public bool WaferRobotInitializeEnable
  154. {
  155. get => _WaferRobotInitializeEnable;
  156. set
  157. {
  158. _WaferRobotInitializeEnable = value;
  159. NotifyOfPropertyChange("WaferRobotInitializeEnable");
  160. }
  161. }
  162. private bool _LP1InitializeEnable;
  163. public bool LP1InitializeEnable
  164. {
  165. get => _LP1InitializeEnable;
  166. set
  167. {
  168. _LP1InitializeEnable = value;
  169. NotifyOfPropertyChange("LP1InitializeEnable");
  170. }
  171. }
  172. private bool _LP2InitializeEnable;
  173. public bool LP2InitializeEnable
  174. {
  175. get => _LP2InitializeEnable;
  176. set
  177. {
  178. _LP2InitializeEnable = value;
  179. NotifyOfPropertyChange("LP2InitializeEnable");
  180. }
  181. }
  182. private bool _LP3InitializeEnable;
  183. public bool LP3InitializeEnable
  184. {
  185. get => _LP3InitializeEnable;
  186. set
  187. {
  188. _LP3InitializeEnable = value;
  189. NotifyOfPropertyChange("LP3InitializeEnable");
  190. }
  191. }
  192. private bool _LP4InitializeEnable;
  193. public bool LP4InitializeEnable
  194. {
  195. get => _LP4InitializeEnable;
  196. set
  197. {
  198. _LP4InitializeEnable = value;
  199. NotifyOfPropertyChange("LP4InitializeEnable");
  200. }
  201. }
  202. private bool _BoatInitializeEnable;
  203. public bool BoatInitializeEnable
  204. {
  205. get => _BoatInitializeEnable;
  206. set
  207. {
  208. _BoatInitializeEnable = value;
  209. NotifyOfPropertyChange("BoatInitializeEnable");
  210. }
  211. }
  212. #region UI Logic
  213. public bool IsEnableCarrierRobotInitialized => (CarrierRobotStatus == "Idle" || CarrierRobotStatus == "Init" || CarrierRobotStatus == "Error" || IsSystemStaus && CarrierRobotStatus != "Homing") && CarrierRobotInitializeEnable && RtStatus != "AutoRunning";
  214. public bool IsEnableWaferRobotInitialized => (WaferRobotStatus == "Idle" || WaferRobotStatus == "Init" || WaferRobotStatus == "Error" || IsSystemStaus && WaferRobotStatus != "Homing") && WaferRobotInitializeEnable && RtStatus != "AutoRunning";
  215. public bool IsEnableLP1Initialized => (LP1Status == "Idle" || LP1Status == "Init" || LP1Status == "Error" || IsSystemStaus && LP1Status != "Homing") && LP1InitializeEnable && RtStatus != "AutoRunning";
  216. public bool IsEnableLP2Initialized => (LP2Status == "Idle" || LP2Status == "Init" || LP2Status == "Error" || IsSystemStaus && LP2Status != "Homing") && LP2InitializeEnable && RtStatus != "AutoRunning";
  217. public bool IsEnableLP3Initialized => (LP3Status == "Idle" || LP3Status == "Init" || LP3Status == "Error" || IsSystemStaus && LP3Status != "Homing") && LP3InitializeEnable && RtStatus != "AutoRunning";
  218. public bool IsEnableLP4Initialized => (LP4Status == "Idle" || LP4Status == "Init" || LP4Status == "Error" || IsSystemStaus && LP4Status != "Homing") && LP4InitializeEnable && RtStatus != "AutoRunning";
  219. public bool IsEnableBoatInitialized => (BoatStatus == "Idle" || BoatStatus == "Init" || BoatStatus == "Error" || IsSystemStaus && BoatStatus != "Homing") && BoatInitializeEnable && RtStatus != "AutoRunning";
  220. public bool IsEnableFIMS1Initialized => (FIMS1Status == "Idle" || FIMS1Status == "Init" || FIMS1Status == "Error") && IsSystemStaus && _FIMS1InitializeEnable && RtStatus != "AutoRunning";
  221. public bool IsEnableFIMS2Initialized => (FIMS2Status == "Idle" || FIMS2Status == "Init" || FIMS2Status == "Error") && IsSystemStaus && _FIMS2InitializeEnable && RtStatus != "AutoRunning";
  222. public bool IsAbortAllInitialized => AllInitializeEnable;
  223. public bool IsAbortCarrierRobotInitialized => CarrierRobotInitializeEnable;
  224. public bool IsAbortWaferRobotInitialized => WaferRobotInitializeEnable;
  225. public bool IsAbortLP1Initialized => LP1InitializeEnable;
  226. public bool IsAbortLP2Initialized => LP2InitializeEnable;
  227. public bool IsAbortLP3Initialized => LP3InitializeEnable;
  228. public bool IsAbortLP4Initialized => LP4InitializeEnable;
  229. public bool IsAbortFIMS1Initialized => _FIMS1InitializeEnable;
  230. public bool IsAbortFIMS2Initialized => _FIMS2InitializeEnable;
  231. public bool IsAbortBoatInitialized => BoatInitializeEnable;
  232. public bool IsSystemStaus => (RtStatus == "Idle" || RtStatus == "Init" || RtStatus == "Error") ;
  233. #endregion
  234. public void HomeAll()
  235. {
  236. InvokeClient.Instance.Service.DoOperation("System.HomeAll");
  237. }
  238. public void Home(string module)
  239. {
  240. InvokeClient.Instance.Service.DoOperation($"{module}.Home");
  241. }
  242. public void Abort(string module)
  243. {
  244. InvokeClient.Instance.Service.DoOperation($"{module}.Abort");
  245. }
  246. public void Manual(string module)
  247. {
  248. switch (module)
  249. {
  250. case "All Initialize":
  251. AllInitializeCount++;
  252. if (AllInitializeCount % 2 == 0)
  253. AllInitializeEnable = false;
  254. else
  255. AllInitializeEnable = true;
  256. break;
  257. case "Carrier Robot Initialize":
  258. CarrierRobotInitializeCount++;
  259. if (CarrierRobotInitializeCount % 2 == 0)
  260. CarrierRobotInitializeEnable = false;
  261. else
  262. CarrierRobotInitializeEnable = true;
  263. break;
  264. case "Wafer Robot Initialize":
  265. WaferRobotInitializeCount++;
  266. if (WaferRobotInitializeCount % 2 == 0)
  267. WaferRobotInitializeEnable = false;
  268. else
  269. WaferRobotInitializeEnable = true;
  270. break;
  271. case "LP1 Initialize":
  272. LP1InitializeCount++;
  273. if (LP1InitializeCount % 2 == 0)
  274. LP1InitializeEnable = false;
  275. else
  276. LP1InitializeEnable = true;
  277. break;
  278. case "LP2 Initialize":
  279. LP2InitializeCount++;
  280. if (LP2InitializeCount % 2 == 0)
  281. LP2InitializeEnable = false;
  282. else
  283. LP2InitializeEnable = true;
  284. break;
  285. case "LP3 Initialize":
  286. LP3InitializeCount++;
  287. if (LP3InitializeCount % 2 == 0)
  288. LP3InitializeEnable = false;
  289. else
  290. LP3InitializeEnable = true;
  291. break;
  292. case "LP4 Initialize":
  293. LP4InitializeCount++;
  294. if (LP4InitializeCount % 2 == 0)
  295. LP4InitializeEnable = false;
  296. else
  297. LP4InitializeEnable = true;
  298. break;
  299. case "Boat Initialize":
  300. BoatInitializeCount++;
  301. if (BoatInitializeCount % 2 == 0)
  302. BoatInitializeEnable = false;
  303. else
  304. BoatInitializeEnable = true;
  305. break;
  306. case "FIMS1 Initialize":
  307. _FIMS1InitializeCount++;
  308. if (_FIMS1InitializeCount % 2 == 0)
  309. _FIMS1InitializeEnable = false;
  310. else
  311. _FIMS1InitializeEnable = true;
  312. break;
  313. case "FIMS2 Initialize":
  314. _FIMS2InitializeCount++;
  315. if (_FIMS2InitializeCount % 2 == 0)
  316. _FIMS2InitializeEnable = false;
  317. else
  318. _FIMS2InitializeEnable = true;
  319. break;
  320. default:
  321. break;
  322. }
  323. }
  324. public void CloseCmd()
  325. {
  326. ((Window)GetView()).Close();
  327. }
  328. }
  329. }