TA的每日心情 郁闷 2017-4-3 23:39
签到天数: 10 天
连续签到: 4 天
[LV.3]偶尔看看II
累计签到:10 天 连续签到:4 天
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
由于项目要用到 PSCAD的自定义元件功能,于是花了几天恶补了一下相关知识。正好看到说明书里面的CCIN功能,受到启发,正好可以实现电流放大功能。
6 [9 ?6 C1 R G - u3 S; C% A9 }+ \- p/ }
& A5 _% f+ S2 V( v
本帖 提出一种通过电流放大实现的方法,原理、实施都特别简单,但是该方法存在一些问题 。
6 h/ y+ ^& v. c! {" ?- k6 R. S+ ` {
+ k2 @% M: C# N6 i) Y. \; b( j7 D7 i 开此贴目的有三:
/ k8 d9 ^8 h z% a
8 i* H' f$ j/ b; E9 E 首先,抛砖引玉,分享经验,我想到的方法不一定好,希望能集思广益,看看应该如何改进;
" v4 a& U) o* O ! X' w9 G$ X4 b" J) J
其次,通过一个实例帮助不熟悉自定义元件的人快速入门,并提供;; d, u" ^9 w/ P- I0 f
最后, 帮助大家开拓思路,希望大家在建模时能多一种选择。& U3 V7 y, r* U7 g+ ]+ k! Q3 L
5 k0 {2 C* P: Y" D0 {2 q' q: A
7 o; n& O! {( D0 |1 ^ 原理
8 ]5 D6 }0 `: {, ]5 O 通过在Fortran Segment中调用PSCAD自带CCIN 电流源功能,在每个仿真步长内将需要放大的电流值乘以(n-1) ,所得结果赋给CCIN,使得自定义元件流出电流与原电流的加和为被放大电流的n倍。
2 k" F1 y7 T- v% f 1 s" o# ~/ c. \8 P
4 Z% f6 L& u5 {: c) y 实现方法 & p$ j+ ~) w1 z* ]0 z" J
考虑到大家对PSCAD4.2较熟悉,以下介绍如何在PSCAD4.5中实现 ,最后的附件中有两个版本的示例。 2 T' ?, `1 s/ D- L
- ~5 z, C6 ]" `" }9 U" i
- W5 a5 @/ \/ p( j( Z: ? 1.创建简单的仿真系统
9 \8 G1 m! A/ o9 M# W: k4 Q- l0 f 如图是一个简单的电压源串两个1Ohm电阻的系统,我们要实现的是Ia2放大为Ia1的n倍,即Ia2=Ia1*n。
, K# V, l4 I. o! Q- s; v7 N 7 V$ m$ }" k/ l% B. Y4 ?
+ D5 N3 e6 ], I. [' m1 w1 ^: Q ! s" g6 R- ~) }" }* y
2.创建与编辑自定义元件
8 s. m, I( ?. [+ ?( w1 ~ e$ W/ I4 g* d+ s. G
为紧凑一点,把这个过程放在一张图上,红色数字对于下面的1)~6)步。
: f) u; e6 [! E; Q/ Q& b 1)在画布空白处点右键Create-Component,在右边弹出一个侧边栏; , j2 l/ U9 ^( J9 ?" Y3 f! L
3 j$ _# |- r$ c+ {) } 2)侧边栏中Component Wizard是元件创建向导,我们只需要填下元件的名字(Name),画布上元件显示的名称(Title),然后点Finish完成创建;
& X9 p8 L8 H3 K
4 l' |- s6 s/ e" A* [ 3)在元件上右键Edit Definition进入元件编辑; - q( h G4 a( x+ B( d" h
1 Q8 y6 ]& n2 D2 ?" o; X% o 4)元件编辑界面分为3部分:Graphic图形界面,Parameter参数界面,Script脚本界面(也就是常说的编程序的地方),通过 Edit Definition首先进入图形编辑界面,利用工具栏Shape里面的直线Line和端口Port,在元件上引出一根线,末端为端子N1;(PSCAD4.2好像默认将端子Connection Type设置为Input类型,颜色为绿色,请注意改为Electrical类型 ) . e3 s, P9 k; _1 U+ y
9 k3 s# R5 M" W1 q( f4 k$ B
5)为便于元件的使用,希望在主电路直接通过修改参数的方式设置放大倍数、需要放大的电流。为此需要增加元件的参数, 在Parameters界面内点击右键New parameter创建参数;
$ F7 \9 L& _/ @1 l: b
. l. P+ U+ V: U( i 6)创建两个参数:需要放大的电流Current、放大倍数Scale,有2点需要注意: 3 `$ T+ j* C3 i3 q+ w4 O
6 {5 o7 c2 c: V2 G a) 每个参数中还有其他条目,Description是参数名,Symbol是在Script中用到的变量名,不要混淆; 0 s' C! `" r- R4 w; S
b)Current为text文本类型,因为需要放大的变量是通过文本作为参数输入的,Scale为integer整型,这点比较好理解,在此处我设置了放大倍数的上下限是1~1000,也可以修改为其他值;
, [: W% H' E& B- r file:///C:/Users/a/Documents/My%20Knowledge/temp/d48ab359-523f-4567-b793-723d9ea7e439.png
4 j, p- A6 q# O! V& `. @2 z
9 s/ G4 f ]* Z" ?; ~ 3.编写脚本 7 G" F4 R* h) X/ N5 B0 z
上一步中创建的元件是“死”的,这里才是整个元件的核心 ,在Script里面加入如下代码:
. n: w2 D( S# w% P. [. x1 B
1 V0 D: U( e* q& w! e7 ]) [+ h #BEGIN1 k8 V: R' ~3 H6 W
ENABCCIN($N1,$SS)=.TRUE.
* K: V9 }2 ?/ v; Q, x. Y1 C3 b5 W #ENDBEGIN
9 j6 |# O- ~0 s" t CCIN($N1,$SS)=($Scale-1)*$Current 复制代码
I0 Z- H. T0 \4 t: u7 `* {
" ]" j! N; K" c1 z1 N 注意,Script包含多个Segment,请确保该段代码是放在Fortran Segment中 。
4 x7 P8 h0 N/ C, ^& I$ P% x; x ) T0 W, ~( T$ |& q4 Z8 x4 [
解释一下这几行代码:
7 ?0 Z* g( z8 a+ r4 w2 d% B7 z
1 B2 s9 y: v7 K. w; d5 ` 1) #BEGIN/#ENDBEGIN是一对指令,包含在其中的代码段只在仿真初始阶段运行一次 , / V3 F4 t+ z" Q8 t ~/ @. p. c$ N( s
" W! R) w( Z9 y) [" C: ?7 E/ m 【 如不识别该指令语句,请用IF(TIMEZERO) THEN...ENDIF:
" I; V' b1 n) b IF(TIMEZERO) THEN7 z4 w( w% p/ w4 Z: N$ _% L
ENABCCIN($NA,$SS)=.TRUE.% O8 d9 C9 b: A$ _4 P7 I1 ]9 }
ENDIF
7 J" h( t6 U; j, U CCIN($NA,$SS)=$Current*$Scale 复制代码 】 ! C v- t: N8 q! ~9 s* v
9 r/ z: p$ h; O, C
- @: k! X& ^/ b4 C) o$ O 2) ENABCCIN($N1,$SS)=.TRUE.开启 CCIN功能,ENABCCIN 的参数是端子名$NA、子系统名$SS,前面加的$是放在变量名前面的替代符。这里的变量指的是从元件端口、系统变量、元件参数。实际上,NA、SS只是一个代号,在PSCAD将script编译为fortran的过程中,会把NA、SS替换为真实的名字,形式有点像数组,便于EMTDC软件包的运算。8 Z8 m2 v" u x* }- U
5 W3 E9 W. ?/ s! O1 _7 F4 T8 x 3) CCIN ($NA,$SS)=($Scale-1)*$Current
! t+ Z _) J- L `4 A5 S7 K CCIN产生一个接地电流源, 电流大小为Current放大Scale-1倍,这条语句在BEGIN之外,说明其在每一个仿真步长中都会执行 !Scal、Current是Parameter中的Symbol。 ; _2 }8 |5 _$ p0 o2 | a
% l3 U4 g) W" I3 S. i4 M 4.结果 5 y& l3 n- E9 d! a
将建好的元件和主电路连接好,增加监视元件,运行后查看波形。 3 H( _* g* x, R. c8 S
& X. m7 i% z1 d) S
6 K6 S; m1 O9 u x+ V
. O3 p/ {9 e- \6 x: m
/ S( S( X0 Y I# e a 存在问题 ' F! }' P: c+ ]+ K. z8 y
该种方法放大电流时,放大倍数增大将使得结果发散 ,表现为数值非常大(可达到10的数百次方)或干脆没有值(NaN),原因不明。
6 }6 v( E6 L9 w 我的猜想是,这种方法在某些情况下可能带来网络方程无法求解的问题,其具体原因可能是方程矛盾、矩阵奇异之类的,电网络学得不太好,这里也只是瞎猜。希望大家能给点意见。 - S5 i2 r( a* B C
& A$ Q* |+ t: o8 U
! N& {# Y- b& A+ B: t; A
) v, O# w8 l+ e2 e 0 ~' n7 G, u$ r
PSCAD电流放大(包含4.5、4.2版本).rar
(763.01 KB, 下载次数: 4)
' T7 n# Y6 ?8 X
楼主热帖