Демонстрація роботи електромагнітного реле постійного струму.
Вступ
Для закріплення здобутих теоретичних знань, застосування їх при вирішенні питань математичного характеру, а також з метою набуття навиків по створенню програмного забезпечення , виконується курсова робота з дисципліни “Програмування та алгоритмічні мови” . В курсовій роботі необхідно розробити програму на мові програмування C++,яка б демонструвала роботу електромагнітного реле постійного струму .
Задача і опис схеми
Електромагнітне реле постійного струму , яке є сполученням електромагнітного перетворювача (з поворотним якорем ) і контактного пристрою. При проходженні струму по катушці 7 у магніто проводі , що складається з осердя 6 та якоря 1, виникає магнітний потік , якір притягує до осердя , контактна група розмикається (розмикаючий контакт) , а контактна група замикається(замикаючий контакт). На принципових електричних схемах механічний зв’язок між електромагнітним приводом та контактами не вказується.
Текст програми
#include
#include
#include
#include
#include
void help(void)
{ restorecrtmode();
clrscr();
textmode(BW80);
textcolor(7);
cprintf(" Мiнiстерство освiти i науки України");
printf("\n");
cprintf(" Рiвненський державний технiчний унiверситет");
printf("\n");
cprintf(" Кафедра електротехнiки i автоматики");
printf("\n\n\n\n\n");
textcolor(4 + BLINK);
printf(" ");
cprintf("КУРСОВА РОБОТА");
printf("\n");
textcolor(7);
printf("\t\t");
cprintf(" з курсу:\"Програмування та алгоритмiчнi мови\"");
printf("\n");
textcolor(7);
printf("\t\t");
cprintf(" на тему:\Демонстрацiя електромагнiтного ");
printf("\n");
printf("\t\t\t ");
cprintf(" реле постiйного струму \"");
printf("\n\n\n\n\n\n");
textcolor(2);
printf("\t\t\t\t\t\t");
cprintf("Виконав студент першого курсу");
printf("\n");
printf("\t\t\t\t\t\t");
cprintf("групи АУТП-1");
printf("\n");
printf("\t\t\t\t\t\t");
cprintf("Назарчук Вiталiй");
printf("\n\n\n\n");
printf("\t\t\t ");
textcolor(58);
cprintf("РIВНЕ-2002");
textcolor(GREEN + BLINK );
printf("\n\t\t\t");
cprintf(" натиснiть будь-яку клавiшу");
getch();
textcolor(GREEN );
setgraphmode(getgraphmode());
}
void draw(int x0,int y0)
{
unsigned char color[16]={0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15};
struct bmpinfo
{
char h1,h2;
unsigned long
size,reserved,offset,b,width,height;
unsigned int plans,bpp;
};
bmpinfo info;
FILE *f;
int x,y;
unsigned char b;
unsigned char bh;
unsigned char bl;
int nb;
int np;
int i,j;
if((f=fopen("34.bmp","rb"))==NULL)
printf("-1");
//return -1;
fread(&info,sizeof(info),1,f);
if(info.bpp!=4)
printf("-2");
//return -2;
x=x0;
y=y0+info.height;
nb=(info.width/8)*4;
if((info.width/8)!=4)nb+=4;
fseek(f,info.offset,SEEK_SET);
for(i=0;i<=info.height;i++)
{
np=0;
for(j=4;j
{
b=fgetc(f);
if(np
{
bh=b>>4;
putpixel(x,y,color[bh]);
x++;
np++;
}
if (np
{
bl=b&15;
putpixel(x,y,color[bl]);
x++;
np++;
}
}
x=x0;
y--;
}
fclose(f);
}
void draw1(int x0,int y0)
{
unsigned char color[16]={0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15};
struct bmpinfo
{
char h1,h2;
unsigned long
size,reserved,offset,b,width,height;
unsigned int plans,bpp;
};
bmpinfo info;
FILE *f;
int x,y;
unsigned char b;
unsigned char bh;
unsigned char bl;
int nb;
int np;
int i,j;
if((f=fopen("34_.bmp","rb"))==NULL)
printf("-1");
//return -1;
fread(&info,sizeof(info),1,f);
if(info.bpp!=4)
printf("-2");
//return -2;
x=x0;
y=y0+info.height;
nb=(info.width/8)*4;
if((info.width/8)!=4)nb+=4;
fseek(f,info.offset,SEEK_SET);
for(i=0;i<=info.height;i++)
{
np=0;
for(j=4;j
{
b=fgetc(f);
if(np
{
bh=b>>4;
putpixel(x,y,color[bh]);
x++;
np++;
}
if (np
{
bl=b&15;
putpixel(x,y,color[bl]);
x++;
np++;
}
}
x=x0;
y--;
}
fclose(f);
}
void Pidgotovka(void);
void *saucer;
int size;
void Pidgotovka1(void);
void *saucer1;
int size1;
void demo(void)
{ int i,w;
Pidgotovka();
while(!kbhit())
{putimage(236,86,saucer,XOR_PUT);
for(i=0;i<5;i++)
{setlinestyle(0,0,1);
setcolor(4);
circle(464,302,3);
circle(471,323,3);
delay(200);
setcolor(15);
circle(464,302,3);
circle(471,323,3);
delay(200);
}
setlinestyle(0,0,3);
putimage(236,86,saucer,XOR_PUT);
for(i=0;i<24;i++)
{setcolor(0);
line(220,170,197+i-1,272);
line(220,170,273,170-i+1);
setcolor(10);
line(220,170,197+i,272);
line(220,170,273,170-i);
putimage(236,86-i/3,saucer,XOR_PUT);
setcolor(1);line(262,135,262,135-i/3);
delay(200);
putimage(236,86-i/3,saucer,XOR_PUT);
}
putimage(236,86-7,saucer,XOR_PUT);
delay(2000);
putimage(236,86-7,saucer,XOR_PUT);
for(i=23;i>-1;i--)
{setcolor(0);
line(220,170,197+i+1,272);
line(220,170,273,170-i-1);
setcolor(10);
line(220,170,197+i,272);
line(220,170,273,170-i);
putimage(236,86-i/3,saucer,XOR_PUT);
setcolor(1);
line(262,145+(23-i),262,127);
delay(200);
putimage(236,86-i/3,saucer,XOR_PUT);
}
}
putimage(236,86,saucer,XOR_PUT);
outtextxy(195,220,"1");
outtextxy(505,220,"6");
outtextxy(340,290,"7");
outtextxy(200,460,"1 -якiр,6 -осердя,7 -катушка");
delay(100);
getch();
getch();
free(saucer);
}
main()
{
int q,X,y,c,STEP=100;
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);
}
help();
poch:
q=1;
X=143;
y=113;
Pidgotovka1();
do
{
putimage(X+270,y,saucer1,XOR_PUT);
putimage(X,y,saucer1,XOR_PUT);
c=getch();
putimage(X+270,y,saucer1,XOR_PUT);
putimage(X,y,saucer1,XOR_PUT);
switch(c)
{
case 80:y+=STEP;q++;if(y==313){y=113 ;q=1;}break;
case 72: y-=STEP;q--;if(y==13){y=213;q=2;}break;
case 13: if(q==2)goto popa;if(q==1){demo();
goto poch; }
}
} while(c!=27);
popa:
free(saucer);
closegraph();
}
void Pidgotovka(void )
{
draw(0,-2);
size=imagesize(236,86,493,135);
saucer=malloc(size);
getimage(236,86,493,135,saucer);
putimage(236,86,saucer,XOR_PUT);
}
void Pidgotovka1(void )
{
draw1(0,-2);
size1=imagesize(143,113,210,160);
saucer1=malloc(size1);
getimage(143,113,210,160,saucer1);
putimage(143,113,saucer1,XOR_PUT);
}
Приклад
Запускаємо пограму і вибираємо пукт “демонстрація” і натискуємо ENTER і спостерігаємо як якоря притягує до осердя , контактна група 4,5 розмикається (розмикаючий контакт) , а контактна група 2,3 замикається(замикаючий контакт) рис. 1 . Потім спостерігаємо як здійснюється навпаки рис. 2. Після натиснення будь-якої клавіши бачимо опис схеми рис.3 .
Рис.1 Рис.2
Рис.3
Висновок
Завдяки цій курсовій роботі я закріпив здобуті теоретичні знання з курсу “Програмування та алгоритмічні мови”,навчився застосувати їх при вирішенні питань виробничого характеру. Склав програму, яка демонструє роботу електромагнітного реле постійного струму .
Література
1. Головко Д.Б. і ін. Автоматика і автоматизація технологічних процесів, К.,
“Либідь”, 1997 р., 230 с.
2.Крис Паппас, Уїльям Мюррей, Програмирование на С и С++,
“Ирина”