引言
该学习笔记结合官方文件和个人学习见解撰写,主要分享一些常见实用功能,欢迎讨论、补充、指正。PSCAD相关免费学习资源实属稀缺,如果本文对您有所帮助,麻烦点赞评论支持一下。您的支持是我更新的动力。
使用版本
PSCAD版本:4.6.3
python版本:3.7
mhrc-automation版本:1.2.4
python编辑软件:PyCharm Community Edition 2023.2.5(非必须安装)
准备工作
python
python、pycharm的安装教程很多,此处不赘述。
PSCAD自动化库mhrc-automation
PSCAD自动化库mhrc-automation的安装可以参考这个帖子,
PSCAD通过python调用自动化库的实现
如果你和我一样是个倒霉蛋,怎么安装都不成功,可以参考这两个帖子。
python安装pscad自动化的whl
PSCAD自动化库mhrc.automation安装及使用
安装失败的原因很多,我的原因可能有:(1)电脑已经安装过anaconda和pycharm,aconda又自带python3.6;(2)自动化库安装后有问题,将python3.7和自动化库卸载后重新安装,但电脑判定对象已经存在无需安装。
最后我是通过安装AutomationLibrary_463_124\AutomationLibrary中的分装包解决的。
官方示例
A Comprehensive Script Example
文件名后面的V463和V5指PSCAD版本,这里使用SIMPLE V463讲解。
PSCAD文件System_Base_Case_TF
文件中绘制了简易的电网模型,本模型的重点在于三个断路器的开关控制。
根据断路器的开关逻辑控制可知,初始状态为开,第0.5s闭合。
个人建议:在运行python脚本前,先运行PSCAD模型进行检查,避免重复工作,检查完毕后,记得将PSCAD界面关闭。
运行结束后,将会生成System_Base_Case_TF.if12的文件夹,如果在project settings中设置过保存运行结果文件.out和生成快照文件.snp,都可以在该文件夹中找到。相关设置可以参考我的上一篇笔记。
PSCAD学习笔记(1)——Project Settings(重点snapshot设置)
Python脚本文件Switching
官方python脚本的整体思路是运行三种工况,每种工况下对3个断路器的开、关时间进行不同的设置。
此处重点讲述想要改写官方示例以自用时需要修改的部分。
版本与项目名称
pscad_version = 'PSCAD 4.6.3 (x64)' # PSCAD版本
fortran_version = 'GFortran 4.6.2' # 编译器版本
fortran_ext = '.gf46' # 编译器
project_name = 'System_Base_Case_TF' # PSCAD模型名称
fortran_version可以在Application Options——Dependencies中查询,注意修改保持一致。 project_name自定义,与PSCAD模型名称保持一致。
该示例将结果保存在POW_output文件夹中,可自定义名称。
dst_folder = working_dir + "POW_output" # 结果保存文件夹的名称,自定义
重要!!!跳过PSCAD认证环节!
原代码如下,该代码会导致脚本运行PSCAD时跳出用户登录界面,不登录就无法仿真。
pscad = mhrc.automation.launch_pscad(pscad_version=pscad_version, fortran_version=fortran_version)
修改为如下代码可以跳过认证环节。
pscad = mhrc.automation.launch_pscad(pscad_version=pscad_version, fortran_version=fortran_version, minimize=False, certificate=False)
控制组件(断路器)和阻抗扫描器的ID
# Get the "Main" canvas
main = project.user_canvas('Main') # 断路器所在的页面
# Get all breaker components 断路器的ID
b1 = main.user_cmp(1857653396)
b2 = main.user_cmp(2005115066)
b3 = main.user_cmp(656681394)
# Get the Harmonic Impedance component 阻抗扫描器的ID
harm = main.user_cmp(229910773)
main为 目标组件所在的页面。
这里的b1,b2,b3指PSCAD模型中的三个断路器B1,B2,B3的开关控制逻辑。ID获取方法:选中目标组件,右键Attributes,复制ID即可。阻抗扫描器的ID同理。
控制组件(断路器)的参数设置
以工况一为例,断路器1的开关逻辑为初始状态为开,第0.5s闭合,断路器2/3的开关逻辑为初始状态为开,第555s闭合(有限的仿真时间下即断路器不工作)。
注意:脚本中的参数设置不会受到模型中参数设置的任何影响,脚本运行时将覆盖模型中的设置。
#-----------------------------------------------------
# Test 1 Energize T1 with T2 and T3 out of service
#-----------------------------------------------------
# Close Breaker 1 at 0.5
b1.set_parameters(INIT=1, TO1=0.5)
# Open Breaker 2
b2.set_parameters(INIT=1, TO1=555)
# Open Breaker 3
b3.set_parameters(INIT=1, TO1=555)
有人会问,为什么这两个参数叫INIT和TO1?其他组件的参数叫什么呢?
双击断路器1的开关逻辑,点击想要在脚本中设置的参数,阅读下方的说明就可以得到答案。其他组件同理。
工况运行
project.run()即运行仿真。
注意:该指令相当于点击PSCAD中的Run按钮,因此需要先设置好project settings并保存,才可以运行脚本。
project.run()
# Save data to output folder
folder = os.path.join(dst_folder, "Test_1")
File.move_files(src_folder, folder, ".out", ".inf")
Test_1为保存工况一结果建立的文件夹,可自定义。文件夹中保存了所有的.out和.inf文件。
结论
python脚本在需要大批量进行PSCAD仿真工作时十分有效,非常推荐大家学习。文章来源:https://www.toymoban.com/news/detail-836853.html
如果不想要对.out文件做复杂的处理,只想把模型中的波形图保存下来该怎么做呢?感兴趣的朋友可以点赞评论一下,有机会我会在后续的更新中进行讲解。文章来源地址https://www.toymoban.com/news/detail-836853.html
到了这里,关于PSCAD学习笔记(2)——python调用PSCAD自动化库代码解析:组件控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!