TA的每日心情 | 郁闷 2017-4-3 23:39 |
---|
签到天数: 10 天 连续签到: 4 天 [LV.3]偶尔看看II 累计签到:10 天 连续签到:4 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
由于项目要用到pscad的自定义元件功能,于是花了几天恶补了一下相关知识。正好看到说明书里面的CCIN功能,受到启发,正好可以实现电流放大功能。
* t+ s0 I4 p2 k, l0 e$ }6 g; h% c5 P) _1 `0 f2 Z3 O$ b1 o
- G: \/ p! ~$ s9 s 本帖提出一种通过电流放大实现的方法,原理、实施都特别简单,但是该方法存在一些问题。
6 J; C3 G+ d* w( B/ [6 `
5 {% z% N. L8 X2 u+ R# N 开此贴目的有三:/ d, `# f- |) ]7 ?
) ~: M- f0 D/ m( H% ] 首先,抛砖引玉,分享经验,我想到的方法不一定好,希望能集思广益,看看应该如何改进;
& e8 F* h; F8 f9 u2 ^' h5 g/ N' v; \# F7 i/ A
其次,通过一个实例帮助不熟悉自定义元件的人快速入门,并提供;; W' Q$ u" K0 J# t+ j# k9 n
最后,帮助大家开拓思路,希望大家在建模时能多一种选择。3 T n8 Y- o$ z% F! g6 g4 ]
/ B" l2 _3 V" u# W) Q: \
7 `! ?& H, K* |4 v5 S
原理" @- Q; Z D1 z5 z
通过在Fortran Segment中调用PSCAD自带CCIN电流源功能,在每个仿真步长内将需要放大的电流值乘以(n-1),所得结果赋给CCIN,使得自定义元件流出电流与原电流的加和为被放大电流的n倍。
& I+ J9 T' r- t; Z" u/ q `2 J
+ m+ K6 b+ E$ x9 F) A c: w) z* a& K; l5 K% x1 X& h
实现方法
! T$ M3 \* n' V [, p7 u+ A9 l考虑到大家对PSCAD4.2较熟悉,以下介绍如何在PSCAD4.5中实现,最后的附件中有两个版本的示例。1 a% A+ W3 L- b
( g3 O) c7 o! H. x `" a; f! @! J, F! c
& V0 T& E- S# {) [# l/ M2 c1 S1.创建简单的仿真系统* r2 q% z: M6 m9 w3 s( v
如图是一个简单的电压源串两个1Ohm电阻的系统,我们要实现的是Ia2放大为Ia1的n倍,即Ia2=Ia1*n。. J7 O9 |3 L) c
1 [: T# Q- v3 E6 S2 K
/ v1 x u0 d* K2 D5 y; h5 O. M G. }; r! i* v; l* E6 q. a
2.创建与编辑自定义元件8 g# r. ~, j" a5 Y! _) J
9 W9 i0 T7 h! [5 \
为紧凑一点,把这个过程放在一张图上,红色数字对于下面的1)~6)步。0 Q4 s6 F1 X8 p' q, H& w: w2 A
1)在画布空白处点右键Create-Component,在右边弹出一个侧边栏;
0 _7 E3 Q* `. g7 f# ^' d* N0 m
, r/ \: s6 C- h 2)侧边栏中Component Wizard是元件创建向导,我们只需要填下元件的名字(Name),画布上元件显示的名称(Title),然后点Finish完成创建;0 N7 p/ S8 c# d$ F" N$ k- D
( Z7 \& S U7 [* y: F 3)在元件上右键Edit Definition进入元件编辑;
8 f+ \5 j3 J) C O+ L v4 k$ [) `4 |1 Q2 f- |
4)元件编辑界面分为3部分:Graphic图形界面,Parameter参数界面,Script脚本界面(也就是常说的编程序的地方),通过Edit Definition首先进入图形编辑界面,利用工具栏Shape里面的直线Line和端口Port,在元件上引出一根线,末端为端子N1;(PSCAD4.2好像默认将端子Connection Type设置为Input类型,颜色为绿色,请注意改为Electrical类型)
3 p [+ P( J; s* k4 Z0 J p: ~' ~* b: p4 b$ z
5)为便于元件的使用,希望在主电路直接通过修改参数的方式设置放大倍数、需要放大的电流。为此需要增加元件的参数,在Parameters界面内点击右键New parameter创建参数;
1 H4 _+ S+ ^! c' L
+ G4 u$ j# H( e% h 6)创建两个参数:需要放大的电流Current、放大倍数Scale,有2点需要注意:
1 E- U; K) t* w' ?) `$ C
- f) C/ _4 u; r- N' v+ U a)每个参数中还有其他条目,Description是参数名,Symbol是在Script中用到的变量名,不要混淆;: H7 F4 G4 w0 C* Y9 S1 E) c( k! J4 I5 B
b)Current为text文本类型,因为需要放大的变量是通过文本作为参数输入的,Scale为integer整型,这点比较好理解,在此处我设置了放大倍数的上下限是1~1000,也可以修改为其他值;
" k6 d, O) d! \. k8 I8 u, w! Zfile:///C:/Users/a/Documents/My%20Knowledge/temp/d48ab359-523f-4567-b793-723d9ea7e439.png$ I' e2 T/ D+ g: {
' F- J2 Z: h) B3.编写脚本
& k. O# `0 P2 S$ b3 v% i4 ^4 q 上一步中创建的元件是“死”的,这里才是整个元件的核心 ,在Script里面加入如下代码:4 W: F- H) k8 d6 ?4 u! R7 b. p1 O5 e9 Z
G/ t; b3 u1 s: r+ c0 j- #BEGIN! h( ^7 I) z: ?
- ENABCCIN($N1,$SS)=.TRUE.8 J4 E7 N I# L+ q8 T4 p% i: A, h
- #ENDBEGIN( p g7 N8 t8 X2 A
- CCIN($N1,$SS)=($Scale-1)*$Current
复制代码 : S8 ^8 ]- J& {" l
) b3 [5 F6 f, Y% ^1 E# W
注意,Script包含多个Segment,请确保该段代码是放在Fortran Segment中。# O) c8 y! ?- x4 n
) e$ V# O, N: N2 o, \% M7 Q4 t0 J
解释一下这几行代码:1 D. n# l; w' O3 I4 R* s6 k. h4 }
- w' T- W' t- j( m 1) #BEGIN/#ENDBEGIN是一对指令,包含在其中的代码段只在仿真初始阶段运行一次,
- p8 \+ v3 _2 {1 D
6 {7 O# P& P0 G7 S( t 【如不识别该指令语句,请用IF(TIMEZERO) THEN...ENDIF:7 |! Q0 }; R1 H8 Z, C* T
- IF(TIMEZERO) THEN8 s# h9 z8 D0 h8 l) V/ [
- ENABCCIN($NA,$SS)=.TRUE.
& q- p" j8 e6 C$ ]! X - ENDIF
; ]1 c- ?. v& N7 X! O8 X7 l - CCIN($NA,$SS)=$Current*$Scale
复制代码 】
; Y& H9 j( e. X" z. E; p, c6 ]
2 `, v( K: a! T- e6 Q6 W5 V) U
) i1 k5 K0 r, n2 Z3 H" H 2)ENABCCIN($N1,$SS)=.TRUE.开启CCIN功能,ENABCCIN的参数是端子名$NA、子系统名$SS,前面加的$是放在变量名前面的替代符。这里的变量指的是从元件端口、系统变量、元件参数。实际上,NA、SS只是一个代号,在PSCAD将script编译为fortran的过程中,会把NA、SS替换为真实的名字,形式有点像数组,便于EMTDC软件包的运算。) T2 e7 c7 B* m. [; m
& r" b# |% {- E9 B6 i$ w. x 3)CCIN($NA,$SS)=($Scale-1)*$Current
& w5 R. L# n5 g V2 ~ CCIN产生一个接地电流源,电流大小为Current放大Scale-1倍,这条语句在BEGIN之外,说明其在每一个仿真步长中都会执行!Scal、Current是Parameter中的Symbol。
& Q) O% j% l6 g) N
" M1 A5 W. e' D4.结果' v# [/ Y% j9 A3 _; K2 t& m0 q' g
将建好的元件和主电路连接好,增加监视元件,运行后查看波形。2 g5 n. ]! ~# j& j
, e3 z' T+ W7 i' v( L
& Y. B7 S: _" a4 y8 S, X" P( j' X% n3 V
6 H! a3 F/ i5 S8 F: v6 F
+ Q# V# D/ O& Z$ F. \, F存在问题$ n$ [ Y1 L, W! G! D( Z
该种方法放大电流时,放大倍数增大将使得结果发散,表现为数值非常大(可达到10的数百次方)或干脆没有值(NaN),原因不明。
% k: H' P$ A! f" R2 N9 M' u 我的猜想是,这种方法在某些情况下可能带来网络方程无法求解的问题,其具体原因可能是方程矛盾、矩阵奇异之类的,电网络学得不太好,这里也只是瞎猜。希望大家能给点意见。& n5 ~% W) O) ?9 J
# T: P4 Q0 X6 S& }: \
. c/ W; s- _5 O3 j" M5 ]* N" h( p/ _6 L/ a5 b0 T! M7 {
' X) o8 S1 Y6 R1 a: a0 Q
PSCAD电流放大(包含4.5、4.2版本).rar
(763.01 KB, 下载次数: 4)
5 ?. ^2 y& O$ P* s+ G7 d2 T
|
|