/// <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); }
/// <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); }
/// <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); }
/// <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); }