示例#1
0
        /// <summary>
        /// MasterCommand 命令 不含信息体
        /// </summary>
        /// <param name="typeID">类型ID</param>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="ReceiveSeqNum">接收序列号</param>
        /// <param name="cot">传输原因</param>
        /// <param name="asduPublicAddress">ASDU公共地址</param>
        /// <param name="objectAddress">信息对象地址</param>
        public MasterCommand(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum, TypeIdentification typeID,
                             CauseOfTransmissionList cot, UInt16 asduPublicAddress)
        {
            ASDU = new ApplicationServiceDataUnit((byte)typeID, (byte)1, false, (byte)cot, asduPublicAddress);
            //信息对象地址为0
            ASDU.InformationObject[0] = 0;
            ASDU.InformationObject[1] = 0;
            ASDU.InformationObject[2] = 0;
            var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度

            APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum);

            TimeStamp = DateTime.Now;
        }
示例#2
0
        /// <summary>
        /// APDU初始化
        /// </summary>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="ReceiveSeqNum">接收序列号</param>
        /// <param name="typeID">类型ID</param>
        /// <param name="isquense">是否序列号 true-序列化 false-非序列化</param>
        /// <param name="objectCount">信息对象数目数目</param>
        /// <param name="cot">传输原因</param>
        /// <param name="ASDUPublicAddress">公共地址</param>
        public APDU(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum, TypeIdentification typeID, bool isquense, byte objectCount,
                    CauseOfTransmissionList cot, UInt16 ASDUPublicAddress, UInt32 objectAddress)
        {
            ASDU = new ApplicationServiceDataUnit((byte)typeID, objectCount, isquense, (byte)cot, ASDUPublicAddress);
            //信息对象地址为0
            ASDU.InformationObject[0] = ElementTool.GetBit7_0(objectAddress);
            ASDU.InformationObject[1] = ElementTool.GetBit15_8(objectAddress);
            ASDU.InformationObject[2] = ElementTool.GetBit23_16(objectAddress);
            var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度

            APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum);

            TimeStamp = DateTime.Now;
        }
示例#3
0
        /// <summary>
        /// MasterCommand APDU初始化结束命令
        /// </summary>
        /// <param name="typeID">类型ID</param>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="ReceiveSeqNum">接收序列号</param>
        /// <param name="cot">传输原因</param>
        /// <param name="asduPublicAddress">ASDU公共地址</param>
        /// <param name="objectAddress">信息对象地址</param>
        /// <param name="coi">初始化原因coi</param>
        public MasterCommand(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum, TypeIdentification typeID,
                             CauseOfTransmissionList cot, UInt16 asduPublicAddress, UInt32 objectAddress, CauseOfInitialization coi)
        {
            ASDU = new ApplicationServiceDataUnit((byte)typeID, (byte)1, false, (byte)cot, asduPublicAddress);
            //信息对象地址为0
            ASDU.InformationObject[0] = ElementTool.GetBit7_0(objectAddress);
            ASDU.InformationObject[1] = ElementTool.GetBit15_8(objectAddress);
            ASDU.InformationObject[2] = ElementTool.GetBit23_16(objectAddress);
            ASDU.InformationObject[3] = (byte)coi;

            var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度

            APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum);

            TimeStamp = DateTime.Now;
        }
示例#4
0
 /// <summary>
 ///  主站遥控命令 双命令
 /// </summary>
 /// <param name="cot">传输原因</param>
 /// <param name="dco">单命令</param>
 /// <param name="objectAddr">信息对象地址</param>
 private void SendMasterCommand(CauseOfTransmissionList cot, DoubleCommand dco, UInt32 objectAddr)
 {
     try
     {
         var id = TypeIdentification.C_DC_NA_1;//遥控命令
         eventTypeIDManager.AddEventProcess(new EventProperty(id));
         var frame = new MasterCommand(appMessageManager.TransmitSequenceNumber, appMessageManager.RealReceiveSequenceNumber,
                                       id, cot, appMessageManager.ASDUADdress, objectAddr, dco.DCO);
         var array = frame.GetAPDUDataArray();
         MainTypeIProcess(array, array.Length, appMessageManager.WaitTime, id);
         appMessageManager.UpdateTransmitSequenceNumber();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "SendMasterCommand主站遥控命令");
     }
 }
示例#5
0
 /// <summary>
 ///  电能召唤命令
 /// </summary>
 /// <param name="cot">传输原因</param>
 /// <param name="qcc">计量召唤限定词QCC</param>
 /// <param name="objectAddr">公共地址</param>
 private void SendMasterCommand(CauseOfTransmissionList cot, QualifyCalculateCommad qcc)
 {
     try
     {
         var id = TypeIdentification.C_CI_NA_1;//电能召唤
         eventTypeIDManager.AddEventProcess(new EventProperty(id));
         var frame = new MasterCommand(appMessageManager.TransmitSequenceNumber, appMessageManager.RealReceiveSequenceNumber,
                                       id, cot, appMessageManager.ASDUADdress, 0, qcc.QCC);
         var array = frame.GetAPDUDataArray();
         MainTypeIProcess(array, array.Length, appMessageManager.WaitTime, id);
         appMessageManager.UpdateTransmitSequenceNumber();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "SendMasterCommand电能召唤命令");
     }
 }
示例#6
0
        /// <summary>
        /// 目录{空白或X,只在监视(标准)方向有效}
        /// </summary>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="ReceiveSeqNum">接收序列号</param>
        /// <param name="cot">传输原因</param>
        /// <param name="ASDUPublicAddress">ASDU公共地址</param>
        /// <param name="objectAddress">对象地址</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="sectionName">节名称</param>
        /// <param name="afq">节名字</param>
        public FileTransmit(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum, byte informationObjectCount,
                            CauseOfTransmissionList cot, UInt16 ASDUPublicAddress, UInt32 objectAddress,
                            UInt16 fileName, byte sectionName, AckFileQulifier afq)
        {
            ASDU = new ApplicationServiceDataUnit((byte)TypeIdentification.F_DR_TA_1, informationObjectCount, true, (byte)cot, ASDUPublicAddress);

            ASDU.InformationObject[0] = ElementTool.GetBit7_0(objectAddress);
            ASDU.InformationObject[1] = ElementTool.GetBit15_8(objectAddress);
            ASDU.InformationObject[2] = ElementTool.GetBit23_16(objectAddress);


            var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度

            APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum);

            TimeStamp = DateTime.Now;
        }
示例#7
0
        /// <summary>
        /// 查询日志文件
        /// </summary>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="ReceiveSeqNum">接收序列号</param>
        /// <param name="cot">传输原因</param>
        /// <param name="ASDUPublicAddress">ASDU公共地址</param>
        /// <param name="objectAddress">对象地址</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="startTime">开始时间</param>
        /// <param name="endTime">结束时间</param>
        public FileTransmit(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum,
                            CauseOfTransmissionList cot, UInt16 ASDUPublicAddress, UInt32 objectAddress,
                            UInt16 fileName, CP56Time2a startTime, CP56Time2a endTime)
        {
            ASDU = new ApplicationServiceDataUnit((byte)TypeIdentification.F_SC_NB_1, 1, false, (byte)cot, ASDUPublicAddress);

            ASDU.InformationObject[0] = ElementTool.GetBit7_0(objectAddress);
            ASDU.InformationObject[1] = ElementTool.GetBit15_8(objectAddress);
            ASDU.InformationObject[2] = ElementTool.GetBit23_16(objectAddress);
            ASDU.InformationObject[3] = ElementTool.GetBit7_0(fileName);
            ASDU.InformationObject[4] = ElementTool.GetBit15_8(fileName);
            Array.Copy(startTime.GetDataArray(), 0, ASDU.InformationObject, 5, 7);
            Array.Copy(endTime.GetDataArray(), 0, ASDU.InformationObject, 12, 7);

            var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度

            APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum);

            TimeStamp = DateTime.Now;
        }
示例#8
0
        /// <summary>
        /// 最后的节,最后的段
        /// </summary>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="ReceiveSeqNum">接收序列号</param>
        /// <param name="cot">传输原因</param>
        /// <param name="ASDUPublicAddress">ASDU公共地址</param>
        /// <param name="objectAddress">对象地址</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="lsq">最后的节和段的限定词LSQ</param>
        /// <param name="chs">校验和</param>
        public FileTransmit(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum,
                            CauseOfTransmissionList cot, UInt16 ASDUPublicAddress, UInt32 objectAddress,
                            UInt16 fileName, LastSectionQulifier lsq, byte chs)
        {
            ASDU = new ApplicationServiceDataUnit((byte)TypeIdentification.F_LS_NA_1, 1, false, (byte)cot, ASDUPublicAddress);

            ASDU.InformationObject[0] = ElementTool.GetBit7_0(objectAddress);
            ASDU.InformationObject[1] = ElementTool.GetBit15_8(objectAddress);
            ASDU.InformationObject[2] = ElementTool.GetBit23_16(objectAddress);
            ASDU.InformationObject[3] = ElementTool.GetBit7_0(fileName);
            ASDU.InformationObject[4] = ElementTool.GetBit15_8(fileName);
            ASDU.InformationObject[5] = (byte)lsq;
            ASDU.InformationObject[6] = chs;

            var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度

            APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum);

            TimeStamp = DateTime.Now;
        }
示例#9
0
        /// <summary>
        /// 段
        /// </summary>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="ReceiveSeqNum">接收序列号</param>
        /// <param name="cot">传输原因</param>
        /// <param name="ASDUPublicAddress">ASDU公共地址</param>
        /// <param name="objectAddress">对象地址</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="sectionName">节名称</param>
        /// <param name="sectionLen">段的长度</param>
        /// <param name="dataArray">段数据数组</param>
        public FileTransmit(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum,
                            CauseOfTransmissionList cot, UInt16 ASDUPublicAddress, UInt32 objectAddress,
                            UInt16 fileName, byte sectionName, byte sectionLen, byte[] dataArray)
        {
            ASDU = new ApplicationServiceDataUnit((byte)TypeIdentification.F_SG_NA_1, (byte)cot, ASDUPublicAddress,
                                                  (byte)(sectionLen + 2 + 1 + 1 + 3));

            ASDU.InformationObject[0] = ElementTool.GetBit7_0(objectAddress);
            ASDU.InformationObject[1] = ElementTool.GetBit15_8(objectAddress);
            ASDU.InformationObject[2] = ElementTool.GetBit23_16(objectAddress);
            ASDU.InformationObject[3] = ElementTool.GetBit7_0(fileName);
            ASDU.InformationObject[4] = ElementTool.GetBit15_8(fileName);
            ASDU.InformationObject[5] = sectionName;
            ASDU.InformationObject[6] = sectionLen;

            var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度

            APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum);

            TimeStamp = DateTime.Now;
        }
示例#10
0
        /// <summary>
        /// 节准备就绪
        /// </summary>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="ReceiveSeqNum">接收序列号</param>
        /// <param name="cot">传输原因</param>
        /// <param name="ASDUPublicAddress">ASDU公共地址</param>
        /// <param name="objectAddress">对象地址</param>
        /// <param name="fileName">文件名称</param>
        /// <param name="sectionName">节名称</param>
        /// <param name="sectionLen">节长度</param>
        /// <param name="srq">节准备就绪限定词</param>
        public FileTransmit(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum,
                            CauseOfTransmissionList cot, UInt16 ASDUPublicAddress, UInt32 objectAddress,
                            UInt16 fileName, byte sectionName, UInt32 sectionLen, SectionReadyQulifier srq)
        {
            ASDU = new ApplicationServiceDataUnit((byte)TypeIdentification.F_SR_NA_1, 1, false, (byte)cot, ASDUPublicAddress);

            ASDU.InformationObject[0] = ElementTool.GetBit7_0(objectAddress);
            ASDU.InformationObject[1] = ElementTool.GetBit15_8(objectAddress);
            ASDU.InformationObject[2] = ElementTool.GetBit23_16(objectAddress);
            ASDU.InformationObject[3] = ElementTool.GetBit7_0(fileName);
            ASDU.InformationObject[4] = ElementTool.GetBit15_8(fileName);
            ASDU.InformationObject[5] = sectionName;
            ASDU.InformationObject[6] = ElementTool.GetBit7_0(sectionLen);
            ASDU.InformationObject[7] = ElementTool.GetBit15_8(sectionLen);
            ASDU.InformationObject[8] = ElementTool.GetBit23_16(sectionLen);
            ASDU.InformationObject[9] = srq.SRQ;

            var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度

            APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum);

            TimeStamp = DateTime.Now;
        }
示例#11
0
        /// <summary>
        /// 文件服务
        /// </summary>
        /// <param name="transmitSeqNum">发送序列号</param>
        /// <param name="receiveSeqNum">接收序列号</param>
        /// <param name="cot">传输原因</param>
        /// <param name="ASDUPublicAddress">ASDU公共地址</param>
        /// <param name="packet">包数据</param>
        public FilePacket(UInt16 transmitSeqNum, UInt16 receiveSeqNum,
                          CauseOfTransmissionList cot, UInt16 ASDUPublicAddress,
                          byte[] packet)
        {
            try
            {
                ASDU = new ApplicationServiceDataUnit((byte)TypeIdentification.F_FR_NA_1_NR,
                                                      (byte)cot, ASDUPublicAddress, packet.Length + 3);

                ASDU.InformationObject[0] = 0;
                ASDU.InformationObject[1] = 0;
                ASDU.InformationObject[1] = 2;//文件传输
                Array.Copy(packet, 0, ASDU.InformationObject, 3, packet.Length);

                var apduLen = 4 + (packet.Length + 3 + 6); //控制域长度4 + ASDU长度
                APCI       = new APCITypeI((byte)apduLen, transmitSeqNum, receiveSeqNum);
                PacketData = packet;
                TimeStamp  = DateTime.Now;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#12
0
 /// <summary>
 /// 文件服务--写文件数据传输
 /// </summary>
 /// <param name="transmitSeqNum">发送序列号</param>
 /// <param name="receiveSeqNum">接收序列号</param>
 /// <param name="cot">传输原因</param>
 /// <param name="ASDUPublicAddress">ASDU公共地址</param>
 /// <param name="transmitDataPacket">传输包数据</param>
 public FileWritePacket(UInt16 transmitSeqNum, UInt16 receiveSeqNum,
                        CauseOfTransmissionList cot, UInt16 ASDUPublicAddress,
                        FileDataThransmitPacket transmitDataPacket)
     : base(transmitSeqNum, receiveSeqNum, cot, ASDUPublicAddress, transmitDataPacket.GetPacketData())
 {
 }
示例#13
0
 /// <summary>
 /// 文件服务--写文件激活
 /// </summary>
 /// <param name="transmitSeqNum">发送序列号</param>
 /// <param name="receiveSeqNum">接收序列号</param>
 /// <param name="cot">传输原因</param>
 /// <param name="ASDUPublicAddress">ASDU公共地址</param>
 /// <param name="writeAcitvityPacket">写文件激活包数据</param>
 public FileWritePacket(UInt16 transmitSeqNum, UInt16 receiveSeqNum,
                        CauseOfTransmissionList cot, UInt16 ASDUPublicAddress,
                        FileReadActivityPacket writeAcitvityPacket)
     : base(transmitSeqNum, receiveSeqNum, cot, ASDUPublicAddress, writeAcitvityPacket.GetPacketData())
 {
 }
示例#14
0
 /// <summary>
 /// 文件服务--读文件传输确认
 /// </summary>
 /// <param name="transmitSeqNum">发送序列号</param>
 /// <param name="receiveSeqNum">接收序列号</param>
 /// <param name="cot">传输原因</param>
 /// <param name="ASDUPublicAddress">ASDU公共地址</param>
 /// <param name="readAckPacket">读文件传输确认包</param>
 public FileReadPacket(UInt16 transmitSeqNum, UInt16 receiveSeqNum,
                       CauseOfTransmissionList cot, UInt16 ASDUPublicAddress,
                       FileReadThransmitAckPacket readAckPacket)
     : base(transmitSeqNum, receiveSeqNum, cot, ASDUPublicAddress, readAckPacket.GetPacketData())
 {
 }
示例#15
0
 /// <summary>
 /// 文件服务--文件目录召唤
 /// </summary>
 /// <param name="transmitSeqNum">发送序列号</param>
 /// <param name="receiveSeqNum">接收序列号</param>
 /// <param name="cot">传输原因</param>
 /// <param name="ASDUPublicAddress">ASDU公共地址</param>
 /// <param name="callPacket">召唤包数据</param>
 public FileReadPacket(UInt16 transmitSeqNum, UInt16 receiveSeqNum,
                       CauseOfTransmissionList cot, UInt16 ASDUPublicAddress,
                       FileDirectoryCalledPacket callPacket)
     : base(transmitSeqNum, receiveSeqNum, cot, ASDUPublicAddress, callPacket.GetPacketData())
 {
 }