В практике управления часто встречаются ситуации с трудностями задания условий и выбора решений. Поведение автомата описывается при этом матрицей многоместных логических функций, в которой условия перехода задаются матрицами условий Ui,j {1,0,–}, а результаты работы представляются матрицей решений Di,j {0,1,–}, где прочерки обозначают отсутствие условий или решений.
При представлении процесса графом переход с одного состояния (S1) в другое (S2) осуществляется по дуге xi (рис. 3.3).
Рисунок 3.3 - Обозначение перехода автомата в новое состояние
Для реализации процесса необходимо знать:
· вектор условия перехода x;
· вектор решения y - информацию о том, какие сигналы автомат должен установить, какие снять и какие оставить без перемен в новой вершине;
· адрес памяти, где находятся данные по векторам условий и решений для новой вершины.
Таким образом, программная реализация автомата требует организации двух циклов. Поскольку из вершины может выходить несколько дуг, то в первом цикле осуществляется поиск дуги, которая удовлетворяет условиям, содержащимся во входном наборе. Если ни одно условие не подходит, автомат может выйти в непредвиденное состояние. Чтобы исключить этот вариант вводится фиктивная дуга с незначащими параметрами (- - - - - - - -), которая замыкает переход на эту вершину.
|
|
Во втором цикле осуществляется анализ вектора решений и формируется выходной сигнал автомата. После этого настраивается адрес новой области памяти, где сохраняются условия и информация для следующих циклов работы автомата.
Анализ условий и решений осуществляется с помощью маскирования. Для каждой дуги нужно создать четыре маски. Обозначим маски для вектора условий М1К(х) и М2К(х), а для вектора решений, соответственно, М1К(y) и М2К(у), где k=0, 1, 7 – номер разряда.
Первая маска выделяет значимые разряды байта вектора условий:
Вторая маска выделяет единичные значения:
Третья маска выделяет разряды, в которых выходные сигналы не должны изменяться:
Четвертая маска выделяет разряды, которые необходимо установить в единицу. Другие разряды сбрасываются:
Операции с масками аналогичны тем, которые были приведены выше.
Пусть дуга представлена вектором условий (0-1010-1), вектором решений (01--001-) и адресом 0926Н. При программировании автомата информация для этой дуги будет размещена в памяти в следующей последовательности:
ДУГА: 10111101 ® М1К(х)=BDH;
00101001 ® М2К(х)=29Н;
00110001 ® М1К(у)=31Н;
01000010 ® М2К(у)=42Н;
00100110 (младший байт адреса 26Н);
00001001 (старший байт адреса 09Н).
Таким образом, для описания одной дуги нужно шесть байт памяти.