& ^7 @+ ]6 A6 _. A" E& V2 x+ T/ u; r' }$ E0 c6 V) u( v6 I. R
9 R/ H5 P2 L& W2 |3 P
在PSSE中使用Python脚本:简要介绍 translated by Jackain
+ H# l4 P; S9 M% o! _( c _6 `
1 @" k0 `7 Z( c, V9 E! xPSSE30提供了Python的API接口,使在PSSE中使用Python脚本语言成为了可能,这不仅使PSSE批量运行,同时可以根据你的Python代码,使处理功能更强大,更灵活。 - S: Q C* m% _+ y! R$ s- |我没有找到很好的关于在PSSE中使用Pyhton的资料,我把我能找到的东西写在这里供初学者入门。2 E" z; Q6 p$ E( u8 N
前面的一些资料能在使用说明书USERS.pdf的第12章找到,其他资料是通过API.pdf和IPLAN.pdf综合而来的,可以从中找到。 9 e5 L; q& ]# R+ S& D2 P) \我发现使用Adobe的搜索功能非常有用,你可以根据一个关键词同时搜索在一个文件夹下面的所有的pdf文件,这样寻找某个函数的IPLAN和API的描述遍得很简单。IPLAN的描述一般在查找详细描述“某些传递数据的参数”的解释时非常有用。IPLAN函数的名称同API文档中Python的那些函数相同,只是后者是大写字母而已。 ) r* I3 L4 l+ ]% [5 ?4 Q: A5 Z) I \我使用的是30版本的PSSE,和2.3版的Pyhton,这篇文章的前提是你了解一些基本的Python,Mack Lutz和David Ascher写的《Learning Pyhon》非常不错。 8 h8 ]6 B% r6 BPython6 E: Z& Q# l5 C! i- {. J( \9 T! e Python.org homepage , u! I7 q" g% ^" _$ ^9 ` PSSE# {; p( g" z) `# a Power System Simulator for Engineering. / ^) v( d* L( Q . H9 M* n i* \7 S v在PSSE中使用Python简介% q I; \% D* ]; S
PSSE说明文档说:根据你在PSSE中的操作可以生成Python代码。这花了我一段时间才理解,因为我是PSSE和Python的初学者。根据以下步骤,可以生成你的第一个python代码,用来进行潮流计算分析。前提是你有一个包含有网络信息的.raw文件,格式符合PSSE30要求。$ c: ]: v/ V; b' y$ e
1、 6 [ I% Z+ P, r' j, N) `8 V打开PSSE。6 M `0 ?9 B$ M3 T% F0 [$ s( F
2、% Z) N, U9 L- @# |8 i4 a
选择“I/O Control”中的“Start Recording”菜单,输入一个PSSE写入的文件名。PSSE会自动地添加.py后缀。 1 W7 C! G3 H1 {) b; t/ B) Z3、 % `, Y" r& j4 o0 j+ O+ t使用“File”菜单中的“Open”按钮,读入网络信息。将文件类型设定为.raw告诉PSSE你在给他的是raw文件(不知道是原文傻还是我翻译的傻:’() # J. D# k+ ]0 |4 n( {$ ~2 V4、 ) O* N; F5 E4 \: r5 r2 k选择“Power Flow”中“Solution”,选择“Solve”,运行潮流计算。选择所需要的设置模式,点击“Solve”按钮。 / O$ o$ g4 ^- {" ^; {* S5、 ; x5 C6 s6 c; J7 ?5 _选择“File”菜单中的“Save or Show”保存运算结果。选择“Power Flow Raw Data”选项卡,点击“Data File”单选按钮,并在旁边的文本框中输入文件名。点击OK按钮。* f% [; p/ K& I: M! _$ c1 U
使用你最喜欢的python浏览器查看生成的python代码。; v. j+ j+ J8 U9 l# o- n. h
# File:"C:\Documents and Settings\jbo\MySensibleFolderName\pssetest.py", generated on TUE, FEB 08 2005 14:11 psspy.read(0,r"""C:\Documents and Settings\jbo\MySensibleFolderName\testCase_30EV30test.raw""") 0 f8 @4 Y3 n3 n1 C# @1 C2 d O# ppsspy.fdns([0,0,0,1,1,0,99,0]) # o0 D3 I- ]+ J3 F0 y7 Qpsspy.rawd(0,1,[1,1,1,0,0,0],0,r"""C:\Documents and Settings\jbo\MySensibleFolderName\SOLVEDtestCase_30EV30test.raw""")
注意,所有的方法都是通过一个叫做psspy的对象调用的。这个对象包括所有可用的方法和对象。他们看起来只不过是通过一个列表来组织的。我还没有写任何接口对象来组织和调用psspy方法时,就是这么想的。(瞎翻译的)3 g" t8 W! d# s1 J2 N
注意声称路径字符串的方法,这不是python提倡的格式,下面的写法更好:: R. Q" o- F# N6 C% I3 ]# g K
"C:\\Documents and Settings\\jbo\\MySensibleFolderName\\testCase_30EV30test.raw".
; m: b* ~0 G* Q: x 怎样来运行python代码- A j- l0 v0 J; ~* j+ b* J
我试过三种方式 6 e& T) [; g) z9 K; Y5 G1、 ' S* h: N5 C' f9 b4 c: n6 d在PSSE中打开命令输入窗口(command line input, CLI)任务。) z& { Q' {" M7 S
2、 $ e+ N% v/ V+ V2 q+ X在PSSE中选择“Run Automation File”按钮运行一个python文件。. x9 S, A5 B2 y& P9 `: t
3、4 Z- r% j/ r) ^8 z( N/ L
在PSSE30中python文件作为一个命令行变量。你可以指定图形界面只有在完成之后才出现。这可以为机器节省内存。在这种情况下,你可以指定仿真的母线数量。可以参照PSSE Users Manual中的PSSE Overview。9 R L: D7 W4 T! [ 在PSSE中打开CLI5 ^; a# m% c* I
1、 / N; f' O7 a' q4 @+ k2 `; I在“I/O Control”菜单中选择“Begin command line input session”。 ' K; Q# c: P& W2、; l6 v* R2 {. O2 }0 j8 L
使用“Command Language”选择框将语言更改为python。 * ~( a7 [0 F: m: S7 ^* g3、 " S: ~; b1 k7 W E选择“RunAuto”按钮并选择一个python文件,PSSE会运行那个文件。 ' K( R5 F: Y5 x' K; l! g注意python命令可以直接在控制台输入。控制台动作同编译python的交互式平台不同,它不自动显示调用方法所返回的结果。要想显示的话必须使用python的print命令,例如:print(psspy.aMethod(myParameters))。 & D. m% \5 h' ]) E" t一个重要的点是所有列出的方法都是psspy方法。所以使用要使用totbus方法返回母线数量时,输入CLI时不能使用ival=totbus(),而应该使用ival=psspy.totbus()。在CLI中使用print(ival)来显示ival。Python语法也可以使其简化,如:from psspy import * 。采用何种编程风格由用户决定。 9 M! u6 n; I& e, O ) s ?: n& \4 K; n, ?在IDLE编译平台测试python代码 - H1 s# N/ o7 s. v我花了让人崩溃的长时间来寻找下面这个加入到python路径的方法。/ Q" C2 K! G3 r; ~6 t' A
当你想将自己写的一个模块导入python,或者要把一个处在其他文件夹下的模块加入到python文件中去,那么下面的方法就大有用啦: " H* p6 l/ k" ]/ g8 j7 n' e; l* ?1、1 a7 Q: h f/ H* r
创建一个扩展名为.pth的文件。我们起个很漂亮比尔盖茨又很喜欢的名字myconfig.pth。当你在使用记事本之类的编辑器时就要小心了,不要保存成myconfig.pth.txt哦。 3 U: F5 S7 a4 U* V4 {) `+ b( j2、 p! u# v7 F$ }5 B) T; H把这个文件放到python根目录下面去,比如我的就是C:\Python23。 ]7 ]" M- B% t! F3 i4 Z
3、5 S. B7 W" l2 i c. [: j0 w" x
把每个你想加入PYTHONPATH的文件夹全路径,单独一行的加入到这个文件中去。例如,第一行可能就是:C:\aFolder\work\Python。 ; }6 K0 u' n t$ _ P( W/ _- i这样可以解决下面的错误,当你导入Spam这个模块的时候就不会出现:ImportError: No module named Spam.2 K1 X# f* i1 I- N' a% a& N. m
/ t$ W& ^) [, T( m2 |: f获取和设置网络数据. R. p% Q- p, A$ V
直接获取数据是很费力费时的事情。在网络中的每个部分都有几个不同的参量,比如负荷。每个参量均必须分别通过函数调用来访问。所以如果要找出每个母线的电压,那么必须对每个母线通过psspy对象调用方法busdat。它的参数通过一个字符串来解释,就如一开始所说的,这些参数可以在IPLAN说明书里找到,同Python里的命令名字相同。 0 {) f5 n X8 Y7 X生成/ H2 O6 `$ K: |: l6 |
字符/文件: l, p8 c$ U3 ~ y
格式的报告是可以的,我曾经试图寻找转存这些变量的方法,这样就可以不通过文件系统直接可以通过python代码来访问了,但是没找到。如果有谁找到了这种方法请告诉我。如果西门子能改进一下API的话这将变得很简单,但是我们现在只能根据已有的东西来做。 . o+ D6 s% `) i; g* }3 ?% \/ o反过来,也令人郁闷的是,要设置数据,每个部分的所有参量都要提供出来。幸运的是,有默认的对象_i 和_f,当你不想改变某个值时,插入这些对象即可。当运行和导入我自己的主模块时,我把这些对象存储在psspy对象中,这样每当psspy对象使用的时候,他们就能使用。对于整形和浮点数参数分别有个默认值(对象),我想他们与各自能取到的最大值相等。5 s' U. D2 @5 X2 d o( c m# a