Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб раб 4 - Цифровые автоматы на SFC.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
351 Кб
Скачать
☆

3. Табличное задание ца

Из определения автомата Мили следует, что для задания автомата требуется две таблицы: таблица переходов, таблица выходов. В таблице переходов на пересечении столбца Sk  и строки Xn ставится состояние Si в которое автомат переходит из состояния Sk под действием сигнала Xn, а в таблице выходов – соответствующий этому переходу выходной сигнал Ym. 

Пример:

Автомат Мили (по рис. 2)

1)Таблица переходов

S0

S1

S2

S3

X0

S3

S3

S2

S0

X1

S2

S3

S1

S2

2)Таблица выходов

S0

S1

S2

S3

X0

Y3

Y3

Y2

Y0

X1

Y2

Y3

Y1

Y2

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

Пример:

Автомат Мура (по рис. 1)

Таблица переходов

Y0

Y1

Y2

Y3

S0

S1

S2

S3

X0

S3

S3

S2

S0

X1

S2

S3

S1

S2

3. Реализация автомата Мура в CoDeSys на языке sfc

Программирование на языке SFC ведется с помощью шагов (Action) и переходов (Transition). Переход от одного шага к последующему осуществляется в том случае, если выполняется условие перехода. Например на рисунке ниже: программа перейдет из шага State2 в шаг State1 только в том случае, если выполнится условие x1=TRUE. Пока программа находится внутри очередного шага, код, записанный внутри шага, выполняется в бесконечном цикле. Чтобы добавить код в шаг, нужно нажать на нем двойным щелчком, затем выбрать желаемый язык. Чтобы редактировать условие нужно просто щелкнуть мышью на тексте условия рядом с горизонтальной чертой.

Для вставки новых шагов (снизу или сверху) используются значки:

Добавление перехода

Для добавления альтернативной ветви (слева или справа):

Если нужно параллельное выполнение ветвей:

Переход без условия

Пример реализации дискретного автомата Мура (по рис. 1) :

Рис. 3 – Дискретный автомат на языке SFC

При построении графической структуры программы следует соблюдать правила:

- при добавлении альтернативной ветви (Alternative branch) сначала должен быть выбран переход, либо часть программы, начинающаяся и заканчивающаяся переходом.

- при добавлении параллельной ветви (Parallel branch) сначала должен быть выбран шаг, либо часть программы, начинающаяся и заканчивающаяся шагом.

- если необходимо сделать разветвление в программе (как на рисунке 3), то следует выбрать нужный переход, добавить к нему альтернативную ветвь . В альтернативной ветви выбрать добавленный переход и нажать: переход без условия . Далее указать имя шага – куда будет выполнен безусловный переход.

Код внутри блоков (или шагов) задается путем двойного нажатия мышью на соотвествующем шаге. Далее следует выбрать язык ST и ввести в каждом шаге код:

S

s0:=TRUE; s1:=FALSE; s2:=FALSE; s3:=FALSE;

tate0 :

S

s0:=FALSE; s1:=TRUE; s2:=FALSE; s3:=FALSE;

tate1:

S

s0:=FALSE; s1:=FALSE; s2:=TRUE; s3:=FALSE;

tate2:

S

s0:=FALSE; s1:=FALSE; s2:=FALSE; s3:=TRUE;

tate3:

Для того, чтобы сигналы не проходили "насквозь" через все условия, то есть для реализации дискретности команд, в программе использована возможность добавления Exit-Action действия. Exit Action – код, выполняющийся один раз при выходе из блока. Entry Action – код, выполняющийся один раз при входе в блок.

Для добавления расширенных функций (Entry Action, Exit Action) необходимо в контекстном меню блока выбрать соответствующий пункт. Далее следует выбрать язык ST и добавить код (в каждый шаг одинаковый):

x0:=FALSE; x1:=FALSE;

О наличии кода в опциях Entry Action или Exit Action свидетельствует крестик в левом или правом нижнем углу шага:

Удалить код (основной, входной или выходной) можно при помощи команды Clear Action/Transition из контекстного меню шага.