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

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

Таблица 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с.

14. www.vdt-automation.com.ua

Приложение А

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

#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 << '\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 << '\n';

//}

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

//cout << b[i];

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

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

//cout << '\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 << '\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 << '\n';

//}

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

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

else

printf ( "\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 << '\n';

}

rluc ( n, a, irow, b );

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

{

cout << b[i];

if ( ! ( i % 4 ) ) cout << '\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 << '\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 << "\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;

}

Приложение Б

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

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.