BoatRobotViewModel.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. using Aitex.Core.Util;
  2. using Caliburn.Micro.Core;
  3. using Caliburn.Micro;
  4. using FurnaceUI.Models;
  5. using FurnaceUI.Views.Operations;
  6. using MECF.Framework.Common.DataCenter;
  7. using MECF.Framework.Common.Equipment;
  8. using MECF.Framework.Common.OperationCenter;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows.Controls;
  15. namespace FurnaceUI.Views.Maintenances
  16. {
  17. public class BoatRobotViewModel : FurnaceUIViewModelBase
  18. {
  19. [Subscription("Rt.Status")]
  20. public string RtStatus { get; set; }
  21. [Subscription("PM1.IsProcessing")]
  22. public bool IsProcessing { get; set; }
  23. [Subscription("PM1.RunningMode")]
  24. public bool RunningModeIsDebug { get; set; }
  25. public bool IsSystemStaus => (RtStatus != "AutoRunning");
  26. #region ZAxis Data
  27. [Subscription("PM1.BoatElevatorServo.CurrentPosition")]
  28. public float BoatZAxisCurrentPosition { get; set; }
  29. [Subscription("PM1.BoatElevatorServo.CurrentSpeed")]
  30. public float BoatZAxisCurrentSpeed { get; set; }
  31. [Subscription("PM1.BoatElevatorServo.TargetPosition")]
  32. public float BoatZAxisTargetPosition { get; set; }
  33. [Subscription("PM1.BoatElevatorServo.IsReady")]
  34. public bool BoatZAxisIsReady { get; set; }
  35. [Subscription("PM1.AlarmSignaBoatZAxisWarning.Value")]
  36. public bool BoatZAxisIsWarning { get; set; }
  37. [Subscription("PM1.AlarmSignaBoatZAxisAlarm.Value")]
  38. public bool BoatZAxisIsAlarm { get; set; }
  39. [Subscription("PM1.BoatElevatorServo.AtPosition1")]
  40. public bool BoatZAxisAtPosition1 { get; set; }
  41. [Subscription("PM1.BoatElevatorServo.AtPosition2")]
  42. public bool BoatZAxisAtPosition2 { get; set; }
  43. [Subscription("PM1.BoatElevatorServo.AtPosition3")]
  44. public bool BoatZAxisAtPosition3 { get; set; }
  45. [Subscription("PM1.BoatElevatorServo.AtHomePosition")]
  46. public bool BoatZAxisAtHomePosition { get; set; }
  47. [Subscription("PM1.BoatElevatorServo.IsServoOn")]
  48. public bool BoatZAxisIsServoOn { get; set; }
  49. [Subscription("PM1.BoatElevatorServo.ErrorCode")]
  50. public string BoatZAxisErrorCode { get; set; }
  51. [Subscription("PM1.BoatElevatorServo.Status")]
  52. public string BoatZAxisStatus { get; set; }
  53. [Subscription("PM1.BoatElevatorServo.IsActionEnable")]
  54. public bool BoatZAxisIsActionEnable { get; set; }
  55. [Subscription("PM1.BoatElevatorServo.IsMoving")]
  56. public bool BoatZAxisIsMoving { get; set; }
  57. public double ZAxisProcessPosition { get; set; }
  58. public double ZAxisPosition5 { get; set; }
  59. public double ZAxisPosition4 { get; set; }
  60. public double ZAxisPosition3 { get; set; }
  61. public double ZAxisPosition2 { get; set; }
  62. public double ZAxisPosition1 { get; set; }
  63. public double ZAxisHomePosition { get; set; }
  64. public double ZAxisPositiveLimit { get; set; }
  65. public double ZAxisNegativeLimit { get; set; }
  66. public double ZAxisMoveSpeed { get; set; }
  67. public double ZAxisAcc { get; set; }
  68. public double ZAxisDec { get; set; }
  69. public double ZAxisJogSpeed { get; set; }
  70. public double ZAxisAccTime { get; set; }
  71. public double ZAxisDecTime { get; set; }
  72. private Dictionary<string, string> zPositionTranslate = new Dictionary<string, string>()
  73. {{"Position1","Position1" }, {"Position2","Position2" },{"Position3","Position3" }};
  74. #endregion
  75. #region RAxis Data
  76. [Subscription("PM1.BoatRotationServo.CurrentPosition")]
  77. public float BoatRAxisCurrentPosition { get; set; }
  78. [Subscription("PM1.BoatRotationServo.CurrentSpeed")]
  79. public float BoatRAxisCurrentSpeed { get; set; }
  80. [Subscription("PM1.BoatRotationServo.TargetPosition")]
  81. public float BoatRAxisTargetPosition { get; set; }
  82. [Subscription("PM1.BoatRotationServo.IsReady")]
  83. public bool BoatRAxisIsReady { get; set; }
  84. [Subscription("PM1.BoatRotationServo.IsMoving")]
  85. public bool BoatRAxisIsMoving { get; set; }
  86. [Subscription("PM1.BoatRotationServo.IsInitDone")]
  87. public bool BoatRAxisIsInitDone { get; set; }
  88. [Subscription("PM1.BoatRotationServo.IsHomeDone")]
  89. public bool BoatRAxisIsHomeDone { get; set; }
  90. [Subscription("PM1.BoatRotationServo.IsHoming")]
  91. public bool BoatRAxisIsHoming { get; set; }
  92. [Subscription("PM1.BoatRotationServo.IsInitializing")]
  93. public bool BoatRAxisIsInitializing { get; set; }
  94. [Subscription("PM1.AlarmSignaBoatRAxisWarning.Value")]
  95. public bool BoatRAxisIsWarning { get; set; }
  96. [Subscription("PM1.AlarmSignaBoatRAxisAlarm.Value")]
  97. public bool BoatRAxisIsAlarm { get; set; }
  98. [Subscription("PM1.BoatRotationServo.IsServoOn")]
  99. public bool BoatRAxisIsServoOn { get; set; }
  100. [Subscription("PM1.BoatRotationServo.ErrorCode")]
  101. public string BoatRAxisErrorCode { get; set; }
  102. [Subscription("PM1.BoatRotationServo.Status")]
  103. public string BoatRAxisStatus { get; set; }
  104. [Subscription("PM1.BoatRotationServo.Direction")]
  105. public string BoatRAxisDirection { get; set; }
  106. [Subscription("PM1.BoatRotationServo.IsActionEnable")]
  107. public bool BoatRAxisIsActionEnable { get; set; }
  108. [Subscription("PM1.BoatRotationServo.IsMotorRun")]
  109. public bool BoatRAxisIsMotorRun { get; set; }
  110. public double RAxisLoadPosition { get; set; }
  111. public double RAxisPosition180 { get; set; }
  112. public double RAxisPosition90 { get; set; }
  113. public double RAxisPosition45 { get; set; }
  114. public double RAxisHomePosition { get; set; }
  115. public double RAxisPositiveLimit { get; set; }
  116. public double RAxisNegativeLimit { get; set; }
  117. public double RAxisMoveSpeed { get; set; }
  118. public double RAxisJogSpeed { get; set; }
  119. public double RAxisAccTime { get; set; }
  120. public double RAxisDecTime { get; set; }
  121. #endregion
  122. #region Shutter Data
  123. [Subscription("PM1.Shutter.OpenCloseStatus")]
  124. public string AutoDoorOpenCloseStatus { get; set; }
  125. #endregion
  126. [Subscription("Boat.BoatTestCycledCount")]
  127. public int BoatTestCycledCount { get; set; }
  128. private int _boatCycleCountSetPoint;
  129. public string BoatCycleDisplay => $" {BoatTestCycledCount} / {_boatCycleCountSetPoint}";
  130. [Subscription("Boat.ShutterCycledCount")]
  131. public int ShutterCycledCount { get; set; }
  132. private int _ShutterCycleCountSetPoint;
  133. public string ShutterCycleDisplay => $" {ShutterCycledCount} / {_ShutterCycleCountSetPoint}";
  134. private List<string> _ZPositions;
  135. public List<string> ZPositions
  136. {
  137. get { return _ZPositions; }
  138. set { _ZPositions = value; NotifyOfPropertyChange("ZPositions"); }
  139. }
  140. private List<string> _RPositions;
  141. public List<string> RPositions
  142. {
  143. get { return _RPositions; }
  144. set { _RPositions = value; NotifyOfPropertyChange("RPositions"); }
  145. }
  146. public string ZAxisTestStartPosition { get; set; }
  147. public string ZAxisTestEndPosition { get; set; }
  148. public string RAxisTestDirection { get; set; }
  149. //public bool IsPermission { get => this.Permission >= 3 && ClientApp.Instance.UserContext.RoleName == "Service"; }
  150. public bool IsPermission { get => this.Permission >= 3; }
  151. public BoatRobotViewModel()
  152. {
  153. _ZPositions = new List<string>()
  154. {
  155. "Position1",
  156. "Position2",
  157. "Position3",
  158. };
  159. RPositions = new List<string>()
  160. {
  161. "CW",
  162. "CCW",
  163. };
  164. }
  165. public void BoatModify()
  166. {
  167. var windowManager = IoC.Get<IWindowManager>();
  168. BoatModifyViewModel boatModifyViewModel = new BoatModifyViewModel(ModuleName.PM1.ToString());
  169. (windowManager as WindowManager)?.ShowDialogWithTitle(boatModifyViewModel, null, "Boat Wafer");
  170. }
  171. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  172. {
  173. InitData();
  174. }
  175. private void InitData()
  176. {
  177. ZAxisPosition1 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position1");
  178. ZAxisPosition2 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position2");
  179. ZAxisHomePosition = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position6");
  180. ZAxisProcessPosition = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position7");
  181. ZAxisPositiveLimit = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position8");
  182. ZAxisNegativeLimit = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Position9");
  183. ZAxisMoveSpeed = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.MoveSpeed");
  184. ZAxisAcc = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Acc");
  185. ZAxisDec = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatElevatorServo.Dec");
  186. _boatCycleCountSetPoint = (int)QueryDataClient.Instance.Service.GetConfig($"Boat.CycleCount");
  187. _ShutterCycleCountSetPoint = (int)QueryDataClient.Instance.Service.GetConfig($"Boat.AutoShutter.CycleCount");
  188. RAxisPosition45 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.Position1");
  189. RAxisPosition90 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.Position2");
  190. RAxisPosition180 = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.Position3");
  191. RAxisLoadPosition = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.Position4");
  192. RAxisMoveSpeed = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.MoveSpeed");
  193. }
  194. public void BoatZSaveValue(object obj, object tb)
  195. {
  196. switch (obj)
  197. {
  198. case "Position1":
  199. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  200. break;
  201. case "Position2":
  202. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  203. break;
  204. case "Position3":
  205. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  206. break;
  207. case "Position4":
  208. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  209. break;
  210. case "Position5":
  211. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  212. break;
  213. case "Position6":
  214. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  215. break;
  216. case "Position7":
  217. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  218. break;
  219. case "Position8":
  220. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  221. break;
  222. case "Position9":
  223. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  224. break;
  225. case "MoveSpeed":
  226. case "Acc":
  227. case "Dec":
  228. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatElevatorServo.{obj}", (tb as TextBox)?.Text);
  229. break;
  230. }
  231. }
  232. public void BoatRSaveValue(object obj, object tb)
  233. {
  234. switch (obj)
  235. {
  236. case "Position1":
  237. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text);
  238. break;
  239. case "Position2":
  240. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text);
  241. break;
  242. case "Position3":
  243. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text);
  244. break;
  245. case "Position4":
  246. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text);
  247. break;
  248. case "MoveSpeed":
  249. InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"Boat.BoatRotationServo.{obj}", (tb as TextBox)?.Text);
  250. break;
  251. }
  252. }
  253. public void MoveTo(object targetPosition)
  254. {
  255. switch (targetPosition)
  256. {
  257. case "Position1":
  258. InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition);
  259. break;
  260. case "Position2":
  261. InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition);
  262. break;
  263. case "Position3":
  264. InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition);
  265. break;
  266. case "Position4":
  267. InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition);
  268. break;
  269. case "Position5":
  270. InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition);
  271. break;
  272. case "Position6":
  273. InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition);
  274. break;
  275. case "Position7":
  276. InvokeClient.Instance.Service.DoOperation($"PM1.BoatElevatorServo.ServoMoveTo", targetPosition);
  277. break;
  278. }
  279. }
  280. public void RAxisMoveTo(object targetPosition)
  281. {
  282. switch (targetPosition)
  283. {
  284. case "Position1":
  285. InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition);
  286. break;
  287. case "Position2":
  288. InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition);
  289. break;
  290. case "Position3":
  291. InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition);
  292. break;
  293. case "Position4":
  294. InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition);
  295. break;
  296. case "CW":
  297. var speed = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.MoveSpeed");
  298. InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition, speed);
  299. break;
  300. case "CCW":
  301. speed = (double)QueryDataClient.Instance.Service.GetConfig($"Boat.BoatRotationServo.MoveSpeed");
  302. InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition, speed);
  303. break;
  304. default:
  305. InvokeClient.Instance.Service.DoOperation($"PM1.BoatRotationServo.ServoMoveTo", targetPosition);
  306. break;
  307. }
  308. }
  309. public void BoatZServoTest()
  310. {
  311. if (string.IsNullOrEmpty(ZAxisTestStartPosition))
  312. {
  313. return;
  314. }
  315. if (zPositionTranslate.Keys.Contains(ZAxisTestStartPosition) && zPositionTranslate.Keys.Contains(ZAxisTestStartPosition))
  316. {
  317. InvokeClient.Instance.Service.DoOperation($"Boat.ZAxisMovingTest", zPositionTranslate[ZAxisTestStartPosition], zPositionTranslate[ZAxisTestEndPosition]);
  318. }
  319. else
  320. {
  321. InvokeClient.Instance.Service.DoOperation($"Boat.ZAxisMovingTest", ZAxisTestStartPosition, ZAxisTestEndPosition);
  322. }
  323. }
  324. public void BoatRotationServoTest(object targetPosition)
  325. {
  326. InvokeClient.Instance.Service.DoOperation($"Boat.RAxisMovingTest", targetPosition);
  327. }
  328. public void BoatTestStart()
  329. {
  330. if (zPositionTranslate.Keys.Contains(ZAxisTestStartPosition) && zPositionTranslate.Keys.Contains(ZAxisTestStartPosition))
  331. {
  332. InvokeClient.Instance.Service.DoOperation($"Boat.MovingTest", zPositionTranslate[ZAxisTestStartPosition], zPositionTranslate[ZAxisTestEndPosition], RAxisTestDirection);
  333. }
  334. else
  335. {
  336. InvokeClient.Instance.Service.DoOperation($"Boat.MovingTest", ZAxisTestStartPosition, ZAxisTestEndPosition, RAxisTestDirection);
  337. }
  338. }
  339. public void BoatTestStop()
  340. {
  341. InvokeClient.Instance.Service.DoOperation($"Boat.Abort");
  342. }
  343. public void ShutterTestStart()
  344. {
  345. InvokeClient.Instance.Service.DoOperation($"Boat.ShutterCycleTest");
  346. }
  347. public void ShutterTestStop()
  348. {
  349. InvokeClient.Instance.Service.DoOperation($"Boat.Abort");
  350. }
  351. public void BoatRotationServoStopTest()
  352. {
  353. InvokeClient.Instance.Service.DoOperation($"Boat.Abort");
  354. }
  355. public void Home(object target)
  356. {
  357. InvokeClient.Instance.Service.DoOperation($"{target}.ServoHome");
  358. }
  359. public void SetServoOn(object target, object isOn)
  360. {
  361. InvokeClient.Instance.Service.DoOperation($"{target}", $"{isOn}");
  362. }
  363. public void Continue(object target)
  364. {
  365. InvokeClient.Instance.Service.DoOperation($"{target}.Continue");
  366. }
  367. public void Stop(object target)
  368. {
  369. InvokeClient.Instance.Service.DoOperation($"{target}.ServoStop");
  370. }
  371. public void Reset(object target)
  372. {
  373. InvokeClient.Instance.Service.DoOperation($"{target}.ServoResetAlarm");
  374. }
  375. public void SetOpen(object target, bool open)
  376. {
  377. // IsAutoDoorEnableManualOperation
  378. InvokeClient.Instance.Service.DoOperation($"{target}", open);
  379. }
  380. }
  381. }