% Q0 {; ]) t+ x ! a, b. g8 Z3 [+ r& N3 A0 X! P* |# Z$ x* ?& g: e
在PSSE中使用Python脚本:简要介绍 translated by Jackain
* X. f* {% x' H4 s0 o C
1 @" v: [- h; Q) `" n% R2 ]4 \7 B. KPSSE30提供了Python的API接口,使在PSSE中使用Python脚本语言成为了可能,这不仅使PSSE批量运行,同时可以根据你的Python代码,使处理功能更强大,更灵活。2 R) b+ f% u% X* P, N
我没有找到很好的关于在PSSE中使用Pyhton的资料,我把我能找到的东西写在这里供初学者入门。 , @2 j0 ]7 W6 j# Y4 ~# ?前面的一些资料能在使用说明书USERS.pdf的第12章找到,其他资料是通过API.pdf和IPLAN.pdf综合而来的,可以从中找到。! ?5 y; G3 y5 I* Q4 n
我发现使用Adobe的搜索功能非常有用,你可以根据一个关键词同时搜索在一个文件夹下面的所有的pdf文件,这样寻找某个函数的IPLAN和API的描述遍得很简单。IPLAN的描述一般在查找详细描述“某些传递数据的参数”的解释时非常有用。IPLAN函数的名称同API文档中Python的那些函数相同,只是后者是大写字母而已。0 c' [+ N" p6 J8 K0 W. Z
我使用的是30版本的PSSE,和2.3版的Pyhton,这篇文章的前提是你了解一些基本的Python,Mack Lutz和David Ascher写的《Learning Pyhon》非常不错。( @2 E8 |% n P$ M Python" Z# [( q; H1 _! [4 z Python.org homepage 5 Z1 g' { P0 D5 c! p& P1 z( J. vPSSE ( y1 }* R t n' `3 g! r; g' l0 CPower System Simulator for Engineering. * P2 z# {- N; t7 M# L ( P/ O/ n% w. }; t0 R 在PSSE中使用Python简介 : M8 ~/ m( N# j& y" fPSSE说明文档说:根据你在PSSE中的操作可以生成Python代码。这花了我一段时间才理解,因为我是PSSE和Python的初学者。根据以下步骤,可以生成你的第一个python代码,用来进行潮流计算分析。前提是你有一个包含有网络信息的.raw文件,格式符合PSSE30要求。# h& `; G, Z% v* h, D8 [0 A) s, h
1、# R2 I3 X8 r5 x9 ^5 a' a
打开PSSE。1 L& n4 f# R, V# G2 \1 N ]/ q ^
2、+ @3 a B; |1 S: e4 }% u; V4 F
选择“I/O Control”中的“Start Recording”菜单,输入一个PSSE写入的文件名。PSSE会自动地添加.py后缀。4 X* E" R( w6 M u$ R4 W3 G
3、 E5 S+ h! R1 b7 q; ~- b8 D( I7 O
使用“File”菜单中的“Open”按钮,读入网络信息。将文件类型设定为.raw告诉PSSE你在给他的是raw文件(不知道是原文傻还是我翻译的傻:’() 8 r. j. r; b) m, z0 O3 w; m* y4、 ) W6 s% `, y3 r+ i' X$ H7 O+ _选择“Power Flow”中“Solution”,选择“Solve”,运行潮流计算。选择所需要的设置模式,点击“Solve”按钮。1 Q1 F( O* g2 W' I
5、) @& n* R" |& Z7 w4 ^+ I
选择“File”菜单中的“Save or Show”保存运算结果。选择“Power Flow Raw Data”选项卡,点击“Data File”单选按钮,并在旁边的文本框中输入文件名。点击OK按钮。2 C5 R* ?: p2 a6 ]$ n. M
使用你最喜欢的python浏览器查看生成的python代码。 3 M& t, p O8 L7 Z
# 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""") * P3 T' d5 a( ~psspy.fdns([0,0,0,1,1,0,99,0])/ L7 j0 J8 i5 C
psspy.rawd(0,1,[1,1,1,0,0,0],0,r"""C:\Documents and Settings\jbo\MySensibleFolderName\SOLVEDtestCase_30EV30test.raw""")
% z& b; T+ r# C; ^( n ( q; v f5 Y) t6 D3 x! u. `* r* c 3 O3 R1 P7 o0 N# e( F) `5 I5 Varray([[0, 3], * S A. x! K. Y1 C ! s3 ~, d, T: ^[1, 4], # x, n) |: }9 F3 z6 s7 U[2, 5]])数字数组中最有用的功能是数字定义了标准的操作如何执行例如加法,乘法和逻辑运算。 保存数据以便在MATLAB中使用导入数据到MATLAB中有多种方法,广义来说主要有以下三种:l2 P: A2 M' Z" G/ u+ B# K
MATLAB格式.mat文件l5 }* }" W9 ^8 h! `3 L: V# a. `4 a
ASCII编码数据文件l% t. B( U! Z- t5 S2 S
文本文件MATLAB格式.mat文件这个格式需要各种文件头。我不知道有没有pythond的模块可以执行保存为.mat文件,但是在这个文件中细节描述了这种格式。ASCII编码数据文件就我所注意到的,这些文件只能存储数字信息。这些值按照行列来组织,每一行的列数必须相等。列之间可以使用各种字符隔开,比较常用的选择就是使用tab建或者空格键键入的空格。行使用转行分开,这样他们在文本编辑器中显示新的一行。下面是一个例子:
from Numeric import *m = array([1,10,2,20])m = reshape(m,(2,2))f = open('test.dat','w')for r in m: 8 U2 w1 e6 ~& k" nfor c in r: . `1 C% O) E7 }; Cf.write("%i ") 6 [. e; ?0 q% A' t. P. ?1 T- C3 ef.write("\n")f.close()
在MATLAB里面,下面的语句就可以装载test.dat文件并把它作为一个变量test。文本文件最强大的,看起来可以被容易执行的方法,就是生成一个文本字符串,当执行的时候可以生成需要的对象或者在MATLAB中的对象。但是我想这可能不是最有效的办法。例如,设想一个bus类含有fields, voltage, load 和 generation over time,如下所示:
class Bus:$ }1 u7 z7 P9 f( I9 Z
number=None- P2 T# Z; C4 q ?
Pgen=[]1 ~3 A$ @6 N# x) A
Pload=[] 3 ~, Q0 q5 E) r! X3 z- h, C$ DV=[]" ~. F5 D7 [% @! b/ m
def __init__(self,number):- ]( L" @! F' [
6 N! d4 [# @5 R9 }7 r& [" B" qself.number = number 2 w3 S9 S9 k/ e2 u; }% Y* r6 m5 b
def storeStepData(self,g,l,v):6 O# u7 K8 L% w$ V& `+ y
/ i0 J6 t+ l; P; o
self.Pgen.append(g)9 E9 h8 S9 I$ s# d7 _5 X
self.Pload.append(l)! \/ ?9 H: d" o7 B
self.V.append(v)
在类的定义中加入一种方法,这个方法可以产生适用于MATLAB的自我解释的字符串描述。1 o N6 ^0 @" V* d