) c1 P. r; J7 f6 _5 S' e- F4 x4 s% b4 M2 u2 a2 U- s
+ [) F' Q' S) d' P" m1 `: j. ^/ p8 V3 ]! }. Z" u9 e; Z6 ^
; @/ c6 ?' r5 l0 w ?" M( N
1 i0 D$ ^' U U3 E" X" L! x4 g9 a/ A* U$ q5 }
- |. @8 g- g& h1 n8 q' ? 2 i* T7 S7 S+ d2 f0 F) \' \3 m3 V' s8 h, B) t
ABSTRACT ( l0 M: l, A, e5 W9 p2 u
+ s7 O. ~( g* a# _" B7 \In the modern society, the electric energy is that one kind uses the most extensive energy, its application degree is one of the main signs of a national development level. With the development of science 、technology and national economy, the demand for the electric energy increases day by day, at the same time the requisition for electric energy quality is higher and higher. The voltage and frequency are two basic indexes of weighing electric energy quality. Generally speaking, voltage bias,flicker and wave shape distortion are the determinant criterion of voltage. In order to monitor and control the current voltage quality of power system, the on-line device for monitoring and controlling voltage quality has been designed.2 n; v3 y( ^- Q" c
The on-line device for monitoring voltage quality is a computerized digital recorder and linked up with voltage transducer of distribution system. According to the measured voltage, the part of controlling can analyze on the basis of eleven-area theory, through ! t9 L# N& N; S2 Z; D S
adjusting transformer on load tap changer and shunt capacitors.1 r. o8 R1 m k+ m
The system uses industrial computer as secondary-computer and personal computer as host-computer. The equipment uses vacuum circuit breaker as executing components and use parallel capacitor banks as compensating components . The both are combined to constitute an intelligent reactive power compensation and controlled excution.4 v7 ^5 L) q: y8 z. M0 w, I8 z
2 W% }8 Y$ @+ F% m5 g! E' f1 d6 W( P% b7 p
% _ G: y: U% P* x' M
, B$ I# l& O. v! _6 j3 k7 R7 q9 r" |
1 K9 b5 ?, ^' e& ~: u; G + a; N- n# Z! x* RKey words Distribution power system Voltage quality On-line monitoring Voltage/reactive power control Reactive power compensation Eleven-area theory # x) n' x- h% S3 ? g4 e' k 3 }1 v5 }3 y4 {) r0 R7 V, } : f0 ?, z, ?0 U3 j0 l) s
% ^ p9 K* f" N
/ G9 S5 }" e, _- f. a& I& e & j4 q2 c' t& K M& a `$ l0 T7 E# F- r- V" y* U
9 p) Y1 F. a! U, L" F; ^
' Z& X# u: p4 A1 t) L! Z w; W' Z P: c5 l% Y, V7 E
% p5 `6 Z3 Z& V8 l! s
! F( r6 ?5 U: u6 G表 5 - 1 1 p9 F9 }7 M( ? 动作类型 电压、无功变化- V& p) o0 T, c- D2 f; y- a7 e, Z
调分接头升压 电压升高,无功增加' o' y% n& B3 `: U# m6 B7 Z
调分接头降压 电压降低,无功减少 t; K# U2 K. s! U* D
投电容器组 电压升高,无功减少 0 U% |0 B% h2 K6 ? n. E0 D) d 切电容器 电压降低,无功增加 " U7 C/ a) x7 a) t+ z% e 9 O0 H, E4 i: T. m5 ~+ N本电压无功综合控制装置的控制策略如下图: , H* |9 O8 x2 ~1 j6 s2 m U _/ @. R) a. b Y" j
Q * }. S2 t5 m: a$ T ]7 R; s & ], Q( D% U! |+ |- s) \+ \+ g) ~图 5 - 2 十一 区 无 功 控 制 策 略 , B! ~% D6 h4 \1 F, N. X 0区:电压、无功均合格,不动作; ( y5 _3 {2 ~3 Q- }) S8 K: C 1区:电压越下极限,系统无功偏低,调分接头升压,备用方案为投入电容器;! c b. M& j1 p c0 \% d
2区:电压越下极限,无功合格,调分接头升压或投入电容器; 5 a$ U: e8 v( K M; o6 X- n
3 区:电压越下极限,系统无功偏高,投入电容器,备选方案为调分接头升压;9 ?1 r w6 ?$ e1 v
4 区:电压越下限,系统无功偏低,调分接头升压,备用方案为退出电容器; 6 y6 H( r5 @8 C; c0 ^, Z 5 区:电压合格,系统无功偏低,切除电容器组;5 o2 K; t! e% c7 D/ Q) N
6 区:电压合格,系统无功偏高,投入电容器组; # P9 |" t( r: r) B 7 区:电压越上限,系统无功偏高,调分接头降压,备选方案为投入电容器; ( k) y8 N3 W4 S% g. K+ x 8 区:电压越上极限,系统无功偏低,退出电容器,备选方案为调分接头降压; # `: P3 D& c: n) Q 9 区:电压越上限,无功合格,调分接头降压;$ \* y1 J( }. \1 Z6 d ~
10 区:电压越上极限,系统无功偏高,调分接头降压,备选方案为退出电容器。 7 |- B% e4 y/ Z9 E9 l采用该控制算法,不仅可以提高电压合格率,还可以减少装置的动作次数,从而有效地保护了变压器分接开关和控制电容器的真空断路器。 0 V9 k, Y% [2 l3 y( J 4 l. [& F8 z/ G1 c4 l7 [1 y$ y7 ^. r& T% w
+ z5 k Z z! `& y ?* n1 Y第六章 电压无功综合监控装置的整体设计 & y, ]* r! K7 H& g, X- C一、 装置的基本原理和框图 . @& s9 A& A, S1 C, q8 h; T; ]; u5 @电压无功综合控制装置是以工控机作为前台机,通过光纤连接到后台pc机,进行过电压在线监测和电压质量的控制。监测方面,采用advantech的pcl-1800高速数据采集卡,每通道采样速率可达10kHz,完全满足电力系统内过电压监测的需求,并提供20个周期的录波,和谐波分析。控制方面,通过检测电压和功率因数的变化,以11区控制为策略,根据数据变化的情况,确定所在的区间,发出控制指令,来调节变压器的分接头或通过真空断路器投切电容器,使电压满足条件,而功率因数保持最佳的值,避免过补偿或欠补偿的不合理运行状态。其框图如下: - F; U! D- Q, V8 F W ' f3 k X8 a& p5 m. ] Z# u$ c( u' i- O+ c+ `一次母线) ]6 F. p V* ~4 z4 h1 j" y
负载 " ]2 w& f- ?2 Y, e, a$ g4 K. U O* _0 j$ {
无功补偿母线 ~0 ~. C5 M/ w4 ~, p/ D ……) H6 P v0 j" P0 n1 b
, R5 @! e$ m2 R# s6 J # D3 Y7 X# ] g* R% x5 S 2 y# U5 H# u; \+ F; w3 E8 }) p % d3 x3 v( _' l- t. G+ } …… 3 m) K" B3 P, F- y' u
& J* X# g* ?6 r; C4 }. P( n* }* X# j3 U! z
+ W0 M& v/ f4 {
- \' p$ K6 ^# M. ^: a
/ f. P, T. [' i" ^9 @4 S
7 o8 I/ d' @, [# G" J" |& K1 e # N( b1 M4 d* ^. \ 图 6-1 电压无功综合监控框图 & {6 d# o% u' H, u: X2 o, O1 p" U9 z4 n
二、 本装置的工作过程 8 d1 Z) F$ d2 H" s本监控装置的原理如下,一次母线上的电压信号经过主变压器以后,送到电容分压器,该分压器暂态响应特性好,体积小,接线便利,在系统额定电压下输出电压峰值为20 V。然后将该信号经100/3.5 V电压传感器降低并隔离,再送至PCL—1800数据采集卡,开机后,数据采集卡不断轮采8路信号,每路信号数据刷新保留2个工频周期时间的数据,并以此为标准设定基准值以实时监测系统电压变化。当某一电压信号大于预设电压数值(该装置取1.5倍的基准值)时,前台机将过电压数据(过电压前2个周期的缓存数据和后续的18个工频周期数据)通过计算机RS—232串口输出。考虑前后台机的距离可能较远,在输出口装设一个RS-232/RS-485总线转换器,然后数据信号经屏蔽电缆或光纤送至后台机上接的另一个RS-232/ RS-485转换器,进入后台机的数据管理系统。同时,该部分还负责接收后台机发送的命令字符,具有双向传输功能。( h( x" r% p$ _, s, s( v
此外,在前台机的程序中还有一中断处理模块负责监控串口。收到从后台机发送来的电压采集信号后即将缓存区2个周期及后续的18个周期的数据一起经串口发送到后台机。为有效监控过电压,这部分数据处理优先级低于过电压动作的优先级。中断方式发送数据确保发送数据时不影响监测后续电压信号。每批数据有8个通道,持续20个工频周期,每周期采集200点共形成32000个整形数据,数据传送的波特率为9600 bit/s,发送一批数据需要2- 3 min。7 n3 ^$ S6 C |9 K
后台机负责接收由前台机发送来的数据,并以文件形式存盘,保存于已创建的数据库中。用户可以从数据库中方便地提取数据,并观察由程序自动生成的波形及一些过电压信息,如过电压产生的时间、最大值、过电压倍数等。为了便于观察与比较,用户还可以方便地在一个窗口界面上观看多通道波形图,也可以只观看单通道波形图。对于正常的电压数据,程序还可进行谐波分析,得到50次谐波含量和总的谐波畸变率。 ' T( p( t. z7 l( J3 r/ H4 B本装置在测量过电压的同时还有另一个功能就是可以测量功率因数。将电流、电压信号送入工控机,采用过零比较法,当两者瞬时值乘积为负时说明有一路信号已经过零,记下该采样数为y。继续采样,当两者的乘积为正时,说明另一路信号也已经过零,用此时的采样数x 减去y,该差值乘于采样周期0.1ms (采样频率为10kHz)即得到电压与电流的相角差所对应的时间。而工频为50赫兹,通过转化就可以得到相角差 ,再取余弦即为功率因数,无功功率为Q=UIsin .部分程序如下: + L% i- B/ z: h! lvoid main() . A% W. d( i( W4 A" d{ & v" s0 S6 X* n& v. a ~* x- K) K2 Y0 } int z,value,number,i,j,temp[1600]; ! k5 \& u, t1 H0 R int far *tempaddr[8]; - M) F+ P, Z2 ~2 _% V% y! D* @ int count[8],max1[8]; / r9 g- \0 p3 _& R7 }% c: F' x for(int q1=0;q1<3;q1++) $ h) F; Z1 V+ _1 E: B { 6 Q: F1 f& l& `5 H for(int q=0;q<=7;q++) ' _9 g4 X1 k8 Z! s( p" e0 a {7 D0 Y1 [. n7 d4 U3 v5 d
if((Buffer[q1][q]=(charfar*)farcalloc(20*1024,sizeof(char)))==NULL) `% O1 E8 }0 M/ d! m
printf("Insufficent memory");/ R* Z. o3 x& N* e; {$ r
read[q1][q]=write[q1][q]=0; : d0 Q' X% W- n- k# f
read2[q1][q]=write2[q1][q]=0; 0 ]8 J( X: C* ~7 v } + ~: b* U1 o, c1 f% F( ` }! {+ [9 r, L; O: d
if((pointarray[0]= (int far *)farcalloc(3200,sizeof(int)))==NULL) printf("pointarray allot invalid\n"); - r- h( W; N* e" k1 S + h/ t& g" _! D1 o2 y pointarray[1]=pointarray[0]+400;7 d- W" f9 c0 M6 \) [
pointarray[2]=pointarray[0]+800;7 r4 a! ^# w* C" X
pointarray[3]=pointarray[0]+1200;$ k- A5 C: J' N2 \6 G
pointarray[4]=pointarray[0]+1600; - i! [/ x: V. d& C pointarray[5]=pointarray[0]+2000;( N \% c. W$ Q" V# [5 O
pointarray[6]=pointarray[0]+2400;! l, e2 J, \% b/ \. j& |
pointarray[7]=pointarray[0]+2800; ! ^% o% ^9 Y6 k3 ^ k- `
for(i=0;i<=7;i++)' l5 m! G( d6 A8 o$ ?& [- m
{4 M( e2 }; k/ A) R! J! l/ G! l) E
tempaddr=pointarray; # V8 J0 L; Z5 d; ?+ x
// printf("pointarray[%d]=%Hx;%Hx\n",i,FP_SEG(pointarray),FP_OFF(pointarray)); 4 O. P# {5 d; O& z9 y) [( Q9 P count=0;0 Z6 s* W% M2 E
max=0; ( Y8 o* r. M, Y" f# C/ o5 U) S! V! C max1=0; . {0 R. Z5 s+ D4 i }7 \% j+ L+ s& M5 d% w
iniCOM(); # K- A7 e0 C- J9 W0 D. y4 @ pclini(); 8 s5 A( l% p g2 c4 _1 [ i=0;; r$ }3 M" e; m) X4 x
while(i<1600) + A( \& ~) I& a$ ?% S
{' }! D) ]0 [: l- U- R
if((inp(BASE+21)&0x20)==0x00) ' B- `" ?" k/ J1 v& O: _( Y' @5 O" Z8 s {# M" ~: m# ]/ V9 R
temp=inport(BASE+0); $ U5 q+ K: y& I7 k7 R i++; . `' k% A+ Q; R. `2 y }# {$ M6 x8 G' k9 S
} . B8 t8 W# a( U3 c. h outp(BASE+30,0x01); 7 q" u# \+ ~* ^* j& J1 O outp(BASE+10,0x01); 4 P$ C7 D9 ^' N$ Y- B [7 w" l5 b for(j=0;j<1600;j++)6 L6 u3 Y% _ p% D" @) e* W
{$ U6 Z5 R2 c2 V+ _% \8 r3 ]
number=temp[j]&0x000f; 4 J/ i. D/ }7 z2 C" X
value=((temp[j]>>4)&0x0fff)-2047;- u1 Q3 \; ]+ q, J
if(value>max[number])max[number]=value; * Q1 @# Q8 p. H5 V# S* @ } 0 x0 v( s/ }& O4 }& s for(i=0;i<=7;i++) 9 e6 g$ ] }* Y! }6 c {/ \/ B( {5 t+ J ]
fmax=10.0*(float)(max/4095.0);3 M% ?. [: }" m/ U/ V
printf("fmax[%d]=%5.3f\n",i,fmax); ) P' Z7 S$ m! N. X" q+ w0 c
} ( S4 w) k3 N1 D& n9 _2 Z outp(BASE+10,0x00); 7 V8 K8 Z% r+ f+ I & H6 a! n( B+ my1: while(!kbhit())- y& G) X6 U& n( k- w
{$ T! l4 L! D6 p! `/ I3 @
i=0; R2 P# [, D* n" T F/ y$ x' d6 P do{) V& b8 u; a& n' D; |6 Q
}while((inp(BASE+21)&0x08)!=0x08); ^( u" Q- n7 J9 m9 a4 d
while((inp(BASE+21)&0x20)==0x00) ' C/ E; G. s y \! E* J/ B: m {& A# _' N9 l7 e/ V6 U. h3 ]
% g% A. T) P$ v. V- q- D; @3 a$ U& s$ J+ | temp=inport(BASE+0); / p, a( q+ ]. E' U _, _: O i++;. R2 }7 g( n6 w1 u
} * A' ]! D8 h s* ~& D
! ]9 `& Q6 O6 E
for(j=0;j<i;j++)* U( S$ p% j& i y( J) v" Z: H
{+ l) z& K( y4 t+ U+ l, Q1 w
if((number=temp[j]&0x000f)>7)continue - t7 g: ]6 }+ h/ Y value=((temp[j]>>4)&0x0fff)-2047; . g* ^* V- I! k' |! F+ a8 X *tempaddr[number]=value; ; f4 s1 w7 c* p3 i z if(value>max1[number])max1[number]=value; + G6 g1 x1 v5 T# T8 l! d* B count[number]++; ) o1 k0 a0 F* k if(count[number]==199) ' u1 ^+ N7 i- k
{. E" z4 Z# `, Q! h
max[number]=max1[number]; 6 N5 q& d% F$ U8 h9 N3 m5 h max1[number]=0; 2 _8 z: ]" M# m count[number]=0; 6 O& p- I, _6 \7 ?, @ } & y# u7 ]4 w5 K
if(((float)*tempaddr[number]>(float)(1.5*max[number])&&(*tempaddr[number]>100))||recom) ' { t: C& t: p3 F0 \/ e3 ? {: q+ g) R! x" B' J" x, i; C
maxpoint=10*(float)*tempaddr[number]/4095.0; - D) B6 U3 m& a" R0 U7 c' F printf("*tempaddr[%d]=%5.3f\n",number,maxpoint); 6 K9 @2 ^( P7 E! t3 w4 D2 C2 \ # ^2 w# O: D0 c
if(blockfull[start]==FALSE)& [) f. q5 m( ~
{ storedata(start,tempaddr,j,i,temp); . F7 g$ c2 f5 Z
while(x<strlen(u)-1) X0 }0 D0 x- B8 F3 K3 a
{ ' B7 k8 P. b6 \3 a if(u[x]*u[x-1]<0) - v( m# v7 s2 \7 O
{ % Z6 }' x7 x% o0 g' p y=x; 7 x( u9 X4 \5 {( O } & c c) C- Q N0 z/ b* w if(i[x]*i[x-1]<0) " ] p- v. P4 J$ r6 c{6 ?7 |7 G) j* u+ [/ m4 S3 z; m
a= , t1 v9 U6 \4 k6 Y$ ^/ M- {% r
if (a<180) + l9 ^6 O& S7 ]2 Z: } { 2 O6 x' ]2 B1 q" C3 W1 |3 g" R, w5 s =a; k9 b3 Q4 M" X Y! |
}8 R2 c7 v1 k: A
if (a>180) / c, Q+ u% Y. t {/ j# [, S' J0 d9 m( X
=a-360; + i* W( Y& [0 H" Q& d } 5 ^! t5 c8 _9 n5 _9 Y6 u# z3 ebreak; $ [3 N! d0 p. n- }+ n' a0 N" T. L
} # u6 }9 \2 T. Rz=cos( );3 N- ]) f$ V$ N% Y2 f4 S
x++;! ?- b+ u/ m' R- {4 L7 l
} . S4 x: n. A) D! N recom=FALSE;! N S8 S/ k9 T* s# z
start++; c9 _8 q! t9 N1 W3 F
if(start>2)start=0; , M# q2 _$ V3 I for(int k=0;k<=7;k++) 5 C u6 r( D+ c0 ?% M {$ y! G- w6 S0 d: Q
count[k]=0; & T8 ~( W6 }0 I$ h% s; G tempaddr[k]=pointarray[k]; ) O8 x- e) k8 M }/ @9 t6 z; g$ x: d9 q( v, w: T
goto y1; 0 k! l# O7 j! ?9 o. p2 H0 @/ f U4 ~ }' a0 @* w$ G0 U
} : x$ L8 m% `5 K6 g) _6 _- L tempaddr[number]=tempaddr[number]+1; 6 b8 U; x+ b- @6 o! ~ if(tempaddr[number]-pointarray[number]>399)tempaddr[number]=pointarray[number]; + _$ h+ m- W# B$ G; s4 G3 G) J( ?4 p( A } ! A8 R0 ~% I* @4 e0 v}5 R% l3 X+ N* D2 Q3 p3 @8 ^5 ?
commIntDisable(); & z: u! @5 O; S' k7 j6 S. P; z9 N outp(BASE+30,0x01); 5 \; U, i, E' f$ A outp(BASE+10,0x01);4 @; f# }4 `9 o3 D* W* S& d
farfree(pointarray[0]);7 B" f/ G* d1 g I z4 c
for(int s1=0;s1<=2;s1++) ; B9 l: X/ [5 H4 k- Z0 F) } { , Q; J* g3 e$ C2 \5 g7 }4 O for(int s=0;s<=7;s++)" D+ g1 x" c X% N3 ]
{ / S- W6 b, l+ }# @1 k farfree(Buffer[s1]); . R4 p6 D4 m. z% K. U1 y) r$ `9 Q
} $ Q6 B! c6 ^! y1 D }( T. C } $ n# U) Q/ K* \ T0 r} , {# X) i5 E' \4 A, o
通过检测电压和无功功率的变化,以11区控制为策略,确定电压调整方案,发出控制指令,来调节变压器的分接头或通过真空断路器投切电容器,使电压满足条件,而功率因数保持最佳的值,避免过补偿或欠补偿的不合理运行状态。 $ K7 e# O1 J# s% z为了防止电容器因为干扰而频繁动作,我们没有立即根据所采集到的电压、功率因数而作出判断,而是延时一段时间(比如几秒钟),等到系统电压和功率因数变化趋于稳定后再发出动作与否的信号。另外当被控主变压器无功负荷小于与该主变压器相连母线上的每组电容器容量时,装置应以调节主变压器有载调压分接开关位置为主,以防止投切震荡。既要根据电压、无功选择电容器投入或切除的组数,又要兼顾电容器动作的次数,防止有的电容器组已经动作多次,有的还没有动作。这样会缩短频繁动作的断路器的使用寿命,降低设备的利用效率。所以可以通过顺序置位和复位的操作,使每组电容器在一个循环操作中都只有一次动作的机会。例如有六组电容器,因为功率因数偏低,系统所需无功较多,所以投入了第一、二、三组电容器。后来系统经过一个时间段以后,系统所需无功变少,功率因数偏高,则切除了第一、二组电容器。后又因为感性负载增多,无功损耗加大,需要投入一组电容器,考虑到第一、二、三组电容器已经动作,而第四、五、六组电容器尚未动作一次,故应投入第四组而不是第一组电容器。在切除一组电容器后,为了防止电容器的电压过高时重新投入,则应经过一个时间段,以保证电容器上的剩余压降降至50伏以下。 & k0 F( I8 M* s2 t6 N; d0 h! Y. F2 Q3 n6 {
; g1 z- |, ^7 D8 y
- {4 \/ ^' s' M