3. Средства моделирования.
В качестве программатора при моделировании используется IBM PC. В качестве пульта программатора применяется клавиатура ЭВМ, в качестве дисплея программатора - дисплей ЭВМ; программное обеспечение должно поддерживать как основные режимы работы программатора, так и обеспечивать необходимые функции по управлению ходом моделирования.
Полагая, что программатор строго ориентирован для указанной выше предметной области, выделим на клавиатуре следующие клавиши, как принадлежащие клавиатуре программатора:
-
цифровые клавиши (от 0 до 9) - для ввода численных значений
данных, запрашиваемых с клавиатуры программатора;
-
клавиша <ВК> или <Enter> - признак конца ввода;
-
клавиша <A> - переход на автоматический режим
-
клавиша <P> - переход на ручной режим;
-
клавиша <Н> - переход к настройке;
-
клавиша <П> - пуск программы;
-
клавиша <С> - “СТОП” - останов программы;
-
клавиша <Ш> - очередной шаг по программе в
ручном режиме и после останова
-
клавиша <К> - конец работы.
Экран ЭВМ разделим на условные поля отображения, представленные на рис.3.
МОДЕЛИРОВАНИЕ РАБОТЫ ПРОГРАММАТОРА
РЕЖИМ: (ручной) (стоп) МОДЕЛЬ СТРОГАНИЯ
НАСТРОЙКИ:
XMAX(от 3 до 20)= ? XX
YMAX(от 1 до 4) = X ЖЖЖЖЖЖЖЖЖЖЖЖЖ
ZMAX(от 1 до 2) = Х ЖЖЖЖЖЖЖЖЖЖЖЖЖ
TZAD(от 1 до 30000)=ХХХХХ ЖЖЖЖЖЖЖЖЖЖЖЖЖ
ЖЖЖЖЖЖЖЖЖЖЖЖЖ
ЖЖЖЖЖЖЖЖЖЖЖЖЖ
Xтек = ЖЖЖЖЖЖЖЖЖЖЖЖЖ
Yтек = ЖЖЖЖЖЖЖЖЖЖЖЖЖ
Zтек = ЖЖЖЖЖЖЖЖЖЖЖЖЖ
ЖЖЖЖЖЖЖЖЖЖЖЖЖ
Управляющие клавиши: <A>-автоформат, <Р>-ручной, <Н>-настройка
<П>-пуск, <Ш>-шаг, <С>- стоп,
<К>-конец работы
Рис.3. Распределение полей экрана при моделировании работы
программатора.
С учетом реальной очередности подач, используемых при строгании (подача вдоль Z, переход на очередную дорожку вдоль оси Y, строгание дорожки вдоль оси Х), укрепленная блок-схема центральной части программы в программаторе - обработка задания - естественным образом собирается в тройной цикл (рис.4.):
Очевидно, циклы по Z и Х рационально организуются (с учетом целочисленности моделирования) с помощью конструкции FOR..TO, а цикл Y - с помощью конструкции WHILE, либо двух ветвей с операторами FOR..TO или FOR..DOWNTO.
Задержка на заданную величину TZAD, очевидно также реализуется дополнительным циклом, причем здесь рационально проводить опрос клавиатуры с целью приема и обработки управляющих воздействий.
Организовать цикл по Z
Организовать цикл по Y (с учетом четности подачи Z)
от 1 до YMAX (или от YMAX до 1)
Организовать цикл по Х
Выдача управляющего кода на объект
Задержка на TZAD (с контролем и обработкой
управляющих символов)
Конец цикла по Х ? Нет
Да
Конец цикла по Y ?
Нет
Да
Конец цикла по Z ?
Нет
Да
Выход
Рис.4. Блок-схема обработки задания в программаторе.
Процедура выдачи управляющего кода на объект в данном случае (когда моделирование всего процесса идет в одной ЭВМ и все переменные могут быть доступны любой части программы) может использоваться в целях фактического вызова процедуры моделирования отработки заданных кодов строгальным станком.
Моделирование строгания сводится к стиранию изображения ножа в старой позиции (с восстановлением открывающегося вида обработанной поверхности на месте исчезнувшего ножа) и прорисовкой изображения ножа во вновь заданной позиции. Здесь, очевидно, должна работать процедура прямой адресации маркера, процедуры стирания ножа в заданной позиции (в двух проекциях), а также должны осуществляться проверки на границы контура заготовки. Украшением этой процедуры может стать изображение отлетающей стружки с элементами случайности, формулируемой, например, с задействованием таймера.
Остается позаботиться о приеме и отработке управляющих сигналов с клавиатуры. Здесь возникают следующие проблемы:
-
проводить опрос клавиатуры необходимо достаточно часто, но в моменты, удобные программе (чтобы избежать необходимости диспетчерования процессов);
-
погасить отображение символа на экране;
-
идентифицировать нажатую клавишу и запустить соответствующую подпрограмму с учетом логических проверок, специфичных для каждого режима.
Логика процедуры приема и отработки управляющих символов должна учитывать возможность появления сдвоенных кодов при нажатии некоторых клавиш. Эта процедура в общей программе должна использоваться дважды; вначале для получения настроек и пуска программы; затем - для получения указаний об изменении режима продолжения работы.
При запуске программы на экране должна отображаться картинка, представленная на рис.3. После этого программа должна реагировать на переключение режима “Автомат”/”Ручной” и “Настройка”, а также на “Конец работы”. После введения настроек допустимыми являются команды “Пуск”, “Стоп”; переход в пошаговый режим исполнения по команде “Шаг” должен быть доступен в любой момент времени. По окончании выполнения задания должно выводиться соответствующее сообщение. Программа должна быть готова к повторному выполнению того же задания.
ЛАБОРАТОРНОЕ ЗАДАНИЕ
-
Заранее изучить данное описание.
-
Каждая бригада (2-3 человека) разрабатывает в качестве предварительного домашнего задания исходные тексты следующих модулей и текстов для них:
БРИГАДА 1:
RAMKA (X,Y,DX,DY: INTEGER; S:CHAR);{прорисовка контура рамки символом S}
POLE (X,Y,DX,DY: INTEGER; S:CHAR);{засев поля символом S}
UPR_CODE; {прием и отработка управляющих кодов “А”,”Р”,“Н”}
БРИГАДА 2:
MODEL; {прорисовка заготовки в исходном состоянии}
ZADANIE; {отработка задания по текущим координатам XTEK, YTEK,ZTEK}
БРИГАДА 3 (здесь - старший по группе):
UPR_COD1; {прием и отработка управляющих кодов “П”,”С”,“Ш”,”К”}
LOGIKA; {общая структура работы программатора}
-
В лаборатории каждая бригада набирает свой исходный текст, транслирует его, устраняет синтаксические ошибки и проверяет работу модуля на заранее разработанных тестах.
-
Все бригады получают от соседей другие модули (без тестов для отладки), собирают всю программу целиком, транслируют и отлаживают ее.
-
Результат (действующая программа) предъявляется преподавателю вместе с листингом исходных текстов.