Зворотний зв'язок

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

Завдання

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

Зміст

1.Вступ.....................................................................................................................................3

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

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

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

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

6.Література......................................................................................................................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; i
{

x = random(maxx);

y = random(maxy);

color = (0);

putpixel(x, y, color);

}

delay(DELAY_TIME);

srand(seed);

for (i=0; i
{

x = random(maxx);

y = random(maxy);

color = random(maxcolor);

if (color == getpixel(x, y))

putpixel(x, y, 0);

}

}

return(0);

}

int leva(int x1,int y1,int y2)

{ rectangle(x1,y1,460,y2); //пiдпрограма для 1-контура

return 0;}

int tricky(int y1)

{ //для 2-контура

line(455,205,455,y1);

return 0;

}

int leva1(int x12,int y12,int y23)

{ rectangle(x12,y12,160,y23);

return 0;}

int tricky1(int y12)

{

line(155,164,155,y12);

return 0;

}

int main1(void)

{

float k;

int i,j,iii,iiii,iiiii;

clrscr();

int gdriver = DETECT, gmode, errorcode;

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);}

clearviewport();

printf("Введiть Q в межах вiд 0 до 30");

printf("\n Вiд 0 до 25 -min");

printf("\n Вiд 25 до 27 -нормальне");

printf("\n Вiд 27 до 30 -max");

printf("\n Q=",k);

scanf("%f",&k);

setgraphmode(getgraphmode());

int x1=450,e,y1=235,y2=360,x12=150,y12=195,y23=320;

while (!kbhit())

{

setbkcolor(0);

setcolor(2);

line(10,335,620,399);

setcolor(2);

line(10,225,150,240);

line(10,220,150,220);

line(160,253,180,253);

line(460,295,480,295);

rectangle(180,248,200,260);//2-датчик

rectangle(480,288,500,300);//1-датчик

rectangle(150,320,160,195);//2-дамба

setcolor(4);

line(181,254,199,254);

line(481,294,499,294);

setcolor(5);

settextstyle(0,0,1);

setcolor(2);

circle(455,196,9);

line(455,168,490,168);

line(455,168,455,186);

line(490,168,490,288);

circle(155,155,9);

line(155,125,190,125);

line(190,125,190,248);

line(155,125,155,146);

tricky(y1);

tricky1(y12);

setcolor(2);

line(500,298,620,310);

setcolor(2);

line(500,292,620,292);

setcolor(2);

leva(x1,y1,y2);

line(200,258,450,284);

line(200,251,450,251);

setcolor(2);

rectangle(10,50,620,450);

setfillstyle(1,1);floodfill(610,339,2);

setfillstyle(9,6);floodfill(610,439,2);

if (k<25){

setfillstyle(1,1);floodfill(610,300,2);

setcolor(1);

setlinestyle(0,0,1);

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

{line(149-i*10.5,238-i,149,238-i);delay(0);} //вода 3

setcolor(1);

setlinestyle(0,0,1);

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

{line(619-i*10.5,309-i,619,309-i); //вода 1

delay(0);}

setcolor(1);

setlinestyle(0,0,1);

for(i=0;i
{line(449-i*9.78,283-i,449,283-i); //вода 2 стала

delay(100);}

//-----------------------------------------------------------------------

iii=0;

do

{

setcolor(15);

line(455,168,490,168);

line(455,168,455,186);

line(490,168,490,288);

delay(200);

setcolor(2);

line(455,168,490,168);

line(455,168,455,186);

line(490,168,490,288);delay(200);iii=iii+1;}

while(iii<3);

setcolor(2);

circle(455,196,9);

setfillstyle(1,12);floodfill(455,196,2);// }

for(x1,y1,y2;y1>212;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);

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++) //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;e
{line(201,273-e,449,273-e);

delay(200);}

}

//------------------------------------------------------------------

if (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;e
{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);

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)

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

printf("Press any key to halt:");

getch();exit(1);}

titulka();

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

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.


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат