- •1. Предисловие.
- •2. Основные сведения, необходимые для создания программ на языке си.
- •3. Основные правила при работе с программами, написанными на языке cи.
- •4. Программная имитация системы автоматического управления.
- •5. Режимы работы системы автоматического управления.
- •6. Отображение параметров процесса управления.
- •7. Перечень и назначение подпрограмм системы автоматического управления.
- •8. Порядок разработки системы автоматического управления на основе образца.
- •9. Файлы входные режимов работы nn 3, 4, 5, 6.
- •Файл blackcs1.C. Регистрация процесса управления мо lvd-1.
- •Файл blackcs2.C. Регистрация процесса управления мо lvd-2.
- •Файл blackcs3.C. Регистрация процесса управления мо Автопилот.
- •11. Файл scont.C. Исходный текст программы scont.
- •12. Файл sys_cnst.H. Глобальные константы программы scont.C.
- •13. Файл sys_var.H. Глобальные переменные программы scont.C.
- •14. Файл sys_mus.H. Музыкальные подпрограммы программы scont.C.
- •15. Файл sys_prim.H. Графические примитивы программы scont.C.
- •16. Файл sys_dv0.H. Программная заглушка программы scont.C.
- •17. Файл moddv0.H. Музыкальный центр.
- •18. Файл moddv1.H. Электронная схема lvd-1.
- •19. Файл moddv2.H. Электронная схема lvd-2.
- •20. Файл moddv3.H. Автопилот.
- •Содержание.
20. Файл moddv3.H. Автопилот.
[1] /*########################################################*/
[2] /*
[3] Copyright (C) 2008 by A.E.Stefanovich tel. 236-2729, 268-3916
[4] Moscow State University of the Instrumentation and Informatics
[5] MGUPI
[6] Chair Information Maintenance of Systems Robototechnical and Mechatronic
[7] IS 5
[8] */
[9] /*########################################################*/
[10] /*
[11] File: MODDV3.h with BLACK CASE.
[12] AUTOPILOTE
[13] */
[14] /*################################################ LEGEND */
[15] /*
[16] ----------------
[17] Student: L.V. Doronina
[18] Group: IS 5-94-02 (d)
[19] Code: 94505
[20] ----------------
[21] Discipline: Programming (3403)
[22] Specialty: 2204.01
[23] Teacher: A.E. Stefanovich
[24] ---------------
[25] Year: 2008
[26] */
[27] /*########################################################*/
[28] /*============================= Declarations */
[29] int Dev3_pct(int kx,int ky); /* Picture */
[30] int Dev3_log(int kx,int ky); /* Logic */
[31] int Dev3_bc(); /*Black Case */
[32] /*###################################### SUB_PROGRAMMS */
[33] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
[34] int Dev3_pct(int kx,int ky) /* Picture */
[35] {
[36] int dx=kx*COL_DRAFT_DEV;
[37] int dy=ky*ROW_DRAFT_DEV;
[38] int x0=dx/2;
[39] int y0=dy/2;
[40] int a=7;
[41] int r=dy/2-30;
[42] int c_exe;
[43] /*---- Viewport */
[44] clearviewport();
[45] /****************************** Compas */
[46] /*---- NW-S0, NO-SW */
[47] setcolor(LIGHTCYAN);
[48] line(x0+(-r/1.41),y0+(r/1.41),x0+(r/1.41),y0+(-r/1.41));
[49] line(x0+(-r/1.41),y0+(-r/1.41),x0+(r/1.41),y0+(r/1.41));
[50] /*---- N, E, S, O */
[51] setcolor(WHITE);
[52] /*---- Nord */
[53] line((x0-a),(y0-a),(x0),(y0-r));
[54] line((x0+a),(y0-a),(x0),(y0-r));
[55] /*---- Est */
[56] line((x0+a),(y0-a),(x0+r),(y0));
[57] line((x0+a),(y0+a),(x0+r),(y0));
[58] /*---- Sud */
[59] line((x0+a),(y0+a),(x0),(y0+r));
[60] line((x0-a),(y0+a),(x0),(y0+r));
[61] /*---- West */
[62] line((x0-a),(y0+a),(x0-r),(y0));
[63] line((x0-a),(y0-a),(x0-r),(y0));
[64] /*---- Circle */
[65] setcolor(LIGHTBLUE);
[66] circle(x0,y0,r);
[67] /*---- Center circle */
[68] setcolor(WHITE);
[69] ellipse
[70] (dx/2,dy/2,0,360,6,6);
[71] setfillstyle(SOLID_FILL,YELLOW);
[72] floodfill(x0,y0,WHITE);
[73] /*----*/
[74] setfillstyle(SOLID_FILL,BLUE);
[75] floodfill(x0-10,y0,WHITE);
[76] /*---- N, O, S, W */
[77] settextstyle(SMALL_FONT,HORIZ_DIR,6);
[78] /* setusercharsize(3,2,3,1); */
[79] setcolor(WHITE);
[80] settextjustify(CENTER_TEXT,BOTTOM_TEXT);
[81] outtextxy(x0,y0-r-3," N ");
[82] settextjustify(LEFT_TEXT,CENTER_TEXT);
[83] outtextxy(x0+r-3,y0-3," O ");
[84] settextjustify(CENTER_TEXT,TOP_TEXT);
[85] outtextxy(x0,y0+r," S ");
[86] settextjustify(RIGHT_TEXT,CENTER_TEXT);
[87] outtextxy(x0-r+3,y0," W ");
[88] /*---- N0, NW, SO, SW */
[89] settextstyle(SMALL_FONT,HORIZ_DIR,4);
[90] /* setusercharsize(3,2,3,1); */
[91] setcolor(CYAN);
[92] settextjustify(RIGHT_TEXT,CENTER_TEXT);
[93] outtextxy(x0+(-r/1.41),y0+(-r/1.41)," NW ");
[94] settextjustify(LEFT_TEXT,CENTER_TEXT);
[95] outtextxy(x0+(r/1.41),y0+(-r/1.41)," NO ");
[96] settextjustify(RIGHT_TEXT,TOP_TEXT);
[97] outtextxy(x0+(-r/1.41),y0+(r/1.41)," SW ");
[98] settextjustify(LEFT_TEXT,CENTER_TEXT);
[99] outtextxy(x0+(r/1.41),y0+(r/1.41)," SO ");
[100] /****************************** Logic */
[101] c_exe=(C2*4+C1*2+C0*1);
[102] setcolor(YELLOW
[103] );
[104] setlinestyle(SOLID_LINE,0,THICK_WIDTH);
[105] r=r-10;
[106] /*---- Cours 0 */
[107] if(c_exe==0)
[108] {
[109] moveto(x0,y0);
[110] linerel(0,-r);
[111] }
[112] /*---- Cours 45 */
[113] if(c_exe==1)
[114] {
[115] moveto(x0,y0);
[116] linerel(r/1.41,-r/1.41);
[117] }
[118] /*---- Cours 90 */
[119] if(c_exe==2)
[120] {
[121] moveto(x0,y0);
[122] linerel(r,0);
[123] }
[124] /*---- Cours 135 */
[125] if(c_exe==3)
[126] {
[127] moveto(x0,y0);
[128] linerel(r/1.41,r/1.41);
[129] }
[130] /*---- Cours 180 */
[131] if(c_exe==4)
[132] {
[133] moveto(x0,y0);
[134] linerel(0,r);
[135] }
[136] /*---- Cours 225 */
[137] if(c_exe==5)
[138] {
[139] moveto(x0,y0);
[140] linerel(-r/1.41,r/1.41);
[141] }
[142] /*---- Cours 270 */
[143] if(c_exe==6)
[144] {
[145] moveto(x0,y0);
[146] linerel(-r,0);
[147] }
[148] /*---- Cours 315 */
[149] if(c_exe==7)
[150] {
[151] moveto(x0,y0);
[152] linerel(-r/1.41,-r/1.41);
[153] }
[154] /*----*/
[155] return 0;
[156] }
[157] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
[158] int Dev3_log(int kx,int ky) /* Logic */
[159] {
[160] int dx=kx*COL_DRAFT_DEV;
[161] int dy=ky*ROW_DRAFT_DEV;
[162] int x=dx/2,y=dy-5;
[163] /*---- Text */
[164] setcolor(RED);
[165] setbkcolor(BLACK);
[166] settextstyle(SMALL_FONT,HORIZ_DIR,5);
[167] settextjustify(CENTER_TEXT,CENTER_TEXT);
[168] outtextxy(x,y," Logic of Device_3 is not displaied ");
[169] return 0;
[170] }
[171] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
[172] int Dev3_bc() /*Black Case */
[173] {
[174] /*---- Variables */
[175] extern int Flag_ini;
[176] /*----*/
[177] if(Flag_ini==NOT_INI)
[178] {/*--------------------Beguin block NOT_INI */
[179] /*---- Openfile BLACK CASE */
[180] if((FpBC_3=fopen("BLACKcs3","w"))==NULL)
[181] {
[182] ALERT_SIGNAL;
[183] perror("Filure openfile BLACKcs3 "); STOP;
[184] exit(EXIT_FAILURE);
[185] }
[186] /*---- Date, File entry, File exit */
[187] Get_date_pc_counted();
[188] fprintf(FpBC_3,"%s\n",Str_date_pc_counted);
[189] fprintf(FpBC_3,"File entry: %s\n",Fname_entry);
[190] fprintf(FpBC_3,"File exit: BLACKcs3\n");
[191] /*---- Regime */
[192] if(Regime_work[0]=='0')
[193] fprintf(FpBC_3,
[194] "REGIME: 0.\nEXIT\n");
[195] if(Regime_work[0]=='1')
[196] fprintf(FpBC_3,
[197] "EGIME: 1.\nHand Command\n");
[198] if(Regime_work[0]=='2')
[199] fprintf(FpBC_3,
[200] "REGIME: 2.\nHand Time - Hand Command\n");
[201] if(Regime_work[0]=='3')
[202] fprintf(FpBC_3,
[203] "REGIME: 3.\nCommands file. \n Hand Interval const.\n");
[204] if(Regime_work[0]=='4')
[205] fprintf(FpBC_3,
[206] "REGIME: 4.\nCommands file with Intervals variable.\n");
[207] if(Regime_work[0]=='5')
[208] fprintf(FpBC_3,
[209] "REGIME: 5.\nCommands file with Times.\n");
[210] if(Regime_work[0]=='6')
[211] fprintf(FpBC_3,
[212] "REGIME: 6.\nStep by step.\n");
[213] fprintf(FpBC_3,
[214] "###############################################\n");
[215] }/*--------------------End block NOT_INI */
[216] /*==============================*/
[217] if(Flag_ini==YES_INI)
[218] {/*--------------------Beguin block YES_INI */
[219] /*---- Counter com.,H,M,S, ADDRESS, COMMAND */
[220] fprintf(FpBC_3,
[221] "- COUNTER - Hour - Min - Sec - Address - Commands -\n");
[222] fprintf(FpBC_3,
[223] "Counter_commands---,H,M,S\n");
[224] fprintf(FpBC_3,
[225] "%ld---%1d:%1d:%1d\n",
[226] Counter_commands,H,M,S);
[227] /**/
[228] fprintf(FpBC_3,
[229] "A2,A1,A0---,C2,C1,C0\n");
[230] fprintf(FpBC_3,
[231] "%1d%1d%1d---%1d%1d%1d\n",
[232] A2,A1,A0,C2,C1,C0);
[233] /**/
[234] fprintf(FpBC_3,
[235] "AI2,AI1,AI0---,CI2,CI1,CI0\n");
[236] fprintf(FpBC_3,
[237] "%1d%1d%1d---%1d%1d%1d\n",
[238] AI2,AI1,AI0,CI2,CI1,CI0);
[239] fprintf(FpBC_3,
[240] "###############################################\n");
[241] }/*--------------------End block YES_INI */
[242] /*----*/
[243] return 0;
[244] }
[245] /*########################################################*/
* * *
ПРИЛОЖЕНИЕ 1.
ТИТУЛЬНЫЙ ЛИСТ ПРОГРАММЫ.
ПРИЛОЖЕНИЕ 2.
ИНДИКАЦИЯ НАЧАЛА РАБОТЫ ПРОГРАММЫ.
ПРИМЕЧАНИЕ: Окно FILE.OUT в этом варианте не используется. Все результаты работы САУ записываются по принципу "черного ящика" в автоматически открывающиеся выходные файлы BLACKCS0.c – BLACKCS7.c.
ПРИЛОЖЕНИЕ 3.
ИНДИКАЦИЯ РАБОТЫ УСТРОЙСТВА LVD-1.
ПРИМЕЧАНИЕ: Окно FILE.OUT в этом варианте не используется. Все результаты работы САУ записываются по принципу "черного ящика" в автоматически открывающиеся выходные файлы BLACKCS0.c – BLACKCS7.c.
ПРИЛОЖЕНИЕ 4.
ИНДИКАЦИЯ РАБОТЫ УСТРОЙСТВА LVD-2.
ПРИМЕЧАНИЕ: Окно FILE.OUT в этом варианте не используется. Все результаты работы САУ записываются по принципу "черного ящика" в автоматически открывающиеся выходные файлы BLACKCS0.c – BLACKCS7.c.
ПРИЛОЖЕНИЕ 5.
ИНДИКАЦИЯ РАБОТЫ УСТРОЙСТВА МУЗЫКАЛЬНЫЙ ЦЕНТР.
ПРИМЕЧАНИЕ: Окно FILE.OUT в этом варианте не используется. Все результаты работы САУ записываются по принципу "черного ящика" в автоматически открывающиеся выходные файлы BLACKCS0.c – BLACKCS7.c.
ПРИЛОЖЕНИЕ 6.
ИНДИКАЦИЯ РАБОТЫ УСТРОЙСТВА АВТОПИЛОТ.
ПРИМЕЧАНИЕ: Окно FILE.OUT в этом варианте не используется. Все результаты работы САУ записываются по принципу "черного ящика" в автоматически открывающиеся выходные файлы BLACKCS0.c – BLACKCS7.c.
ЛИТЕРАТУРА.
-
Подбельский В.В., Фомин С.С. Программирование на языке Си - М: Финансы и статистика, 2000.
-
Керниган Б., Ритчи Д. Язык программирования Си / Пер. с англ. - М.: Финансы и статистика, 1992.
-
Болски М.И. Язык программирования Си / Пер. с англ. Справочник. - М.: Радио и связь, 1988.
-
Прата С. Язык Си / Пер. с англ. - М., С.Пб., Киев :Изд. Дом Вильямс, 2006.
-
Белецкий Я. Энциклопедия языка Си / Пер. с англ. - М.:Мир, 1992.
-
Джехани Н. Программирование на языке Си. / Пер. с англ. Справочник. - М.: Радио и связь, 1988.
-
Уинер Р. Язык Турбо Си / Пер. с англ. - М.:Мир, 1991.
-
Левкин Г.Н., Левкина В.Е. ДЕМО ТУРБО СИ - М: ПРОК, 1992.
-
Бошкин А.В., Дубнер П.Н. Работа в Турбо СИ – М: ЮКИС, 1991.
-
Б.П. Прокофьев, Н.Н. Сухарев, Ю.Е. Храмов Графические средства Турбо С и Турбо С++ - М: Финансы и статистика, 1992.
-
Шилдт Г. Полный справочник по С, 4-е издание/ Пер. с англ. – М, С-Пб, Киев: Издательский дом Вильямс, 2002.
-
Трой Д. Программирование на языке Си для персонального компьютера IBM PC/ Пер. с англ. – М: Радио и связь, 1991.
-
Касаткин А.И., Вальвачев А.Н. От Turbo C к Borland C++ Справочное пособие – Минск: Вышэйшая школа, 1992
-
Касаткин А.И. Управление ресурсами Справочное пособие – Минск: Вышэйшая школа, 1992.
-
Касаткин А.И. Системное программирование Справочное пособие – Минск: Вышэйшая школа, 1993.
-
Евтеев В.В., Махонько А.М., Юзбашьянц Основы информатики и вычислительной техники, Методические рекомендации – М: Государственная Академия Управления им. С. Орджоникидзе, Учебный центр довузовской подготовки АЗЪ, 1987.
-
Чернов Е.А. Проектирование станочной электроавтоматики – М: Машиностроение, 1989.
-
Березин Б.И., Березин С.Б. Начальный курс С и С++ - М: ДИАЛОГ-МИФИ, 2003.
-
Стефанович А.Е. Программный имитатор электронных схем (ПИЭС). Учебно-методическое пособие по дисциплине “Программирование и основы алгоритмизации” – М: МГАПИ, 2005.
-
Стефанович А.Е. Программный автоматизированный имитатор электронных схем (ПАИЭС). Учебно-методическое пособие по дисциплине “Программирование и основы алгоритмизации” – М: МГАПИ, 2005.