- •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. Автопилот.
- •Содержание.
5. Режимы работы системы автоматического управления.
Исходный текст (образец) программы SCONT обеспечивает следующие режимы работы:
-
REGIME 0. Exit. Выход из программы.
-
REGIME 1. Hand Command – Hand Delay. Адрес, команда и интервал времени задержки выполнения команды набирается на клавиатуре.
-
REGIME 2. Hand Time - Hand Command. Адрес, команда и время выполнения команды набирается на клавиатуре.
-
REGIME 3. Commands file - Hand Interval constant. Адреса и команды записаны в файл, постоянный интервал времени между командами набирается на клавиатуре.
-
REGIME 4. Commands file with Intervals variable. Адреса, команды и переменные интервалы времени между командами записаны в файл.
-
REGIME 5. Commands file with Times. Адреса, команды и время выполнения команд записаны в файл.
-
REGIME: 6. Step by step. Пошаговое выполнение команд, записанных в файл.
Выбор режимов работы осуществляется с клавиатуры с помощью подпрограммы Choice_regime_work (номер начальной строки [851], номер строки вызова [170]). Настройка и коммутация режимов запрограммирована в строках [171-201].
* * *
6. Отображение параметров процесса управления.
Модули (подпрограммы) программы SCONT.c обеспечивают в реальном времени отображение на дисплее следующих параметров процесса управления:
-
File_inp - имени входного командного файла,
-
File_out - имени выходного контрольного файла,
-
Regime - номера режима работы,
-
Com_num - количества команд в командном файле,
-
Com_cnt - номера выполняемой команды,
-
Mes_exec - кода адреса выполняемой команды, кода выполняемой команды и комментариев к этим кодам.
-
Add_ord - кода адреса следующей (заказанной) команды,
-
Com_ord - кода следующей (заказанной) команды,
-
Int_ord - временного интервала между выполняемой и следующей командой,
-
Int_cnt - времени, оставшегося до начала выполнения следующей команды, (обратного счета времени)
-
Time_pc - времени начала выполнения текущей команды,
-
Time_ord - времени начала выполнения следующей команды,
-
Error_sys - кода ошибки.
-
Reserve – оставшегося места для вывода на экран дополнительной информации.
* * *
7. Перечень и назначение подпрограмм системы автоматического управления.
Исходный текст (образец) программы SCONT.C написан на языке программирования Си по модульному принципу и состоит из подпрограмм, указанных в ниже следующих таблицах.
Формат записи в строках таблиц:
[строка декларации] назначение [строка начала определения] тип имя.
COMMON SUBROUTINE.
ПОДПРОГРАММЫ ОБЩЕГО НАЗНАЧЕНИЯ.
FILE SCONT.C.
[73] Графический режим [462] int Graph_regime (); |
[74] Текстовый режим [492] int Text_regime(); |
[75 Титульный лист [501] int Title_sheet(); |
[76] Начало работы САУ [626] int Start_program(int dx,int dy); |
[77] Завершение работы САУ [645] int End_program(); |
ADDRESS BUS SUBROUTINES.
ПОДПРОГРАММЫ АДРЕСНОЙ ШИНЫ.
FILE SCONT.C.
[79] Трех битовая адресная магистраль [653] int Addbus3bit(int kx,int ky); |
[80] Логика работы трех битовой адресной магистрали [818] int Logic_addbus3bit(int kx,int ky); |
INPUT SUBROUTINES.
ПОДПРОГРАММЫ ВВОДА ДАННЫХ В СИСТЕМУ.
FILE SCONT.C.
[82] Выбор режима работы САУ [851] int Choice_regime_work(); |
[83] Открытие входного файла [893] int Openfile_entry(); |
[84] Открытие выходного файла [907] int Openfile_exit() |
[85] Ввод кода адреса, кода команды и интервала времени задержки выполнения команды в режиме 1 [928] int Hand_order_var1(); |
[86] Ввод кода адреса, кода команды и времени выполнения в режиме 2 [1012] int Hand_order_var2(); |
[87]Ввод интервала времени между командами в режиме 3 [1133] int Hand_order_var3(); |
[88] Ввод имени файла, содержащего коды адресов и команд в режиме 3 [1146] int File_order_var3(); |
[89] Ввод имени файла, содержащего коды адресов, команд и интервалы времени в режиме 4 [1169] int File_order_var4(); |
[90] Ввод имени файла, содержащего коды адресов, команд и время выполнения команд в режиме 5 [1196] int File_order_var5(); |
[91] Получение времени персонального компьютера [1221] int Get_time_pc_counted(); |
[92 Получение даты персонального компьютера [1233] int Get_date_pc_counted(); |
[93] Получение количества команд во входном командном файле [1246] int Get_number_commands(); |
STRING SUBROUTINES.
ПОДПРОГРАММЫ ФОРМИРОВАНИЯ СТРОК.
FILE SCONT.C.
[95] Формирование строки, содержащей интервал между командами в H, M, S [1263] int String_int_ordered(); |
[96] Формирование строки, содержащей время, оставшееся до выдачи следующей команды (строка обратного счета времени) в H, M, S [1284] int String_int_counted(); |
[97] Формирование строки, содержащей время выдачи следующей команды в H, M, S [1309] int String_time_pc_ordered(); |
[98] Формирование строки, содержащей время персонального компьютера в H, M, S [1329] int String_time_pc_counted(); |
OUTPUT SUBROUTINES.
ПОДПРОГРАММЫ ВЫВОДА ДАННЫХ ИЗ СИСТЕМЫ.
FILE SCONT.C.
[101] Инициализация (отображение и запоминание координат) окон правого столбца [1365] int Wind_right_ini(); |
[102] Вывод имени входного файла [1385] int File_inp(); |
[103 Вывод имени выходного файла [1465] int File_out(); |
[104] Вывод номера режима работы [1446] int Regime(); |
[105] Вывод количества команд в командном файле [1476] int Com_num(); |
[106] Вывод номера выполняемой команды [1508] int Com_cnt(); |
[107] Вывод десятичного кода адреса следующей (заказанной) команды [1540] int Add_ord(); |
[108] Вывод десятичного кода следующей (заказанной) команды [1572] int Com_ord(); |
[109] Вывод временного интервала между выполняемой и следующей командой [1604] int Int_ord(); |
[110] Вывод времени, оставшегося до выполнения следующей команды (обратный счет времени) [1636] int Int_cnt(); |
[111] Вывод времени выполнения следующей (заказанной) команды [1668] int Time_ord(); |
[112]Вывод времени персонального компьютера [1700] int Time_pc(); |
[113] Вывод кода ошибки [1732] int Error_sys(); |
[114] Вывод информации об оставшемся на экране месте [1763] int Reserve(); |
[116] Инициализация (отображение и запоминание координат) окон левого столбца [1810] int Wind_left_ini(); |
[117] Вывод имени САУ [1821] int Title_sys(); |
[118] Окно адресной магистрали [1859] int Address_bus(); |
[119] Окно для вывода кода адреса, кода команды и комментариев выполняемой команды [1896] int Mes_exec(); |
[120] Окно командной магистрали и устройств [1935] int Device_bus(); |
SUBROUTINES FOR CREATION OF WINDOWS.
ПОДПРОГРАММЫ СОЗДАНИЯ ОКОН.
FILE SCONT.C.
[123]Окно для вывода заголовков [2032] int Wind_0(int col_rect,int *lx,int *ly,int *rx,int *ry); |
[133]Окно однострочное (наименование и данные занимают одну строку) [2068] int Wind_1(char *title,int col_rect,int bk_txt,int col_txt,int *lx,int *ly,int *rx,int *ry); |
[141] Окно двустрочное (наименование и данные занимают две строки) [2114] int Wind_2(char *title,int col_rect,int bk_txt,int col_txt,int *lx,int *ly,int *rx,int *ry); |
[149] Окно для вывода схем и рисунков [2158] int Wind_D(float compression_y,int col, int row,int col_rect,int *kx,int *ky,int *lx,int *ly,int *rx,int *ry); |
SUBROUTINE FOR DISPLAY OF THE LOGIC.
ПОДПРОГРАММА ОТОБРАЖЕНИЯ ЛОГИЧЕСКИХ ПЕРЕМЕННЫХ 1,0.
FILE SCONT.C.
[157] Отображение логических переменных на заданных координатах [2195] int Bit(int x,int y,unsigned char bit); |
SUBROUTINES FOR CREATION OF PRIMITIVES GRAPHIC.
ПОДПРОГРАММЫ СОЗДАНИЯ ГРАФИЧЕСКИХ ПРИМИТИВОВ.
FILE SYS_PRIM.h.
[17] Отображение логического элемента схемы [34] int E(char *t,int n,int lx,int ly,int dx,int dy,int kx,int ky); |
[19]Отображение блока логических элементов схемы [58] int B(char *t,int n,int lx,int ly,int dx,int dy,int kx,int ky); |
[22]Прямоугольник с толщиной линий в N пикселей [83] int RectangleN(int left_x,int left_y,int right_x,int right_y,int n); |
[24] Прямоугольник с периметром из двух линий [98] int Rectangle2(int left_x,int left_y,int right_x,int right_y)ёё; |
[26] Эллипс с толщиной линий в N пикселей [109].int EllipseN(int x, int y,int stangle,int endangle,int x_radius,int y_radius,int n); |
[29] Эллипс с периметром из двух линий [125] int Ellipse2(int x, int y,int stangle,int endangle,int x_radius,int y_radius); |
SUBROUTINES OF VIRTUAL SYSTEM DEVISES.
ПОДПРОГРАММЫ ВИРТУАЛЬНЫХ ПРОГРАММНЫХ ЗАГЛУШЕК.
FILES SYSDV0.h – SYSDV7.h
Виртуальные программные заглушки представляют собой файлы, предназначенные для имитации подпрограмм подключения МО к адресной и командной магистралям САУ. Имена файлов содержат цифровой индекс, соответствущий адресу МО в системе. В каждом файле имеются три подпрограммы:
-
int Dev№_pct(int kx,int ky); Имитатор подпрограммы отображения схемы (рисунка, анимации) МО
-
int Dev№_log(int kx,int ky); Имитатор подпрограммы логики МО.
-
int Dev№_bc(); Имитатор подпрограммы регистрации работы МО (черный ящик).
Где № - цифровой индекс, соответствущий адресу МО в системе.
Для всех адресов подпрограммы одинаковы.
[20] Имитатор подпрограммы отображения МО [25] int Dev№_pct(int kx,int ky); /* Picture */ |
[21] Имитатор подпрограммы логики МО [40] int Dev№_log(int kx,int ky); /* Logic */ |
[22] Имитатор подпрограммы регистрации работы (черный ящик) МО. [54] int Dev№_bc(); /* Black Case */ |
MUSIC SUBROUTINE.
МУЗЫКАЛЬНЫЕ ПОДПРОГРАММЫ.
FILE SYS_MUS.h.
[46]Нота определенной частоты и длительности [52] void n(float f,float l); |
[47]Соната № 17 Бетховена (1) [59] void sonata17(float W); |
[48]Соната № 17 Бетховена (2) [83] void sonata17r(float W); |
[49]Элизе Бетховена [93] void elise(float W); |
SUBROUTINE OF DEVICE MUSIC_CENTER.
ПОДПРОГРАММЫ УСТРОЙСТВА МУЗЫКАЛЬНЫЙ ЦЕНТР.
FILE MODDV0.
[29] Подпрограмма отображения рисунка заставки МО [34] int Dev0_pct(int kx,int ky); /* Picture */ |
[30] Подпрогамма логики МО [131] int Dev0_log(int kx,int ky); /* Logic */ |
[31] Подпрограмма регистрации работы (черный ящик) МО [145] int Dev0_bc(); /* Black Case */ |
SUBROUTINE OF DEVICE .LVD-1.
ПОДПРОГРАММЫ УСТРОЙСТВА LVD-1.
FILE MODDV1.
[33] Подпрограмма отображения схемы МО [38] int Dev1_pct(int kx,int ky); /* Picture */ |
[34] Подпрогамма логики МО [177] int Dev1_log(int kx,int ky); /* Logic */ |
[35] Подпрограмма регистрации работы (черный ящик) МО [209] int Dev1_bc(); /*Black Case */ |
SUBROUTINE OF DEVICE .LVD-2.
ПОДПРОГРАММЫ УСТРОЙСТВА LVD-2.
FILE MODDV2.
[34] Подпрограмма отображения схемы МО [39] int Dev2_pct(int kx,int ky); /* Picture */ |
[35] Подпрогамма логики МО [183] int Dev2_log(int kx,int ky); /* Logic */ |
[36] Подпрограмма регистрации работы (черный ящик) МО [219] int Dev2_bc(); /*Black Case */ |
SUBROUTINE OF DEVICE .AUTOPILOT.
ПОДПРОГРАММЫ УСТРОЙСТВА АВТОПИЛОТ.
FILE MODDV3.
[29] Подпрограмма отображения анимации МО [34] int Dev3_pct(int kx,int ky); /* Picture */ |
[30] Подпрогамма логики МО [158] int Dev3_log(int kx,int ky); /* Logic */ |
[31] Подпрограмма регистрации работы (черный ящик) МО [172] int Dev3_bc(); /*Black Case */ |
* * *