TA的每日心情 | 郁闷 2017-4-3 23:39 |
|---|
签到天数: 10 天 连续签到: 4 天 [LV.3]偶尔看看II 累计签到:10 天 连续签到:4 天
|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
由于项目要用到pscad的自定义元件功能,于是花了几天恶补了一下相关知识。正好看到说明书里面的CCIN功能,受到启发,正好可以实现电流放大功能。4 o6 z; D3 N5 A
; o3 k; b# j5 Y5 \6 d5 f
9 T c4 y1 x/ H0 B4 n 本帖提出一种通过电流放大实现的方法,原理、实施都特别简单,但是该方法存在一些问题。0 I- N+ ^8 u( X! F. A j" b
9 J, K6 i4 {" M4 e6 V ?
开此贴目的有三:
6 C$ m; c2 m/ B" K, B) r+ _) A
% ]+ J& l8 ~' b3 w2 c 首先,抛砖引玉,分享经验,我想到的方法不一定好,希望能集思广益,看看应该如何改进;
" w6 u" r2 A8 a; ]: A% U* h4 O% O; d4 {* I$ M5 R3 p! b
其次,通过一个实例帮助不熟悉自定义元件的人快速入门,并提供;
1 K3 ^) A( _# Q* f% ^$ _; w/ x 最后,帮助大家开拓思路,希望大家在建模时能多一种选择。+ }- O6 p! `* t7 @
F/ A0 i; f3 n. d4 G `# D% ~
. E+ n+ v' @. o* K$ {: ^( X. |5 X
原理
, J( Y% t, m( V9 e) f3 I 通过在Fortran Segment中调用PSCAD自带CCIN电流源功能,在每个仿真步长内将需要放大的电流值乘以(n-1),所得结果赋给CCIN,使得自定义元件流出电流与原电流的加和为被放大电流的n倍。
0 K" K2 @* z- F& x
2 j0 f) j( m9 a9 e# I* x1 _6 u8 g
实现方法
2 k. J3 e; Q+ w {考虑到大家对PSCAD4.2较熟悉,以下介绍如何在PSCAD4.5中实现,最后的附件中有两个版本的示例。
. n7 j9 G2 f8 t- l# t! n: l$ e! T( q. J2 l" r3 G" J0 c3 ?
# x% L4 P& T% ] c$ w2 |# m }: s. M
1.创建简单的仿真系统
6 Y) a' U4 F: _) S5 _+ |) [) Z 如图是一个简单的电压源串两个1Ohm电阻的系统,我们要实现的是Ia2放大为Ia1的n倍,即Ia2=Ia1*n。+ [, V6 N# _2 u' D$ z2 p$ [$ c) m# p
+ g$ h; W, t( d+ A0 \& z: E" c3 T
3 v; `0 f7 }- M; Y$ _1 F( [' ^( V0 U
2.创建与编辑自定义元件: G+ n$ t8 [. L$ ~
. N. o, H2 u7 n2 K 为紧凑一点,把这个过程放在一张图上,红色数字对于下面的1)~6)步。
- \, i7 v! d. ~) A+ b c 1)在画布空白处点右键Create-Component,在右边弹出一个侧边栏;
# w' N/ i+ p; K @
" F1 o. X; L- v 2)侧边栏中Component Wizard是元件创建向导,我们只需要填下元件的名字(Name),画布上元件显示的名称(Title),然后点Finish完成创建;
( i2 `7 E' M* x9 l4 `6 U# l2 m; D6 p5 y: q) `4 a) q9 X% u7 U
3)在元件上右键Edit Definition进入元件编辑;
6 G3 |+ T6 o; ^$ u/ u6 v1 R2 U3 I! \$ \; _+ w
4)元件编辑界面分为3部分:Graphic图形界面,Parameter参数界面,Script脚本界面(也就是常说的编程序的地方),通过Edit Definition首先进入图形编辑界面,利用工具栏Shape里面的直线Line和端口Port,在元件上引出一根线,末端为端子N1;(PSCAD4.2好像默认将端子Connection Type设置为Input类型,颜色为绿色,请注意改为Electrical类型)
9 J; Q! z- L# R# d4 S, X/ C4 J; d r7 Z% z; M
5)为便于元件的使用,希望在主电路直接通过修改参数的方式设置放大倍数、需要放大的电流。为此需要增加元件的参数,在Parameters界面内点击右键New parameter创建参数;
. G/ R$ W/ X/ n3 C- e3 g; @
1 p% d3 Q2 i3 ?5 e, e 6)创建两个参数:需要放大的电流Current、放大倍数Scale,有2点需要注意:7 ]- F" x( N! N7 w9 {
4 w& H* X# h9 v( g7 E6 D Z' K
a)每个参数中还有其他条目,Description是参数名,Symbol是在Script中用到的变量名,不要混淆;- d/ o4 x/ j* [: \+ |0 u
b)Current为text文本类型,因为需要放大的变量是通过文本作为参数输入的,Scale为integer整型,这点比较好理解,在此处我设置了放大倍数的上下限是1~1000,也可以修改为其他值;
0 c/ _8 Y/ T0 j& Q/ q. ~& ffile:///C:/Users/a/Documents/My%20Knowledge/temp/d48ab359-523f-4567-b793-723d9ea7e439.png
6 v* }1 y" {; `, i$ ]- ^. \1 }2 B
3.编写脚本
/ p1 X9 y. M* w8 f9 G# A$ x 上一步中创建的元件是“死”的,这里才是整个元件的核心 ,在Script里面加入如下代码:
: z/ z" P- w% X" I* V3 H5 B+ z) a, @# ]9 a
- #BEGIN
3 z: F3 T) y o* `0 |: Z) O - ENABCCIN($N1,$SS)=.TRUE." n7 x2 ^4 H: N5 o b
- #ENDBEGIN
/ C. e0 P( V6 P; H& b - CCIN($N1,$SS)=($Scale-1)*$Current
复制代码 % p* V" F+ D3 D, F C0 `" i4 b
' J; e0 k6 y" V+ _) b 注意,Script包含多个Segment,请确保该段代码是放在Fortran Segment中。
# w( n* g9 L: _/ ]% ~0 b c3 A, `
解释一下这几行代码:
6 A% D5 B9 U- z" Z+ B2 |8 n9 |/ ?/ e* K
1) #BEGIN/#ENDBEGIN是一对指令,包含在其中的代码段只在仿真初始阶段运行一次,
( K0 H3 v1 u0 R% p& G
. q9 D5 M. m, d& L5 y, r 【如不识别该指令语句,请用IF(TIMEZERO) THEN...ENDIF:1 h1 w# [- A! o! Z3 m
- IF(TIMEZERO) THEN* L. Z, s( ?2 v
- ENABCCIN($NA,$SS)=.TRUE.( h8 {3 z! E4 W- y# H$ t9 `1 {
- ENDIF8 H. q0 s; [% Q$ S
- CCIN($NA,$SS)=$Current*$Scale
复制代码 】
) W! l3 U0 I' v- e. g# `/ b5 F3 b+ c; t4 T( q/ v- b
- W/ ^3 W% n+ j) n' a6 A( C+ m+ p1 ]
2)ENABCCIN($N1,$SS)=.TRUE.开启CCIN功能,ENABCCIN的参数是端子名$NA、子系统名$SS,前面加的$是放在变量名前面的替代符。这里的变量指的是从元件端口、系统变量、元件参数。实际上,NA、SS只是一个代号,在PSCAD将script编译为fortran的过程中,会把NA、SS替换为真实的名字,形式有点像数组,便于EMTDC软件包的运算。5 u6 c! X# a* k8 l0 @! S
3 V/ v9 n" ?/ T4 S7 x
3)CCIN($NA,$SS)=($Scale-1)*$Current+ p+ j. ~! p! L7 F: j
CCIN产生一个接地电流源,电流大小为Current放大Scale-1倍,这条语句在BEGIN之外,说明其在每一个仿真步长中都会执行!Scal、Current是Parameter中的Symbol。- o3 x# w( u; X1 h
7 V1 p8 ~# |4 y7 N: G" {2 G7 X
4.结果5 t P4 T1 K: ]9 [" M
将建好的元件和主电路连接好,增加监视元件,运行后查看波形。- H2 q; x% _( Z8 w5 k; {' y; e5 }; S
( U& I% a4 G* _. Q# p2 C8 J
: M& m* M5 P3 n7 O8 s( V6 L: Y% E- W. ~$ |0 P% V- p p/ W
! e' Q2 A* d- |2 `- D存在问题
! N8 J) y0 P, k3 G; t 该种方法放大电流时,放大倍数增大将使得结果发散,表现为数值非常大(可达到10的数百次方)或干脆没有值(NaN),原因不明。% ?" M3 M! Q4 E4 y7 c
我的猜想是,这种方法在某些情况下可能带来网络方程无法求解的问题,其具体原因可能是方程矛盾、矩阵奇异之类的,电网络学得不太好,这里也只是瞎猜。希望大家能给点意见。8 Y9 J: ] t4 a a' H
1 T- C4 [( F$ i# i, }. W
9 j% W a" k( ]7 p5 X( X" s( z9 a6 X& q& `0 d1 i' r
- _7 ?' E% K# R/ [) `% b
PSCAD电流放大(包含4.5、4.2版本).rar
(763.01 KB, 下载次数: 4)
; L2 n" z4 \% T9 i& ?) U' J( U$ f |
|