Ejemplo n.º 1
0
            public void Process(HeaderInfo info, IEnumerable <IndexedValue <TimeAndInterval> > values)
            {
                var base_group = 50;
                var group      = 50;
                var variation  = 1;

                switch (info.variation)
                {
                case GroupVariation.Group50Var1:
                    group     = 50;
                    variation = 1;
                    break;

                case GroupVariation.Group50Var3:
                    group     = 50;
                    variation = 3;
                    break;

                case GroupVariation.Group50Var4:
                    group     = 50;
                    variation = 4;
                    break;
                }
                foreach (var idxvalue in values)
                {
                    var DNP3_Value = new DNP3_Value
                    {
                        address            = idxvalue.Index,
                        base_group         = base_group,
                        group              = group,
                        variation          = variation,
                        value              = idxvalue.Value.interval,
                        valueBSON          = new BsonDocumentWrapper(idxvalue.Value),
                        valueString        = idxvalue.Value.ToString(),
                        cot                = info.isEvent ? 3 : 20,
                        serverTimestamp    = DateTime.Now,
                        hasSourceTimestamp = true,
                        sourceTimestamp    = (new DateTime()).AddSeconds(idxvalue.Value.time),
                        timeStampQuality   = TimestampQuality.SYNCHRONIZED,
                        qOnline            = true,
                        qRestart           = false,
                        qCommLost          = false,
                        qRemoteForced      = false,
                        qLocalForced       = false,
                        qOverrange         = false,
                        qRollover          = false,
                        qDiscontinuity     = false,
                        qReferenceError    = false,
                        qTransient         = false,
                        conn_number        = ConnectionNumber
                    };
                    DNP3DataQueue.Enqueue(DNP3_Value);
                    if (LogLevel >= LogLevelDetailed)
                    {
                        Log(ConnectionName + ": TimeAndInterval, Ind: " + idxvalue.Index + " " + idxvalue.Value.ToString(), LogLevelDetailed);
                    }
                }
            }
Ejemplo n.º 2
0
            public void Process(HeaderInfo info, IEnumerable <IndexedValue <AnalogOutputInt16> > values)
            {
                var base_group = 41;
                var group      = 41;
                var variation  = 2;

                switch (info.variation)
                {
                case GroupVariation.Group41Var0:
                    group     = 41;
                    variation = 0;
                    break;

                case GroupVariation.Group41Var2:
                    group     = 41;
                    variation = 2;
                    break;
                }
                foreach (var idxvalue in values)
                {
                    var DNP3_Value = new DNP3_Value
                    {
                        address            = idxvalue.Index,
                        base_group         = base_group,
                        group              = group,
                        variation          = variation,
                        value              = idxvalue.Value.value,
                        valueBSON          = new BsonDocumentWrapper(idxvalue.Value),
                        valueString        = idxvalue.Value.ToString(),
                        cot                = info.isEvent ? 3 : 20,
                        serverTimestamp    = DateTime.Now,
                        hasSourceTimestamp = false,
                        sourceTimestamp    = new DateTime(),
                        timeStampQuality   = TimestampQuality.INVALID,
                        qOnline            = true,
                        qRestart           = false,
                        qCommLost          = false,
                        qRemoteForced      = false,
                        qLocalForced       = false,
                        qOverrange         = false,
                        qRollover          = false,
                        qDiscontinuity     = false,
                        qReferenceError    = false,
                        qTransient         = false,
                        conn_number        = ConnectionNumber
                    };
                    DNP3DataQueue.Enqueue(DNP3_Value);
                    if (LogLevel >= LogLevelDetailed)
                    {
                        Log(ConnectionName + ": AnalogOutputInt16, Ind: " + idxvalue.Index + " " + idxvalue.Value.ToString(), LogLevelDetailed);
                    }
                }
            }
Ejemplo n.º 3
0
            public void Process(HeaderInfo info, IEnumerable <IndexedValue <BinaryCommandEvent> > values)
            {
                var base_group = 13;
                var group      = 13;
                var variation  = 1;

                switch (info.variation)
                {
                case GroupVariation.Group13Var1:
                    group     = 13;
                    variation = 1;
                    break;

                case GroupVariation.Group13Var2:
                    group     = 13;
                    variation = 2;
                    break;
                }
                foreach (var idxvalue in values)
                {
                    var DNP3_Value = new DNP3_Value
                    {
                        address            = idxvalue.Index,
                        base_group         = base_group,
                        group              = group,
                        variation          = variation,
                        value              = System.Convert.ToDouble(idxvalue.Value.Value),
                        valueBSON          = new BsonDocumentWrapper(idxvalue.Value),
                        valueString        = idxvalue.Value.ToString(),
                        cot                = info.isEvent ? 3 : 20,
                        serverTimestamp    = DateTime.Now,
                        hasSourceTimestamp = (idxvalue.Value.Timestamp.ToEpoch() != 0),
                        sourceTimestamp    = idxvalue.Value.Timestamp.Value.Date,
                        timeStampQuality   = idxvalue.Value.Timestamp.Quality,
                        qOnline            = idxvalue.Value.Status == 0, // success
                        qRestart           = false,
                        qCommLost          = false,
                        qRemoteForced      = false,
                        qLocalForced       = false,
                        qOverrange         = false,
                        qRollover          = false,
                        qDiscontinuity     = false,
                        qReferenceError    = false,
                        qTransient         = false,
                        conn_number        = ConnectionNumber
                    };
                    DNP3DataQueue.Enqueue(DNP3_Value);
                    if (LogLevel >= LogLevelDetailed)
                    {
                        Log(ConnectionName + ": BinaryCommandEvent, Ind: " + idxvalue.Index + " " + idxvalue.Value.ToString(), LogLevelDetailed);
                    }
                }
            }
Ejemplo n.º 4
0
            public void Process(HeaderInfo info, IEnumerable <IndexedValue <OctetString> > values)
            {
                var base_group = 110;
                var group      = 110;

                switch (info.variation)
                {
                case GroupVariation.Group110Var0:
                    group = 110;
                    break;

                case GroupVariation.Group111Var0:
                    group = 111;
                    break;
                }
                foreach (var idxvalue in values)
                {
                    var DNP3_Value = new DNP3_Value
                    {
                        address            = idxvalue.Index,
                        base_group         = base_group,
                        group              = group,
                        variation          = idxvalue.Value.Bytes.Length,
                        value              = idxvalue.Value.Bytes.Length,
                        valueBSON          = BsonValue.Create(idxvalue.Value.Bytes),
                        valueString        = System.Text.Encoding.Default.GetString(idxvalue.Value.Bytes),
                        cot                = info.isEvent ? 3 : 20,
                        serverTimestamp    = DateTime.Now,
                        hasSourceTimestamp = false,
                        sourceTimestamp    = new DateTime(),
                        timeStampQuality   = TimestampQuality.INVALID,
                        qOnline            = true,
                        qRestart           = false,
                        qCommLost          = false,
                        qRemoteForced      = false,
                        qLocalForced       = false,
                        qOverrange         = false,
                        qRollover          = false,
                        qDiscontinuity     = false,
                        qReferenceError    = false,
                        qTransient         = false,
                        conn_number        = ConnectionNumber
                    };
                    DNP3DataQueue.Enqueue(DNP3_Value);
                    if (LogLevel >= LogLevelDetailed)
                    {
                        Log(ConnectionName + ": OctetString, Ind: " + idxvalue.Index + " " + idxvalue.Value.ToString(), LogLevelDetailed);
                    }
                }
            }
Ejemplo n.º 5
0
            public void Process(HeaderInfo info, IEnumerable <IndexedValue <Binary> > values)
            {
                var base_group = 1;
                var group      = 1;
                var variation  = 0;

                switch (info.variation)
                {
                case GroupVariation.Group1Var0:
                    group     = 1;
                    variation = 0;
                    break;

                case GroupVariation.Group1Var1:
                    group     = 1;
                    variation = 1;
                    break;

                case GroupVariation.Group1Var2:
                    group     = 1;
                    variation = 2;
                    break;

                case GroupVariation.Group2Var0:
                    group     = 2;
                    variation = 0;
                    break;

                case GroupVariation.Group2Var1:
                    group     = 2;
                    variation = 1;
                    break;

                case GroupVariation.Group2Var2:
                    group     = 2;
                    variation = 2;
                    break;

                case GroupVariation.Group2Var3:
                    group     = 2;
                    variation = 3;
                    break;
                }
                foreach (var idxvalue in values)
                {
                    var DNP3_Value = new DNP3_Value
                    {
                        address            = idxvalue.Index,
                        base_group         = base_group,
                        group              = group,
                        variation          = variation,
                        value              = idxvalue.Value.Value ? 1 : 0,
                        valueBSON          = new BsonDocumentWrapper(idxvalue.Value),
                        valueString        = idxvalue.Value.ToString(),
                        cot                = info.isEvent ? 3 : 20,
                        serverTimestamp    = DateTime.Now,
                        hasSourceTimestamp = (idxvalue.Value.Timestamp.ToEpoch() != 0),
                        sourceTimestamp    = idxvalue.Value.Timestamp.Value.Date,
                        timeStampQuality   = idxvalue.Value.Timestamp.Quality,
                        qOnline            = idxvalue.Value.Quality.IsSet(BinaryQuality.ONLINE),
                        qRestart           = idxvalue.Value.Quality.IsSet(BinaryQuality.RESTART),
                        qCommLost          = idxvalue.Value.Quality.IsSet(BinaryQuality.COMM_LOST),
                        qRemoteForced      = idxvalue.Value.Quality.IsSet(BinaryQuality.REMOTE_FORCED),
                        qLocalForced       = idxvalue.Value.Quality.IsSet(BinaryQuality.LOCAL_FORCED),
                        qOverrange         = false,
                        qRollover          = false,
                        qDiscontinuity     = false,
                        qReferenceError    = false,
                        qTransient         = false,
                        conn_number        = ConnectionNumber
                    };
                    DNP3DataQueue.Enqueue(DNP3_Value);
                    if (LogLevel >= LogLevelDetailed)
                    {
                        Log(ConnectionName + ": Binary, Ind: " + idxvalue.Index + " " + idxvalue.Value.ToString(), LogLevelDetailed);
                    }
                }
            }