Міністерство освіти і науки України

Український Державній Університет Водного господарства і природо
користування

Кафедра електротехніки і автоматики

Курсова робота

з дисципліни “Програмування і алгоритмічні мови”

на тему:

“ Розробка програми для графічного відображення схеми регулювання рівня
води в каналі за нижнім б’єфом.”

Виконав:

студент 1-го курсу

ФПМ і КІС

АУТП 12

Христюк О.В.

Перевірив:

Пастушенко В.Й.

Рівне 2002

Завдання

Розробити програму для графічного відображення додавання двох
синусоїдних електрорушійних сил Зміст

Вступ………………………………………………………….
…………………………………………………………3

Задача і опис
схеми………………………………………………………….
……………………4

Текст
програми……………………………………………………….
…………………………………6

Приклад………………………………………………………..
…………………………………………………..13

Висновок……………………………………………………….
………………………………………………… 14

Література……………………………………………………..
………………………………………………..15

Вступ

Для закріплення здобутих теоретичних знань, застосування їх при
вирішенні питань виробничого характеру, а також з метою набуття навиків
по створенню програмного забезпечення , виконується курсова робота з
дисципліни “Програмування та алгоритмічні мови” . В курсовій роботі
необхідно розробити програму на мові програмування C++,яка б графічно
відображала схему регулювання рівня води в каналі за нижнім б’єфом.
Важливо також щоб програма мала системне меню, вводилися дані.

Задача і опис схеми

Регулювання по нижньому б’єфі використовують для забезпечення
користувачів водою по запиту. При цьому способі регулятори 1 по сигналам
датчиків 2 піддержують постійними рівні води в нижніх б’єфах Hнб=const
(Рис.1). Вільна поверхність потоку при максимальній витраті Qмакс (лінія
3) і витраті (лінія 4) утворюють граничний трикутник , який показує
границі зміни рівнів вздовж б’єфа при витратах 0 ( Q ( Qмакс . Об’єм
води , обмежений вільною поверхністю при витраті (лінія 5) і поверхністю
при Qмакс , утворюють резервний об’єм , який називають об’ємом
регулювання . Цей об’єм витрачається відразу при збільшенні водозабору
із б’єфа і поповнюється у випадку зменшення потреби води .

При збільшенні водозабору (наприклад, водовипуском 6 на dQ проти
існуючого місця витрати Q1) спочатку витратиться резервний об’єм , який
знаходиться між лініями 3 і 5 . Після того як він спрацьовує , рівень
води в нижньому б’єфі починає знижуватися і , щоб не допустити зниження
, регулятор відкриває перегородку . Це приводить до спрацювання
резервного об’єму вище розташованого б’єфа і відкриттю потім перегородки
. В результаті послідовно робиться перестройка всіх вище розташованих
перегородок і головної споруди . В систему подається додаткова витрата
dQ .

При зниженні потреби у воді в якому не будь б’єфі на dQ спочатку
послідовно поповнюються резервні об’єми , потім начинають послідовно
прикриватися перегородки знизу вверх до тих пір ,поки в систему не
поступить зменшена на dQ витрата .

Таким чином , перестройка роботи перегородок при зміні витрати в
якому не будь б’єфі робиться в напрямку , протилежному напрямку руху
потоку . Такий зв’язок між б’єфами називається оборотнім гідравлічним
зв’язком , який при витратах Q ( Qмакс утворює ланцюг (каскад)
послідовно розташованих резервних об’ємів . Тому регулювання по нижньому
б’єфі називають також каскадним регулюванням .

Резервні об’єми досягають максимуму при витраті Q=0 і повністю
спрацьовують при Q = Qмакс . Наповнення або спрацювання резервних
проходить на протязі часу , необхідного для перестройки системи на новий
режим роботи . Цей час прийнято називати часом регулювання . Він
найбільший , якщо зміна витрати проходить в найбільш віддаленому б’єфі .

Рис.1. Схема регулювання води за нижнім б’єфом.

При збільшенні витрати на dQi в i – му б’єфі час регулювання :

(1)

— сума резервних об’ємів вище розташованих б’єфів ;

— сумарний час перестройки вище розташованих регуляторів .

При розподілу води регулюванням по нижньому б’єфі присутні наступні
недоліки :

у випадку недостачі води користувачі , розташовані в верхній частині
каналу , можуть не отримати необхідну кількість води , а інколи може
опустошитися головна частина каналу ;

при витраті Q=0 вільна поверхністю води у б’єфах розташовується
горизонтально , тому гребені бровок каналів і дамб повинні бути також
горизонтальними в кожному б’єфі , що збільшує об’єм будівельних робіт ;

в б’єфах необхідно мати автоматичну водоскидну споруду , яка не
допустить переповнення , яке може виникнути при аварії на головній
споруді .

Головною задачею курсової роботи стоїть те , що потрібно розробити
програму , яка б відображала цю схему і процес роботи , програма повинна
працювати з різними витратами .

Текст програми.

#include

#include

#include

#include

#include

#define ESC 27

#define B 98

#define PIXEL_COUNT 10000

#define DELAY_TIME 0

//—————Функцiя виведення титульноi сторiнки—————

int titulka(void)

{

int asd,i, x, y, color, maxx, maxy,maxcolor, seed;

setcolor (15);

settextstyle(4,0,9);

outtextxy(20,100,»Kursova robota»);

setcolor (5);

settextstyle(2,0,7);

outtextxy(100,180,»на тему:»);

setcolor (10);

settextstyle(2,0,7);

outtextxy(100,190,»Графiчне вiдображення схеми регулювання»);

outtextxy(110,200,»рiвня води в каналi за нижнiм б’ефом»);

setcolor(4);

outtextxy(300,216,»Варiант №16″);

setcolor(8);

outtextxy(440,300,» Виконав:»);

setcolor(6);

outtextxy(440,320,» Христюк О.В.»);

setcolor(11);

outtextxy(240,400,»PRESS ANY KEY»);

maxx = getmaxx() + 1;

maxy = getmaxy() + 1;

maxcolor = getmaxcolor() + 1;

while (!kbhit())

{

seed = random(32767);

srand(seed);

for (i=0; i212;y1—,y2—)

{

setcolor(2);

leva(x1,y1,y2);

tricky(y1);

delay(100);

setcolor(0);

line(450,y1+1,460,y1+1);

line(450,y2+1,460,y2+1);

setcolor(1);

line(450,y2+1,460,y2+1);

}

setlinestyle(0,0,0);

setcolor(0);

for(e=13;e>8;e—) //1<>2

{line(501,306-e,619,306-e);

delay(200);}

setcolor(1);

setlinestyle(0,0,1);

for(i=k;i<25;i++) {line(449-i*9.78,283-i,449,283-i); //вода 2 стала delay(100);} for(x1,y1,y2;y1<=230;y1++,y2++) { setcolor(2); leva(x1,y1,y2); tricky(y1); delay(100); setcolor(0); line(450,y1-1,460,y1-1); line(450,y2-1,460,y2-1); } setlinestyle(0,0,0); setcolor(1); for(e=15;e<22;e++) //1<>2

{line(201,273-e,449,273-e);

delay(200);}

iiii=0;

do

{

setcolor(15);

line(155,125,190,125);

line(190,125,190,248);

line(155,125,155,146);

delay(200);

setcolor(2);

line(155,125,190,125);

line(190,125,190,248);

line(155,125,155,146);

delay(200);iiii=iiii+1;}

while(iiii<3); setcolor(2); circle(155,155,9); setfillstyle(1,12);floodfill(155,155,2); for(x12,y12,y23;y12>170;y12—,y23—)

{

setcolor(2);

leva1(x12,y12,y23);

tricky1(y12);

delay(100);

setcolor(0);

line(150,y12+1,160,y12+1);

line(150,y23+1,160,y23+1);

setcolor(1);

вода 3

setcolor(1);

for(x12,y12,y23;y12<=194;y12++,y23++) { setcolor(2); leva1(x12,y12,y23); tricky1(y12); delay(100); setcolor(0); line(150,y12-1,160,y12-1); line(150,y23-1,159,y23-1);} setcolor(1); for(e=8;e<13;e++) //1<>2

{line(11,233-e,149,233-e);

delay(200);}

setcolor(1);

for(e=8;e<13;e++) //1<>2

{line(501,306-e,619,306-e);

delay(200);}

setcolor(0);

for(e=13;e>8;e—) //1<>2

{line(11,233-e,149,233-e);

delay(0);}

}

//——————————————————————

if (k>=25 && k<=27){ setcolor(1); setlinestyle(0,0,1); for(i=0;i<14;i++) {line(149-i*10.5,238-i,149,238-i);delay(0);} //вода 3 setcolor(1); setlinestyle(0,0,1); for(i=0;i<11;i++) {line(619-i*10.5,309-i,619,309-i); //вода 1 delay(0);} setcolor(1); setlinestyle(0,0,1); for(i=0;i<25;i++) {line(449-i*9.78,283-i,449,283-i); //вода 2 стала delay(0);} setlinestyle(0,0,0); setcolor(1); for(e=15;e27){

setcolor(1);

setlinestyle(0,0,1);

for(i=0;i<14;i++) {line(149-i*10.5,238-i,149,238-i);delay(0);} //вода 3 setcolor(1); setlinestyle(0,0,1); for(i=0;i<11;i++) {line(619-i*10.5,309-i,619,309-i); //вода 1 delay(0);} setcolor(1); setlinestyle(0,0,1); for(i=0;i<25;i++) {line(449-i*9.78,283-i,449,283-i); //вода 2 стала delay(0);} setlinestyle(0,0,0); setcolor(1); for(e=15;e170;y12—,y23—)

{

setcolor(2);

leva1(x12,y12,y23);

tricky1(y12);

delay(100);

setcolor(0);

line(150,y12+1,160,y12+1);

line(150,y23+1,160,y23+1);

setcolor(1);

line(150,y23+1,160,y23+1);

}

setlinestyle(0,0,0);

for(i=30;i>24;i—)

{setcolor(0);

line(201,282-i,449,282-i);

delay(200);}

setcolor(1);

setlinestyle(0,0,1);

for(i=3;i<14;i++) {line(149-i*10.5,238-i,149,238-i);delay(100);} //вода 3 setcolor(1); for(x12,y12,y23;y12<=194;y12++,y23++) { setcolor(2); leva1(x12,y12,y23); tricky1(y12); delay(100); setcolor(0); line(150,y12-1,160,y12-1); line(150,y23-1,159,y23-1);} setcolor(1); for(e=8;e<13;e++) {line(11,233-e,149,233-e); delay(200);} setcolor(0); for(e=13;e>8;e—)

{line(11,233-e,149,233-e);

delay(0);}

}}

getch();

return(0);

}

int main(void)

{int gdriver=DETECT,gmode,errorcode,i;

initgraph(&gdriver,&gmode,»c:\\bcpp\\bgi»);

errorcode=graphresult();

if(errorcode!=grOk)

Системне меню —————————————-

r_key:

int key;

initgraph(&gdriver,&gmode,»c:\\bcpp\\bgi»);

errorcode=graphresult();

if(errorcode!=grOk)

{printf(«Graphics error:%s\n»,grapherrormsg(errorcode));

printf(«Press any key to halt:»);

getch();exit(1);}

setcolor(10);

rectangle(15,420,350,470);

setfillstyle(9,6);floodfill(16,421,10);

settextstyle(0,0,1);

setcolor(14);

outtextxy(20,426,»B — Демонстрацiя роботи схеми регулювання»);

outtextxy(20,436,»рiвня води в каналi за нижнiм б’эфом»);

outtextxy(20,456,»ESC — ВИХIД»);

rr_key:

key=getch();

if(key==B)

{ main1();

clrscr();

goto r_key;

}

else if(key==ESC) exit(0);

else goto rr_key;

return(0);

}

Приклад

Введемо Q=26 – нормальна витрата (Рис.2) ;

Введемо Q=12 – мала витрата (Рис.3) ;

Рис.2

Рис.3

Висновок

Завдяки цій курсовій роботі я закріпив здобуті теоретичні знання з
курсу “Програмування та алгоритмічні мови”, навчився застосувати їх при
вирішенні питань виробничого характеру. Склав програму, яка графічно
відображає схему регулювання рівня води в каналі за нижнім б’єфом,
програма працює з різним даними.

Література

1.Баховец Б.А, Ткачук Я.В. Основи автоматики и автоматизация
производственных процессов в гидромелиорации. Львов, “Вища школа”, 1989
р., 334 с.

2.Крис Паппас, Уїльям Мюррей, Програмирование на С и С++,

“Ирина”, BHV,Киев,2000.

Ця курсова робота люб’язно надана HYPERLINK
«http://rivneclub.narod.ru/kontakt.html» Олександром Подранецьким

PAGE

PAGE 16

Похожие записи