MATPOWER工具本质原理解析
目录
- 前言
- case14文件
- system MVA base
- busdata(总线参数)
- generator data(发电机参数)
- branch data(支路参数)
- generator cost data(发电机耗损参数)
- bus name(总线名称)
- 总结
- runopf文件
- 输入值(可选)
- 返回值(可选)
- 调用方式
- 代码内容
- 总结
- 文件功能
- 如何用来做安全估计的仿真
- 问题
前言
我们以最优潮流的计算来研究MATPOWER工具本质原理,为了后续做电网攻击检测仿真做技术铺垫。
我们知道运行IEEE标准14电网模型的最优潮流计算的方法为:
runopf('case14')
这条语句在Matlab中涉及两个文件:
- runopf.m
- case14.m
我们来分别来考察文件内容。
case14文件
该文件为IEEE 14总线潮流数据测试用例。猜想是给出了IEEE标准14总线电网的所有参数,文件内的参数矩阵如下。
system MVA base
据说电力中的MVA是变压器容量单位或者是功率的单位或者发电机发电功率单位等。baseMVA是一个标量,用来设置基准容量。这个数值保持默认100即可。
busdata(总线参数)
包含参数以及其含义:
- bus_i用来设置母线编号,范围为1~29997。
- type用来设置母线类型,1为PQ节点,2为PV节点,3为平衡节点;
- Pd用来设置母线注入负荷的有功功率
- Qd用来设置母线注入负荷的无功功率
- Gs用来设置与母线并联的电导
- Bs用来设置与母线并联的电纳
- area 用来设置电网断面号,可设置范围为1~100,一般设置为1
- Vm用来设置母线电压的幅值初值
- Va用来设置母线电压的相角初值
- baseKV用来设置该母线的基准电压
- zone用来设置省耗分区号,可设置范围为1~999,一般设置为1
- Vmax用来设置工作时母线电压最高幅值
- Vmin用来设置工作时母线电压最低幅值
所以这些都是标准IEEE电网的总线参数,是一定的。 在动态估计的应用里应该是动态的(随时间变化)
generator data(发电机参数)
- bus用来设置接入发电机的母线编号
- Pg用来设置接入发电机的有功功率,注意功率输入的是有名值
- Qg用来设置接入发电机的无功功率
- Qmax用来设置接入发电机的无功功率的最大允许值
- Qmin用来设置接入发电机的无功功率的最小允许值
- Vg用来设置接入发电机的工作电压,注意输入的是标幺值
- mBase用来设置接入发电机的功率基准
- status用来设置发电机的工作状态,1表示投入运行,2表示投出运行
- Pmax用来设置接入发电机的无功功率的最大允许值
- Pmin用来设置接入发电机的无功功率的最小允许值
- 其余的Pc1,Pc2,Qc1min,Qc1max,Qc2min,Qc2max,ramp_agc,ramp_10,ramp_30,ramp_q,apf均表示发电机其他特征量,在实际计算中可以设置为0
所以这些都是标准IEEE电网的发电机参数,是一定的。 (待商榷)
branch data(支路参数)
- fbus用来设置支路起始节点编号
- tbus用来设置支路终止节点编号
- r用来设置该支路电阻,注意阻抗导纳等参数输入的都是标幺值
- x用来设置该支路电抗
- b用来设置该支路电纳
- rateA用来设置该支路长期允许功率
- rateB用来设置该支路短期允许功率
- rateC用来设置该支路紧急允许功率
- ratio用来设置该支路变比,若该支路仅仅为导线则设置为0,若含有变压器,则该变比为fbus侧母线基准电压与tbus侧基准变压之比
- angle用来设置支路的相位角度,如果支路元件为变压器,则就是变压器的转角,如果支路元件不是变压器,则相位角度为0度
- status用来设置支路工作状态,1表示投入运行,0表示退出运行
所以这些都是标准IEEE电网的支路参数,是一定的。 在动态估计的应用里应该是动态的(随时间变化)
generator cost data(发电机耗损参数)
注意:如果generator cost有n个generator行,那么cost矩阵的前n个generator行包含相应发电机产生的有功功率的成本。
如果generator cost有2n个generator行,那么行ng+1到2ng包含相同格式的无功成本。
以下按照顺序:
- model 1-分段线性 2-多项式;
- startup 以美元计算的启动成本;
- shutdown 以美元计算的关闭成本;
- N(=n+1)定义n段分段线性代价函数所遵循的数据点的个数,或定义n阶多项式代价函数的代价系数的个数;
- 后面的参数是损耗函数的细节。
以上的内容保持默认不必更改。
bus name(总线名称)
顾名思义
总结
所以各种case文件只是包含了IEEE标准的电网的参数,可以说是一种模型例。MATPOWER的核心还是在于runopf文件。
备注:如果需要查看数据格式意义请在matlab命令行输入
help caseformat
runopf文件
调用形式为:
[RESULTS, SUCCESS] = RUNOPF(CASEDATA, MPOPT, FNAME, SOLVEDCASE)
输入值(可选)
参数 | 输入 |
---|---|
CASEDATA | case结构或包含文件名称和case数据的字符串(默认为’case9’) |
MPOPT | 用于指定解决方案算法、输出选项终止容限等 |
FNAME | 将输出写入文件,文件名 |
SOLVEDCASE | 将以MATPOWER大小写格式保存的文件名 |
返回值(可选)
参数 | 返回 |
---|---|
RESULTS | 结构包含以下字段:Order - 内外数据转换; et-时间,单位为秒;success标志,1 =成功,0 =失败 |
SUCCESS | 成功标志,可以在第二个参数单独返回 |
调用方式
results = runopf;
results = runopf(casedata);
results = runopf(casedata, mpopt);
results = runopf(casedata, mpopt, fname);
results = runopf(casedata, mpopt, fname, solvedcase);
[results, success] = runopf(...);
同时,为了与以前的MATPOWER版本兼容,一些结果可以作为单独的输出参数返回:
[baseMVA, bus, gen, gencost, branch, f, success, et] = runopf(...);
举例如
results = runopf('case30');
代码内容
主要是做一些“外围工作”,比如默认参数预设、输出、输出写入文件等。
核心是调用了另一个文件opf.m,而文件opf.m又调用了opf_args.m文件。事实上整个软件的程序包基本上是嵌套关系(指的是进行运算的函数文件),顶层文件通过调用函数文件来完成各个模块的运算工作,然后将结果整合输出。
总结
文件功能
就目前我的理解来说,软件程序做的是利用已知的系统参数,来求解当前各个节点的电压等参数。而系统参数就来自诸如case14等参数文件。
如何用来做安全估计的仿真
因此对于安全估计的仿真应用来说,需要的节点参数数据是随时间动态变化的(才能做估计),因此需要设置系统参数是随时间动态变化。
具体而言,应该是通过编写case文件中的参数矩阵,使得矩阵中的某些参数随着时间动态变化(目前还没确定是哪些矩阵中的哪些参数会动态变化,经过初步的思考和搜索,考虑到动态变化主要是由于用户端的用电波动产生,因此动态变化的参数应该在bus总线端和branch分支端的矩阵中)。
依据网友所述,为了用matpower做24小时的最优潮流调度,使用脚本动态修改case9.m中的bus矩阵数据,脚本代码可以实现如下:
load=xlsread('D:\opf\data.xlsx','sheet1','a1:i24');
mpc=loadcase('case9');
for i=1:24
mpc.bus(:,3)=load(i,:);
result=runopf(mpc)
end
关于负荷数据的获取:
24小时负荷数据可以下载网上共享的新英格兰电力数据,里面有好多年的数据集。
一句话总结:后续应当是要在case上做文章体现动态,利用matpower计算得到节点动态参数。利用估计方法对节点进行量测和估计。
问题
现在相当于是产生了动态变化的各节点数据(属于量测数据),但是系统模型是怎样的?
MATPOWER工具本质原理解析相关推荐
- UnityEditor蒙皮动画SkinnedMeshRenderer 使用骨骼RootBones的Gizmos可视化工具和原理解析
Unity的蒙皮动画 在UnityEditor,使用SkinnedMeshRenderer承载蒙皮动画 帧动画和骨骼动画,蒙皮动画等等理论,还是得抽空学习一下的, 但要是在不懂原理的情况下(不懂比似懂 ...
- [原创工具] 文件MD5批量修改工具及原理解析(附C#源码)
1.首先告诉大家怎么查看文件的MD5码,命令窗口中输入如下命令: certutil -hashfile 文件名.后缀 MD5 2.原理剖析: 当某个文件的某段数据改变了,哪怕是变了一个字节,那么这个文 ...
- Tomcat 架构原理解析到架构设计借鉴
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Tomcat 架构原理解析到架构设计借鉴 Tomcat 发展这 ...
- Android 插件化原理解析——Hook机制之AMSPMS
在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook:插件框架通过AOP实现了插件使用和开发的透明性.在讲述DroidPlugin如何实现四大组件的插件 ...
- 【Hadoop】HDFS操作、数据上传与下载原理解析、高级特性及底层原理
HDFS操作.数据上传与下载原理解析.高级特性及底层原理 1 HDFS操作 1.1 Web Console网页工具 1.2 命令行 1.2.1 普通的操作命令 1.2.2 管理员命令 1.3 Java ...
- 大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书) - 电子书下载 -(百度网盘 高清版PDF格式)...
大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书)-杨传辉 在线阅读 百度网盘下载(89hy) 书名:大规模分布式存储系统:原理解析与架构实战 (大数据技 ...
- MSN,QQ,IP Messenger,飞鸽传书,的工作原理解析
MSN,QQ,飞鸽传书,的工作原理解析 http://apps.hi.baidu.com/share/detail/14190263 关键字:MSN,QQ,飞鸽传书,IP Messenger,传文件, ...
- 私有密钥与公钥的用途与原理解析
私有密钥与公钥的用途与原理解析 数字签名是什么? 作者: 阮一峰 http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_sig ...
- 【Pikachu】漏洞练习平台做题记录+原理解析(2.2)XSS姿势和技巧
前言 Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞. 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意. pikach ...
- 分布式一致性协议 Gossip 和 Redis 集群原理解析
分布式一致性协议 Gossip 和 Redis 集群原理解析 Redis 是一个开源的.高性能的 Key-Value 数据库.基于 Redis 的分布式缓存已经有很多成功的商业应用,其中就包括阿里 A ...
最新文章
- 简单总结一下 XSS
- uva1511(找规律。。。)
- QML基础类型之data
- 福州3 2五年制计算机专业的学校,福州有哪些五年制大专
- 交叉编译出现skipping incompatible_交叉编译bluez-5.50
- Linux-获得命令帮助man
- Microsoft SQL Server 2000整合规划
- eclipse如何开发python
- android webview 字体被放大,Android WebView文字大小调整及页面缩放调整
- tar 打包压缩命令
- 微信小程序图片上传java后台
- NFS 服务器启动失败
- 脉冲时间宽度c语言,什么是脉冲宽度_脉冲宽度是什么意思
- LCA 最近公共祖先 (倍增算法)
- 基于JAVA HAPI包以树形结构实现可配置式 HL7消息接收与解析
- EMW3080 STC15轻松实现设备上云3(阿里云物联网平台、智能生活开放平台)
- BZOJ 3168: [Heoi2013]钙铁锌硒维生素 [线性基 Hungary 矩阵求逆]
- 如何用Windows命令提示符(cmd.exe)进入指定目录
- Python之王者荣耀文字游戏,以及小知识回顾
- 别样肉客与星巴克继续合作 在内地推出别样牛肉™烧烤风味三明治
热门文章
- MySQL语句判断新老客_数栖云应用场景实践——老客召回(文字版教程)
- 交通流理论3——交通流三大参数
- 爬虫----记录某新闻详情页app逆向过程(app逆向初学第一次实战)
- 最大流(Max Flow)
- 虚拟机中centos7找不到vim命令的解决方法
- ie8升级到ie11
- 表单构建html的页面代码,网页设计表单制作代码 制作一个很简单网页表单代码...
- 图书馆管理系统可行性分析报告----软件工程
- 软件需求说明书/ 概要设计说明书/项目开发计划/详细设计说明书(说明要点及要点解释)
- springboot整合aceadmin