Проведя расчет оптимального режима сети ОАО "ММК им. Ильича" при номинальных нагрузках, было получено минимальное значение потерь активной мощности в сети ?Ропт=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
6258
37
113,9
4106
40
113,5
12223
44
28412
34
114,0
16933
33
26122
20
113,4
47731
31
15303
43
113,7
116697
42
15105
41
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 [],
void prejc ( int, int, int, complex [], complex [] );
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';
}
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];
//b[i] = a[i][n];
//{
//cout << a[i][j];
//cout << '\n';
//}
//cout << b[i];
//luc ( n, a, irow, 0.00001 );
//rluc ( n, a, irow, b );
//gauss ( n, a, b, &s );
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];
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;
if ( i != irow[i] )
sum = b[i];
b[i] = b[irow[i]];
b[irow[i]] = sum;
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-- )
for ( j = i+1; j < n; 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;
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 );
void vard ( int n, int nyz, int nej, complex a[][31], complex b[],
complex yz[], int imax[], int imin[], int irow[] )
foryzc ( n, nyz, a, yz, imax, imin );
//for ( j = 0; j < n; j++ )
if ( luc ( n, a, irow, 1.0e-5 ) )
varm ( n, nyz, nej, a, b, yz, imax, imin, irow );
else
printf ( "\nв®з®Ґ аҐиҐЁҐ Ґ ў®§¬®¦®" );
void varm ( int n, int nyz, int nej, complex a[][31], complex b[],
prejc ( n, nej, nyz, b, yz );
cout << b[i];
rluc ( n, a, irow, b );
void pryzc ( int nyz, complex yz[], int imax[], int imin[], int iy )
int i, indrlc;
complex rlc;
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;
a[i][j] = complex ( 0.0, 0.0 );
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;
cout << "\nYZ[" << i+1 << "][" << j+1 << "]= " << a[i][j];
kolstr++;
if ( kolstr == 22 )
getchar ( );
void prejc ( int n, int nej, int nyz, complex b[], complex yz[] )
int i, ind1, ind2, imin, imax, iyz;
complex ej;
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;
void rasis ( int n, int nyz, complex b[], complex yz[],
complex tok[], int imax[], int imin[] )
int i, j, k;
tok[k] = ( b[i-1] - b[j-1] ) * yz[k];
tok[k] = b[i-1] * yz[k];
cout << "I["<< k+1 << "]=" << tok[k];
Приложение Б
Структурная схема системы управления
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14