Esempio n. 1
0
        // Static Methods

        // Delegate handler to create a new IEEE C37.118 digital value
        internal static IDigitalValue CreateNewValue(IDataCell parent, IDigitalDefinition definition, byte[] buffer, int startIndex, out int parsedLength)
        {
            IDigitalValue digital = new DigitalValue(parent, definition);

            parsedLength = digital.ParseBinaryImage(buffer, startIndex, 0);

            return(digital);
        }
Esempio n. 2
0
 /// <summary>
 /// Creates a new <see cref="DigitalValue"/>.
 /// </summary>
 /// <param name="parent">The <see cref="IDataCell"/> parent of this <see cref="DigitalValue"/>.</param>
 /// <param name="digitalDefinition">The <see cref="IDigitalDefinition"/> associated with this <see cref="DigitalValue"/>.</param>
 public DigitalValue(IDataCell parent, IDigitalDefinition digitalDefinition)
     : base(parent, digitalDefinition)
 {
 }
Esempio n. 3
0
        // Static Methods

        // Delegate handler to create a new IEEE 1344 digital value
        internal static IDigitalValue CreateNewValue(IDataCell parent, IDigitalDefinition definition, byte[] binaryImage, int startIndex, out int parsedLength)
        {
            IDigitalValue digital = new DigitalValue(parent, definition);

            parsedLength = digital.Initialize(binaryImage, startIndex, 0);

            return digital;
        }
Esempio n. 4
0
 /// <summary>
 /// Creates a new <see cref="DigitalValue"/>.
 /// </summary>
 /// <param name="parent">The <see cref="IDataCell"/> parent of this <see cref="DigitalValue"/>.</param>
 /// <param name="digitalDefinition">The <see cref="IDigitalDefinition"/> associated with this <see cref="DigitalValue"/>.</param>
 public DigitalValue(IDataCell parent, IDigitalDefinition digitalDefinition)
     : base(parent, digitalDefinition)
 {
 }
        private void SaveDeviceRecords(IConfigurationFrame configFrame, Device device, ScanParameters scanParams)
        {
            AdoDataConnection             connection       = scanParams.Connection;
            TableOperations <Measurement> measurementTable = new(connection);
            IConfigurationCell            cell             = configFrame.Cells[0];

            // Add frequency
            SaveFixedMeasurement(m_deviceSignalTypes["FREQ"], device, measurementTable, scanParams, cell.FrequencyDefinition.Label);

            // Add dF/dt
            SaveFixedMeasurement(m_deviceSignalTypes["DFDT"], device, measurementTable, scanParams);

            // Add status flags
            SaveFixedMeasurement(m_deviceSignalTypes["FLAG"], device, measurementTable, scanParams);

            // Add analogs
            SignalType analogSignalType = m_deviceSignalTypes["ALOG"];

            for (int i = 0; i < cell.AnalogDefinitions.Count; i++)
            {
                int index = i + 1;
                IAnalogDefinition analogDefinition = cell.AnalogDefinitions[i];
                string            signalReference  = $"{device.Acronym}-{analogSignalType.Suffix}{index}";

                // Query existing measurement record for specified signal reference - function will create a new blank measurement record if one does not exist
                Measurement measurement = measurementTable.QueryMeasurement(signalReference);
                string      pointTag    = scanParams.CreateIndexedPointTag(device.Acronym, analogSignalType.Acronym, index);
                measurement.DeviceID        = device.ID;
                measurement.PointTag        = pointTag;
                measurement.AlternateTag    = analogDefinition.Label;
                measurement.Description     = $"{device.Acronym} Analog Value {index} {analogDefinition.AnalogType}: {analogDefinition.Label}";
                measurement.SignalReference = signalReference;
                measurement.SignalTypeID    = analogSignalType.ID;
                measurement.Internal        = true;
                measurement.Enabled         = true;

                measurementTable.AddNewOrUpdateMeasurement(measurement);
            }

            // Add digitals
            SignalType digitalSignalType = m_deviceSignalTypes["DIGI"];

            for (int i = 0; i < cell.DigitalDefinitions.Count; i++)
            {
                int index = i + 1;
                IDigitalDefinition digitialDefinition = cell.DigitalDefinitions[i];
                string             signalReference    = $"{device.Acronym}-{digitalSignalType.Suffix}{index}";

                // Query existing measurement record for specified signal reference - function will create a new blank measurement record if one does not exist
                Measurement measurement = measurementTable.QueryMeasurement(signalReference);
                string      pointTag    = scanParams.CreateIndexedPointTag(device.Acronym, digitalSignalType.Acronym, index);
                measurement.DeviceID        = device.ID;
                measurement.PointTag        = pointTag;
                measurement.AlternateTag    = digitialDefinition.Label;
                measurement.Description     = $"{device.Acronym} Digital Value {index}: {digitialDefinition.Label}";
                measurement.SignalReference = signalReference;
                measurement.SignalTypeID    = digitalSignalType.ID;
                measurement.Internal        = true;
                measurement.Enabled         = true;

                measurementTable.AddNewOrUpdateMeasurement(measurement);
            }

            // Add phasors
            SaveDevicePhasors(cell, device, measurementTable, scanParams);
        }