TemperatureViewModel.cs 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Aitex.Core.Util;
  5. using Aitex.Core.Common.DeviceData;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using FurnaceUI.Models;
  10. using Caliburn.Micro;
  11. using Caliburn.Micro.Core;
  12. using System.Windows.Controls;
  13. using MECF.Framework.UI.Client.CenterViews.Dialogs;
  14. using FurnaceUI.Views.Editors;
  15. using OpenSEMI.ClientBase;
  16. using MECF.Framework.Common.OperationCenter;
  17. using FurnaceUI.Client;
  18. using MECF.Framework.Common.DataCenter;
  19. namespace FurnaceUI.Views.Operations
  20. {
  21. public class TemperatureViewModel : FurnaceUIViewModelBase
  22. {
  23. public bool IsManagerPermission { get; set; } = false;
  24. public bool IsLspMode { get; set; } = false;
  25. private TemperatureView _view;
  26. [Subscription("System.HeaterU.DeviceData")]
  27. public AITHeaterData HeaterUData { get; set; }
  28. protected override void OnViewLoaded(object view)
  29. {
  30. base.OnViewLoaded(view);
  31. _view = (TemperatureView)view;
  32. }
  33. public double URange = 9.9;
  34. public double DevU => HeaterUData.FeedBack - HeaterUData.SetPoint;
  35. public double PositiveULength
  36. {
  37. get
  38. {
  39. if (HeaterUData.SetPoint - HeaterUData.FeedBack <= 0)
  40. {
  41. return 0;
  42. }
  43. else if (HeaterUData.SetPoint - HeaterUData.FeedBack <= URange)
  44. {
  45. return ((HeaterUData.SetPoint - HeaterUData.FeedBack) / URange) * 150;
  46. }
  47. return 300;
  48. }
  49. }
  50. public double NegativeULength
  51. {
  52. get
  53. {
  54. if (HeaterUData.SetPoint - HeaterUData.FeedBack >= 0)
  55. {
  56. return 0;
  57. }
  58. else if (HeaterUData.SetPoint - HeaterUData.FeedBack >= -URange)
  59. {
  60. return ((-(HeaterUData.SetPoint - HeaterUData.FeedBack)) / URange) * 150;
  61. }
  62. return 300;
  63. }
  64. }
  65. public double DevCU => HeaterCUData.FeedBack - HeaterCUData.SetPoint;
  66. public double CURange = 9.9;
  67. public double PositiveCULength
  68. {
  69. get
  70. {
  71. if (HeaterCUData.SetPoint - HeaterCUData.FeedBack <= 0)
  72. {
  73. return 0;
  74. }
  75. else if (HeaterCUData.SetPoint - HeaterCUData.FeedBack <= CURange)
  76. {
  77. return ((HeaterCUData.SetPoint - HeaterCUData.FeedBack) / CURange) * 150;
  78. }
  79. return 300;
  80. }
  81. }
  82. public double NegativeCULength
  83. {
  84. get
  85. {
  86. if (HeaterCUData.SetPoint - HeaterCUData.FeedBack >= 0)
  87. {
  88. return 0;
  89. }
  90. else if (HeaterCUData.SetPoint - HeaterCUData.FeedBack >= -CURange)
  91. {
  92. return ((-(HeaterCUData.SetPoint - HeaterCUData.FeedBack)) / CURange) * 150;
  93. }
  94. return 300;
  95. }
  96. }
  97. public double DevC => HeaterCData.FeedBack - HeaterCData.SetPoint;
  98. public double CRange = 9.9;
  99. public double PositiveCLength
  100. {
  101. get
  102. {
  103. if (HeaterCData.SetPoint - HeaterCData.FeedBack <= 0)
  104. {
  105. return 0;
  106. }
  107. else if (HeaterCData.SetPoint - HeaterCData.FeedBack <= CRange)
  108. {
  109. return ((HeaterCData.SetPoint - HeaterCData.FeedBack) / CRange) * 150;
  110. }
  111. return 300;
  112. }
  113. }
  114. public double NegativeCLength
  115. {
  116. get
  117. {
  118. if (HeaterCData.SetPoint - HeaterCData.FeedBack >= 0)
  119. {
  120. return 0;
  121. }
  122. else if (HeaterCData.SetPoint - HeaterCData.FeedBack >= -CRange)
  123. {
  124. return ((-(HeaterCData.SetPoint - HeaterCData.FeedBack)) / CRange) * 150;
  125. }
  126. return 300;
  127. }
  128. }
  129. public double DevCL => HeaterCLData.FeedBack - HeaterCLData.SetPoint;
  130. public double CLRange = 9.9;
  131. public double PositiveCLLength
  132. {
  133. get
  134. {
  135. if (HeaterCLData.SetPoint - HeaterCLData.FeedBack <= 0)
  136. {
  137. return 0;
  138. }
  139. else if (HeaterCLData.SetPoint - HeaterCLData.FeedBack <= CLRange)
  140. {
  141. return ((HeaterCLData.SetPoint - HeaterCLData.FeedBack) / CLRange) * 150;
  142. }
  143. return 300;
  144. }
  145. }
  146. public double NegativeCLLength
  147. {
  148. get
  149. {
  150. if (HeaterCLData.SetPoint - HeaterCLData.FeedBack >= 0)
  151. {
  152. return 0;
  153. }
  154. else if (HeaterCLData.SetPoint - HeaterCLData.FeedBack >= -CLRange)
  155. {
  156. return ((-(HeaterCLData.SetPoint - HeaterCLData.FeedBack)) / CLRange) * 150;
  157. }
  158. return 300;
  159. }
  160. }
  161. public double DevL => HeaterLData.FeedBack - HeaterLData.SetPoint;
  162. public double LRange = 9.9;
  163. public double PositiveLLength
  164. {
  165. get
  166. {
  167. if (HeaterLData.SetPoint - HeaterLData.FeedBack <= 0)
  168. {
  169. return 0;
  170. }
  171. else if (HeaterLData.SetPoint - HeaterLData.FeedBack <= LRange)
  172. {
  173. return ((HeaterLData.SetPoint - HeaterLData.FeedBack) / LRange) * 150;
  174. }
  175. return 300;
  176. }
  177. }
  178. public double NegativeLLength
  179. {
  180. get
  181. {
  182. if (HeaterLData.SetPoint - HeaterLData.FeedBack >= 0)
  183. {
  184. return 0;
  185. }
  186. else if (HeaterLData.SetPoint - HeaterLData.FeedBack >= -LRange)
  187. {
  188. return ((-(HeaterLData.SetPoint - HeaterLData.FeedBack)) / LRange) * 150;
  189. }
  190. return 300;
  191. }
  192. }
  193. [Subscription("System.HeaterCU.DeviceData")]
  194. public AITHeaterData HeaterCUData { get; set; }
  195. [Subscription("System.HeaterC.DeviceData")]
  196. public AITHeaterData HeaterCData { get; set; }
  197. [Subscription("System.HeaterCL.DeviceData")]
  198. public AITHeaterData HeaterCLData { get; set; }
  199. [Subscription("System.HeaterL.DeviceData")]
  200. public AITHeaterData HeaterLData { get; set; }
  201. public AITHeaterData BottomHeaterData => HeaterLData;
  202. public AITHeaterData CenterBottomHeaterData => HeaterCLData;
  203. public AITHeaterData CenterHeaterData => HeaterCData;
  204. public AITHeaterData TopCenterHeaterData => HeaterCUData;
  205. public AITHeaterData TopHeaterData => HeaterUData;
  206. [Subscription("PM1.Status")]
  207. public string PM1Status { get; set; }
  208. [Subscription("PM1.RecipeHold")]
  209. public bool PM1RecipeHold { get; set; }
  210. public bool IsMannualButtonEnabled
  211. {
  212. get
  213. {
  214. return PM1Status != "Process" || (PM1Status == "Process" && PM1RecipeHold);
  215. }
  216. }
  217. #region AnaLog
  218. [Subscription("PM1.HTCurrent1.DeviceData")]
  219. public AITWaterFlowMeterData HTCurrent1 { get; set; }
  220. [Subscription("PM1.HTCurrent2.DeviceData")]
  221. public AITWaterFlowMeterData HTCurrent2 { get; set; }
  222. [Subscription("PM1.HTCurrent3.DeviceData")]
  223. public AITWaterFlowMeterData HTCurrent3 { get; set; }
  224. [Subscription("PM1.HTCurrent4.DeviceData")]
  225. public AITWaterFlowMeterData HTCurrent4 { get; set; }
  226. [Subscription("PM1.HTCurrent5.DeviceData")]
  227. public AITWaterFlowMeterData HTCurrent5 { get; set; }
  228. [Subscription("PM1.HTVoltage1.DeviceData")]
  229. public AITWaterFlowMeterData HTVoltage1 { get; set; }
  230. [Subscription("PM1.HTVoltage2.DeviceData")]
  231. public AITWaterFlowMeterData HTVoltage2 { get; set; }
  232. [Subscription("PM1.HTVoltage3.DeviceData")]
  233. public AITWaterFlowMeterData HTVoltage3 { get; set; }
  234. [Subscription("PM1.HTVoltage4.DeviceData")]
  235. public AITWaterFlowMeterData HTVoltage4 { get; set; }
  236. [Subscription("PM1.HTVoltage5.DeviceData")]
  237. public AITWaterFlowMeterData HTVoltage5 { get; set; }
  238. public string HTCurrent1Feedback { get; set; }
  239. public string HTCurrent2Feedback { get; set; }
  240. public string HTCurrent3Feedback { get; set; }
  241. public string HTCurrent4Feedback { get; set; }
  242. public string HTCurrent5Feedback { get; set; }
  243. public string HTVoltage1Feedback { get; set; }
  244. public string HTVoltage2Feedback { get; set; }
  245. public string HTVoltage3Feedback { get; set; }
  246. public string HTVoltage4Feedback { get; set; }
  247. public string HTVoltage5Feedback { get; set; }
  248. #endregion
  249. public Dictionary<string, double> _dicTemperatualMaxValue;
  250. private string _topHeaterSetPoint;
  251. public string TopHeaterSetPoint
  252. {
  253. get { return _topHeaterSetPoint; }
  254. set
  255. {
  256. _topHeaterSetPoint = value;
  257. NotifyOfPropertyChange("TopHeaterSetPoint");
  258. }
  259. }
  260. private string _topCenterHeaterSetPoint;
  261. public string TopCenterHeaterSetPoint
  262. {
  263. get { return _topCenterHeaterSetPoint; }
  264. set
  265. {
  266. _topCenterHeaterSetPoint = value;
  267. NotifyOfPropertyChange("TopCenterHeaterSetPoint");
  268. }
  269. }
  270. private string _centerHeaterSetPoint;
  271. public string CenterHeaterSetPoint
  272. {
  273. get { return _centerHeaterSetPoint; }
  274. set
  275. {
  276. _centerHeaterSetPoint = value;
  277. NotifyOfPropertyChange("CenterHeaterSetPoint");
  278. }
  279. }
  280. private string _centerBottomHeaterSetPoint;
  281. public string CenterBottomHeaterSetPoint
  282. {
  283. get { return _centerBottomHeaterSetPoint; }
  284. set
  285. {
  286. _centerBottomHeaterSetPoint = value;
  287. NotifyOfPropertyChange("CenterBottomHeaterSetPoint");
  288. }
  289. }
  290. private string _bottomHeaterSetPoint;
  291. public string BottomHeaterSetPoint
  292. {
  293. get { return _bottomHeaterSetPoint; }
  294. set
  295. {
  296. _bottomHeaterSetPoint = value;
  297. NotifyOfPropertyChange("BottomHeaterSetPoint");
  298. }
  299. }
  300. private string _topHeaterUpRateSetpoint;
  301. public string TopHeaterUpRateSetpoint
  302. {
  303. get { return _topHeaterUpRateSetpoint; }
  304. set
  305. {
  306. _topHeaterUpRateSetpoint = value;
  307. NotifyOfPropertyChange("TopHeaterUpRateSetpoint");
  308. }
  309. }
  310. private string _topCenterHeaterUpRateSetpoint;
  311. public string TopCenterHeaterUpRateSetpoint
  312. {
  313. get { return _topCenterHeaterUpRateSetpoint; }
  314. set
  315. {
  316. _topCenterHeaterUpRateSetpoint = value;
  317. NotifyOfPropertyChange("TopCenterHeaterUpRateSetpoint");
  318. }
  319. }
  320. private string _centerHeaterUpRateSetpoint;
  321. public string CenterHeaterUpRateSetpoint
  322. {
  323. get { return _centerHeaterUpRateSetpoint; }
  324. set
  325. {
  326. _centerHeaterUpRateSetpoint = value;
  327. NotifyOfPropertyChange("CenterHeaterUpRateSetpoint");
  328. }
  329. }
  330. private string _centerLowHeaterUpRateSetpoint;
  331. public string CenterLowHeaterUpRateSetpoint
  332. {
  333. get { return _centerLowHeaterUpRateSetpoint; }
  334. set
  335. {
  336. _centerLowHeaterUpRateSetpoint = value;
  337. NotifyOfPropertyChange("CenterLowHeaterUpRateSetpoint");
  338. }
  339. }
  340. private string _lowHeaterUpRateSetpoint;
  341. public string LowHeaterUpRateSetpoint
  342. {
  343. get { return _lowHeaterUpRateSetpoint; }
  344. set
  345. {
  346. _lowHeaterUpRateSetpoint = value;
  347. NotifyOfPropertyChange("LowHeaterUpRateSetpoint");
  348. }
  349. }
  350. private string _topHeaterDownRateSetpoint;
  351. public string TopHeaterDownRateSetpoint
  352. {
  353. get { return _topHeaterDownRateSetpoint; }
  354. set
  355. {
  356. _topHeaterDownRateSetpoint = value;
  357. NotifyOfPropertyChange("TopHeaterDownRateSetpoint");
  358. }
  359. }
  360. private string _topCenterHeaterDownRateSetpoint;
  361. public string TopCenterHeaterDownRateSetpoint
  362. {
  363. get { return _topCenterHeaterDownRateSetpoint; }
  364. set
  365. {
  366. _topCenterHeaterDownRateSetpoint = value;
  367. NotifyOfPropertyChange("TopCenterHeaterDownRateSetpoint");
  368. }
  369. }
  370. private string _centerHeaterDownRateSetpoint;
  371. public string CenterHeaterDownRateSetpoint
  372. {
  373. get { return _centerHeaterDownRateSetpoint; }
  374. set
  375. {
  376. _centerHeaterDownRateSetpoint = value;
  377. NotifyOfPropertyChange("CenterHeaterDownRateSetpoint");
  378. }
  379. }
  380. private string _centerLowHeaterDownRateSetpoint;
  381. public string CenterLowHeaterDownRateSetpoint
  382. {
  383. get { return _centerLowHeaterDownRateSetpoint; }
  384. set
  385. {
  386. _centerLowHeaterDownRateSetpoint = value;
  387. NotifyOfPropertyChange("CenterLowHeaterDownRateSetpoint");
  388. }
  389. }
  390. private string _lowHeaterDownRateSetpoint;
  391. public string LowHeaterDownRateSetpoint
  392. {
  393. get { return _lowHeaterDownRateSetpoint; }
  394. set
  395. {
  396. _lowHeaterDownRateSetpoint = value;
  397. NotifyOfPropertyChange("LowHeaterDownRateSetpoint");
  398. }
  399. }
  400. private bool _isEnableMannual;
  401. public bool IsEnableMannual
  402. {
  403. get
  404. {
  405. return IsManualButtonChecked;
  406. }
  407. set
  408. {
  409. _isEnableMannual = value;
  410. }
  411. }
  412. public bool IsManualButtonChecked
  413. {
  414. get;
  415. set;
  416. }
  417. private int _mannualSelectCount;
  418. private string _lspModel;
  419. public string LspModel
  420. {
  421. get => _lspModel;
  422. set
  423. {
  424. _lspModel = value;
  425. NotifyOfPropertyChange(nameof(LspModel));
  426. }
  427. }
  428. private string _topHeaterRampSetPoint;
  429. public string TopHeaterRampSetPoint
  430. {
  431. get => _topHeaterRampSetPoint;
  432. set
  433. {
  434. _topHeaterRampSetPoint = value;
  435. NotifyOfPropertyChange(nameof(TopHeaterRampSetPoint));
  436. }
  437. }
  438. private string _topCenterHeaterRampSetPoint;
  439. public string TopCenterHeaterRampSetPoint
  440. {
  441. get => _topCenterHeaterRampSetPoint;
  442. set
  443. {
  444. _topCenterHeaterRampSetPoint = value;
  445. NotifyOfPropertyChange(nameof(TopCenterHeaterRampSetPoint));
  446. }
  447. }
  448. private string _centerHeaterRampSetPoint;
  449. public string CenterHeaterRampSetPoint
  450. {
  451. get => _centerHeaterRampSetPoint;
  452. set
  453. {
  454. _centerHeaterRampSetPoint = value;
  455. NotifyOfPropertyChange(nameof(CenterHeaterRampSetPoint));
  456. }
  457. }
  458. private string _bottomCenterHeaterRampSetPoint;
  459. public string BottomCenterHeaterRampSetPoint
  460. {
  461. get => _bottomCenterHeaterRampSetPoint;
  462. set
  463. {
  464. _bottomCenterHeaterRampSetPoint = value;
  465. NotifyOfPropertyChange(nameof(BottomCenterHeaterRampSetPoint));
  466. }
  467. }
  468. private string _bottomHeaterRampSetPoint;
  469. public string BottomHeaterRampSetPoint
  470. {
  471. get => _bottomHeaterRampSetPoint;
  472. set
  473. {
  474. _bottomHeaterRampSetPoint = value;
  475. NotifyOfPropertyChange(nameof(BottomHeaterRampSetPoint));
  476. }
  477. }
  478. public string ProfileTable
  479. {
  480. get
  481. {
  482. if (!HeaterUData.IsProfiling)
  483. return "OFF";
  484. if (string.IsNullOrEmpty(HeaterUData.ProfileTable) || HeaterUData.ProfileTable == "None")
  485. return "OFF";
  486. var array = HeaterUData.ProfileTable.Split(',');
  487. if (array == null || array.Length < 2)
  488. {
  489. return "OFF";
  490. }
  491. var fileNameAndPath = array[0];
  492. int.TryParse(array[1], out int index);
  493. var para = fileNameAndPath.Split('\\').ToList().Skip(2);//"Parameter\\TempCorrection"
  494. if (para == null)
  495. {
  496. return "OFF";
  497. }
  498. var fileName = string.Join("\\", para.ToArray());
  499. return $"{fileName} [{index}: {array[2]}]";
  500. }
  501. set
  502. {
  503. }
  504. }
  505. public string ProfileStatusDisplay
  506. {
  507. get
  508. {
  509. if (!HeaterUData.IsProfiling)
  510. return "None";
  511. return HeaterUData.ProfileStatus;
  512. }
  513. }
  514. public string PIDTable
  515. {
  516. get
  517. {
  518. if (string.IsNullOrEmpty(HeaterUData.PIDTable) || HeaterUData.PIDTable == "None")
  519. return "None";
  520. var array = HeaterUData.PIDTable.Split(',');
  521. if (array == null || array.Length < 2)
  522. {
  523. return "None";
  524. }
  525. var fileNameAndPath = array[0];
  526. int.TryParse(array[1], out int index);
  527. var para = fileNameAndPath.Split('\\').ToList().Skip(2);//"Parameter\\TempCorrection"
  528. if (para == null)
  529. {
  530. return "None";
  531. }
  532. var fileName = string.Join("\\", para.ToArray());
  533. return $"{fileName} [{index}: {array[2]}]";
  534. }
  535. set
  536. {
  537. }
  538. }
  539. public string CorrectTable
  540. {
  541. get
  542. {
  543. if (string.IsNullOrEmpty(HeaterUData.CorrectTable) || HeaterUData.CorrectTable == "None")
  544. return "None";
  545. var array = HeaterUData.CorrectTable.Split(',');
  546. if (array == null || array.Length < 3)
  547. {
  548. return "None";
  549. }
  550. var fileNameAndPath = array[0];
  551. int.TryParse(array[1], out int index);
  552. var para = fileNameAndPath.Split('\\').ToList().Skip(2);//"Parameter\\TempCorrection"
  553. if (para == null)
  554. {
  555. return "None";
  556. }
  557. var fileName = string.Join("\\", para.ToArray());
  558. return $"{fileName} [{index}: {array[2]}]";
  559. }
  560. set
  561. {
  562. }
  563. }
  564. public string CheckLimitUDisplay
  565. {
  566. get
  567. {
  568. if (!HeaterUData.IsProfiling)
  569. return "0.0";
  570. return HeaterUData.ProfileCheckLimit.ToString("f1");
  571. }
  572. }
  573. public string CheckLimitCUDisplay
  574. {
  575. get
  576. {
  577. if (!HeaterCUData.IsProfiling)
  578. return "0.0";
  579. return HeaterCUData.ProfileCheckLimit.ToString("f1");
  580. }
  581. }
  582. public string CheckLimitCDisplay
  583. {
  584. get
  585. {
  586. if (!HeaterCData.IsProfiling)
  587. return "0.0";
  588. return HeaterCData.ProfileCheckLimit.ToString("f1");
  589. }
  590. }
  591. public string CheckLimitCLDisplay
  592. {
  593. get
  594. {
  595. if (!HeaterCLData.IsProfiling)
  596. return "0.0";
  597. return HeaterCLData.ProfileCheckLimit.ToString("f1");
  598. }
  599. }
  600. public string CheckLimitLDisplay
  601. {
  602. get
  603. {
  604. if (!HeaterLData.IsProfiling)
  605. return "0.0";
  606. return HeaterLData.ProfileCheckLimit.ToString("f1");
  607. }
  608. }
  609. public string ProfileTotalTimeDisplay
  610. {
  611. get
  612. {
  613. var time = HeaterUData.ProfileTotalTime;
  614. if (!HeaterUData.IsProfiling)
  615. time = 0;
  616. if (time < 0)
  617. time = 0;
  618. TimeSpan span = TimeSpan.FromSeconds(time);
  619. return $"{span.Hours.ToString("D2")}:{span.Minutes.ToString("D2")}:{span.Seconds.ToString("D2")}";
  620. }
  621. }
  622. public string ProfilePreheatTimeDisplay
  623. {
  624. get
  625. {
  626. var time = HeaterUData.ProfilePreheatTime;
  627. if (!HeaterUData.IsProfiling)
  628. time = 0;
  629. if (time < 0)
  630. time = 0;
  631. TimeSpan span = TimeSpan.FromSeconds(time);
  632. return $"{span.Hours.ToString("D2")}:{span.Minutes.ToString("D2")}:{span.Seconds.ToString("D2")}";
  633. }
  634. }
  635. public string ProfileCheckTimeDisplay
  636. {
  637. get
  638. {
  639. var time = HeaterUData.ProfileCheckTime;
  640. if (!HeaterUData.IsProfiling)
  641. time = 0;
  642. if (time < 0)
  643. time = 0;
  644. TimeSpan span = TimeSpan.FromSeconds(time);
  645. return $"{span.Hours.ToString("D2")}:{span.Minutes.ToString("D2")}:{span.Seconds.ToString("D2")}";
  646. }
  647. }
  648. private List<object> _tempList = new List<object>() { "1", "2", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" };
  649. public List<object> TempList
  650. {
  651. get { return _tempList; }
  652. set { _tempList = value; }
  653. }
  654. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  655. {
  656. if (!IsEnableMannual)
  657. {
  658. InitSetPoint();
  659. InitRampRate();
  660. InitUpDownRate();
  661. }
  662. //URange = 9.9;
  663. NotifyOfPropertyChange(nameof(PositiveULength));
  664. NotifyOfPropertyChange(nameof(NegativeULength));
  665. NotifyOfPropertyChange(nameof(PositiveCULength));
  666. NotifyOfPropertyChange(nameof(NegativeCULength));
  667. NotifyOfPropertyChange(nameof(PositiveCLength));
  668. NotifyOfPropertyChange(nameof(NegativeCLength));
  669. NotifyOfPropertyChange(nameof(PositiveCLLength));
  670. NotifyOfPropertyChange(nameof(NegativeCLLength));
  671. NotifyOfPropertyChange(nameof(PositiveLLength));
  672. NotifyOfPropertyChange(nameof(NegativeLLength));
  673. if (_view != null)
  674. {
  675. _view.UpdateLayout();
  676. }
  677. }
  678. public void InitSetPoint()
  679. {
  680. TopHeaterSetPoint = TopHeaterData.SetPoint.ToString("F1");
  681. TopCenterHeaterSetPoint = TopCenterHeaterData.SetPoint.ToString("F1");
  682. CenterHeaterSetPoint = CenterHeaterData.SetPoint.ToString("F1");
  683. CenterBottomHeaterSetPoint = CenterBottomHeaterData.SetPoint.ToString("F1");
  684. BottomHeaterSetPoint = BottomHeaterData.SetPoint.ToString("F1");
  685. //HTCurrent1Feedback = HTCurrent1 == null ? "0.0" : HTCurrent1.FeedBack.ToString("F3");
  686. //HTCurrent2Feedback = HTCurrent2 == null ? "0.0" : HTCurrent2.FeedBack.ToString("F3");
  687. //HTCurrent3Feedback = HTCurrent3 == null ? "0.0" : HTCurrent3.FeedBack.ToString("F3");
  688. //HTCurrent4Feedback = HTCurrent4 == null ? "0.0" : HTCurrent4.FeedBack.ToString("F3");
  689. //HTCurrent5Feedback = HTCurrent5 == null ? "0.0" : HTCurrent5.FeedBack.ToString("F3");
  690. //HTVoltage1Feedback = HTVoltage1 == null ? "0.0" : HTVoltage1.FeedBack.ToString("F3");
  691. //HTVoltage2Feedback = HTVoltage2 == null ? "0.0" : HTVoltage2.FeedBack.ToString("F3");
  692. //HTVoltage3Feedback = HTVoltage3 == null ? "0.0" : HTVoltage3.FeedBack.ToString("F3");
  693. //HTVoltage4Feedback = HTVoltage4 == null ? "0.0" : HTVoltage4.FeedBack.ToString("F3");
  694. //HTVoltage5Feedback = HTVoltage5 == null ? "0.0" : HTVoltage5.FeedBack.ToString("F3");
  695. }
  696. public void InitUpDownRate()
  697. {
  698. TopHeaterUpRateSetpoint = TopHeaterData.UpRateSetPoint.ToString("F1");
  699. TopCenterHeaterUpRateSetpoint = TopCenterHeaterData.UpRateSetPoint.ToString("F1"); ;
  700. CenterHeaterUpRateSetpoint = CenterHeaterData.UpRateSetPoint.ToString("F1"); ;
  701. CenterLowHeaterUpRateSetpoint = CenterBottomHeaterData.UpRateSetPoint.ToString("F1"); ;
  702. LowHeaterUpRateSetpoint = BottomHeaterData.UpRateSetPoint.ToString("F1"); ;
  703. TopHeaterDownRateSetpoint = TopHeaterData.DownRateSetPoint.ToString("F1");
  704. TopCenterHeaterDownRateSetpoint = TopCenterHeaterData.DownRateSetPoint.ToString("F1"); ;
  705. CenterHeaterDownRateSetpoint = CenterHeaterData.DownRateSetPoint.ToString("F1"); ;
  706. CenterLowHeaterDownRateSetpoint = CenterBottomHeaterData.DownRateSetPoint.ToString("F1"); ;
  707. LowHeaterDownRateSetpoint = BottomHeaterData.DownRateSetPoint.ToString("F1"); ;
  708. }
  709. public void InitRampRate()
  710. {
  711. TopHeaterRampSetPoint = CompterRampPoint(TopHeaterData).ToString("F1");
  712. TopCenterHeaterRampSetPoint = CompterRampPoint(TopCenterHeaterData).ToString("F1");
  713. CenterHeaterRampSetPoint = CompterRampPoint(CenterHeaterData).ToString("F1");
  714. BottomCenterHeaterRampSetPoint = CompterRampPoint(CenterBottomHeaterData).ToString("F1");
  715. BottomHeaterRampSetPoint = CompterRampPoint(BottomHeaterData).ToString("F1");
  716. }
  717. protected override void OnInitialize()
  718. {
  719. base.OnInitialize();
  720. string[] strTempsNames = { "Heater1", "Heater2", "Heater3", "Heater4", "Heater5" };
  721. _dicTemperatualMaxValue = new Dictionary<string, double>();
  722. //获取温度限制配置信息
  723. for (int i = 0; i < strTempsNames.Length; i++)
  724. {
  725. object obj = QueryDataClient.Instance.Service.GetConfig($"PM1.Heater.{strTempsNames[i]}.Range");
  726. _dicTemperatualMaxValue.Add(strTempsNames[i], Convert.ToDouble(obj));
  727. }
  728. }
  729. public double CompterRampPoint(AITHeaterData data)
  730. {
  731. if (data.IsLspModeFeedBack)
  732. {
  733. return data.FeedBack >= data.SetPoint ? data.LspDecreaseRampRateFeedBack : data.LspIncreaseRampRateFeedBack;
  734. }
  735. else
  736. {
  737. return data.FeedBack >= data.SetPoint ? data.RspDecreaseRampRateFeedBack : data.RspIncreaseRampRateFeedBack;
  738. }
  739. }
  740. public void ManualCmd()
  741. {
  742. //((Window)GetView()).DialogResult = true;
  743. var wm = IoC.Get<IWindowManager>();
  744. SetTemperatureViewModel setTemperatureViewModel = new SetTemperatureViewModel();
  745. (wm as WindowManager)?.ShowDialogWithTitle(setTemperatureViewModel, null, "Set Temperature");
  746. }
  747. public void SetCmd(object senderName, object sender, object typeName)
  748. {
  749. double temval = 0;
  750. string name = senderName.ToString();
  751. switch (typeName.ToString())
  752. {
  753. case "setpoint":
  754. double maxvalue = 0;
  755. string tName = GetTempratualMaxValue(name);
  756. if (!string.IsNullOrEmpty(tName))
  757. {
  758. maxvalue = _dicTemperatualMaxValue[tName];
  759. }
  760. string strRetValue = ShowNumberKeyboard(sender as Button, "", true, maxvalue);
  761. if (strRetValue != "Cancel")
  762. {
  763. //if (double.TryParse(strRetValue, out temval))
  764. {
  765. SelectPostionSetPoint(name, strRetValue);
  766. }
  767. }
  768. break;
  769. case "ramp":
  770. strRetValue = ShowNumberKeyboard(sender as Button, "", false, 0);
  771. if (strRetValue != "Cancel")
  772. {
  773. //if (double.TryParse(strRetValue, out temval))
  774. {
  775. SelectPositionRamp(name, strRetValue);
  776. }
  777. }
  778. break;
  779. }
  780. }
  781. private string GetTempratualMaxValue(string typeName)
  782. {
  783. string dicName = string.Empty;
  784. bool isLspMode = LspModel != "Outer Control";
  785. switch (typeName)
  786. {
  787. case "TopHeater":
  788. dicName = isLspMode ? "Heater1" : "Heater2";
  789. break;
  790. case "TopCenterHeater":
  791. dicName = isLspMode ? "Heater3" : "Heater4";
  792. break;
  793. case "CenterHeater":
  794. dicName = isLspMode ? "Heater5" : "Heater6";
  795. break;
  796. case "CenterBottomHeater":
  797. dicName = isLspMode ? "Heater7" : "Heater8";
  798. break;
  799. case "BottomHeater":
  800. dicName = isLspMode ? "Heater9" : "Heater10";
  801. break;
  802. }
  803. return dicName;
  804. }
  805. private void SelectPostionSetPoint(string name, string value)
  806. {
  807. switch (name)
  808. {
  809. case "TopHeater":
  810. TopHeaterSetPoint = value;
  811. break;
  812. case "TopCenterHeater":
  813. TopCenterHeaterSetPoint = value;
  814. break;
  815. case "CenterHeater":
  816. CenterHeaterSetPoint = value;
  817. break;
  818. case "CenterBottomHeater":
  819. CenterBottomHeaterSetPoint = value;
  820. break;
  821. case "BottomHeater":
  822. BottomHeaterSetPoint = value;
  823. break;
  824. }
  825. }
  826. private void SelectPositionRamp(string name, string value)
  827. {
  828. switch (name)
  829. {
  830. case "TopHeater":
  831. TopHeaterRampSetPoint = value;
  832. break;
  833. case "TopCenterHeater":
  834. TopCenterHeaterRampSetPoint = value;
  835. break;
  836. case "CenterHeater":
  837. CenterHeaterRampSetPoint = value;
  838. break;
  839. case "CenterBottomHeater":
  840. BottomCenterHeaterRampSetPoint = value;
  841. break;
  842. case "BottomHeater":
  843. BottomHeaterRampSetPoint = value;
  844. break;
  845. }
  846. }
  847. private string ShowNumberKeyboard(Control control, string defaultValue, bool isValidate, double maxValue = double.MaxValue)
  848. {
  849. NumberKeyboard numberKeyboard = new NumberKeyboard("", defaultValue);
  850. var point = control.PointFromScreen(new Point(0, 0));
  851. double wx = SystemParameters.WorkArea.Width;
  852. double hy = SystemParameters.WorkArea.Height;
  853. if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < hy)
  854. {
  855. numberKeyboard.Top = -point.Y + control.ActualHeight + 5;
  856. }
  857. else
  858. {
  859. numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;
  860. }
  861. if (-point.X + numberKeyboard.Width < wx)
  862. {
  863. numberKeyboard.Left = -point.X;
  864. }
  865. else
  866. {
  867. numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);
  868. }
  869. if ((bool)numberKeyboard.ShowDialog())
  870. return numberKeyboard.ValueString;
  871. else
  872. return "Cancel";
  873. }
  874. public void AllZone(string obj)
  875. {
  876. var windowManager = IoC.Get<IWindowManager>();
  877. TemperatureDetailAllZoneViewModel temperatureDetailAllZoneViewModel = new TemperatureDetailAllZoneViewModel();
  878. switch (obj)
  879. {
  880. case "Set":
  881. if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(temperatureDetailAllZoneViewModel, null, "Temperature Value Set"))
  882. {
  883. TopHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  884. TopCenterHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  885. CenterHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  886. CenterBottomHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  887. BottomHeaterSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  888. }
  889. break;
  890. case "Ramp":
  891. if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(temperatureDetailAllZoneViewModel, null, "Temperature Ramp Set"))
  892. {
  893. TopHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  894. TopCenterHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  895. CenterHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  896. BottomCenterHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  897. BottomHeaterRampSetPoint = temperatureDetailAllZoneViewModel.TempSetValue;
  898. }
  899. break;
  900. default:
  901. break;
  902. }
  903. }
  904. public void CloseCmd()
  905. {
  906. ClientApp.Instance.SwitchPage("status", "main", null);
  907. }
  908. }
  909. }