- •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. Автопилот.
- •Содержание.
18. Файл moddv1.H. Электронная схема lvd-1.
[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: MODDV1.h with BLACK CASE.
[12] DEVICE LVD_1
[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] /*============================= Global Variable */
[29] unsigned int Lvd1_Or1,Lvd1_And1,Lvd1_Or2; /* Device Range 1 */
[30] unsigned int Lvd1_And2,Lvd1_Or3,Lvd1_And3; /* Device Range 2 */
[31] unsigned int Lvd1_Z0,Lvd1_Z1,Lvd1_Z2; /* EXIT */
[32] /*============================= Declarations */
[33] int Dev1_pct(int kx,int ky); /* Picture */
[34] int Dev1_log(int kx,int ky); /* Logic */
[35] int Dev1_bc(); /*Black Case */
[36] /*######################################### SUB_PROGRAMMS */
[37] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
[38] int Dev1_pct(int kx,int ky) /* Picture */
[39] {
[40] clearviewport();
[41] /*---- Wires */
[42] setlinestyle(SOLID_LINE,0,NORM_WIDTH);
[43] setbkcolor(BLACK);
[44] setcolor(LIGHTGRAY);
[45] setfillstyle(SOLID_FILL,LIGHTGRAY);
[46] /* C2 */
[47] line(6*kx,5*ky,3*kx,5*ky);
[48] fillellipse(3*kx,5*ky,2,1);
[49] line(3*kx,5*ky,3*kx,25*ky);
[50] /* C1 */
[51] line(6*kx,9*ky,4*kx,9*ky);
[52] fillellipse(4*kx,9*ky,2,1);
[53] line(4*kx,9*ky,4*kx,25*ky);
[54] /* C0 */
[55] line(6*kx,13*ky,5*kx,13*ky);
[56] fillellipse(5*kx,13*ky,2,1);
[57] line(5*kx,13*ky,5*kx,25*ky);
[58] /* ~C0 */
[59] line(9*kx,5*ky,12*kx,5*ky);
[60] fillellipse(12*kx,5*ky,2,1);
[61] line(12*kx,5*ky,12*kx,25*ky);
[62] /* ~C1 */
[63] line(9*kx,9*ky,11*kx,9*ky);
[64] fillellipse(11*kx,9*ky,2,1);
[65] line(11*kx,9*ky,11*kx,25*ky);
[66] /* ~C2 */
[67] line(9*kx,13*ky,10*kx,13*ky);
[68] fillellipse(10*kx,13*ky,2,1);
[69] line(10*kx,13*ky,10*kx,25*ky);
[70] /*---- To Or 1 */
[71] line(12*kx,15*ky,17*kx,15*ky);
[72] fillellipse(12*kx,15*ky,2,1);
[73] line(11*kx,16*ky,17*kx,16*ky);
[74] fillellipse(11*kx,16*ky,2,1);
[75] /*---- To And 1 */
[76] line(10*kx,19*ky,17*kx,19*ky);
[77] fillellipse(10*kx,19*ky,2,1);
[78] line(5*kx,20*ky,17*kx,20*ky);
[79] fillellipse(5*kx,20*ky,2,1);
[80] /*---- To Or 2 */
[81] line(4*kx,23*ky,17*kx,23*ky);
[82] fillellipse(4*kx,23*ky,2,1);
[83] line(3*kx,24*ky,17*kx,24*ky);
[84] fillellipse(3*kx,24*ky,2,1);
[85] /*---- Level 2 */
[86] line(21*kx,11*ky,21*kx,25*ky);
[87] fillellipse(21*kx,11*ky,2,1);
[88] line(21*kx,11*ky,35*kx,11*ky);
[89]
[90] line(22*kx,12*ky,22*kx,25*ky);
[91] fillellipse(22*kx,12*ky,2,1);
[92] line(22*kx,12*ky,35*kx,12*ky);
[93]
[94] line(23*kx,13*ky,23*kx,25*ky);
[95] fillellipse(23*kx,13*ky,2,1);
[96] line(23*kx,13*ky,35*kx,13*ky);
[97] /*---- To Level 2 */
[98] line(20*kx,15*ky,23*kx,15*ky);
[99] fillellipse(23*kx,15*ky,2,1);
[100]
[101] line(20*kx,19*ky,22*kx,19*ky);
[102] fillellipse(22*kx,19*ky,2,1);
[103]
[104] line(20*kx,23*ky,21*kx,23*ky);
[105] fillellipse(21*kx,23*ky,2,1);
[106] /*---- To And 2 */
[107] line(25*kx,13*ky,25*kx,14*ky);
[108] fillellipse(25*kx,13*ky,2,1);
[109]
[110] line(26*kx,12*ky,26*kx,14*ky);
[111] fillellipse(26*kx,12*ky,2,1);
[112] /*---- To Or 3 */
[113] line(29*kx,12*ky,29*kx,14*ky);
[114] fillellipse(29*kx,12*ky,2,1);
[115] line(30*kx,11*ky,30*kx,14*ky);
[116] fillellipse(30*kx,11*ky,2,1);
[117] /*---- To And 3 */
[118] line(33*kx,11*ky,33*kx,14*ky);
[119] fillellipse(33*kx,11*ky,2,1);
[120] line(34*kx,13*ky,34*kx,14*ky);
[121] fillellipse(34*kx,13*ky,2,1);
[122] /*---- Z */
[123] line(26*kx,17*ky,26*kx,18*ky);
[124] line(30*kx,17*ky,30*kx,18*ky);
[125] line(34*kx,17*ky,34*kx,18*ky);
[126] /*---- Titles */
[127] setcolor(WHITE);
[128] settextstyle(SMALL_FONT,HORIZ_DIR,5);
[129] settextjustify(RIGHT_TEXT,TOP_TEXT);
[130] outtextxy(36*kx,1*ky,"D E V I C E L V D - 1");
[131] settextstyle(SMALL_FONT,VERT_DIR,5);
[132] outtextxy(1*kx,1*ky,"C O M M A N D B U S");
[133] /*---- Formula */
[134] setcolor(CYAN);
[135] settextstyle(SMALL_FONT,HORIZ_DIR,5);
[136] settextjustify(RIGHT_TEXT,CENTER_TEXT);
[137] outtextxy(36*kx,5*ky,"Z0=(~C2+~C1)*( C1+ C2)");
[138] outtextxy(36*kx,7*ky,"Z1=(C1+ C2)+(~C0* C0)");
[139] outtextxy(36*kx,9*ky,"Z2=(~C0* C0)*(~C2+~C1)");
[140] /*---- NE */
[141] E("~",2,6,3,3,3,kx,ky);
[142] E("~",1,6,7,3,3,kx,ky);
[143] E("~",0,6,11,3,3,kx,ky);
[144] /*---- COMMUTATOR */
[145] B("C",1,13,14,3,11,kx,ky);
[146] /*---- ELEMENTS */
[147] E("|",1,17,14,3,3,kx,ky);
[148] E("&",1,17,18,3,3,kx,ky);
[149] E("|",2,17,22,3,3,kx,ky);
[150] /*----*/
[151] E("&",2,24,14,3,3,kx,ky);
[152] E("|",3,28,14,3,3,kx,ky);
[153] E("&",3,32,14,3,3,kx,ky);
[154] /*---- Entry, Exit */
[155] settextstyle(SMALL_FONT,HORIZ_DIR,4);
[156] settextjustify(CENTER_TEXT,CENTER_TEXT);
[157] setcolor(LIGHTGREEN);
[158] outtextxy( 3*kx,28*ky,"2");
[159] outtextxy( 4*kx,28*ky,"1");
[160] outtextxy( 5*kx,28*ky,"0");
[161] outtextxy( 4*kx,30*ky,"ENTRY");
[162] setcolor(YELLOW);
[163] outtextxy(30*kx,23*ky,"EXIT");
[164] outtextxy(26*kx,21*ky,"Z2");
[165] outtextxy(30*kx,21*ky,"Z1");
[166] outtextxy(34*kx,21*ky,"Z0");
[167] /*---- Entry Invert. */
[168] setcolor(WHITE);
[169] outtextxy(10*kx,28*ky,"0");
[170] outtextxy(11*kx,28*ky,"1");
[171] outtextxy(12*kx,28*ky,"2");
[172] outtextxy(11*kx,30*ky,"INVER");
[173] /*----*/
[174] return 0;
[175] }
[176] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
[177] int Dev1_log(int kx,int ky) /* Logic */
[178] {
[179] /*---- Entry */
[180] Bit(3*kx,26*ky,C2); /* bit C2 */
[181] Bit(4*kx,26*ky,C1); /* bit C1 */
[182] Bit(5*kx,26*ky,C0); /* bit C0 */
[183] /*---- Devices Inventor 1-3 */
[184] Bit(10*kx,26*ky,CI0); /* bit CI0 */
[185] Bit(11*kx,26*ky,CI1); /* bit CI1 */
[186] Bit(12*kx,26*ky,CI2); /* bit CI2 */
[187] /*---- Devices Range 1 */
[188] Lvd1_Or1 =CI2 | CI1; /* bit 0 */
[189] Lvd1_And1=CI0 & C0; /* bit 1 */
[190] Lvd1_Or2 =C1 | C2; /* bit 2 */
[191] Bit(23*kx,26*ky,Lvd1_Or1); /* Or 1 */
[192] Bit(22*kx,26*ky,Lvd1_And1); /* And 1 */
[193] Bit(21*kx,26*ky,Lvd1_Or2); /* Or 2 */
[194] /*---- Devices Range 2 */
[195] Lvd1_And2=Lvd1_And1 & Lvd1_Or1; /* bit 2 */
[196] Lvd1_Or3=Lvd1_Or2 | Lvd1_And1; /* bit 1 */
[197] Lvd1_And3=Lvd1_Or1 & Lvd1_Or2; /* bit 0 */
[198] Bit(26*kx,19*ky,Lvd1_And2); /* And 2 */
[199] Bit(30*kx,19*ky,Lvd1_Or3); /* Or 3 */
[200] Bit(34*kx,19*ky,Lvd1_And3); /* And 3 */
[201] /*---- Exits */
[202] Lvd1_Z2=Lvd1_And2;
[203] Lvd1_Z1=Lvd1_Or3;
[204] Lvd1_Z0=Lvd1_And3;
[205] /*----*/
[206] return 0;
[207] }
[208] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
[209] int Dev1_bc() /*Black Case */
[210] {
[211] /*---- Variables */
[212] /*----*/
[213] if(Flag_ini==NOT_INI)
[214] {/*--------------------Beguin block NOT_INI */
[215] /*---- Openfile BLACK CASE */
[216] if((FpBC_1=fopen("BLACKcs1","w"))==NULL)
[217] {
[218] ALERT_SIGNAL;
[219] perror("Filure openfile BLACKcs1 "); STOP;
[220] exit(EXIT_FAILURE);
[221] }
[222] /*---- Date, File entry, File exit */
[223] Get_date_pc_counted();
[224] fprintf(FpBC_1,"%s\n",Str_date_pc_counted);
[225] fprintf(FpBC_1,"File entry: %s\n",Fname_entry);
[226] fprintf(FpBC_1,"File exit: BLACKcs1\n");
[227] /*---- Regime */
[228] if(Regime_work[0]=='0')
[229] fprintf(FpBC_1,
[230] "REGIME: 0.\nEXIT\n");
[231] if(Regime_work[0]=='1')
[232] fprintf(FpBC_1,
[233] "EGIME: 1.\nHand Command\n");
[234] if(Regime_work[0]=='2')
[235] fprintf(FpBC_1,
[236] "REGIME: 2.\nHand Time - Hand Command\n");
[237] if(Regime_work[0]=='3')
[238] fprintf(FpBC_1,
[239] "REGIME: 3.\nCommands file. \n Hand Interval const.\n");
[240] if(Regime_work[0]=='4')
[241] fprintf(FpBC_1,
[242] "REGIME: 4.\nCommands file with Intervals variable.\n");
[243] if(Regime_work[0]=='5')
[244] fprintf(FpBC_1,
[245] "REGIME: 5.\nCommands file with Times.\n");
[246] if(Regime_work[0]=='6')
[247] fprintf(FpBC_1,
[248] "REGIME: 6.\nStep by step.\n");
[249] /**/
[250] fprintf(FpBC_1,
[251] "###############################################\n");
[252] }/*--------------------End block NOT_INI */
[253] /*==============================*/
[254] if(Flag_ini==YES_INI)
[255] {/*--------------------Beguin block YES_INI */
[256] /*---- Counter com.,H,M,S, ADDRESS, COMMAND */
[257] fprintf(FpBC_1,
[258] "- COUNTER - Hour - Min - Sec - Address - Commands -\n");
[259] fprintf(FpBC_1,
[260] "Counter_commands---,H,M,S\n");
[261] fprintf(FpBC_1,
[262] "%ld---%1d:%1d:%1d\n",
[263] Counter_commands,H,M,S);
[264] /**/
[265] fprintf(FpBC_1,
[266] "A2,A1,A0---,C2,C1,C0\n");
[267] fprintf(FpBC_1,
[268] "%1d%1d%1d---%1d%1d%1d\n",
[269] A2,A1,A0,C2,C1,C0);
[270] /**/
[271] fprintf(FpBC_1,
[272] "AI2,AI1,AI0---,CI2,CI1,CI0\n");
[273] fprintf(FpBC_1,
[274] "%1d%1d%1d---%1d%1d%1d\n",
[275] AI2,AI1,AI0,CI2,CI1,CI0);
[276] /**/
[277] fprintf(FpBC_1,
[278] "************ BINARY LOGIC of DEVICE ************\n");
[279] fprintf
[280] (FpBC_1,
[281] "Lvd1_Or2,Lvd1_And1,Lvd1_Or1 --------Range 1\n");
[282] fprintf(FpBC_1,
[283] "%1d%1d%1d\n",
[284] Lvd1_Or2,Lvd1_And1,Lvd1_Or1);
[285] /**/
[286] fprintf
[287] (FpBC_1,
[288] "Lvd1_And2(Lvd1_Z2),Lvd1_Or3(Lvd1_Z1),Lvd1_And3(Lvd1_Z0) -------- Range 2\n");[289]
[290] fprintf(FpBC_1,
[291] "%1d%1d%1d\n",
[292] Lvd1_And2,Lvd1_Or3,Lvd1_And3);
[293] /**/
[294] fprintf(FpBC_1,
[295] "###############################################\n");
[296] }/*--------------------End block YES_INI */
[297] /*----*/
[298] return 0;
[299] }
[300] /*########################################################*/
* * *