Моделирование автоматов управления

Проектирование автоматов управления перед их практической реализацией целесообразно завершать моделированием работы на ЭВМ*.

Наибольшую сложность при моделировании автомата представляет реализация систем булевых функций для схем F1 и F2. Причем для автоматов Мура речь идет о схеме F1 (булевы функции, осуществляющие переходы a(t)→a(t+1)). В этом плане автоматы Мура выгодно отличаются от автоматов Мили тривиальной простотой схемы формирования выходных сигналов (набор схем «ИЛИ»). Поэтому и рассмотрим методику моделирования схем автоматов Мура.

МЕТОДЫ МОДЕЛИРОВАНИЯ АВТОМАТОВ

Самый простой метод моделирования заключается в том, что моделируется автомат методом вложения в ОЗУ ЭВМ всей таблицы переходов и выходов автомата. Очевидно, что для классической схемы такой подход возможен лишь для простейших автоматов с 3–4 логическими условиями и числом состояний в пределах одного десятка.

Наиболее эффективный метод реализации ФАЛ на ЭВМ – метод на основе использования так называемого кода маски, изложенный в [8] и упомянутый в работе [2].

Идея метода заключается в следующем:

1. Булевы функции F1 после минимизации СДНФ записываются в ДНФ.

2. Поскольку кроме множества [x], отражающего коды a(t), в качестве аргумента F2 используется множество {α}, то образуется конкатенация {α} {x}. Причем для каждого дизъюнктивного члена конъюнкции ДНФ не все переменные из {α} или {x} присутствуют. Однако в модели их нужно указать все, пометив отсутствующие αi или хj знаком «безразличия»: будут они равны «1» или «0», значение функции не меняется. Обычно такой знак помечается символом «~».

3. Код a(t) обозначают последовательностью разрядов хj множества {x(t)}, а код a(t + 1) – отдельными символами.

Тогда m – разрядность кода состояния а(t) и а(t +1).

4. Теперь для каждой конъюнкции yi можно написать код маски, разрешающий проверку совпадения текущего кода X и Y с помощью установки 0 в разрядах соответствующих или 1 в разрядах кода маски соответствующих x или .

Поскольку число конъюнкций k (i) различно для каждого yi, то и количество кодов маски будет равно i * k (i), .

Далее не будем символьно различать { α } { x }, а будем говорить о едином коде X как конкатенации { α } и { x (t)}.

5. Вычислив текущее а(t + 1) и определив yi, программист прежде чем проводить операцию сложения по mod 2, должен каждую конъюнкцию yi умножить на код маски, соответствующий этой конъюнкции.

Только этот получившийся код будет сравниваться (сложением ) с «правильными» значениями соответствующей конъюнкции yi.

6. Очевидно, что операция сравнения производится не для всех k (i), а до получения первого ответа yi = 1. Если же необходимо принять решение yi = 0, то нужно вести сравнения до последнего i = m.

7. Следует обратить внимание также на то, что все «правильные» значения конъюнкций yi () должны быть сформированы в памяти ЭВМ отдельным массивом.

Реализация метода (п. 1–7) подробно описана в [8].

МОДЕЛИРОВАНИЕ СЛОЖНЫХ АВТОМАТОВ

Для моделирования сложных автоматов метод [8] становится слишком громоздким и практически не реализуемым на малоразрядных микроконтроллерах.

Предложенная структурная организация сложного автомата с выбором логического условия упрощает процедуру его моделирования, так как уменьшение числа переменных функции переходов F1 с m + q на m + 2 позволяет воспользоваться для моделирования комбинационных схем методом прямого считывания из ПЗУ. В память микроконтроллера необходимо записать по таблице 42 соответствия α β {x}→{y}, а также соответствие xm…x2x1→Zr…Z2Z1 (F3). По структурной схеме сложного автомата (рис. 93) составим схему информационных связей подсистем в модели автомата (рис. 100). На основании этой схемы определяется блок-схема алгоритма моделирования на 8-разрядном микроконтроллере автомата с (m + 2) ≤ 8 практически с любым числом логических условий {α}.

Запишем алгоритм моделирования в виде табл. 43. Чтобы не путать операторы модели с командами Аj исходной ГСА, обозначим операторы модели символами R.

Рис. 100. Информационные и управляющие связи программной модели автомата

Рис. 101

Таблица 42

№ п/п Адрес Выход  
             
             
             
             
             
             
             
- - - - - - -
             
  Адрес   Выход

Таблица 43

Операции Примечания
  Установка исходного значения α, β, {x}  
R1 B1 = F1(αβxm…x2x1) Prd(t + 1) = B1, Pr(F3) = B1 Опрос F1 Prd(t + 1), условное обозначение ячеек памяти
  Zr…z2z1 = F3(x3…x2x1) Опрос F3
  Α(t + 1) = M(zk…z2z1) Опрос мультиплексора
  Β(t + 1) =  
R5 Образование конкатенации αβxm…x2x1 из α(t + 1) β(t + 1) ym…y2y1  
R6 Aj = F2(xm…x2x1) Опрос F2
R7 Включение таймера Т  
R8 Печать «номер состояния», «номер Aj». Установка в «нулевое» состояние Pr Aj  
R9 Печать «конец моделирования»  
R10 Выбор нового значения α, β (имитация ОУ)  

При аппаратной реализации для несовмещенных команд достаточно иметь только дешифратор, а для общего случая дешифратор и в схеме F2 набор элементов «ИЛИ», объединяющих те выходы дешифраторов, которым соответствует одна и та же команда Аj. При программной реализации нет необходимости моделировать отдельно дешифратор и отдельно набор элементов «ИЛИ». Достаточно записать в память микроконтроллера таблицу соответствия a(t) – Aj (табл. 44). В этом случае адрес таблицы F2 будет код xm…x2x1, а на выходе необходим регистр памяти с разрядностью, равной числу команд Аj (j=1, 2, …, k). Регистр должен позволять установку каждого бита.

Таблица 44

a(t)                      
Aj A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11

В данном конкретном примере нет совмещения команд, т.е. одному состоянию соответствует одна команда. В общем случае некоторым aj(t) может соответствовать выдача одновременно не одной, а двух команд. Ясно, что понятию регистров в программной модели соответствуют закрепленные ячейки памяти ОЗУ возможно, с этим же наименованием.

Содержание ОЗУ для F1, F3 определяется по табл. 42, а для F2 выписываются соответствия Aj→ai для всех i, j из ГСА (табл. 44). Схема (ЛСА) алгоритмической модели автомата будет обеспечивать правильную работу автомата в том случае, если для каждого периода Т будут определены выходные сигналы операционного устройства (ОУ).

При составлении программы для микроконтроллера, которая должна работать с реальным операционным устройством, целесообразно поставить отдельную независимую микросхему мультиплексора, тем более, если q ≈ 16. Если же программа создается только для проверки правильности функционирования автомата, то ни аппаратный, ни, тем более, программный мультиплексор не нужен. В этом случае необходимо правильно задать исходные данные с соответствующими (R10) значениями α для обеспечения переходов автомата по выбранному пути в графе переходов.

Поскольку для каждого нового периода Т необходимо выбирать значения α, β, то необходимо задать путь в графе переходов. Например, «заставим» модель переходить из состояния d(t) в d(t+1) строго последовательно по наиболее длинному пути. Для примера (рис. 97) получим d0d1d2d3d4d5d6d7d8d0.

В таблице 45 приведена последовательность выбора αj и соответственно значения α, β для оператора А10.

Таблица 45

d(t) α1 α2 α3 α4 α5 α6   α β Прим.
  - - - - - -       β
  - - - - - -       β
    - - - - -       α
                   
  - - - - - -       β
  - - - - - -       β
  - - - -   -       α
  - - - - -         α
  - - - - - -       β
  - - - - - -       β

Решение вопросов проверки работоспособности МПА по программной модели упрощается, если из графа переходов выделить дерево (рис. 101).

Переложение алгоритмической модели (ЛСА) на язык ассемблера или язык высокого уровня С++ не представляет затруднений для студентов, изучивших курс «Основы программирования».


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: