TA的每日心情 | 郁闷 2017-4-3 23:39 |
|---|
签到天数: 10 天 连续签到: 4 天 [LV.3]偶尔看看II 累计签到:10 天 连续签到:4 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
由于项目要用到PSCAD的自定义元件功能,于是花了几天恶补了一下相关知识。正好看到说明书里面的CCIN功能,受到启发,正好可以实现电流放大功能。! Y* T! u5 t/ }0 w" M
Q ?* v# E6 ]# O! V5 k( |* [$ j9 \* N" H
本帖提出一种通过电流放大实现的方法,原理、实施都特别简单,但是该方法存在一些问题。/ E* W5 n4 |' E+ c
+ H, K' {! q1 @* H* V1 D! N 开此贴目的有三:
1 @5 y, k# ]0 r, @& a0 G, L
5 [8 v" X( I/ y1 m p: i 首先,抛砖引玉,分享经验,我想到的方法不一定好,希望能集思广益,看看应该如何改进;
& V# r/ _7 a- H
' [7 z" w! K& M: n2 \" m 其次,通过一个实例帮助不熟悉自定义元件的人快速入门,并提供;1 S0 c( R9 i7 l* I/ i
最后,帮助大家开拓思路,希望大家在建模时能多一种选择。
$ W6 ^" F7 v, r; W4 V$ l& ^) S! \3 V: F4 x, w% z
; b2 A# B+ A! r+ X5 _: j- o原理
! R b0 j4 p2 b9 q, L" t% I+ K0 K 通过在Fortran Segment中调用PSCAD自带CCIN电流源功能,在每个仿真步长内将需要放大的电流值乘以(n-1),所得结果赋给CCIN,使得自定义元件流出电流与原电流的加和为被放大电流的n倍。
! X. _; w1 j1 V, M/ O" \* S; F# }* h# ^: h* R' K, v. \
8 U8 e: y( L% i1 G实现方法. u; ? i' G( V6 Q$ c. l
考虑到大家对PSCAD4.2较熟悉,以下介绍如何在PSCAD4.5中实现,最后的附件中有两个版本的示例。( S3 Q2 U) [) w- I9 D
% c3 `& K3 w% }8 C9 r; Y$ W, K: j) C% m2 a6 U" O& L8 N2 S
1.创建简单的仿真系统
/ U4 z5 ^3 ?2 N) q; ^ 如图是一个简单的电压源串两个1Ohm电阻的系统,我们要实现的是Ia2放大为Ia1的n倍,即Ia2=Ia1*n。4 A) p0 ^5 w5 k- V% u8 B, @) p
5 z/ K& X X' X4 V" W, c5 n9 I- l6 d2 b# n5 F, v
" e) I3 ~: \, i0 E& D. U3 w' Z$ L
2.创建与编辑自定义元件( l. S$ X* i! w4 _; w
6 i X1 R; A7 p4 g4 \ 为紧凑一点,把这个过程放在一张图上,红色数字对于下面的1)~6)步。! `8 x8 }, c! K: A; A. o
1)在画布空白处点右键Create-Component,在右边弹出一个侧边栏;
+ K) N. a& U7 l# L- ?$ g
% {) s- \ N/ |* j9 i+ r \ 2)侧边栏中Component Wizard是元件创建向导,我们只需要填下元件的名字(Name),画布上元件显示的名称(Title),然后点Finish完成创建;; i% R" M5 g7 e5 b
8 z2 L# A. k; R) F% e4 W: w1 _ 3)在元件上右键Edit Definition进入元件编辑;+ L2 k; ^* d1 C) K% C; g/ x4 A/ x; E
) f/ n3 v1 M. @0 t- Q! U 4)元件编辑界面分为3部分:Graphic图形界面,Parameter参数界面,Script脚本界面(也就是常说的编程序的地方),通过Edit Definition首先进入图形编辑界面,利用工具栏Shape里面的直线Line和端口Port,在元件上引出一根线,末端为端子N1;(PSCAD4.2好像默认将端子Connection Type设置为Input类型,颜色为绿色,请注意改为Electrical类型)& g/ F) D+ n, m4 q
! f& [- `: h3 Q# X- B2 O6 U0 Z 5)为便于元件的使用,希望在主电路直接通过修改参数的方式设置放大倍数、需要放大的电流。为此需要增加元件的参数,在Parameters界面内点击右键New parameter创建参数;% v$ W9 J; o) A/ J0 X- P
) c. l9 ~4 m& K
6)创建两个参数:需要放大的电流Current、放大倍数Scale,有2点需要注意:; |. t* Z4 W+ m% B) q3 A" l
& `1 J$ s( ]* Z3 ^ P/ ?) H' }& }' s a)每个参数中还有其他条目,Description是参数名,Symbol是在Script中用到的变量名,不要混淆;
* h5 P( A3 T) @. {# c2 l& k b)Current为text文本类型,因为需要放大的变量是通过文本作为参数输入的,Scale为integer整型,这点比较好理解,在此处我设置了放大倍数的上下限是1~1000,也可以修改为其他值;- h1 C; J G6 K. @- X, M
file:///C:/Users/a/Documents/My%20Knowledge/temp/d48ab359-523f-4567-b793-723d9ea7e439.png7 {6 f" b- c0 w" D" n
2 \9 J" E: d" c
3.编写脚本
?& A2 O" s8 L$ U3 z/ z 上一步中创建的元件是“死”的,这里才是整个元件的核心 ,在Script里面加入如下代码:
. B6 r/ Y7 b+ k3 q, j
. k$ d0 J5 @- J4 \/ ~, v- #BEGIN
) _3 G/ `) a9 y - ENABCCIN($N1,$SS)=.TRUE.
Y' T1 k# v4 m' H" d) R- l - #ENDBEGIN
' ?1 _5 R7 \4 k. J5 v2 M - CCIN($N1,$SS)=($Scale-1)*$Current
复制代码 A6 J7 i/ Z2 v2 @4 y* a6 A1 _6 ~
5 f" h" {. I0 G. Y- k6 R 注意,Script包含多个Segment,请确保该段代码是放在Fortran Segment中。
& L6 V7 v! T' n5 i: C
( a' J# m8 V8 k/ _. P2 @# ^ T 解释一下这几行代码:5 ~7 E2 a2 f1 y
* Z ]1 F c4 x. T- z7 w1 h- E6 e
1) #BEGIN/#ENDBEGIN是一对指令,包含在其中的代码段只在仿真初始阶段运行一次,
- o! J6 ?5 A) L$ c6 u9 H7 B- k- ]
% l$ C1 G: ~ v; |# ^4 P5 C 【如不识别该指令语句,请用IF(TIMEZERO) THEN...ENDIF:
6 `( S. ~7 H* h) }7 a# ?5 G- IF(TIMEZERO) THEN6 }2 S# ~. f* r. W; p
- ENABCCIN($NA,$SS)=.TRUE.
) \/ v- b4 l% w4 [ - ENDIF
/ @6 y2 L* A5 z' h4 J2 \, ]% d; E - CCIN($NA,$SS)=$Current*$Scale
复制代码 】
% k4 ~8 q) M+ k8 l9 z7 g$ B
3 T( h8 k9 D! U( [: x4 [" d. n6 F" V
2)ENABCCIN($N1,$SS)=.TRUE.开启CCIN功能,ENABCCIN的参数是端子名$NA、子系统名$SS,前面加的$是放在变量名前面的替代符。这里的变量指的是从元件端口、系统变量、元件参数。实际上,NA、SS只是一个代号,在PSCAD将script编译为fortran的过程中,会把NA、SS替换为真实的名字,形式有点像数组,便于EMTDC软件包的运算。
4 ~- @, [+ C2 _( F
+ R: J- N$ Q. z' @ 3)CCIN($NA,$SS)=($Scale-1)*$Current
! j' G( V& X, T7 K3 @: d0 \ CCIN产生一个接地电流源,电流大小为Current放大Scale-1倍,这条语句在BEGIN之外,说明其在每一个仿真步长中都会执行!Scal、Current是Parameter中的Symbol。4 s* m: K" _4 \+ J2 q
) T; q4 n, |: e8 u; A4.结果+ Z9 u! |/ b$ F) u6 R" ^
将建好的元件和主电路连接好,增加监视元件,运行后查看波形。
' h- Z$ C* o1 D" S- ]' g' Q& w2 `7 E+ w
" I8 x U8 c2 z! o# }0 W( g v/ e
]6 \; v9 Z* v0 C. f: L4 l" L- _
存在问题& {- T& S. I9 s; {
该种方法放大电流时,放大倍数增大将使得结果发散,表现为数值非常大(可达到10的数百次方)或干脆没有值(NaN),原因不明。
6 x, Z0 }& X+ V/ T# ?; \ 我的猜想是,这种方法在某些情况下可能带来网络方程无法求解的问题,其具体原因可能是方程矛盾、矩阵奇异之类的,电网络学得不太好,这里也只是瞎猜。希望大家能给点意见。
% T& K2 X: W* |% l9 o- p1 o M7 V" M
4 V& K4 P4 g. y: f/ x' A4 }
1 ^7 L' O8 G% A5 c! j' U
, m$ a1 Y# }' b
PSCAD电流放大(包含4.5、4.2版本).rar
(763.01 KB, 下载次数: 4)
$ P8 o- m p+ b3 C* j. H |
|