public static QualityDescriptor INVALID()
        {
            var qd = new QualityDescriptor();

            qd.Invalid = true;
            return(qd);
        }
        internal PackedSinglePointWithSCD(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSquence) :
            base(parameters, msg, startIndex, isSquence)
        {
            if (!isSquence)
            {
                startIndex += parameters.SizeOfIOA;                 /* skip IOA */
            }
            scd         = new StatusAndStatusChangeDetection(msg, startIndex);
            startIndex += 4;

            qds = new QualityDescriptor(msg [startIndex++]);
        }
示例#3
0
        public StepPositionInformation(int ioa, int value, bool isTransient, QualityDescriptor quality) :
            base(ioa)
        {
            if ((value < -64) || (value > 63))
            {
                throw new ArgumentOutOfRangeException("value has to be in range -64 .. 63");
            }

            Value        = value;
            Transient    = isTransient;
            this.quality = quality;
        }
示例#4
0
        internal MeasuredValueScaled(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSquence) :
            base(parameters, msg, startIndex, isSquence)
        {
            if (!isSquence)
            {
                startIndex += parameters.SizeOfIOA; /* skip IOA */
            }
            scaledValue = new ScaledValue(msg, startIndex);
            startIndex += 2;

            /* parse QDS (quality) */
            quality = new QualityDescriptor(msg[startIndex++]);
        }
示例#5
0
        internal MeasuredValueShort(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSequence) :
            base(parameters, msg, startIndex, isSequence)
        {
            if (!isSequence)
            {
                startIndex += parameters.SizeOfIOA;                 /* skip IOA */
            }
            /* parse float value */
            value       = System.BitConverter.ToSingle(msg, startIndex);
            startIndex += 4;

            /* parse QDS (quality) */
            quality = new QualityDescriptor(msg [startIndex++]);
        }
        internal Bitstring32(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSequence) :
            base(parameters, msg, startIndex, isSequence)
        {
            if (!isSequence)
            {
                startIndex += parameters.SizeOfIOA;                 /* skip IOA */
            }
            value  = msg [startIndex++];
            value += ((uint)msg [startIndex++] * 0x100);
            value += ((uint)msg [startIndex++] * 0x10000);
            value += ((uint)msg [startIndex++] * 0x1000000);

            quality = new QualityDescriptor(msg[startIndex++]);
        }
        /// <summary>
        /// 解析报文
        /// </summary>
        /// <param name="parameters"></param>
        /// <param name="msg"></param>
        /// <param name="startIndex"></param>
        /// <param name="isSequence"></param>
        internal DoublePointInformation(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSequence) :
            base(parameters, msg, startIndex, isSequence)
        {
            if (!isSequence)
            {
                startIndex += parameters.SizeOfIOA; /* skip IOA */
            }
            /* parse DIQ (double point information with qualitiy) */
            byte diq = msg[startIndex++];

            value = (DoublePointValue)(diq & 0x03);

            quality = new QualityDescriptor((byte)(diq & 0xf0));
        }
示例#8
0
 internal MeasuredValueNormalized(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSequence) :
     base(parameters, msg, startIndex, isSequence)
 {
     if (!isSequence)
     {
         startIndex += parameters.SizeOfIOA + 2; /* skip IOA + normalized value */
     }
     else
     {
         startIndex += 2; /* normalized value */
     }
     /* parse QDS (quality) */
     quality = new QualityDescriptor(msg[startIndex++]);
 }
        /// <summary>
        /// 通过信息内容解析报文
        /// </summary>
        /// <param name="parameters"></param>
        /// <param name="msg"></param>
        /// <param name="startIndex"></param>
        /// <param name="isSequence"></param>
        internal SinglePointInformation(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSequence) :
            base(parameters, msg, startIndex, isSequence)
        {
            if (!isSequence)
            {
                startIndex += parameters.SizeOfIOA; /* skip IOA 跳过信息体地址 */
            }
            /* parse SIQ (single point information with qualitiy)  解析实际值 */
            byte siq = msg[startIndex++];

            //获得值 bit1
            value = ((siq & 0x01) == 0x01);

            //品质描述词,只要高4位,低位没用 bit5-8
            quality = new QualityDescriptor((byte)(siq & 0xf0));
        }
        internal StepPositionInformation(ConnectionParameters parameters, byte[] msg, int startIndex, bool isSequence) :
            base(parameters, msg, startIndex, isSequence)
        {
            if (!isSequence)
            {
                startIndex += parameters.SizeOfIOA; /* skip IOA */
            }
            /* parse VTI (value with transient state indication) */
            byte vti = msg[startIndex++];

            isTransient = ((vti & 0x80) == 0x80);

            value = (vti & 0x7f);

            if (value > 63)
            {
                value = value - 128;
            }

            quality = new QualityDescriptor(msg[startIndex++]);
        }
示例#11
0
 public StepPositionWithCP56Time2a(int ioa, int value, bool isTransient, QualityDescriptor quality, CP56Time2a timestamp) :
     base(ioa, value, isTransient, quality)
 {
     Timestamp = timestamp;
 }
示例#12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="lib60870.MeasuredValueScaled"/> class.
 /// </summary>
 /// <param name="objectAddress">Information object address</param>
 /// <param name="value">scaled value (range -32768 - 32767) </param>
 /// <param name="quality">quality descriptor (according to IEC 60870-5-101:2003 7.2.6.3)</param>
 public MeasuredValueScaled(int objectAddress, int value, QualityDescriptor quality)
     : base(objectAddress)
 {
     this.scaledValue = new ScaledValue(value);
     this.quality     = quality;
 }
示例#13
0
 public MeasuredValueScaledWithCP56Time2a(int objectAddress, int value, QualityDescriptor quality, CP56Time2a timestamp)
     : base(objectAddress, value, quality)
 {
     this.timestamp = timestamp;
 }
 /// <summary>
 /// 创建
 /// </summary>
 /// <param name="ioa"></param>
 /// <param name="value"></param>
 /// <param name="quality"></param>
 /// <param name="timestamp"></param>
 public DoublePointWithCP56Time2a(int ioa, DoublePointValue value, QualityDescriptor quality, CP56Time2a timestamp)
     : base(ioa, value, quality)
 {
     this.timestamp = timestamp;
 }
 public SinglePointWithCP56Time2a(int objectAddress, bool value, QualityDescriptor quality, CP56Time2a timestamp) :
     base(objectAddress, value, quality)
 {
     this.timestamp = timestamp;
 }
 /// <summary>
 /// 使用地址、值、品质描述词创建双点信息
 /// </summary>
 /// <param name="ioa"></param>
 /// <param name="value"></param>
 /// <param name="quality"></param>
 public DoublePointInformation(int ioa, DoublePointValue value, QualityDescriptor quality)
     : base(ioa)
 {
     this.value   = value;
     this.quality = quality;
 }
 public Bitstring32(int ioa, UInt32 value, QualityDescriptor quality) : base(ioa)
 {
     this.value   = value;
     this.quality = quality;
 }
示例#18
0
 public MeasuredValueShort(int objectAddress, float value, QualityDescriptor quality)
     : base(objectAddress)
 {
     this.value   = value;
     this.quality = quality;
 }
示例#19
0
 public MeasuredValueShortWithCP24Time2a(int objectAddress, float value, QualityDescriptor quality, CP24Time2a timestamp)
     : base(objectAddress, value, quality)
 {
     this.timestamp = timestamp;
 }
 public PackedSinglePointWithSCD(int objectAddress, StatusAndStatusChangeDetection scd, QualityDescriptor quality)
     : base(objectAddress)
 {
     this.scd = scd;
     this.qds = quality;
 }
示例#21
0
 public MeasuredValueNormalized(int objectAddress, float value, QualityDescriptor quality)
     : base(objectAddress, value)
 {
     this.quality = quality;
 }
 public Bitstring32WithCP56Time2a(int ioa, UInt32 value, QualityDescriptor quality, CP56Time2a timestamp) :
     base(ioa, value, quality)
 {
     this.timestamp = timestamp;
 }
 public SinglePointInformation(int objectAddress, bool value, QualityDescriptor quality) :
     base(objectAddress)
 {
     this.value   = value;
     this.quality = quality;
 }