6.11 低压继电保护控制
1、概述
随着电网结构日趋复杂,继电保护策略的要求逐渐提高,传统的微机继电保护设备面临着难以维护、扩建、代码容易过时等诸多问题,而低代码控制器是一种高效率、可靠性强、编程难度小的工业控制器,不仅能够实现各种复杂的控制场景,还提供了形象化的操作界面,能够观测控制效果的同时,还能快速维护和修改控制网络中的有关参数,非常适合于目前结构时常变化的新型低压电网保护体系的构建。
该案例利用simulink搭建起电力系统的仿真模型,并构造三段式电流保护控制的AOE网络图,在AOE网络图的基础下逐个完成配置文件的编写,利用S-Function模块建立起matlab与控制器的连接,最后在控制器网关监控界面与仿真示波器中观察控制器的实现效果。
2、 模型介绍
利用Matlab来搭建一个简单电力系统的Simulink仿真模型。对建立的模型进行保护定值的整定,得到相关整定值参数,通过整定值与模型的参数,来确定该电流保护三段各自的保护范围,并在对应的保护范围中设置相应的故障元件,用于在不同的范围内测试各段保护的动作情况。本设计中第三段过电流保护的验证通过加大负荷的功率来实现,建立如下图所示的电力系统simulink模型:
3、 文件配置
文件配置分为三个部分:测点配置、通信通道和AOE配置。
测点配置用于配置控制器输入和输出信号点的参数,本案例中需要的信号要是输入保护安装处的监测电流和输出的跳闸信号。
通信通道的配置是为了将控制器与simulink仿真模型建立modbus通信,实现仿真模型与控制器的信息交互。
而AOE配置是建立AOE模型网络来实现所需的控制逻辑和功能。
接下来分别介绍相关的三个方面的配置。
3.1、 测点配置
本例中的测点配置如下表所示:
序号 | 点号 | 名称 | 别名 | 是否离散 | 是否计算点 | 默认值 | 备注 |
---|---|---|---|---|---|---|---|
1 | 100001 | 测点1 | I_POINT | FALSE | FALSE | 1 | 电流值 |
2 | 100002 | 测点2 | Break_POINT | TRUE | FALSE | 1 | 开闸信号 |
3 | 100003 | 测点3 | Type | TRUE | FALSE | 0 | 保护类型 |
4 | 100004 | 测点4 | t2 | FALSE | FALSE | 0.5 | Ⅱ段延迟时间 |
5 | 100005 | 测点5 | t3 | FALSE | FALSE | 1 | Ⅲ段延迟时间 |
6 | 100006 | 测点6 | Iset1 | FALSE | FALSE | 150 | 速动整定电流 |
7 | 100007 | 测点7 | Iset2 | FALSE | FALSE | 100 | Ⅱ段整定电流 |
8 | 100008 | 测点8 | Iset3 | FALSE | FALSE | 55 | Ⅲ段整定电流 |
9 | 100009 | 测点9 | DoCal_POINT | TRUE | FALSE | 0 | 通讯控制 |
10 | 100010 | 测点10 | T | FALSE | FALSE | 0 | 仿真时间 |
其中测点1所对应的I_POINT为控制器的输入信号,即在MATLAB仿真模型中得到的保护安装处的监测电流的数值,测点2为控制器的输出信号,即满足跳闸条件后给出跳闸信号使得断路器动作。由于MATLAB仿真模型中的断路器在收到信号为“0”时跳闸,正常处于闭合时控制信号默认值应该为“1”,所以设定跳闸信号的默认值为“1”,只有当满足过流条件且跳闸动作执行后,跳闸信号Break_POINT才会置为“0”,此时断路器断路,完成跳闸动作。测点3为跳闸类型,用于在控制器监控网关界面实时观察跳闸类型。需要注意的是,本次设计中的I_POINT信号是已经经过MATLAB相关处理的电流信号,是三相电流取有效值后的最大值,实际上在真实的使用环境下,测点应该为该保护安装处的三相电流,每相电流对应一个测点,每个测点都对应一个相同的AOE网络来进行跳闸动作判断,因其操作流程具有可复制性,故不一一描述。
3.2、通信通道配置
低代码控制器通过Modbus协议与Simulink进行通信。由于Matlab仅有Modbus客户端功能,因此需要将低代码控制器配置为Modbus服务端,如下:
通道名称 | server测试通道 | 连接名称 | 测试通道 |
---|---|---|---|
连接个数 | 1 | 测点个数 | 4 |
服务端口 | 502 | 客户端IP | 127.0.0.1 |
客户端端口 | 9999 | ||
slave id | 1 | ||
通信协议 | XA | ||
一次读寄存器数上限 | 125 | ||
一次读开关数上限 | 2000 | ||
一次写寄存器数上限 | 120 | ||
一次写开关数上限 | 1968 | ||
轮询周期(ms) | 5000 | ||
超时(ms) | 1000 |
表格中包含有通信通道的各种配置信息。
服务端口设定为502,测点个数为4,客户端ip是本机的ip地址,可以在网络属性界面查询得到,客户端端口设置为9999.
序号 | 寄存器类型 | 起始地址 | 数据类型 | 新请求标志 | 轮询周期 | 点号 |
---|---|---|---|---|---|---|
1 | HOLDING | 1 | EightByteFloat | FALSE | 2000 | 100001 |
2 | HOLDING | 5 | EightByteFloat | FALSE | 2000 | 100010 |
3 | HOLDING | 9 | TwoByteIntUnsigned | FALSE | 2000 | 100009 |
4 | HOLDING | 10 | TwoByteIntUnsigned | FALSE | 2000 | 100002 |
本实验中需要用4个寄存器存储数据,其中电流值与仿真时间的数据类型均为八位浮点数,开闸信号与通信控制信号的数据类型均为二位无符号整型。
3.3、 AOE配置
AOE策略文件配置包括AOE网络定义、AOE变量定义、AOE节点定义、AOE动作定义四个部分。AOE策略文件配置是所有配置文件中最为关键的配置文件,它定义了AOE网络中的各个要素,是实现用户所需要实现的控制逻辑的关键文件。
AOE网络定义
在AOE网络定义中,定义出AOE网络个数和需要用到的一些变量的赋值,具体定义信息如下表所示:
AOE ID | 是否启用 | 名称 | 触发条件 | 触发条件参数 | 变量初始值 |
---|---|---|---|---|---|
70001 | TRUE | 三段式电流保护 | Event_Drive | t:0; flag:1; |
本设计采用判断达到过流条件后启动AOE网络的模式,故选择事件控制(即Event_Drive)。
AOE节点声明
AOE ID | 节点ID | 名称 | 节点类型 | 超时时间(ms) | 表达式 |
---|---|---|---|---|---|
70001 | 1 | 开始节点 | Condition | 10 | time>time_old |
70001 | 2 | 判断是否在一段范围 | Switch | 10 | I_POINT>Iset1 |
70001 | 3 | 结束节点1 | Condition | 10 | DoCal_POINT==0 |
70001 | 4 | 判断是否在二段范围 | Switch | 10 | I_POINT>Iset2 |
70001 | 5 | 二段延时判断 | Switch | 10 | (T-t)>t2 |
70001 | 6 | 结束节点2 | Condition | 10 | DoCal_POINT==0 |
70001 | 7 | 判断是否在三段范围 | Switch | 10 | I_POINT>Iset3 |
70001 | 8 | 三段延时判断 | Switch | 10 | (T-t)>t3 |
70001 | 9 | 结束节点3 | Condition | 10 | DoCal_POINT==0 |
70001 | 10 | 结束节点4 | Condition | 10 | DoCal_POINT==0 |
70001 | 11 | 结束节点5 | Condition | 10 | DoCal_POINT==0 |
70001 | 12 | 结束节点6 | Condition | 10 | DoCal_POINT==0 |
AOE动作定义
AOE动作定义又称AOE边定义,本项目中定义如下表:
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数 | |
---|---|---|---|---|---|---|
70001 | 1;2 | 进入保护判断 | Default | Set_Points | DoCal_POINT:0; | |
70001 | 2;3 | 一段跳闸 | Default | Set_Points | Break_POINT:0; Type:1; | |
70001 | 2;4 | 进入二段保护范围判断 | Default | NONE | ||
70001 | 4;5 | 进入二段保护延时判断 | Default | Set_Points | flag:0; t:T*flag+t*(flag==0); | |
70001 | 4;7 | 进入三段保护范围判断 | Default | NONE | ||
70001 | 5;6 | 二段跳闸 | Default | Set_Points | Break_POINT:0; Type:2;flag:1; | |
70001 | 5;11 | 二段不跳闸 | Default | NONE | ||
70001 | 7;8 | 进入三段保护延时判断 | Default | Set_Points | flag:0; t:T*flag+t*(flag==0); | |
70001 | 7;10 | 不动作 | Default | NONE | ||
70001 | 8;9 | 三段跳闸 | Default | Set_Points | Break_POINT:0; Type:3;flag:1; | |
70001 | 8;12 | 三段不跳闸 | Default | NONE |
不需要动作的边设置为NONE,最终判断结果为需要跳闸时,需要设置动作结果,发出跳闸信号(令Break_POINT等于0),并且反应动作的保护类型。时间记录位t用于记录进入某一次过流事件进入某段保护范围的初始时间,T为simulink的仿真时间。
4、 建立控制器与matlab通讯以及仿真过程
该步低代码控制器的连接和案例1中完全一致,将MATLAB的文件夹打开到低代码控制器替代后的simulink模型文件的文件夹。
当与实体的控制器连接时,就是将所实现的功能放入实体的控制器中,只需要将控制器与电脑通过网线连接后,修改主站和从站的ip地址。 控制器(从站ip)可以从发现工具获得。
主站ip为本机ip地址,通过网络属性配置中可以查询。
matlab界面操作
配置完成后,进入matlab的界面。然后打开控制器的源文件modbusCom1.m文件,该文件是以S-Function模块模板为基础实现的利用Modbus通信协议与控制器进行通信的模块。在输入输出量不同的控制模块下,必须先修改modbusCom1.m文件中的相关参数。
下面程序段用于修改输入输出量的个数:
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
当输入输出的个数发生改变时,要对应修改NumOutputs、NumInputs后对应的数字。
下面程序段用于建立simulink与控制器的通信:
global m;
m = modbus('tcpip', '127.0.0.1', 502);
输入的ip地址为从站ip,当从站ip不是本机即连接实体控制器时需要改为实体控制器的实际ip地址和端口,127.0.0.1和502为主从站为同一台机器下的配置。
下面程序段用于控制器的读写:
function sys=mdlOutputs(t,x,u)
global m;
write(m,'holdingregs',2,u','double');%写入电流值
write(m,'holdingregs',10,1);%通信标志位DoCal_POINT置1
%disp(['address 2 = ' num2str(u')]);
pause(0.02); % 等待20ms使得通过modbus通信之后读到最新控制值
sys = read(m,'holdingregs',11,1,'uint16');%读分闸信号
5、 仿真结果
(1)正常运行
仿真波形图:
测点监控图:
AOE节点监控图:
从仿真波形图可以观察到电流电压波形均正常,且跳闸信号始终保持为“1”,即断路器保持在不动作的状态。在控制器网关中打开AOE文件监控器和测点文件监控器可以观察各个节点的动作情况与测点电流的实时数值,以及跳闸类型、跳闸信号的数值变化。正常运行时AOE网络可靠不动作,无跳闸响应。
(2)过负荷运行
然后通过加大负荷功率来设置满足三段跳闸的过负荷电流。
仿真波形图:
AOE节点监控图:
测点监控图
可以从低代码控制器的网关监控界面和MATLAB的仿真波形中观察到定时限过电流保护正常启动,且满足延时跳闸的要求,跳闸后的电流可以忽略不计,且跳闸信号正确显示为“0”,跳闸类型正确显示为“3”。在AOE网络监控图中看到启动三段保护跳闸的节点顺序,且其余保护可靠闭锁,没有发生误动。在MATLAB仿真波形图中可以观测到延时跳闸的效果,由于过负荷电流是直接调大负荷的功率而产生的,所以过电流事件所对应的第一个节点在仿真开始那一刻就触发了AOE网络。可以看到在经过1s左右的仿真时间延时后,动作信号变为“0”使得断路器断闸。
(3)二段保护范围内短路故障
通过在二段保护范围内加入短路故障来仿真验证二段保护的动作情况。
仿真波形图:
AOE节点监控图:
测点监控图:
在仿真时长为0.5s左右时切除了故障,与AOE网络文件配置中二段保护延时时间和三段保护延时时间的设置完全吻合。和三段同理,在AOE网络节点监控界面以及测点文件监控界面,可以看到其余保护可靠闭锁,对应此故障点的二段保护正常动作,且保护类型显示正确。通过故障相电流波形以及跳闸信号图可以确定延时效果已经实现,二段保护效果正常实现。
(4)一段保护范围内短路故障
设置一段范围下的短路故障,得到以下结果。
仿真波形图:
AOE节点监控图:
测点监控图:
一段范围内的短路故障电流很大,设置的仿真时长与二段一致,也是0.1s,但可以看到保护在故障接入的0.04s后就已经启动切除了故障,故障电流持续0.04s,其余保护可靠不动作,一段保护虽然没有设置延时,应瞬时动作,但从仿真波形来看,有0.04s的动作延迟,故0.04s的仿真延时为控制器与matlab的通信时长和控制器的AOE网络判断实现的时长之和,通过多次实验的结果可知,一段动作的仿真延时在0.01-0.05s内波动,受到各种其他因素的影响,但总体上满足继电保护速动性的要求。
6、 总结
对于继电保护控制策略中最为基础的三段式电流保护,通过matlab建立仿真模型,并将配置文件上传至控制器中后,成功实现了三段式电流保护。对各段保护仿真实验结果进行分析,可见低代码控制器能够正确的实现低压继电保护策略中典型的三段式电流保护的控制功能,且满足继电保护选择性、可靠性、速动性的要求,能够应用于继电保护系统中,加速实现继电保护系统的保护、控制、测量、数据通信一体化。
附件:低压继电保护控制.rar