Міністерство освіти і науки України
Український Державній Університет Водного господарства і природо
користування
Кафедра електротехніки і автоматики
Курсова робота
з дисципліни “Програмування і алгоритмічні мови”
на тему:
“ Розробка програми для графічного відображення схеми регулювання рівня
води в каналі за верхнім б’єфом.”
Виконав:
студент 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(k1180;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;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=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;I9)
{
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;I7 && k1
Нашли опечатку? Выделите и нажмите CTRL+Enter