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

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

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

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

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

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

на тему:

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

Виконав:

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

ФПМ і КІС

АУТП 12

Тимощук А.І.

Перевірив:

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

Рівне 2002

Зміст

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

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

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

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

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

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

Вступ

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

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

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

При регулюванні по верхньому б’єфу регулятори 2 забезпечують
стабільний рівень води в верхніх б’єфах перегородок (Рис.1). Для цієї
схеми регулювання лінія рівнів вільної поверхні потоку при максимальній
витраті Qмакс паралельна дну каналу(лінія 3,рис.1).

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

на водоспусках з автоматичними регуляторами витрати перепади рівнів при
зміні витрати від Qмакс до Qмін повинні бути не більше допустимих для
нормальної роботи прийнятих типів регуляторів . Криві вільної
поверхності води розраховують відомими в гідравліці методами.

Рис.1. Схема регулювання по верхньому б’єфу.

Регулювання по верхньому б’єфу не економне , тому що
стабільність рівнів досягається не за рахунок витрати води , яка
поступила в б’єф , а за рахунок витрати , витікаючого з нього . Тому при
виключенні якого не будь користувача рівень води в б’єфі починає
збільшуватись , і для підтримки Hвб=const перегородки по сигналу датчика
рівня 1 відкривається для пропуска невикористаного об’єма води . Б’єф ,
який розташований нижче діє аналогічно і скидає поступивший об’єм води
вниз по течії каналу.

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

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

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

#include

#include

#include

#include

#include

#define ESC 27

#define B 98

#define PIXEL_COUNT 10000

#define DELAY_TIME 0

int zasyvka (int x1,int y1,int y2)

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

return 0;}

int lin(int y1)

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

line(490,205,490,y1);

return 0;

}

int zasyvka1(int x12,int y12,int y23)

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

return 0;}

int lin1(int y12)

{

line(190,164,190,y12);

return 0;

}

void fischka(void);

void lma(void);

void *saucer;

int size;

void main(void)

{

int STEP=50;

char c;

int X,y,q=1,i;

int gdriver=DETECT,gmode,errorcode;

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

errorcode=graphresult();

if(errorcode !=grOk)

{

printf(«Помилка графiчного режиму
типу:%s\n»,grapherrormsg(errorcode));

printf(«Натиснiть будь-яку клавiшу для виходу»);

getch();

exit(1);

}

setcolor(2);

settextstyle(0,0,3);

outtextxy(160,86,»КУРСОВА РОБОТА»);

settextstyle(0,0,1);

setcolor(4);

outtextxy(280,166,»на тему:»);

settextstyle(0,0,1);

setcolor (14);

// settextstyle(2,0,7);

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

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

setcolor(4);

outtextxy(270,216,»Варiант №15″);

setcolor(8);

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

setcolor(15);

outtextxy(440,320,» Тимощук А.I.»);

setcolor(2);

outtextxy(275,450,»РIВНЕ-2002″);

getch();

meny:

initgraph(&gdriver,&gmode,»»);

errorcode=graphresult();

if(errorcode!=grOk)

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

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

getch();exit(1);}

q=1;

fischka();

setcolor(1);

X=160;

y=110;

rectangle(46,20,255,40);

setfillstyle(1,15);floodfill(51,21,1);

settextstyle(0,0,1);

//setcolor(6);

outtextxy(52,25, «Демонстрацiя роботи схеми»);

rectangle(46,70,105,90);

setfillstyle(1,15);floodfill(51,71,1);

//setcolor(6);

outtextxy(52,75,»Вихiд»);

do

{

putimage(X-155,y-100,saucer,XOR_PUT);

c=getch();

putimage(X-155,y-100,saucer,XOR_PUT);

switch(c)

{

case 80: y+=STEP;q++;if(y==210){y=110 ;q=1;}break;

case 72: y-=STEP;q—;if(y==60){y=160;q=2;}break;

case 13:if(q==2)closegraph();

if(q==1)

{

lma();

setfillstyle(0,16);

bar(0,0,640,480);

goto meny;

}

}

}

while(c!=27);

}

void fischka(void )

{

setcolor(7);

circle(100,100,8);

setfillstyle(1,4);floodfill(100,100,7);

size=imagesize(80,80,120,120);

saucer=malloc(size);

getimage(78,78,122,122,saucer);

putimage(78,78,saucer,XOR_PUT);

}

void lma(void)

{

float k1;

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

z:

printf(«Введiть Q в межах вiд 0 до 24»);

printf(«\n Вiд 0 до 7 -min»);

printf(«\n Вiд 7 до 9 -нормальне»);

printf(«\n Вiд 10 до 24 -max»);

printf(«\n Q=»,k1);

scanf(«%f»,&k1);

setgraphmode(getgraphmode());

int x1=485,e,y1=255,y2=380,x12=185,y12=225,y23=350;

if(k1>24)

{ restorecrtmode();

printf(«\n Введiть згiдно вказаних меж!!!»);

getch();

clrscr();

goto z;

}

while (!kbhit())

{

setbkcolor(0);

setcolor(12);

outtextxy(80,25,»Схема регулювання рiвня води в каналi за верхнiм
б’ефом.»);

setcolor(2);

line(10,335,620,399);

setcolor(2);

line(10,215,145,230);

line(10,238,145,238);

line(165,233,185,233);

line(465,275,485,275);

rectangle(145,228,165,240);//2-датчик

rectangle(445,268,465,280);//1-датчик

setcolor(4);

line(146,234,164,234);

line(446,274,464,274);

setcolor(10);

setlinestyle(0,4,3);

rectangle(175,148,205,162);

rectangle(475,188,505,202);

setlinestyle(0,4,1);

setcolor(2);

line(455,168,490,168);

line(490,168,490,186);

line(455,168,455,268);

line(155,125,190,125);

line(155,125,155,228);

line(190,125,190,146);

lin(y1);

lin1(y12);

setcolor(2);

line(495,288,620,300);

line(495,308,620,308);

setcolor(2);

zasyvka(x1,y1,y2);

zasyvka1(x12,y12,y23);

line(195,244,445,270);

line(195,278,445,278);

setcolor(2);

rectangle(10,50,620,450);

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

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

if(k1<=7) { setcolor(1); setlinestyle(0,0,1); for(I=0;I<7;I++) {line(11,237-I,144,237-I);delay(0);} //вода 3 setcolor(1); setlinestyle(0,0,1); for(I=0;I<13;I++) {line(11,230-I,144-I*10.5,230-I);delay(0);} //вода 3 setcolor(1); setlinestyle(0,0,1); for(I=0;I180;y12—,y23—)

{

setcolor(2);

zasyvka1(x12,y12,y23);

lin1(y12);

delay(100);

setcolor(0);

line(185,y12+1,195,y12+1);

line(185,y23+1,195,y23+1);

setcolor(1);

line(185,y23+1,195,y23+1);

}

setcolor(0);

setlinestyle(0,0,1);

for(I=13;I>0;I—)

{line(11,230-I,144-I*10.5,230-I);delay(100);}

setcolor(1);

setlinestyle(0,0,1);

for(I=k1;I<7;I++) {line(196,277-I,444,277-I);delay(0);} setcolor(1); setlinestyle(0,0,1); for(I=0;I<24;I++) {line(196,270-I,444-I*10.5,270-I); //вода 2 стала delay(100);} setcolor(1); for(x12,y12,y23;y12<=225;y12++,y23++) { setcolor(2); zasyvka1(x12,y12,y23); lin1(y12); delay(100); setcolor(0); line(185,y12-1,195,y12-1); line(185,y23-1,195,y23-1);} iii=0; do { setcolor(15); line(455,168,490,168); line(490,168,490,186); line(455,168,455,268); delay(200); setcolor(2); line(455,168,490,168); line(490,168,490,186); line(455,168,455,268); delay(200);iii=iii+1;} while(iii<3); setcolor(10); rectangle(475,188,505,202); setfillstyle(1,12);floodfill(480,190,10); for(x1,y1,y2;y1>212;y1—,y2—)

{

setcolor(2);

zasyvka(x1,y1,y2);

lin(y1);

delay(100);

setcolor(0);

line(485,y1+1,495,y1+1);

line(485,y2+1,495,y2+1);

setcolor(1);

line(485,y2+1,495,y2+1);

}

setcolor(0);

for(I=24;I>0;I—)

{line(196,270-I,444-I*10.5,270-I); //вода 2 стала

delay(100);}

setcolor(1);

setlinestyle(0,0,1);

for(I=k1;I<7;I++) {line(496,307-I,619,307-I);delay(0);} setcolor(1); setlinestyle(0,0,1); for(I=0;I<10;I++) {line(496,300-I,619-I*11.5,300-I); //вода 2 стала delay(100);} for(x1,y1,y2;y1<=255;y1++,y2++) { setcolor(2); zasyvka(x1,y1,y2); lin(y1); delay(100); setcolor(0); line(485,y1-1,495,y1-1); line(485,y2-1,495,y2-1); } setcolor(0); setlinestyle(0,0,1); for(I=0;I<10;I++) {line(496,300-I,619-I*11.5,300-I); //вода 2 стала delay(0);} } if(k1>9)

{

setcolor(1);

setlinestyle(0,0,1);

for(I=0;I<7;I++) {line(11,237-I,144,237-I);delay(0);} //вода 3 setcolor(1); setlinestyle(0,0,1); for(I=0;I<7;I++) {line(496,307-I,619,307-I);delay(0);} setcolor(1); setlinestyle(0,0,1); for(I=0;I<7;I++) {line(196,277-I,444,277-I);delay(0);} setcolor(1); setlinestyle(0,0,1); for(I=0;I212;y1—,y2—)

{

setcolor(2);

zasyvka(x1,y1,y2);

lin(y1);

delay(100);

setcolor(0);

line(485,y1+1,495,y1+1);

line(485,y2+1,495,y2+1);

setcolor(1);

line(485,y2+1,495,y2+1);

}

setcolor(0);

for(I=k1;I>0;I—)

{line(196,270-I,444-I*10.5,270-I); //вода 2 стала

delay(100);}

setcolor(1);

setlinestyle(0,0,1);

for(I=0;I<10;I++) {line(496,300-I,619-I*11.5,300-I); //вода 2 стала delay(100);} for(x1,y1,y2;y1<=255;y1++,y2++) { setcolor(2); zasyvka(x1,y1,y2); lin(y1); delay(100); setcolor(0); line(485,y1-1,495,y1-1); line(485,y2-1,495,y2-1); } setcolor(1); setlinestyle(0,0,1); for(I=0;I7 && k1<=9) { setcolor(1); setlinestyle(0,0,1); for(I=0;I

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *