RfMatchBase.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Xml;
  7. using Aitex.Core.Common.DeviceData;
  8. using Aitex.Core.RT.DataCenter;
  9. using Aitex.Core.RT.Device;
  10. using Aitex.Core.RT.Event;
  11. using Aitex.Core.RT.OperationCenter;
  12. using Aitex.Core.RT.SCCore;
  13. using Aitex.Core.RT.Tolerance;
  14. using Aitex.Core.Util;
  15. namespace MECF.Framework.Common.Device.Bases
  16. {
  17. public abstract class RfMatchBase : BaseDevice, IDevice
  18. {
  19. public virtual bool IsConnected => true;
  20. public virtual EnumRfMatchTuneMode TuneMode1 { get; set; }
  21. public virtual EnumRfMatchTuneMode TuneMode2 { get; set; }
  22. public virtual EnumRfMatchTuneMode TuneMode1Setpoint { get; set; }
  23. public virtual EnumRfMatchTuneMode TuneMode2Setpoint { get; set; }
  24. public virtual EnumRfMatchMode AutoMode { get; set; }
  25. public virtual float LoadPosition1 { get; set; }
  26. public virtual float LoadPosition2 { get; set; }
  27. public virtual float LoadPosition1Setpoint { get; set; }
  28. public virtual float LoadPosition2Setpoint { get; set; }
  29. public virtual float TunePosition1 { get; set; }
  30. public virtual float TunePosition2 { get; set; }
  31. public virtual float TunePosition1Setpoint { get; set; }
  32. public virtual float TunePosition2Setpoint { get; set; }
  33. public virtual float Capacitance1PositionFeedBack { get; set; }
  34. public virtual float Capacitance2PositionFeedBack { get; set; }
  35. public virtual float Capacitance1PositionSetpoint { get; set; }
  36. public virtual float Capacitance2PositionSetpoint { get; set; }
  37. public virtual float DCBias { get; set; }
  38. public virtual float BiasPeak { get; set; }
  39. public virtual float Capacitance { get; set; }
  40. public virtual float CapacitanceSetpoint { get; set; }
  41. public virtual float VppFeedBack { get; set; }
  42. public virtual AITRfMatchData DeviceData { get; set; }
  43. protected double _currentTuneFineTuningValue;
  44. protected double _currentLoadFineTuningValue;
  45. protected double _currentCapFineTuningValue;
  46. protected SCConfigItem _scFineTuningEnable;
  47. protected SCConfigItem _scTuneFineTuningValue;
  48. protected SCConfigItem _scLoadFineTuningValue;
  49. protected SCConfigItem _scCapFineTuningValue;
  50. private float _currentTuneWarningRange;
  51. private float _currentLoadWarningRange;
  52. private float _currentCapWarningRange;
  53. private float _currentTuneAlarmRange;
  54. private float _currentLoadAlarmRange;
  55. private float _currentCapAlarmRange;
  56. protected SCConfigItem _scEnableAlarm;
  57. protected SCConfigItem _scTuneAlarmTime;
  58. protected SCConfigItem _scTuneAlarmRange;
  59. protected SCConfigItem _scTuneWarningTime;
  60. protected SCConfigItem _scTuneWarningRange;
  61. protected ToleranceChecker _toleranceTuneAlarmChecker = new ToleranceChecker();
  62. protected ToleranceChecker _toleranceTuneWarningChecker = new ToleranceChecker();
  63. protected SCConfigItem _scLoadAlarmTime;
  64. protected SCConfigItem _scLoadAlarmRange;
  65. protected SCConfigItem _scLoadWarningTime;
  66. protected SCConfigItem _scLoadWarningRange;
  67. protected ToleranceChecker _toleranceLoadAlarmChecker = new ToleranceChecker();
  68. protected ToleranceChecker _toleranceLoadWarningChecker = new ToleranceChecker();
  69. protected SCConfigItem _scCapAlarmTime;
  70. protected SCConfigItem _scCapAlarmRange;
  71. protected SCConfigItem _scCapWarningTime;
  72. protected SCConfigItem _scCapWarningRange;
  73. protected SCConfigItem _scRecipeIgnoreTime;
  74. protected SCConfigItem _scStableCriteria;
  75. protected ToleranceChecker _toleranceCapAlarmChecker = new ToleranceChecker();
  76. protected ToleranceChecker _toleranceCapWarningChecker = new ToleranceChecker();
  77. protected DeviceTimer _recipeIgnoreTimer = new DeviceTimer();
  78. public virtual double CapFineTuningValue
  79. {
  80. get
  81. {
  82. if (_scFineTuningEnable == null || !_scFineTuningEnable.BoolValue)
  83. return 1;
  84. if (_currentCapFineTuningValue != 0)
  85. return 1 + _currentCapFineTuningValue / 100;
  86. return _scCapFineTuningValue != null ? 1 + _scCapFineTuningValue.DoubleValue / 100 : 1;
  87. }
  88. }
  89. public virtual double TuneFineTuningValue
  90. {
  91. get
  92. {
  93. if (_scFineTuningEnable == null || !_scFineTuningEnable.BoolValue)
  94. return 1;
  95. if (_currentTuneFineTuningValue != 0)
  96. return 1 + _currentTuneFineTuningValue / 100;
  97. return _scTuneFineTuningValue != null ? 1 + _scTuneFineTuningValue.DoubleValue / 100 : 1;
  98. }
  99. }
  100. public virtual double FineTuningValue
  101. {
  102. get
  103. {
  104. if (_scFineTuningEnable == null || !_scFineTuningEnable.BoolValue)
  105. return 1;
  106. if (_currentLoadFineTuningValue != 0)
  107. return 1 + _currentLoadFineTuningValue / 100;
  108. return _scLoadFineTuningValue != null ? 1 + _scLoadFineTuningValue.DoubleValue / 100 : 1;
  109. }
  110. }
  111. public virtual bool EnableAlarm
  112. {
  113. get
  114. {
  115. if (_scEnableAlarm != null)
  116. return _scEnableAlarm.BoolValue;
  117. return false;
  118. }
  119. }
  120. public virtual double TuneAlarmTime
  121. {
  122. get
  123. {
  124. if (_scTuneAlarmTime != null)
  125. return _scTuneAlarmTime.DoubleValue;
  126. return 0;
  127. }
  128. }
  129. public virtual double TuneAlarmRange
  130. {
  131. get
  132. {
  133. if (_currentTuneAlarmRange > 0)
  134. return _currentTuneAlarmRange;
  135. if (_scTuneAlarmRange != null)
  136. return _scTuneAlarmRange.DoubleValue;
  137. return 0;
  138. }
  139. }
  140. public virtual double TuneWarningTime
  141. {
  142. get
  143. {
  144. if (_scTuneWarningTime != null)
  145. return _scTuneWarningTime.DoubleValue;
  146. return 0;
  147. }
  148. }
  149. public virtual double TuneWarningRange
  150. {
  151. get
  152. {
  153. if (_currentTuneWarningRange > 0)
  154. return _currentTuneWarningRange;
  155. if (_scTuneWarningRange != null)
  156. return _scTuneWarningRange.DoubleValue;
  157. return 0;
  158. }
  159. }
  160. public virtual double LoadAlarmTime
  161. {
  162. get
  163. {
  164. if (_scLoadAlarmTime != null)
  165. return _scLoadAlarmTime.DoubleValue;
  166. return 0;
  167. }
  168. }
  169. public virtual double LoadAlarmRange
  170. {
  171. get
  172. {
  173. if (_currentLoadAlarmRange > 0)
  174. return _currentLoadAlarmRange;
  175. if (_scLoadAlarmRange != null)
  176. return _scLoadAlarmRange.DoubleValue;
  177. return 0;
  178. }
  179. }
  180. public virtual double LoadWarningTime
  181. {
  182. get
  183. {
  184. if (_scLoadWarningTime != null)
  185. return _scLoadWarningTime.DoubleValue;
  186. return 0;
  187. }
  188. }
  189. public virtual double LoadWarningRange
  190. {
  191. get
  192. {
  193. if (_currentLoadWarningRange > 0)
  194. return _currentLoadWarningRange;
  195. if (_scLoadWarningRange != null)
  196. return _scLoadWarningRange.DoubleValue;
  197. return 0;
  198. }
  199. }
  200. public virtual double CapAlarmTime
  201. {
  202. get
  203. {
  204. if (_scCapAlarmTime != null)
  205. return _scCapAlarmTime.DoubleValue;
  206. return 0;
  207. }
  208. }
  209. public virtual double CapAlarmRange
  210. {
  211. get
  212. {
  213. if (_currentCapAlarmRange > 0)
  214. return _currentCapAlarmRange;
  215. if (_scCapAlarmRange != null)
  216. return _scCapAlarmRange.DoubleValue;
  217. return 0;
  218. }
  219. }
  220. public virtual double CapWarningTime
  221. {
  222. get
  223. {
  224. if (_scCapWarningTime != null)
  225. return _scCapWarningTime.DoubleValue;
  226. return 0;
  227. }
  228. }
  229. public virtual double CapWarningRange
  230. {
  231. get
  232. {
  233. if (_currentCapWarningRange > 0)
  234. return _currentCapWarningRange;
  235. if (_scCapWarningRange != null)
  236. return _scCapWarningRange.DoubleValue;
  237. return 0;
  238. }
  239. }
  240. //unit second
  241. public virtual double RecipeIgnoreTime
  242. {
  243. get
  244. {
  245. if (_scRecipeIgnoreTime != null)
  246. return _scRecipeIgnoreTime.DoubleValue;
  247. return 0;
  248. }
  249. }
  250. public virtual bool IsStable
  251. {
  252. get
  253. {
  254. return false;
  255. }
  256. }
  257. protected RfMatchBase(string module, string name) : base(module, name, name, name)
  258. {
  259. _scEnableAlarm = SC.GetConfigItem($"{Module}.{Name}.EnableAlarm");
  260. _scTuneAlarmTime = SC.GetConfigItem($"{Module}.{Name}.TuneAlarmTime");
  261. _scTuneAlarmRange = SC.GetConfigItem($"{Module}.{Name}.TuneAlarmRange");
  262. _scTuneWarningTime = SC.GetConfigItem($"{Module}.{Name}.TuneWarningTime");
  263. _scTuneWarningRange = SC.GetConfigItem($"{Module}.{Name}.TuneWarningRange");
  264. _scLoadAlarmTime = SC.GetConfigItem($"{Module}.{Name}.LoadAlarmTime");
  265. _scLoadAlarmRange = SC.GetConfigItem($"{Module}.{Name}.LoadAlarmRange");
  266. _scLoadWarningTime = SC.GetConfigItem($"{Module}.{Name}.LoadWarningTime");
  267. _scLoadWarningRange = SC.GetConfigItem($"{Module}.{Name}.LoadWarningRange");
  268. _scTuneFineTuningValue = SC.GetConfigItem($"{Module}.FineTuning.{Name}Tune");
  269. _scLoadFineTuningValue = SC.GetConfigItem($"{Module}.FineTuning.{Name}Load");
  270. _scFineTuningEnable = SC.GetConfigItem($"{Module}.FineTuning.IsEnable");
  271. _scCapAlarmTime = SC.GetConfigItem($"{Module}.{Name}.CapAlarmTime");
  272. _scCapAlarmRange = SC.GetConfigItem($"{Module}.{Name}.CapAlarmRange");
  273. _scCapWarningTime = SC.GetConfigItem($"{Module}.{Name}.CapWarningTime");
  274. _scCapWarningRange = SC.GetConfigItem($"{Module}.{Name}.CapWarningRange");
  275. _scRecipeIgnoreTime = SC.GetConfigItem($"{Module}.{Name}.RecipeIgnoreTime");
  276. _scStableCriteria = SC.GetConfigItem($"{Module}.{Name}.StableCriteria");
  277. }
  278. protected RfMatchBase(string module, string name, XmlElement node = null, string ioModule = "") : base(module, name, name, name)
  279. {
  280. if (node != null)
  281. {
  282. _scEnableAlarm = ParseScNode("scEnableAlarm", node, ioModule, $"{Module}.{Name}.EnableAlarm");
  283. _scTuneAlarmTime = ParseScNode("scTuneAlarmTime", node, ioModule, $"{Module}.{Name}.TuneAlarmTime");
  284. _scTuneAlarmRange = ParseScNode("scTuneAlarmRange", node, ioModule, $"{Module}.{Name}.TuneAlarmRange");
  285. _scTuneWarningTime = ParseScNode("scTuneWarningTime", node, ioModule, $"{Module}.{Name}.TuneWarningTime");
  286. _scTuneWarningRange = ParseScNode("scTuneWarningRange", node, ioModule, $"{Module}.{Name}.TuneWarningRange");
  287. _scLoadAlarmTime = ParseScNode("scLoadAlarmTime", node, ioModule, $"{Module}.{Name}.LoadAlarmTime");
  288. _scLoadAlarmRange = ParseScNode("scLoadAlarmRange", node, ioModule, $"{Module}.{Name}.LoadAlarmRange");
  289. _scLoadWarningTime = ParseScNode("scLoadWarningTime", node, ioModule, $"{Module}.{Name}.LoadWarningTime");
  290. _scLoadWarningRange = ParseScNode("scLoadWarningRange", node, ioModule, $"{Module}.{Name}.LoadWarningRange");
  291. _scTuneFineTuningValue = ParseScNode("scTuneFineTuningValue", node, ioModule, $"{Module}.FineTuning.{Name}Tune");
  292. _scLoadFineTuningValue = ParseScNode("scLoadFineTuningValue", node, ioModule, $"{Module}.FineTuning.{Name}Load");
  293. _scFineTuningEnable = ParseScNode("scFineTuningEnable", node, ioModule, $"{Module}.FineTuning.IsEnable");
  294. _scCapAlarmTime = ParseScNode("scCapAlarmTime", node, ioModule, $"{Module}.{Name}.CapAlarmTime");
  295. _scCapAlarmRange = ParseScNode("scCapAlarmRange", node, ioModule, $"{Module}.{Name}.CapAlarmRange");
  296. _scCapWarningTime = ParseScNode("scCapWarningTime", node, ioModule, $"{Module}.{Name}.CapWarningTime");
  297. _scCapWarningRange = ParseScNode("scCapWarningRange", node, ioModule, $"{Module}.{Name}.CapWarningRange");
  298. _scRecipeIgnoreTime = ParseScNode("scRecipeIgnoreTime", node, ioModule, $"{Module}.{Name}.RecipeIgnoreTime");
  299. _scStableCriteria = ParseScNode("scStableCriteria", node, ioModule, $"{Module}.{Name}.StableCriteria");
  300. }
  301. }
  302. public virtual bool Initialize()
  303. {
  304. DATA.Subscribe($"{Module}.{Name}.DeviceData", () => DeviceData);
  305. DATA.Subscribe($"{Module}.{Name}.TuneMode1", () => TuneMode1.ToString());
  306. DATA.Subscribe($"{Module}.{Name}.TuneMode2", () => TuneMode2.ToString());
  307. DATA.Subscribe($"{Module}.{Name}.AutoMode", () => AutoMode.ToString());
  308. DATA.Subscribe($"{Module}.{Name}.LoadPosition1", () => LoadPosition1);
  309. DATA.Subscribe($"{Module}.{Name}.LoadPosition2", () => LoadPosition2);
  310. DATA.Subscribe($"{Module}.{Name}.TunePosition1", () => TunePosition1);
  311. DATA.Subscribe($"{Module}.{Name}.TunePosition2", () => TunePosition2);
  312. DATA.Subscribe($"{Module}.{Name}.Capacitance", () => Capacitance);
  313. DATA.Subscribe($"{Module}.{Name}.CapacitanceSetpoint", () => CapacitanceSetpoint);
  314. DATA.Subscribe($"{Module}.{Name}.Capacitance1PositionFeedBack", () => Capacitance1PositionFeedBack);
  315. DATA.Subscribe($"{Module}.{Name}.Capacitance1PositionSetpoint", () => Capacitance1PositionSetpoint);
  316. DATA.Subscribe($"{Module}.{Name}.Capacitance2PositionFeedBack", () => Capacitance2PositionFeedBack);
  317. DATA.Subscribe($"{Module}.{Name}.Capacitance2PositionSetpoint", () => Capacitance2PositionSetpoint);
  318. DATA.Subscribe($"{Module}.{Name}.VppFeedBack", () => VppFeedBack);
  319. OP.Subscribe($"{Module}.{Name}.SetTuneMode1", (function, args) =>
  320. {
  321. if (!Enum.TryParse((string)args[0], out EnumRfMatchTuneMode mode))
  322. {
  323. EV.PostWarningLog(Module, $"Argument {args[0]}not valid");
  324. return false;
  325. }
  326. SetTuneMode1(mode);
  327. return true;
  328. });
  329. OP.Subscribe($"{Module}.{Name}.SetLoad1", (function, args) =>
  330. {
  331. SetLoad1((float)args[0]);
  332. return true;
  333. });
  334. OP.Subscribe($"{Module}.{Name}.SetTune1", (function, args) =>
  335. {
  336. SetTune1((float)args[0]);
  337. return true;
  338. });
  339. OP.Subscribe($"{Module}.{Name}.SetTuneMode2", (function, args) =>
  340. {
  341. if (!Enum.TryParse((string)args[0], out EnumRfMatchTuneMode mode))
  342. {
  343. EV.PostWarningLog(Module, $"Argument {args[0]}not valid");
  344. return false;
  345. }
  346. SetTuneMode2(mode);
  347. return true;
  348. });
  349. OP.Subscribe($"{Module}.{Name}.SetLoad2", (function, args) =>
  350. {
  351. SetLoad2((float)args[0]);
  352. return true;
  353. });
  354. OP.Subscribe($"{Module}.{Name}.SetTune2", (function, args) =>
  355. {
  356. SetTune2((float)args[0]);
  357. return true;
  358. });
  359. OP.Subscribe($"{Module}.{Name}.SetActivePresetNo1", (function, args) =>
  360. {
  361. SetActivePresetNo1((int)args[0]);
  362. return true;
  363. });
  364. OP.Subscribe($"{Module}.{Name}.SetActivePresetNo2", (function, args) =>
  365. {
  366. SetActivePresetNo2((int)args[0]);
  367. return true;
  368. });
  369. OP.Subscribe($"{Module}.{Name}.SetPreSetsAndTrajectories1", (function, args) =>
  370. {
  371. SetPreSetsAndTrajectories1((Presets)args[0]);
  372. return true;
  373. });
  374. OP.Subscribe($"{Module}.{Name}.SetPreSetsAndTrajectories2", (function, args) =>
  375. {
  376. SetPreSetsAndTrajectories2((Presets)args[0]);
  377. return true;
  378. });
  379. OP.Subscribe($"{Module}.{Name}.EnablePreset1", (function, args) =>
  380. {
  381. EnablePreset1((bool)args[0]);
  382. return true;
  383. });
  384. OP.Subscribe($"{Module}.{Name}.EnablePreset2", (function, args) =>
  385. {
  386. EnablePreset2((bool)args[0]);
  387. return true;
  388. });
  389. OP.Subscribe($"{Module}.{Name}.EnableCapacitorMove1", (function, args) =>
  390. {
  391. EnableCapacitorMove1((bool)args[0]);
  392. return true;
  393. });
  394. OP.Subscribe($"{Module}.{Name}.EnableCapacitorMove2", (function, args) =>
  395. {
  396. EnableCapacitorMove2((bool)args[0]);
  397. return true;
  398. });
  399. OP.Subscribe($"{Module}.{Name}.SetCapacitance", (function, args) =>
  400. {
  401. SetCapacitance(Convert.ToSingle(args[0]), out string reason);
  402. return true;
  403. });
  404. //for recipe
  405. OP.Subscribe($"{Module}.{Name}.SetTolerance", (out string reason, int time, object[] param) =>
  406. {
  407. reason = string.Empty;
  408. var tuneWarning = Convert.ToSingle(param[0]);
  409. var tuneAlarm = Convert.ToSingle(param[1]);
  410. var loadWarning = Convert.ToSingle(param[2]);
  411. var loadAlarm = Convert.ToSingle(param[3]);
  412. SetTolerance((float)tuneWarning, (float)tuneAlarm, (float)loadWarning, (float)loadAlarm);
  413. return true;
  414. });
  415. //for recipe
  416. OP.Subscribe($"{Module}.{Name}.SetCapTolerance", (out string reason, int time, object[] param) =>
  417. {
  418. reason = string.Empty;
  419. var capWarning = Convert.ToSingle(param[0]);
  420. var capAlarm = Convert.ToSingle(param[1]);
  421. SetTolerance((float)capWarning, (float)capAlarm);
  422. return true;
  423. });
  424. //for recipe
  425. OP.Subscribe($"{Module}.{Name}.SetFineTuning", (out string reason, int time, object[] param) =>
  426. {
  427. reason = string.Empty;
  428. SetFineTuning(Convert.ToSingle(param[0]), Convert.ToSingle(param[1]));
  429. return true;
  430. });
  431. //for recipe
  432. OP.Subscribe($"{Module}.{Name}.SetCapacitance", (out string reason, int time, object[] param) =>
  433. {
  434. reason = string.Empty;
  435. if (param.Length >= 2)
  436. SetCapacitance(Convert.ToSingle(param[0]), Convert.ToSingle(param[1]), out reason);
  437. else
  438. SetCapacitance(Convert.ToSingle(param[0]), out reason);
  439. return true;
  440. });
  441. //for recipe
  442. OP.Subscribe($"{Module}.{Name}.SetCapFineTuning", (out string reason, int time, object[] param) =>
  443. {
  444. reason = string.Empty;
  445. SetFineTuning(Convert.ToSingle(param[0]));
  446. return true;
  447. });
  448. InitSc();
  449. return true;
  450. }
  451. protected virtual void InitSc()
  452. {
  453. }
  454. public virtual void SetTolerance(float capWarning, float capAlarm)
  455. {
  456. _currentCapWarningRange = capWarning;
  457. _currentCapAlarmRange = capAlarm;
  458. _toleranceCapAlarmChecker.Reset(CapAlarmTime);
  459. _toleranceCapWarningChecker.Reset(CapWarningTime);
  460. if (RecipeIgnoreTime > 0)
  461. _recipeIgnoreTimer.Start(0);
  462. }
  463. public virtual void SetTolerance(float tuneWarning, float tuneAlarm, float loadWarning, float loadAlarm)
  464. {
  465. _currentTuneWarningRange = tuneWarning;
  466. _currentTuneAlarmRange = tuneAlarm;
  467. _toleranceTuneAlarmChecker.Reset(TuneAlarmTime);
  468. _toleranceTuneWarningChecker.Reset(TuneWarningTime);
  469. _currentLoadWarningRange = loadWarning;
  470. _currentLoadAlarmRange = loadAlarm;
  471. _toleranceLoadAlarmChecker.Reset(LoadAlarmTime);
  472. _toleranceLoadWarningChecker.Reset(LoadWarningTime);
  473. if (RecipeIgnoreTime > 0)
  474. _recipeIgnoreTimer.Start(0);
  475. }
  476. public virtual void SetFineTuning(float capFineTuning)
  477. {
  478. _currentCapFineTuningValue = capFineTuning;
  479. }
  480. public virtual void SetFineTuning(float tuneFineTuning, float loadFineTuning)
  481. {
  482. _currentTuneFineTuningValue = tuneFineTuning;
  483. _currentLoadFineTuningValue = loadFineTuning;
  484. }
  485. public virtual void CheckTolerance()
  486. {
  487. if (!EnableAlarm || TuneMode1 == EnumRfMatchTuneMode.Auto || (RecipeIgnoreTime > 0 && _recipeIgnoreTimer.GetElapseTime() < RecipeIgnoreTime * 1000))
  488. return;
  489. if (TunePosition1Setpoint != 0)
  490. {
  491. _toleranceTuneAlarmChecker.Monitor(TunePosition1, (TunePosition1Setpoint * (1 - TuneAlarmRange / 100)), (TunePosition1Setpoint * (1 + TuneAlarmRange / 100)), TuneAlarmTime);
  492. _toleranceTuneWarningChecker.Monitor(TunePosition1, (TunePosition1Setpoint * (1 - TuneWarningRange / 100)), (TunePosition1Setpoint * (1 + TuneWarningRange / 100)), TuneWarningTime);
  493. }
  494. if (LoadPosition1Setpoint != 0)
  495. {
  496. _toleranceLoadAlarmChecker.Monitor(LoadPosition1, (LoadPosition1Setpoint * (1 - LoadAlarmRange / 100)), (LoadPosition1Setpoint * (1 + LoadAlarmRange / 100)), LoadAlarmTime);
  497. _toleranceLoadWarningChecker.Monitor(LoadPosition1, (LoadPosition1Setpoint * (1 - LoadWarningRange / 100)), (LoadPosition1Setpoint * (1 + LoadWarningRange / 100)), LoadWarningTime);
  498. }
  499. if (CapacitanceSetpoint != 0)
  500. {
  501. _toleranceCapAlarmChecker.Monitor(Capacitance, (CapacitanceSetpoint * (1 - CapAlarmRange / 100)), (CapacitanceSetpoint * (1 + CapAlarmRange / 100)), CapAlarmTime);
  502. _toleranceCapWarningChecker.Monitor(Capacitance, (CapacitanceSetpoint * (1 - CapWarningRange / 100)), (CapacitanceSetpoint * (1 + CapWarningRange / 100)), CapWarningTime);
  503. }
  504. }
  505. public virtual bool CheckTuneToleranceAlarm()
  506. {
  507. if (!EnableAlarm)
  508. return false;
  509. return _toleranceTuneAlarmChecker.Result;
  510. }
  511. public virtual bool CheckLoadToleranceAlarm()
  512. {
  513. if (!EnableAlarm)
  514. return false;
  515. return _toleranceLoadAlarmChecker.Result;
  516. }
  517. public virtual bool CheckTuneToleranceWarning()
  518. {
  519. if (!EnableAlarm)
  520. return false;
  521. return _toleranceTuneWarningChecker.Result;
  522. }
  523. public virtual bool CheckLoadToleranceWarning()
  524. {
  525. if (!EnableAlarm)
  526. return false;
  527. return _toleranceLoadWarningChecker.Result;
  528. }
  529. public virtual bool CheckCapToleranceWarning()
  530. {
  531. if (!EnableAlarm)
  532. return false;
  533. return _toleranceCapWarningChecker.Result;
  534. }
  535. public virtual bool CheckCapToleranceAlarm()
  536. {
  537. if (!EnableAlarm)
  538. return false;
  539. return _toleranceCapAlarmChecker.Result;
  540. }
  541. public virtual void SetPreSetsAndTrajectories1(Presets presets)
  542. {
  543. throw new NotImplementedException();
  544. }
  545. public virtual void SetActivePresetNo2(int v)
  546. {
  547. throw new NotImplementedException();
  548. }
  549. public virtual void SetPreSetsAndTrajectories2(Presets presets)
  550. {
  551. throw new NotImplementedException();
  552. }
  553. public virtual void EnablePreset1(bool v)
  554. {
  555. throw new NotImplementedException();
  556. }
  557. public virtual void EnablePreset2(bool v)
  558. {
  559. throw new NotImplementedException();
  560. }
  561. public virtual void EnableCapacitorMove1(bool v)
  562. {
  563. throw new NotImplementedException();
  564. }
  565. public virtual void EnableCapacitorMove2(bool v)
  566. {
  567. throw new NotImplementedException();
  568. }
  569. public virtual void SetActivePresetNo1(int v)
  570. {
  571. throw new NotImplementedException();
  572. }
  573. public virtual void SetTuneMode1(EnumRfMatchTuneMode enumRfMatchTuneMode)
  574. {
  575. }
  576. public virtual void SetLoad1(float load)
  577. {
  578. }
  579. public virtual void SetTune1(float tune)
  580. {
  581. }
  582. public virtual void SetTuneMode2(EnumRfMatchTuneMode enumRfMatchTuneMode)
  583. {
  584. }
  585. public virtual void SetLoad2(float load)
  586. {
  587. }
  588. public virtual void SetTune2(float tune)
  589. {
  590. }
  591. public virtual bool SetCapacitance(float cap, out string reason)
  592. {
  593. reason = string.Empty;
  594. return true;
  595. }
  596. public virtual bool SetCapacitance(float cap, float rampTimes, out string reason)
  597. {
  598. reason = string.Empty;
  599. return true;
  600. }
  601. public virtual void SetAutoMode(bool isAuto)
  602. {
  603. }
  604. public virtual void SetCapacitance1Position(float position)
  605. {
  606. }
  607. public virtual void SetCapacitance2Position(float position)
  608. {
  609. }
  610. public virtual void DeviceReset(bool isInit)
  611. {
  612. }
  613. public virtual void SetPrePositionOn(bool isOn)
  614. {
  615. }
  616. public virtual void Terminate()
  617. {
  618. }
  619. public virtual void Monitor()
  620. {
  621. CheckTolerance();
  622. }
  623. public virtual void Reset()
  624. {
  625. }
  626. }
  627. }