TA的每日心情 | 郁闷 2017-4-3 23:39 |
---|
签到天数: 10 天 连续签到: 4 天 [LV.3]偶尔看看II 累计签到:10 天 连续签到:4 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
由于项目要用到pscad的自定义元件功能,于是花了几天恶补了一下相关知识。正好看到说明书里面的CCIN功能,受到启发,正好可以实现电流放大功能。' O( f5 s: E& \3 T/ z
6 I( l+ o# U' \( S; T8 ?% T& A$ B
; L( L4 V% o3 B5 O. i0 o# ^ 本帖提出一种通过电流放大实现的方法,原理、实施都特别简单,但是该方法存在一些问题。
$ b* D7 Z9 N2 l
7 ~4 O2 j S2 ~" D# x: W4 E 开此贴目的有三:
. N% {$ N2 u" h* l- u5 Q7 ^; I
7 f9 c% b8 W+ X' P; \3 P5 V: z8 _ 首先,抛砖引玉,分享经验,我想到的方法不一定好,希望能集思广益,看看应该如何改进;
# W) \3 U; K/ Z5 L' ~5 g2 f- A& W/ T. h" W2 ~
其次,通过一个实例帮助不熟悉自定义元件的人快速入门,并提供;+ z6 v8 g% ^5 N8 P; H5 N) {
最后,帮助大家开拓思路,希望大家在建模时能多一种选择。$ J- U& w) `3 n
0 k3 t% v! I }/ C5 N/ x* g8 W+ C: \8 |$ c
原理
7 V2 a' i+ Z5 t1 H9 c 通过在Fortran Segment中调用PSCAD自带CCIN电流源功能,在每个仿真步长内将需要放大的电流值乘以(n-1),所得结果赋给CCIN,使得自定义元件流出电流与原电流的加和为被放大电流的n倍。
# H6 {! ~) I+ W/ X
1 y/ |) ~8 U/ l& E5 j: P( U
+ _- F G7 H! @' c, L" R+ H' v1 c实现方法, p# y2 s9 T4 n; f/ N
考虑到大家对PSCAD4.2较熟悉,以下介绍如何在PSCAD4.5中实现,最后的附件中有两个版本的示例。' m# F' x$ X6 ?% @' ~
& e7 n! z9 \3 b# ?. l" Q/ Q# F/ I( v4 B2 z0 Q
1.创建简单的仿真系统5 K3 P( N5 F- u7 t# g4 S
如图是一个简单的电压源串两个1Ohm电阻的系统,我们要实现的是Ia2放大为Ia1的n倍,即Ia2=Ia1*n。! b1 T/ R7 V. B# p# E! s! C
- H" L4 K& ^7 _; h4 ^! J8 m
& `0 |$ c8 z. h' y/ ?; h9 c$ v( Y% a
2.创建与编辑自定义元件
' P& V. ~0 v* h+ G; O9 ]7 ?2 i+ [1 o1 w& f% A7 |
为紧凑一点,把这个过程放在一张图上,红色数字对于下面的1)~6)步。: [# I3 @4 r& E6 q+ P9 J
1)在画布空白处点右键Create-Component,在右边弹出一个侧边栏;
& Y+ {/ [5 ` S, P3 l* T4 C7 j+ w i- t( |# \# _+ u& X) Y+ w
2)侧边栏中Component Wizard是元件创建向导,我们只需要填下元件的名字(Name),画布上元件显示的名称(Title),然后点Finish完成创建;
, O2 x) K- x7 S X7 w6 {, q% I
3)在元件上右键Edit Definition进入元件编辑;
! ~5 }7 o3 g9 }2 b0 y( o+ k! g9 i0 f* L1 _. R
4)元件编辑界面分为3部分:Graphic图形界面,Parameter参数界面,Script脚本界面(也就是常说的编程序的地方),通过Edit Definition首先进入图形编辑界面,利用工具栏Shape里面的直线Line和端口Port,在元件上引出一根线,末端为端子N1;(PSCAD4.2好像默认将端子Connection Type设置为Input类型,颜色为绿色,请注意改为Electrical类型)
. ]% M" I6 s/ L
# L0 I' B1 `1 D# j( q' N8 H 5)为便于元件的使用,希望在主电路直接通过修改参数的方式设置放大倍数、需要放大的电流。为此需要增加元件的参数,在Parameters界面内点击右键New parameter创建参数;, v- |* f8 }3 O! w- q
* k8 I. u: j+ Y4 a
6)创建两个参数:需要放大的电流Current、放大倍数Scale,有2点需要注意:
, q% t4 Q J- |' [1 ^( u
7 m3 `5 b n$ U3 Y0 w. y2 r, E, J( [ a)每个参数中还有其他条目,Description是参数名,Symbol是在Script中用到的变量名,不要混淆;- u7 S# Q ^9 F* p1 G* @
b)Current为text文本类型,因为需要放大的变量是通过文本作为参数输入的,Scale为integer整型,这点比较好理解,在此处我设置了放大倍数的上下限是1~1000,也可以修改为其他值;
- k6 W# \$ {( Y; Z3 n; Yfile:///C:/Users/a/Documents/My%20Knowledge/temp/d48ab359-523f-4567-b793-723d9ea7e439.png9 Z9 F4 u4 E* t/ Y0 K. z8 U! V8 s
4 R' A* ~9 P3 K3 X M
3.编写脚本
& ?; F) k! E$ x2 S 上一步中创建的元件是“死”的,这里才是整个元件的核心 ,在Script里面加入如下代码:
; _9 \6 W! z; J! W
3 L5 \ B0 p* B+ I- #BEGIN
( g& B! \9 d' O - ENABCCIN($N1,$SS)=.TRUE.
% ?$ |+ s1 O! t) l - #ENDBEGIN u0 f1 g4 t9 J! z
- CCIN($N1,$SS)=($Scale-1)*$Current
复制代码
# M1 p4 [* _: u& @4 o2 P/ R# j5 W# ?/ r
注意,Script包含多个Segment,请确保该段代码是放在Fortran Segment中。
; S8 X1 }! V/ j# t# J
5 h$ m6 ` E' A& t! q/ Q/ p 解释一下这几行代码:
! e8 L- F8 a! L9 v1 j8 f8 A( I6 F' P* E
1) #BEGIN/#ENDBEGIN是一对指令,包含在其中的代码段只在仿真初始阶段运行一次,+ u- v/ Z% \3 [9 ?$ \! ~' P
/ T! v* A1 @+ J4 P 【如不识别该指令语句,请用IF(TIMEZERO) THEN...ENDIF:
7 W5 d U1 r9 E) e$ [- IF(TIMEZERO) THEN) T9 ^! x2 ]+ ?& w# p- h
- ENABCCIN($NA,$SS)=.TRUE.
1 f6 e; }3 g/ Z+ Y2 ` - ENDIF' W( |# P; F {( R( v
- CCIN($NA,$SS)=$Current*$Scale
复制代码 】$ f& V& t/ R5 F8 I/ a: |
% ~( c# \+ K7 N2 c3 J% J
/ l4 T6 z( Q+ B0 |" S8 R 2)ENABCCIN($N1,$SS)=.TRUE.开启CCIN功能,ENABCCIN的参数是端子名$NA、子系统名$SS,前面加的$是放在变量名前面的替代符。这里的变量指的是从元件端口、系统变量、元件参数。实际上,NA、SS只是一个代号,在PSCAD将script编译为fortran的过程中,会把NA、SS替换为真实的名字,形式有点像数组,便于EMTDC软件包的运算。
* N/ c; e' c0 w1 p0 _5 [# U
b/ ~( M5 V7 U( ] 3)CCIN($NA,$SS)=($Scale-1)*$Current
# p7 I, U" p" C- M CCIN产生一个接地电流源,电流大小为Current放大Scale-1倍,这条语句在BEGIN之外,说明其在每一个仿真步长中都会执行!Scal、Current是Parameter中的Symbol。
" Z/ e2 k9 }) {( C. Q6 k6 K) b- r, v% f6 K
4.结果5 U4 }% \8 P0 s1 M+ [
将建好的元件和主电路连接好,增加监视元件,运行后查看波形。
5 q. {3 r5 P9 r+ k+ `# X
9 I8 t3 S( K6 L2 {2 ]& w) P
# d A- t# |0 y. V4 U J4 N D2 J0 J9 f1 ^1 i& f
r1 } W. G, d9 |2 p4 V; `' U存在问题( w: p- F& q/ o# C R7 ?
该种方法放大电流时,放大倍数增大将使得结果发散,表现为数值非常大(可达到10的数百次方)或干脆没有值(NaN),原因不明。3 r( t5 @! f: ~7 G
我的猜想是,这种方法在某些情况下可能带来网络方程无法求解的问题,其具体原因可能是方程矛盾、矩阵奇异之类的,电网络学得不太好,这里也只是瞎猜。希望大家能给点意见。
9 c9 R6 X/ r+ Q9 x# p2 F7 L5 h- w) A" H a' }+ V' j! V" _0 l; p5 Q
, A% a6 r& _/ e& q
5 ^' J- ?2 N: O [4 C( U
- v; E) c) Y3 R* ]
PSCAD电流放大(包含4.5、4.2版本).rar
(763.01 KB, 下载次数: 4)
0 {/ t2 e& i! G& {: l9 U5 g9 S: U/ F |
|