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