123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using Aitex.Core.RT.Log;
- using System.Collections.Generic;
- using System.Diagnostics;
- using Venus_Core;
- namespace Aitex.Core.RT.Tolerance
- {
- public class RecipeToleranceChecker
- {
- Stopwatch _stopwatch;
- List<ToleranceObject> _toleranceObjects;
- string _Module;
- public bool IsStable = true;
- public RecipeToleranceChecker(string module)
- {
- _stopwatch = new Stopwatch();
- _Module = module;
- }
- public void Start( List<ToleranceObject> toleranceObjects)
- {
- _stopwatch.Restart();
- _toleranceObjects = toleranceObjects;
- IsStable = false;
- }
- public RState Monitor(params double[] feedBacks)
- {
- if (_toleranceObjects == null)
- {
- return RState.Running;
- }
- for (int i = 0; i < _toleranceObjects.Count; i++)
- {
- if (_stopwatch.ElapsedMilliseconds > _toleranceObjects[i].DelayTime)
- {
- if ((feedBacks[i] < _toleranceObjects[i].AlarmMin || feedBacks[i] > _toleranceObjects[i].AlarmMax) && _toleranceObjects[i].AlarmFlag == false && _toleranceObjects[i].SetPoint!=0 && _toleranceObjects[i].WarningFlag == true)
- {
- _toleranceObjects[i].AlarmFlag = true;
- LOG.Write(eEvent.ERR_PM_TOLERANCE, _Module, $"{_toleranceObjects[i].Name}:Currnt Value:{feedBacks[i]},Over Range {_toleranceObjects[i].AlarmMin}-{_toleranceObjects[i].AlarmMax}" );
- return RState.Failed;
- }
- else if ((feedBacks[i] < _toleranceObjects[i].WarningMin || feedBacks[i] > _toleranceObjects[i].WarningMax) && _toleranceObjects[i].WarningFlag == false && _toleranceObjects[i].SetPoint != 0)
- {
- IsStable = false;
- _toleranceObjects[i].WarningFlag = true;
- LOG.Write(eEvent.WARN_PM_TOLERANCE, _Module, $"{_toleranceObjects[i].Name}:Currnt Value:{feedBacks[i]},Over Range {_toleranceObjects[i].WarningMin}-{_toleranceObjects[i].WarningMax}");
- }
- else
- {
- IsStable = true;
- }
- }
- }
- return RState.Running;
- }
- public void End()
- {
- _stopwatch.Stop();
- }
- }
- public class ToleranceObject
- {
- public string Name { get; set; }
- public float SetPoint { get; set; }
- public float WarningScale { get; set; }
- public float AlarmScale { get; set; }
- public bool WarningFlag { get; set; }
- public bool AlarmFlag { get; set; }
- public int DelayTime { get; set; }
- public float WarningMax { get; set; }
- public float WarningMin { get; set; }
- public float AlarmMax { get; set; }
- public float AlarmMin { get; set; }
- public ToleranceObject(string name, float setPoint, float warningScale, float alarmScale, int delayTime, ToleranceMode toleranceMode)
- {
- Name = name;
- SetPoint = setPoint;
-
- DelayTime = delayTime;
- if (toleranceMode == ToleranceMode.Percent)
- {
- WarningScale = SetPoint * warningScale / 100;
- AlarmScale = SetPoint * alarmScale / 100;
- }
- else
- {
- WarningScale = warningScale;
- AlarmScale = alarmScale;
- }
- WarningMax = setPoint + WarningScale;
- WarningMin = setPoint - WarningScale;
- AlarmMax = setPoint + AlarmScale;
- AlarmMin = setPoint - AlarmScale;
- }
- }
- }
|