Предлагаемая программная документация описывает учебный пример использования SWITCH-технологии при разработке программ в среде "Flora/C+".
Разработанная программа реализует визуальную модель технологического процесса в цехе холодной прокатки и основана на аналогичном примере, поставляемом вместе со средой "Flora/C+" (www.compassplus.ru) версии 2.1.4.0.
В этой программе использован подход повышающий централизацию управления, при применении которого функциональные алгоритмы вынесены в отдельную часть программы, называемую системонезависимой, а локальные задачи управления решаются в системозависимой части (зависящей от используемых инструментальных средств). В исходном примере использовалось традиционное для объектно-ориентированного программирования управление, распределенное по значительному количеству объектов, применение которого делает поведение программы априори непредсказуемым, так как резко затрудняет целостное понимание функциональных алгоритмов.
Функциональные алгоритмы разработаны и реализованы с использованием SWITCH-технологии, базирующейся на применении конечных автоматов. Это позволило, в частности, автоматически получать протоколы работы программы в терминах автоматов, обеспечивая наглядность ее функционирования. Эти алгоритмы реализованы системой из четырех взаимосвязанных автоматов, взаимодействующих по вложенности и обмену номерами состояний. Головной автомат отвечает за включение/отключение модели, а остальные автоматы вложены в него и управляют анимацией различных составных частей модели. Взаимодействие этих автоматов осуществляется путем обмена номерами состояний. Визуальная модель цеха холодной прокатки состоит из трех областей, каждая из которых управляется отдельным автоматом:
области проката, расположенной сверху слева;
области транспортера, расположенной сверху справа;
области перемещения тележки, расположенной снизу.
Заготовка, представляющая собой катушку с намотанной на ней металлической лентой перемещается по кругу из одной области в другую. Модель является сильно упрощенной ввиду низкой детализации технологического процесса и его замкнутости .
1 . Описание пользовательского интерфейса
При запуске программы создаются три окна:
видеокадра, отражающего процесс моделирования;
протокола работы автоматов;
выбора режима отладки.
Кроме окон, создаваемых программой, на экране может присутствовать окно отладчика, используемого при пошаговом выполнении программы. Пример возможного состояния экрана приведен на дополнительно прилагаемой к настоящему документу копии экрана.
Окно видеокадра содержит две области: слева расположена область анимации, справа расположен пульт, содержащий кнопку "Пуск", включающую/отключающую систему, и диалоговые элементы для задания параметров модели.
1.2. Окно протокола
Окно протокола содержит две таблицы. В левой части окна расположена таблица, в которой фиксируются изменения состояний автоматов. Эта таблица содержит следующие столбцы:
момент времени, в который один из автоматов изменил свое состояние;
значения переменных состояния автоматов A0, A1, A2, A3 (y0, y1, y2, y3);
номер состояния графа достижимых маркировок для системы взаимосвязанных автоматов A0..A3. Следует отметить, что номера состояний графа достижимых маркировок присваиваются динамически и могут отличаться при различных запусках программы в зависимости от последовательности поступления входных воздействия.
В правой части окна расположена таблица, отображающая протокол работы системы взаимосвязанных автоматов и содержащая следующие столбцы:
момент времени, в который указанное сообщение поступило в протокол;
источник сообщения;
текст сообщения.
1.3. Окно выбора режима отладки
В верхней части окна отображаются текущие значения переменных состояния для каждого автомата. Далее располагается диалоговый элемент для выбора режима отладки, а после него - диалоговые элементы для активации различных опций отладки:
"Протоколировать". Активация данной опции разрешает любое протоколирование;
"Бесповоротное протоколирование". При активации данной опции отключается вывод в протокол повторяющихся сообщений. Сообщение считается повторяющимся, если оно уже присутствовало в числе последних сообщений в протоколе (глубина просмотра задается в функции вывода сообщения в протокол);
"Протоколировать переходы". Данная опция разрешает вывод в протокол сообщений о выполнении автоматами переходов;
"Протоколировать входы". Данная опция разрешает вывод в протокол сообщений об опросе входных переменных;
"Протоколировать выходы". Данная опция разрешает вывод в протокол сообщений о выполнении выходных воздействий;
"Протоколировать запуски". Данная опция разрешает вывод в протокол сообщений о запуске автоматов. Включение этой опции значительно увеличивает объем протокола;
"Протоколировать завершения". Данная опция разрешает вывод в протокол сообщений о завершении обработки автоматами очередного события. Включение этой опции значительно увеличивает объем протокола;
"Останов при протоколировании". Данная опция включает точку останова в функции вывода сообщения в протокол. При запущенном отладчике программа будет останавливаться после вывода в протокол каждого сообщения;
"Останов при переходах". Данная опция включает точку останова в функции, вызываемой при изменении состояния одного из автоматов. При запущенном отладчике программа будет останавливаться после того, как один из автоматов перешел в новое состояние и выполнены перечисленные в нем выходные воздействия. При этом в нижней части окна отладки будет отображаться сообщение о том, какой из автоматов совершил переход, а также номера нового и старого состояний.
Для более удобного управления опциями отладки введено пять различных режимов отладки , переключение которых осуществляется при помощи диалогового элемента "Режим". При включении каждого из режимов отладки устанавливается соответствующий набор отладочных опций. Реализованы следующие режимы :
"Демонстрационный". Режим предназначен для общего ознакомления с моделируемым процессом. В этом режиме отключены все отладочные опции;
"Достижимые маркировки". Режим предназначен для предварительного ознакомления с динамикой изменения состояний автоматов. В этом режиме выполняется минимальное протоколирование - заполняется таблица значений переменных состояний (может быть построен граф достижимых маркировок);
"Краткий протокол". Режим предназначен для ознакомления с динамикой изменения состояний автоматов и выдачей выходных воздействий. В этом режиме выполняется протоколирование переходов в автоматах и бесповторное протоколирование выходных воздействий;
"Пошаговый краткий". Режим предназначен для пошагового изучения изменения состояний автоматов, опроса входных переменных и выдачи выходных воздействий. В этом режиме останов программы выполняется при изменении состояния какого-либо автомата;
"Пошаговый полный". Режим предназначен для подробного пошагового изучения процессов, происходящих в системе взаимосвязанных автоматов. При выполнении отладки в этом режиме строится максимально полный протокол, а останов программы выполняется после записи в протокол каждого очередного сообщения. При этом следует отметить, что в функциях, реализующих выходные воздействия, протоколирование выполняется до того, как выдается само воздействие. Поэтому у пользователя есть возможность прочитать в протоколе, какое выходное воздействие будет выдано после того, как он продолжит выполнение программы, а после этого, нажав клавишу продолжения выполнения программы "F9", увидеть внешние изменения, вызванные выполненным выходным воздействием. Для упрощения процесса изучения поведения автоматов в данном режиме рекомендуется пропускать однообразные участки работы программы, переключаясь в режим "Пошаговый краткий", а после изменения состояния одного из автоматов переключаться обратно в режим " Пошаговый полный".
При изучении поведения программы в различных режимах отладки рекомендуется сопоставлять появляющиеся в протоколе сообщения с распечатками схем связей и графов переходов автоматов. Необходимо отметить, что реализованные режимы отладки могут использоваться для изучения работы системы взаимосвязанных автоматов с разной степенью детализации.