Работа с состояниями конечного автомата

Библиотека "Конечные автоматы" предназначена для разработки алгоритмов работы конечных автоматов и условий перехода в другие состояния. Любой конечный автомат, созданный с помощью данной библиотеки, возможно исключить из расчета следующими способами:
  1. С сохранением последнего активного состояния автомата.
  2. Со сбросом в начальное состояние автомата.

Блок "Карта состояний", в котором задается алгоритм работы конечного автомата, создан с помощью субмодели SimInTech. Поэтому для управления его запуском на расчет возможно использовать блок "Условие выполнения субмодели". В этом случае при исключении автомата из расчета будет сохранено его последнее активное состояние и промежуточные результаты работы алгоритма.

Если требуется исключить конечный автомат из расчета таким образом, чтобы при следующем включении он находился в заданном начальном состоянии, то необходимо явно переводить его в это состояние.

Пример исключения конечного автомата из расчета

Для демонстрации возможности исключения конечного автомата из расчетов предназначен демонстрационный пример "Работа с состояниями конечного автомата.prt" (Рисунок 1).


Рис. 1. Демонстрационный пример "Работа с состояниями конечного автомата"
Блок "Меандр" формирует логический сигнал для управления запуском на расчет конечного автомата. Управляющий сигнал записывается в переменную sf_enable. Условие запуска на расчет конечного автомата:
  • Если управляющий сигнал "sf_enable" равен "0", то конечный автомат исключается из расчета.
  • Если управляющий сигнал "sf_enable" равен "1", то конечный автомат включается в расчет.

Блоки "В память" и "Из памяти" предназначены для хранения данных об управляющем сигнале и результатах работы алгоритма конечного автомата.

Блок "Карта состояний" с подписью "Обычный конечный автомат" (Рисунок 2) содержит граф перехода конечного автомата с тремя состояниями. Предназначен для демонстрации работы автомата без исключения из расчета. Для задания условий перехода между состояниями используется блок "Выдержка состояния". Результатом работы алгоритма конечного автомата является вывод с помощью блока "Выход данных состояния" номера активного состояния, заданного блоком "Константа".


Рис. 2. Блок "Карта состояний" с подписью "Обычный конечный автомат"

Сохранение последнего активного состояния

Блок "Карта состояний" с подписью "Конечный автомат с сохранением состояния" (Рисунок 3) содержит блок "Условие выполнения субмодели" и граф перехода конечного автомата с тремя состояниями. Предназначен для демонстрации работы автомата при исключении его из расчета с сохранением последнего активного состояния. Для задания условий перехода между состояниями используется блок "Выдержка состояния". Результатом работы алгоритма конечного автомата является вывод с помощью блока "Селектор данных состояния" номера активного состояния, заданного блоком "Константа".

Блок "Условие выполнения субмодели" предназначен для управления запуском на расчет данного конечного автомата. Если управляющий сигнал "sf_enable" равен "0", то конечный автомат исключается из расчетов, алгоритм его работы не выполняется, а состояние не изменяется. При повторном включении автомата, если управляющий сигнал "sf_enable" равен "1", конечный автомат продолжит работу с момента остановки.


Рис. 3. Блок "Карта состояний" с "Конечный автомат с сохранением состояния"

Сброс в начальное состояние

Блок "Карта состояний" с подписью "Конечный автомат со сбросом состояния" (Рисунок 4) содержит граф перехода конечного автомата с четырьмя состояниями: тремя рабочими — "State 1", "State 2" и "State 3", и одним "Выключено" — "State 4". Предназначен для демонстрации работы автомата при исключении его из расчета со сбросом в начальное состояние. Для задания условий перехода между рабочими состояниями используется блок "Выдержка состояния". Результатом работы алгоритма конечного автомата для рабочих состояний является вывод с помощью блока "Селектор данных состояния" номера активного состояния, заданного блоком "Константа".


Рис. 4. Блок "Карта состояний" с подписью "Конечный автомат со сбросом состояния"
Если управляющий сигнал "sf_enable" равен "0", то конечный автомат исключается из расчетов путем перехода в состояние "Выключено" ("State 4") из любого рабочего состояния. Алгоритм работы состояния "State 2" приведен на рисунке (Рисунок 5).


Рис. 5. Алгоритм состояния "State 2"
В состоянии "Выключено" автомат находится все время, пока значение управляющего сигнала "sf_enable" равно "0". При повторном включении автомата, если управляющий сигнал "sf_enable" равен "1", конечный автомат перейдет из выключенного состояния в "Начальное состояние". Алгоритм работы состояния "State 4" приведен на рисунке (Рисунок 6).


Рис. 6. Алгоритм состояния "State 4"