private AnalogMeasurement GetPopulatedAnalogMeasurement(ResourceDescription rs) { AnalogMeasurement measurement = new AnalogMeasurement(); try { measurement.Id = rs.Id; measurement.Address = rs.GetProperty(ModelCode.MEASUREMENT_ADDRESS).AsString(); measurement.IsInput = rs.GetProperty(ModelCode.MEASUREMENT_ISINPUT).AsBool(); measurement.CurrentValue = rs.GetProperty(ModelCode.ANALOG_CURRENTVALUE).AsFloat(); measurement.MaxValue = rs.GetProperty(ModelCode.ANALOG_MAXVALUE).AsFloat(); measurement.MinValue = rs.GetProperty(ModelCode.ANALOG_MINVALUE).AsFloat(); measurement.NormalValue = rs.GetProperty(ModelCode.ANALOG_NORMALVALUE).AsFloat(); measurement.Deviation = rs.GetProperty(ModelCode.ANALOG_DEVIATION).AsFloat(); measurement.ScalingFactor = rs.GetProperty(ModelCode.ANALOG_SCALINGFACTOR).AsFloat(); measurement.SignalType = (AnalogMeasurementType)rs.GetProperty(ModelCode.ANALOG_SIGNALTYPE).AsEnum(); var connection = GetAllReferencedElements(rs); if (connection.Count < 0) { logger.LogWarn($"Analog measurement with GID: 0x{rs.Id:X16} is not connected to any element."); } else if (connection.Count > 1) { logger.LogWarn($"Analog measurement with GID: 0x{rs.Id:X16} is connected to more then one element."); MeasurementToConnectedTerminalMap.Add(rs.Id, connection.First()); } else { MeasurementToConnectedTerminalMap.Add(rs.Id, connection.First()); } } catch (Exception) { logger.LogDebug($"Failed to populate analog measurement with GID: 0x{rs.Id:X16}."); } return(measurement); }
private DiscreteMeasurement GetPopulatedDiscreteMeasurement(ResourceDescription rs) { DiscreteMeasurement measurement = new DiscreteMeasurement(); try { measurement.Id = rs.Id; measurement.Address = rs.GetProperty(ModelCode.MEASUREMENT_ADDRESS).AsString(); measurement.IsInput = rs.GetProperty(ModelCode.MEASUREMENT_ISINPUT).AsBool(); measurement.CurrentOpen = rs.GetProperty(ModelCode.DISCRETE_CURRENTOPEN).AsBool(); measurement.MaxValue = rs.GetProperty(ModelCode.DISCRETE_MAXVALUE).AsInt(); measurement.MinValue = rs.GetProperty(ModelCode.DISCRETE_MINVALUE).AsInt(); measurement.NormalValue = rs.GetProperty(ModelCode.DISCRETE_NORMALVALUE).AsInt(); measurement.MeasurementType = (DiscreteMeasurementType)rs.GetProperty(ModelCode.DISCRETE_MEASUREMENTTYPE).AsEnum(); var connection = GetAllReferencedElements(rs); if (connection.Count < 0) { logger.LogWarn($"[NMSManager] Discrete measurement with GID: 0x{rs.Id:X16} is not connected to any element."); } else if (connection.Count > 1) { logger.LogWarn($"[NMSManager] Discrete measurement with GID: 0x{rs.Id:X16} is connected to more then one element."); MeasurementToConnectedTerminalMap.Add(rs.Id, connection.First()); } else { MeasurementToConnectedTerminalMap.Add(rs.Id, connection.First()); } } catch (Exception ex) { logger.LogError($"[NMSManager] Failed to populate discrete measurement with GID: 0x{rs.Id:X16}. Exception message: {ex.Message}"); } return(measurement); }