Смекни!
smekni.com

Анализ режимов работы электрических сетей ОАО "ММК им. Ильича" и разработка адаптивной системы управления режимами электропотребления (стр. 14 из 14)

Таблица 5.19 – Оптимальный режим сети при максимальных нагрузках

№ п/ст Приведенные напряжения к ступени 110 кВ Генерируемые мощности
активная, кВА реактивная, кВА
28 113,8 - 46283
2 113,3 - 40563
6 114,1 - 15621
32 113,1 - 10159
38 113,2 - 16105
46 113,8 - 6258
37 113,9 - 4106
40 113,5 - 12223
44 113,9 - 28412
34 114,0 - 16933
33 114,1 - 26122
20 113,4 - 47731
31 113,8 - 15303
43 113,7 - 116697
42 113,9 - 15105
41 113,9 - 68251
ТЭЦ-1 114,7 16250 7200
ТЭЦ-2 115,0 34120 14105

Проведя расчет оптимального режима сети ОАО "ММК им. Ильича" при максимальных нагрузках, было получено минимальное значение потерь активной мощности в сети ΔРопт=89320 кВт. Эффект разработанного программного обеспечения оценивается по снижению потерь активной мощности на величину

кВт.

Выводы

Разработанное программное обеспечение позволяет решить комплекс проблем, связанных с оптимальным распределением реактивной мощности по сети.

Разработанная адаптивная система управления позволяет осуществлять постоянный контроль над нагрузками подстанций и конфигурацией сети, оперативно реагировать на какие-либо изменения и производить точный расчет для нового режима.

Внедрение представленного комплекса, состоящего из программного обеспечения и адаптивной системы управления, на любое предприятие с любой сложно замкнутой сетью, в данном случае, на ОАО "ММК им. Ильича" позволяют:

значительно уменьшить потери энергии;

поддерживать постоянный уровень напряжения у приемного конца сети;

значительно уменьшить денежные затраты на потребление и генерацию реактивной мощности.

Минимум аппаратного обеспечения, необходимого для информационного режима работы адаптивной системы управления, и совместимость системы с любым оборудованием, уже установленного на подстанциях, позволяет сделать вывод о целесообразности применения разработанного программного обеспечения на ОАО "ММК им. Ильича" и других крупных промышленных предприятий.


Перечень ссылок

1. В.Н. Костин.: Оптимизационные задачи электроэнергетики: Учеб. пособие. – СПб.: СЗТУ, 2003 – 120с.

2. В.Г. Карманов. Математическое программирование. – М.: Наука, 1980 – 256с.

3. Дж. Деннис, Р. Шнабель. Численные методы безусловной оптимизации и решения нелинейных уравнений. – М.: Мир, 1988 – 440с.

4. З.Н. Бененсон, М.Р. Елистратов, Л.К. Ильин и др. Моделирование и оптимизация на ЭВМ радиоэлектронных устройств. – М.: Радиосвязь, 1981 – 272с.

5. С. Гилл, У. Мюррей. Численные методы условной оптимизации. – М.: Мир, 1977 – 339с.

6. Васильев С.П. Численные методы решения экстремальных задач. – М.: Наука, 1980 – 518с.

7. И.Т. Черноруцкий. Методы оптимизации в теории управления, С.-П.: Питер, 2004 – 226с.

8. В.Е. Болконин, П.И. Чинаев. Анализ и синтез систем автоматического управления на ЭВМ. Алгоритмы и программы. – М.: Радио и связь, 1986 – 248с.

9. В.Н. Костин, Е.В. Распопов, Е.А. Родченко. Передача и распределение электроэнергии: Учеб. пособие. – СПб.: СЗТУ, 2003 – 147с.

10. Барзам А.Б. Системная автоматика. – М.: Энергоатомиздат, 1989. – 446с.

11. Баркан Я.Д., Орехов Л.А. Автоматизация энергосистем: учебное пособие для студентов вузов. – М.: Высш. школа, 1981. – 271с.

12. А. А. Черносвитов. Курс MCSD Visual C++ 6.0 и MFC, С.-П.: Питер, 2000 – 554с.

13. Веников В.А. Управление переходными режимами в электрических системах. – М.: Высшая школа, - 1972. – 352с.


Приложение А

Программа расчета оптимальных режимов

#include <stdio.h>

#include <complex.h>

#include <iostream.h>

#include <conio.h>

#include <math.h>

int luc ( int, complex [][31], int [], double );

void rluc ( int, complex [][31], int [], complex [] );

void gauss ( int n, complex [][31], complex [], complex * );

void rasis ( int, int, complex [], complex [], complex [], int [], int [] );

void start ( int, int, int, complex [][31], complex [],

complex [], int [], int [], int [], int );

void vard ( int, int, int, complex [][31], complex [],

complex [], int [], int [], int [] );

void varm ( int, int, int, complex [][31], complex [],

complex [], int [], int [], int [] );

void prejc ( int, int, int, complex [], complex [] );

void rasis ( int, int, complex [], complex [], complex [], int [], int [] );

void pryzc ( int, complex [], int [], int [], int );

void foryzc ( int, int, complex [][31], complex [], int [], int [] );

double w;

void main ( void )

{

complex a[30][31], b[30], yz[90], tok[90], s;

int imax[90], imin[90], irow[30];

int n, nyz, nej, istop, i, j;

double f;

do

{

clrscr ( );

scanf ( "%i4 %i4 %i4 %i4", &f, &n, &nyz, &nej, &istop );

w = 2 * M_PI * f;

start ( n, nyz, nej, a, b, yz, imax, imin, irow, 0 );

for ( i = 0; i < nyz; i++ )

{

yz[i] = 1.0 / yz[i];

cout << yz[i];

if ( ! ( i % 4 ) ) cout << '&bsol;n';

}

for ( i = 0; i < nyz; i++ )

cin >> imax[i] >> imin[i];

cin >> n;

vard ( n, nyz, nej, a, b, yz, imax, imin, irow );

rasis ( n, nyz, b, yz, tok, imax, imin );

}

while ( istop );

//for ( i = 0; i < n; i++ )

//for ( j = 0; j <= n; j++ )

//cin >> a[i][j];

//for ( i = 0; i < n; i++ )

//b[i] = a[i][n];

//for ( i = 0; i < n; i++ )

//{

//for ( j = 0; j <= n; j++ )

//cout << a[i][j];

//cout << '&bsol;n';

//}

//for ( i = 0; i < n; i++ )

//cout << b[i];

//luc ( n, a, irow, 0.00001 );

//rluc ( n, a, irow, b );

//cout << '&bsol;n';

//gauss ( n, a, b, &s );

//for ( i = 0; i < n; i++ )

//cout << b[i];

}

int luc ( int n, complex a[][31], int irow[], double eps )

{

int i, i1, j, k, l, n1;

complex prom;

for ( i = 0; i < n; i++ )

irow[i] = i;

n1 = n - 1;

for ( i = 0; i < n1; i++ )

{

i1 = i + 1;

l = i;

for ( k = i1; k < n; k++ )

if ( abs ( a[k][i] ) > abs ( a[l][i] ) ) l = k;

if ( abs ( a[l][i] ) < eps ) return 0;

if ( l > i )

{

for ( j = 0; j < n; j++ )

{

prom = a[i][j];

a[i][j] = a[l][j];

a[l][j] = prom;

}

irow[i] = l;

}

for ( j = i1; j < n; j++ )

a[i][j] = a[i][j] / a[i][i];

for ( k = i1; k < n; k++ )

for ( j = i1; j < n; j++ )

a[k][j] -= a[k][i] * a[i][j];

}

return 1;

}

void rluc ( int n, complex a[][31], int irow[], complex b[] )

{

int i, j;

complex sum;

for ( i = 0; i < n; i++ )

if ( i != irow[i] )

{

sum = b[i];

b[i] = b[irow[i]];

b[irow[i]] = sum;

}

for ( i = 0; i < n; i++ )

{

sum = b[i];

for ( j = 0; j < i; j++ )

sum -= a[i][j] * b[j];

b[i] = sum / a[i][i];

}

for ( i = n - 2; i >= 0; i-- )

{

sum = b[i];

for ( j = i+1; j < n; j++ )

sum -= a[i][j] * b[j];

b[i] = sum;

}

}

void gauss ( int n, complex a[][31], complex x[], complex *s )

{

int i, j, k, l, k1, n1;

complex r;

n1 = n + 1;

for ( k = 0; k < n; k++ )

{

k1 = k + 1;

*s = a[k][k];

j = k;

for ( i = k1; i < n; i++ )

{

r = a[i][k];

if ( abs ( r ) > abs ( *s ) )

{

*s = r;

j = i;

}

}

if ( *s == complex ( 0.0, 0.0 ) ) break;

if ( j != k )

for ( i = k; i < n1; i++ )

{

r = a[k][i];

a[k][i] = a[j][i];

a[j][i] = r;

}

for ( j = k1; j < n1; j++ )

a[k][j] /= *s;

for ( i = k1; i < n; i++ )

{

r = a[i][k];

for ( j = k1; j < n1; j++ )

a[i][j] -= a[k][j] * r;

}

}

if ( *s != complex ( 0.0, 0.0 ) )

for ( i = n - 1; i >= 0; i-- )

{

*s = a[i][n];

for ( j = i + 1; j < n; j++ )

*s -= a[i][j] * x[j];

x[i] = *s;

}

return;

}

void start ( int n, int nyz, int nej, complex a[][31], complex b[],

complex yz[], int imax[], int imin[], int irow[], int iy )

{

int i;

pryzc ( nyz, yz, imax, imin, iy );

for ( i = 0; i < nyz; i++ )

{

cout << yz[i];

if ( ! ( i % 4 ) ) cout << '&bsol;n';

}

vard ( n, nyz, nej, a, b, yz, imax, imin, irow );

}

void vard ( int n, int nyz, int nej, complex a[][31], complex b[],

complex yz[], int imax[], int imin[], int irow[] )

{

int i, j;

foryzc ( n, nyz, a, yz, imax, imin );

//for ( i = 0; i < n; i++ )

//{

//for ( j = 0; j < n; j++ )

//cout << a[i][j];

//cout << '&bsol;n';

//}

if ( luc ( n, a, irow, 1.0e-5 ) )

varm ( n, nyz, nej, a, b, yz, imax, imin, irow );

else

printf ( "&bsol;nв®з­®Ґ аҐиҐ­ЁҐ ­Ґ ў®§¬®¦­®" );

return;

}

void varm ( int n, int nyz, int nej, complex a[][31], complex b[],

complex yz[], int imax[], int imin[], int irow[] )

{

int i;

prejc ( n, nej, nyz, b, yz );

for ( i = 0; i < n; i++ )

{

cout << b[i];

if ( ! ( i % 4 ) ) cout << '&bsol;n';

}

rluc ( n, a, irow, b );

for ( i = 0; i < n; i++ )

{

cout << b[i];

if ( ! ( i % 4 ) ) cout << '&bsol;n';

}

return;

}

void pryzc ( int nyz, complex yz[], int imax[], int imin[], int iy )

{

int i, indrlc;

complex rlc;

for ( i = 0; i < nyz; i++ )

{

cin >> rlc >> indrlc >> imax[i] >> imin[i];

yz[i] = rlc;

if ( indrlc == 2 )

yz[i] = complex ( 0.0, -1000000 / ( w * imag ( rlc ) ) );

if ( indrlc == 1 )

yz[i] = complex ( 0.0, w * imag ( rlc ) * 0.001 );

if ( indrlc == 3 ) yz[i] = polar ( real ( rlc ), imag ( rlc ) );

cout << "YZ[" << i+1 << "]= " << yz[i];

}

}

void foryzc ( int n, int nyz, complex a[][31], complex yz[],

int imax[], int imin[] )

{

int i, j, k, kolstr;

for ( i = 0; i < n; i++ )

{

for ( j = 0; j < n; j++ )

a[i][j] = complex ( 0.0, 0.0 );

//cout << '&bsol;n';

}

for ( k = 0; k < nyz; k++ )

{

i = imax[k];

j = imin[k];

a[i-1][i-1] += yz[k];

if ( j )

{

a[j-1][j-1] += yz[k];

a[i-1][j-1] -= yz[k];

a[j-1][i-1] = a[i-1][j-1];

}

}

clrscr();

cout << "YZ[i][j]=";

kolstr = 0;

for ( i = 0; i < n; i++ )

{

for ( j = 0; j < n; j++ )

{

cout << "&bsol;nYZ[" << i+1 << "][" << j+1 << "]= " << a[i][j];

kolstr++;

if ( kolstr == 22 )

{

kolstr = 0;

getchar ( );

clrscr();

cout << "YZ[i][j]=";

}

}

}

return;

}

void prejc ( int n, int nej, int nyz, complex b[], complex yz[] )

{

int i, ind1, ind2, imin, imax, iyz;

complex ej;

for ( i = 0; i < n; i++ )

b[i] = complex ( 0.0, 0.0 );

for ( i = 0; i < nej; i++ )

{

cin >> ej >> iyz >> imax >> imin >> ind1 >> ind2;

if ( ind1 )

ej = polar ( real ( ej ), imag ( ej ) );

if ( ind2 ) ej *= yz[iyz-1];

cout << "ei= " << ej;

b[imax-1] += ej;

if ( imin ) b[imin-1] -= ej;

}

return;

}

void rasis ( int n, int nyz, complex b[], complex yz[],

complex tok[], int imax[], int imin[] )

{

int i, j, k;

for ( k = 0; k < nyz; k++ )

{

i = imax[k];

j = imin[k];

if ( j )

tok[k] = ( b[i-1] - b[j-1] ) * yz[k];

else

tok[k] = b[i-1] * yz[k];

}

for ( k = 0; k < nyz; k++ )

cout << "I["<< k+1 << "]=" << tok[k];

return;

}


Приложение Б

Структурная схема системы управления