TA的每日心情 郁闷 2017-4-3 23:39
签到天数: 10 天
连续签到: 4 天
[LV.3]偶尔看看II
累计签到:10 天 连续签到:4 天
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
由于项目要用到 pscad 的自定义元件功能,于是花了几天恶补了一下相关知识。正好看到说明书里面的CCIN功能,受到启发,正好可以实现电流放大功能。
& @ R6 v$ {. ?* C! y% b
8 [- p/ K# K9 q$ c; p! ]/ W$ @
, r3 e) J* x5 j6 |2 [7 Z 本帖 提出一种通过电流放大实现的方法,原理、实施都特别简单,但是该方法存在一些问题 。 l$ V, e$ X- P' e& x% `
1 ?) ~4 z! ~6 u0 n 开此贴目的有三:2 |0 n& j1 k0 L! A- i: z$ Q2 j
* e' T! {5 x# l& D 首先,抛砖引玉,分享经验,我想到的方法不一定好,希望能集思广益,看看应该如何改进;, y$ ~" b! w/ p" W
' s7 e- e9 a5 B4 t: h' Z: V7 \' t
其次,通过一个实例帮助不熟悉自定义元件的人快速入门,并提供;
( l' f* w8 |& q' J4 r 最后, 帮助大家开拓思路,希望大家在建模时能多一种选择。9 S9 |) S. ^- f; s; M7 S# O
* J) p( f1 O k- ^1 K m
$ d9 U5 R1 B9 X! p
原理 1 a5 g2 E0 ^6 j
通过在Fortran Segment中调用PSCAD自带CCIN 电流源功能,在每个仿真步长内将需要放大的电流值乘以(n-1) ,所得结果赋给CCIN,使得自定义元件流出电流与原电流的加和为被放大电流的n倍。 . n2 |7 U3 H8 G# l. k! {
* N5 ~& w0 Q% t' `) u3 t. N
4 I& z; q5 A# b+ n8 r4 o5 f
实现方法
. j, X( P* U# Y3 N3 C" A 考虑到大家对PSCAD4.2较熟悉,以下介绍如何在PSCAD4.5中实现 ,最后的附件中有两个版本的示例。
+ v" U7 I0 \: v. }' K& h4 e # Z( U, l" s1 H( N# B; |" x, G
+ E6 b! m3 v7 M 1.创建简单的仿真系统 ! w; {5 Z! @. c6 c" `/ g+ O
如图是一个简单的电压源串两个1Ohm电阻的系统,我们要实现的是Ia2放大为Ia1的n倍,即Ia2=Ia1*n。
/ q; j$ a' N0 @% Q/ R + [, ]! M: l3 u* R" A" F
$ u5 k8 |- o5 F" I' V+ Q0 _
% V, v5 Q" f' u/ A. y7 c- h
2.创建与编辑自定义元件
8 G( m* L D, H1 _$ }
' c' q ], L) w7 s 为紧凑一点,把这个过程放在一张图上,红色数字对于下面的1)~6)步。
]5 g! O( H- N" y) e( s/ h* x' t4 ~ 1)在画布空白处点右键Create-Component,在右边弹出一个侧边栏; 0 D8 S1 s9 k0 t- q% Z7 i
1 l1 l" v! X( Z+ i3 T 2)侧边栏中Component Wizard是元件创建向导,我们只需要填下元件的名字(Name),画布上元件显示的名称(Title),然后点Finish完成创建;
) \5 N# m8 }* B4 @- F4 V6 a3 F, o
) }0 Y3 I5 K ^" f1 f 3)在元件上右键Edit Definition进入元件编辑;
8 C8 ?5 V, @% @ 3 \8 K2 O* x2 o# K4 L5 w9 ]4 ]
4)元件编辑界面分为3部分:Graphic图形界面,Parameter参数界面,Script脚本界面(也就是常说的编程序的地方),通过 Edit Definition首先进入图形编辑界面,利用工具栏Shape里面的直线Line和端口Port,在元件上引出一根线,末端为端子N1;(PSCAD4.2好像默认将端子Connection Type设置为Input类型,颜色为绿色,请注意改为Electrical类型 ) * R6 ^0 {, M/ a5 N" o. d( B
( L# o' k- O( Y$ X; s2 I/ H# [ 5)为便于元件的使用,希望在主电路直接通过修改参数的方式设置放大倍数、需要放大的电流。为此需要增加元件的参数, 在Parameters界面内点击右键New parameter创建参数; 8 y1 E' g' F8 b4 q
- R( a8 i5 [5 J+ T* T: [( w
6)创建两个参数:需要放大的电流Current、放大倍数Scale,有2点需要注意: ! X8 D$ M/ ]0 z$ {$ N! C, G" b
+ v# j& J* e$ K1 V" ]: w7 C, d a) 每个参数中还有其他条目,Description是参数名,Symbol是在Script中用到的变量名,不要混淆; ' m4 N e4 U# _0 g+ @! f5 N: ~
b)Current为text文本类型,因为需要放大的变量是通过文本作为参数输入的,Scale为integer整型,这点比较好理解,在此处我设置了放大倍数的上下限是1~1000,也可以修改为其他值;
& y- {) D4 T7 b; s! E# U file:///C:/Users/a/Documents/My%20Knowledge/temp/d48ab359-523f-4567-b793-723d9ea7e439.png
2 s, d0 h* q! x0 b+ k$ C3 Q & y0 m3 Z* F8 P( p Y
3.编写脚本 & [7 l- j; p( ?% d; A5 ]3 ~
上一步中创建的元件是“死”的,这里才是整个元件的核心 ,在Script里面加入如下代码: 2 M I' L$ f6 Y( g" k
9 Z6 k9 w! N) y% |+ k
#BEGIN
* P( }. _2 E8 P% f" M/ r ENABCCIN($N1,$SS)=.TRUE.
7 e( O/ T( Q# }& J% S7 w #ENDBEGIN J# a% U! S6 I6 o+ B$ H, ^
CCIN($N1,$SS)=($Scale-1)*$Current 复制代码
- Z, O( c) |! l9 A. R; F 6 p8 Z, w8 u2 P# l& V+ z
注意,Script包含多个Segment,请确保该段代码是放在Fortran Segment中 。 5 g6 }5 H `+ l% h! Z( ^) E( H1 T$ Z4 Z
: a8 I( g4 d6 p- m1 i) G% ~
解释一下这几行代码: V: h# g, }# j
. T' r0 f# F$ d, Y
1) #BEGIN/#ENDBEGIN是一对指令,包含在其中的代码段只在仿真初始阶段运行一次 ,
i1 ^$ m0 W7 e y, @" _( U
* z- e# C, @3 w+ j2 _ 【 如不识别该指令语句,请用IF(TIMEZERO) THEN...ENDIF: " x( E8 n2 x! V6 T; p2 ]# t' l6 l( a* t N
IF(TIMEZERO) THEN
_$ c/ W6 O/ D' ~5 v, T1 t ENABCCIN($NA,$SS)=.TRUE.1 Y b# G1 Q+ @" A. k" ^
ENDIF2 g9 r- e7 c, Z: {8 f* e: f
CCIN($NA,$SS)=$Current*$Scale 复制代码 】
J; \6 k. J7 p6 s6 a
V1 U ~ F) x) o% R
. p0 d8 F9 ~" ` 2) ENABCCIN($N1,$SS)=.TRUE.开启 CCIN功能,ENABCCIN 的参数是端子名$NA、子系统名$SS,前面加的$是放在变量名前面的替代符。这里的变量指的是从元件端口、系统变量、元件参数。实际上,NA、SS只是一个代号,在PSCAD将script编译为fortran的过程中,会把NA、SS替换为真实的名字,形式有点像数组,便于EMTDC软件包的运算。
. H/ F3 u/ K3 q+ |7 G7 ? : B' w' y G4 n
3) CCIN ($NA,$SS)=($Scale-1)*$Current& u/ C0 E* y6 _ v
CCIN产生一个接地电流源, 电流大小为Current放大Scale-1倍,这条语句在BEGIN之外,说明其在每一个仿真步长中都会执行 !Scal、Current是Parameter中的Symbol。 5 D) K7 T" K( l, V: }5 j
* {' s% R) L$ b, p, N 4.结果
% M8 C6 d! G0 T 将建好的元件和主电路连接好,增加监视元件,运行后查看波形。
% [4 G9 `1 ~# X, D . k1 n5 e/ N! V( P" n; B1 J5 b9 P
; Q2 I9 D) Z+ `/ o Y+ @4 @$ | 7 E5 _2 e1 o; I+ H& N5 @1 ^8 h
8 c* o' Z. k; q1 G- m; g. {$ G 存在问题
& T+ v* o) n% p a 该种方法放大电流时,放大倍数增大将使得结果发散 ,表现为数值非常大(可达到10的数百次方)或干脆没有值(NaN),原因不明。 - W, b& h4 R2 ]. `3 p
我的猜想是,这种方法在某些情况下可能带来网络方程无法求解的问题,其具体原因可能是方程矛盾、矩阵奇异之类的,电网络学得不太好,这里也只是瞎猜。希望大家能给点意见。 8 e: ~* \+ R" z# e9 B J7 c9 x
, X& s& E/ X6 F4 u. N# s) {, ^0 t 8 i) H; {4 g1 m8 e! Z+ y
9 E. {6 h- k3 W& s8 W1 r: \8 Z5 `
* L' B7 f: E. e) m/ V
PSCAD电流放大(包含4.5、4.2版本).rar
(763.01 KB, 下载次数: 4)
' I% ?2 k0 |; ]) N: H5 b
楼主热帖