写在前面的话

期待了好久,终于在这2015下半年开始第一天,正好也是自己本科毕业一周年之际开通了自己的第一篇博客。由于毕设课题方向需要海量的原始数据仿真,想想就泪流满面,于是开发了一个BPA仿真接口程序进行批处理计算,现在终于解放了!其实这种方法早就有人已经实现,只是目前很难获得公开的代码。一直以来很喜欢很多国内外开源社区那样的分享环境,利用前人的研究成果会节省了很多时间和精力,所以将这个小程序分享出去,希望给需要用到的人带来一点点小便利。作为一只菜鸟级程序猿,代码肯定还有许多优化和改进的地方,有问题或者想指教的可以发私信交流。最后要十分感谢在编写过程中,中国电力科学研究院董老师的指导和帮助!


BPA暂态稳定仿真批处理的实现

具体过程

BPA 是分析电力系统动态行为之有力工具,能够快速准确地计算大型复杂电网发生故障以后的暂态稳定性。但是利用BPA每次只能处理一种负荷水平下的一种故障状态, 如果需要再次计算, 必须重新修改负荷或故障状态等条件。而对于大型复杂电网, 当利用数据挖掘的方法来研究其暂态稳定性时,需要模拟计算的故障状态和负荷水平数量是巨大的,如果每次都需要人工干预输入数据和故障状态, 不仅工作量巨大,而且很容易出错。所以通过开发一个外围环境可以很好地解决了上述问题, 在计算过程中不需要人工干预, 大大提高了计算的速度与效率。
下面详细介绍整个接口技术的实现过程。

  1. 人工输入数据文件, 包括潮流计算和稳定计算所需要的原始数据, 并且将所要研究的潮流方式和故障事件分别存放于文件夹中;

  2. 启动程序通过文件复制重命名自动修改相应的潮流文件, 然后在程序中自动调用BPA 中的潮流计算程序进行潮流计算;因为暂态计算必须在潮流潮流计算结束后方可进行,所以当潮流计算结束后,务必要侦测潮流计算的进程是否结束;

  3. 如果潮流计算程序进程已经结束, 则控制程序再次利用文件复制重命名语句自动修改相应的稳定计算文件, 接着启动BPA 的稳定计算程序进行稳定计算, 并且在给定充足的时间以后强制关闭稳定计算进程(因为当稳定计算结束时, 进程不会自动关闭);

  4. 当所有的计算都已结束后, 再将需要的结果文件复制保存到结果文件夹中并重新命名(BPA每次计算都会更新结果文件),然后进行下一轮计算。

代码块

源程序是基于VC++6.0平台开发的

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <windows.h>
#include <tlhelp32.h>int permit;
char pfexe[10]={"pfnt.exe"};int checkproc()    //检测进程是否结束,结束则返回1
{int bz=1;PROCESSENTRY32 pe32; //用来存储进程信息的结构体pe32.dwSize=sizeof(pe32);HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//获取进程快照if(hProcessSnap==INVALID_HANDLE_VALUE){printf("调用失败\n");return 1;}BOOL bProc=Process32First(hProcessSnap,&pe32);while(bProc){//pe32.th32ProcessID进程ID和pe32.szExeFile进程名if(stricmp(pe32.szExeFile,pfexe)==0)bz=0;bProc=Process32Next(hProcessSnap,&pe32);}CloseHandle(hProcessSnap);if(bz==1)return 1;elsereturn 0;}int KillMyProcess(char *exeName)      //结束进程函数
{int rc=0;HANDLE hSysSnapshot=NULL;PROCESSENTRY32 proc;hSysSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);if(hSysSnapshot==(HANDLE)-1) return 1;proc.dwSize=sizeof(proc);if(Process32First(hSysSnapshot,&proc)){do{if(stricmp(proc.szExeFile,exeName)==0){HANDLE Proc_handle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,proc.th32ProcessID);if(Proc_handle==NULL||!TerminateProcess(Proc_handle, 0))rc=1;else rc=0;}} while(Process32Next(hSysSnapshot,&proc));}CloseHandle(hSysSnapshot);return rc;
}main()
{int pfnum=25,swnum=33;     //分别表示潮流方式和故障种类的个数int i,j,n=1;              //n  处理的文件个数统计char  filename1[20],filename2[20],filename3[20],filename4[20];for(i=1;i<25;i++){sprintf(filename1,"dat\\%d.dat",i);      CopyFile(filename1,"IEEE39\\039bpa.dat",false);system("start H:\\BPA程序\\BIN\\pfnt\\pfnt.exe");Sleep(2000);  //延时2spermit=checkproc();if(permit==1){for(j=1;j<=33;j++){sprintf(filename2,"swi\\%d.swi",j);             CopyFile(filename3,"IEEE39\\039bpa.dat",false);system("start H:\\BPA程序\\BIN\\swnt\\swnt.exe  ");Sleep(11000);//延时11s--时间根据自己仿真时间确定KillMyProcess("swnt.exe"); if(KillMyProcess("swnt.exe")!=0) printf("进程没有被结束掉!\n");sprintf(filename2,"result\\%d.OUT",n); sprintf(filename3,"result\\%d.SWX",n); CopyFile("IEEE39\\039bpa.OUT",filename2,false);CopyFile("IEEE39\\039bpa.SWX",filename3,false);Sleep(1000); n++;printf("已经完成第 %d 个\n",n-1);}}} return 0;
}

PSD-BPA 暂态稳定仿真批处理计算方法的实现相关推荐

  1. 暂态matlab仿真,基于matlab的电力系统暂态稳定仿真

    基于matlab的电力系统暂态稳定仿真(论文10000字) 摘要:本文主要针对电力系统出现短路故障时,电力系统暂态失稳的问题,采用了MATLAB R2014a软件中的Simulink模块搭建了暂态稳定 ...

  2. 电力系统暂态稳定仿真/simulink仿真 simulink搭建单机无穷大系统进行暂态稳定性仿真

    电力系统暂态稳定仿真/simulink仿真 simulink搭建单机无穷大系统进行暂态稳定性仿真, 1.各种短路故障,断线故障下,系统的暂态稳定性 2.观察自动重合闸.故障切除快慢,线路串联电抗器和并 ...

  3. matlab暂态信号,MATLAB6在电力暂态波形仿真实现中的应用

    1概述现代继电保护不但要测量电力系统稳态情况下的特性,还要测量电子系统暂态情况下的特性.对绝大多数保护装置来说,不可能利用实际电力系统的人工短路试验来检验其性能.继电保护试验设备应具有仿真能力,能模拟 ...

  4. 计算机专业申请计算生物学,卡内基梅隆大学计算生物学硕士专业

    卡内基梅隆大学计算生物学硕士专业为综合项目,助力于运用现代计算机科学.统计学.数学方法探索生物学与生物医学问题.卡内基梅隆大学计算生物学硕士专业面向想要直接到产业部门工作,或想要探索计算生物学但不想继 ...

  5. Swin Transformer V2!MSRA原班人马提出了30亿参数版本的Swin Transformer!

    关注公众号,发现CV技术之美 [写在前面] 在本文中,作者提出了将Swin Transformer缩放到30亿个参数的技术 ,并使其能够使用高达1536×1536分辨率的图像进行训练.通过扩大容量和分 ...

  6. 【CV】Swin Transformer:使用 Shifted Windows 的分层视觉 Transformer

    论文名称:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 论文下载:https://arxiv.org/ ...

  7. 一个小型RISC-V开源处理器核介绍!

    [编者推荐语]最近看到了一个开源的RISC-V处理器设计,仅仅5000行左右的verilog代码,功能却非常完善.代码全部为手动设计的verilog代码,可读性非常强.设计者完成了包括CPU内核设计, ...

  8. Tinyriscv FPGA移植

    Tinyriscv介绍 Tinyriscv: 本项目实现的是一个单核32位的小型RISC-V处理器核(tinyriscv),采用verilog语言编写. tinyriscv有以下特点: 支持RV32I ...

  9. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows(论文翻译)

    摘要 本文提出了一种新的视觉转换器,称为Swin Transformer,它可以作为计算机视觉的通用主干.在将Transformer从语言适应到视觉方面的挑战源于这两个领域之间的差异,例如视觉实体的规 ...

最新文章

  1. DataGrid入门经典(C#)
  2. mega_[MEGA DEAL] Android课程的Java基础知识(61%折扣)
  3. 贵阳市计算机智能考试,白云区教育局关于对计算机智能考试考点考场建设开展专项检查的通知(白教通字〔2020〕79号)...
  4. 在windows下安装PyPdf2
  5. 飞凌开发板 cramfs 镜像文件修改
  6. Storm精华问答 | storm与Hadoop区别?
  7. linux的shell命令 a,linux shell命令大全(都是随堂笔记)
  8. python学来干什么-学 Python 都用来干嘛的?
  9. [book] iOS 8 Swift Programming Cookbook
  10. 深入解读Linux进程调度系列(3)——调度的执行过程
  11. Python 库 PyPI 危机!
  12. NJUPT南邮 | 离散数学_实验一
  13. python少儿编程竞赛_家长必读!国内外含金量最高的编程比赛全在这了!
  14. 2019蓝桥杯国赛c++B组
  15. go mysql transfer_GitHub - weiki516/go-mysql-transfer: MySQL Binlog 增量实时同步工具
  16. html炫酷在线,html单页炫酷
  17. 小丁带你走进git的世界三-撤销修改
  18. 基于pyqt5 构建弹窗进度条,在大型计算中实时显示进度
  19. 绘图基础--画弧,扇形,弓形
  20. Android 性能优化探究,不愧是Alibaba技术官

热门文章

  1. 标签软件如何批量打印多排条码标签
  2. 带看板的项目管理工具TaskCafe
  3. 8 PyQt5 QTabWidget
  4. java/php/net/python高校大学生创新创业管理系统设计
  5. 我用rpgmaker mz制作牧场游戏范例
  6. AirSim动态 | 安装配置AirSim环境(一)
  7. Dom型xss的理解和反射型xss实战操作
  8. HTML图像、背景、颜色
  9. 带有日历提醒的软件,电脑桌面便签可设定日历提醒
  10. 华为、小米轮番超越三星激动人心,且莫沸腾,三星和苹果优势仍在