예제 #1
0
        /// <summary>
        /// Sends a test command (C_TS_NA_1 typeID: 104).
        /// </summary>
        ///
        /// Not required and supported by IEC 60870-5-104.
        ///
        /// <param name="ca">Common address</param>
        /// <exception cref="ConnectionException">description</exception>
        public void SendTestCommand(int ca)
        {
            Frame frame = new T104Frame();

            EncodeIdentificationField(frame, TypeID.C_TS_NA_1, 1, CauseOfTransmission.ACTIVATION, ca);

            EncodeIOA(frame, 0);

            frame.SetNextByte(0xcc);
            frame.SetNextByte(0x55);

            if (debugOutput)
            {
                Console.WriteLine("Encoded C_TS_NA_1 with " + frame.GetMsgSize() + " bytes.");
            }

            sendIMessage(frame);
        }
예제 #2
0
        /// <summary>
        /// 复位进程命令Sends a reset process command (C_RP_NA_1 typeID: 105).
        /// <para>1. 必须慎重使用复位进程命令</para>
        /// <para>2. 需要通信双方技术人员交流并去人复位条件方可进行</para>
        /// </summary>
        /// <param name="cot">
        /// 传送原因Cause of transmission
        /// <para>控制方向</para>
        /// <para>  6  激活</para>
        /// <para>监视方向</para>
        /// <para>  7  激活确认</para>
        /// <para>  10  激活终止</para>
        /// <para>  44  未知的类型标识</para>
        /// <para>  45  未知的传送原因</para>
        /// <para>  46  未知的应用服务数据单元公共地址 cot</para>
        /// <para>  47  未知的信息对象地址</para>
        /// </param>
        /// <param name="ca">公共地址Common address</param>
        /// <param name="qrp">
        /// 复位进程命令限定词Qualifier of reset process command
        /// <para>0:  未用</para>
        /// <para>1:  进程的总复位</para>
        /// <para>2:  复位时间缓冲区等待处理的带时标信息</para>
        /// </param>
        /// <exception cref="ConnectionException">description</exception>
        public void SendResetProcessCommand(CauseOfTransmission cot, int ca, byte qrp)
        {
            Frame frame = new T104Frame();

            EncodeIdentificationField(frame, TypeID.C_RP_NA_1, 1, cot, ca);

            EncodeIOA(frame, 0);

            frame.SetNextByte(qrp);

            if (debugOutput)
            {
                Console.WriteLine("Encoded C_RP_NA_1 with " + frame.GetMsgSize() + " bytes.");
            }

            sendIMessage(frame);
        }
예제 #3
0
        /// <summary>
        /// 发送累计量召唤命令,Sends the counter interrogation command (C_CI_NA_1 typeID: 101)
        /// </summary>
        /// <param name="cot">传送原因 Cause of transmission</param>
        /// <param name="ca">公共地址Common address</param>
        /// <param name="qcc">
        /// 召唤限定词(应该跟站召一样,下面列出来参考下)Qualifier of counter interrogation command
        /// <para>0  未用</para>
        /// <para>1-19  未定义</para>
        /// <para>20    全站召唤</para>
        /// <para>21-28    分别为召唤第1-8组信息(遥信信息)</para>
        /// <para>29-34    分别为召唤第9-14组信息(遥测信息)</para>
        /// <para>35    召唤第15组信息(档位信息)</para>
        /// <para>36    召唤第16组信息(远动中断状态信息)</para>
        /// <para>37-255    未定义</para>
        /// </param>
        /// <exception cref="ConnectionException">description</exception>
        public void SendCounterInterrogationCommand(CauseOfTransmission cot, int ca, byte qcc)
        {
            Frame frame = new T104Frame();

            EncodeIdentificationField(frame, TypeID.C_CI_NA_1, 1, cot, ca);

            EncodeIOA(frame, 0);

            /* encode QCC */
            frame.SetNextByte(qcc);

            if (debugOutput)
            {
                Console.WriteLine("Encoded C_CI_NA_1 with " + frame.GetMsgSize() + " bytes.");
            }

            sendIMessage(frame);
        }
예제 #4
0
        /// <summary>
        /// 发送站召唤(类型标识100),Sends the interrogation command.
        /// <para>站召唤和组召唤都行</para>
        /// <para>站端回答镜像报文确认或否定</para>
        /// </summary>
        /// <param name="cot">
        /// 传送原因Cause of transmission
        /// <para>控制方向</para>
        /// <para>  6  激活</para>
        /// <para>  8  停止激活</para>
        /// <para>监视方向</para>
        /// <para>  7  激活确认</para>
        /// <para>  9  停止激活确认</para>
        /// <para>  10  激活终止</para>
        /// <para>  44  未知的类型标识</para>
        /// <para>  45  未知的传送原因</para>
        /// <para>  46  未知的应用服务数据单元公共地址 cot</para>
        /// <para>  47  未知的信息对象地址</para>
        /// </param>
        /// <param name="ca">公共地址Common address</param>
        /// <param name="qoi">
        /// 召唤限定词(20全站召唤),Qualifier of interrogation (20 = station interrogation)
        /// <para>0  未用</para>
        /// <para>1-19  未定义</para>
        /// <para>20    全站召唤</para>
        /// <para>21-28    分别为召唤第1-8组信息(遥信信息)</para>
        /// <para>29-34    分别为召唤第9-14组信息(遥测信息)</para>
        /// <para>35    召唤第15组信息(档位信息)</para>
        /// <para>36    召唤第16组信息(远动中断状态信息)</para>
        /// <para>37-255    未定义</para>
        /// </param>
        /// <exception cref="ConnectionException">description</exception>
        public void SendInterrogationCommand(CauseOfTransmission cot, int ca, byte qoi)
        {
            Frame frame = new T104Frame();

            EncodeIdentificationField(frame, TypeID.C_IC_NA_1, 1, cot, ca);

            EncodeIOA(frame, 0);

            /* encode COI (7.2.6.21) */
            frame.SetNextByte(qoi); /* 20 = station interrogation */

            if (debugOutput)
            {
                Console.WriteLine("Encoded C_IC_NA_1 with " + frame.GetMsgSize() + " bytes.");
            }

            sendIMessage(frame);
        }