Example #1
0
        public static void UpdateAnalogStatistic(ref AnalogStatisticModel analogStatisticModel,
                                                 List <AnalogStatisticModel> analogStatisticModels,
                                                 RealDataModel realDataModel, AnalogPointModel model)
        {
            if (analogStatisticModel == null)
            {
                analogStatisticModel = NewAnalogStatisticModel(realDataModel, model);
                analogStatisticModels.Add(analogStatisticModel);
            }
            else
            {
                if (!realDataModel.IaAnalogOK)
                {
                    return;
                }
                var realValue = realDataModel.RealValue.Value <float>();
                if (realValue < analogStatisticModel.MinValue)
                {
                    analogStatisticModel.MinValue     = realValue;
                    analogStatisticModel.MinValueTime = realDataModel.RealDate;
                }
                else if (realValue > analogStatisticModel.MaxValue)
                {
                    analogStatisticModel.MaxValue     = realValue;
                    analogStatisticModel.MaxValueTime = realDataModel.RealDate;
                    analogStatisticModel.State        = realDataModel.RealState;
                }

                analogStatisticModel.SumValue += realValue;
                analogStatisticModel.SumCount++;
                if (analogStatisticModel.IsTimeToSave(realDataModel))
                {
                    var newM = analogStatisticModel.DeepClone();
                    AnalogStatisticModel existM;
                    if ((existM = analogStatisticModels.FirstOrDefault(o => o.PointID == newM.PointID && o.StartTime == newM.StartTime)) != null)
                    {
                        existM.SumCount     = newM.SumCount;
                        existM.SumValue     = newM.SumValue;
                        existM.MaxValueTime = newM.MaxValueTime;
                        existM.MaxValue     = newM.MaxValue;
                        existM.MinValue     = newM.MinValue;
                        existM.MinValueTime = newM.MinValueTime;
                    }
                    else
                    {
                        analogStatisticModels.Add(analogStatisticModel.DeepClone());
                    }
                }

                if (analogStatisticModel.IsRequireNew(realDataModel))
                {
                    // 需要新增加一条数据.
                    analogStatisticModel = NewAnalogStatisticModel(realDataModel, model);
                    analogStatisticModels.Add(analogStatisticModel.DeepClone());
                }
            }
        }
Example #2
0
        private void UpdateAnalogOff(DateTime now)
        {
            LogD.Info($"传感器[{PointID}]状态为真正断线...");
            var value      = "模拟量断线";
            var valueState = PointState.OFF;

            //是真正的断线
            RealDataModel.Update(now, value, valueState);
            _analogRunModel.Update(RealDataModel);
            _analogRunModels.Add(_analogRunModel);
            AnalogStatisticModel.UpdateAnalogStatistic(ref _analogStatisticModel, _analogStatisticModels, RealDataModel, this);
            AnalogAlarmModel.UpdateAnalogAlarm(ref _analogAlarmModel, _analogAlarmModels, RealDataModel, this, IsAlarmState);
            Alarm_TodayModel.UpdateAlarmToday(ref _alarmTodayModel, _alarmTodayModels, RealDataModel, this, IsAlarmState);
            DeviceFaultRunModel.UpdateDeviceFaultRun(ref _deviceFaultRunModel, _deviceFaultRunModels, RealDataModel, this, IsAlarmState);
        }
Example #3
0
 internal void Update(DateTime now)
 {
     _analogOffCount++;
     if (new[] { PointState.UnKnow, PointState.Init }.All(o => o != (PointState)RealDataModel.RealState) && _analogOffCount <= DasConfig.SensorTimeoutCount)
     {
         LogD.Info($"传感器[{PointID}]处于断线屏蔽次数之内:当前屏蔽次数:{_analogOffCount}");
         RealDataModel.Update(now);
         //处于屏蔽次数之内
         _analogRunModels.Add(_analogRunModel);
         AnalogStatisticModel.UpdateAnalogStatistic(ref _analogStatisticModel, _analogStatisticModels, RealDataModel, this);
         AnalogAlarmModel.UpdateAnalogAlarm(ref _analogAlarmModel, _analogAlarmModels, RealDataModel, this, IsAlarmState);
         Alarm_TodayModel.UpdateAlarmToday(ref _alarmTodayModel, _alarmTodayModels, RealDataModel, this, IsAlarmState);
         DeviceFaultRunModel.UpdateDeviceFaultRun(ref _deviceFaultRunModel, _deviceFaultRunModels, RealDataModel, this, IsAlarmState);
     }
     else
     {
         UpdateAnalogOff(now);
     }
 }
Example #4
0
        internal void Update(DateTime now, List <SensorRealDataInfo> sensorRealDataInfos)
        {
            var sensorRealData = sensorRealDataInfos.FirstOrDefault(p => p.EquipCodes.Exists(q => q == EquipCode));

            if (sensorRealData.IsAnalogOk)
            {
                _analogOffCount = 0;
                PointState valueState = PointState.OK;
                HandleAnalogAlarm(sensorRealData.Value, ref valueState);
                RealDataModel.Update(now, sensorRealData.Value.ToString("f2"), valueState);
                _analogRunModel.Update(RealDataModel);
                _analogRunModels.Add(_analogRunModel);
                AnalogStatisticModel.UpdateAnalogStatistic(ref _analogStatisticModel, _analogStatisticModels, RealDataModel, this);
                AnalogAlarmModel.UpdateAnalogAlarm(ref _analogAlarmModel, _analogAlarmModels, RealDataModel, this, IsAlarmState);
                Alarm_TodayModel.UpdateAlarmToday(ref _alarmTodayModel, _alarmTodayModels, RealDataModel, this, IsAlarmState);
                DeviceFaultRunModel.UpdateDeviceFaultRun(ref _deviceFaultRunModel, _deviceFaultRunModels, RealDataModel, this, IsAlarmState);
            }
            else
            {
                Update(now);
            }
        }
Example #5
0
        private static AnalogStatisticModel NewAnalogStatisticModel(RealDataModel realDataModel, AnalogPointModel analogPointModel)
        {
            var model = new AnalogStatisticModel();

            model.PointID         = realDataModel.PointID;
            model.PointName       = realDataModel.PointName;
            model.SubStationID    = realDataModel.SubStationID;
            model.PortNO          = realDataModel.PortNO;
            model.Location        = analogPointModel.Location;
            model.UnitName        = analogPointModel.UnitName;
            model.MonitoringValue = realDataModel.RealValue;
            model.State           = realDataModel.RealState;
            model.StartTime       = RoundDown(realDataModel.RealDate, TimeSpan.FromMinutes(5));
            model.EndTime         = RoundUp(realDataModel.RealDate, TimeSpan.FromMinutes(5));
            model.MinValue        = realDataModel.RealValue.Value <float>();
            model.MinValueTime    = realDataModel.RealDate;
            model.MaxValue        = realDataModel.RealValue.Value <float>();
            model.MaxValueTime    = realDataModel.RealDate;
            model.SumValue        = realDataModel.RealValue.Value <float>();
            model.SumCount        = 1;
            model.AvgValue        = realDataModel.RealValue;
            return(model);
        }