Сверлильный полуавтомат. Режимы работы. Входные и выходные сигналы, страница 2

step

state

event

action

next

<0

pressed = 0

top = 1

bottom = 0

0

0

btn_start = 1

pressed = 0

top = 1

bottom = 0

1

1

pressed = 0

top = 1

bottom = 0

btn_start = 0

clamp := 1

2

2

top = 1

bottom = 0

pressed = 1

rotate := 1

mv_down := 1

3

3

bottom = 0

pressed = 1

top = 0

liquid := switch_liquid (включение или невключение СОЖ в зависимости от положения переключателя режима)

4

4

top = 0

pressed = 1

bottom = 1

mv_down := 0;

начало паузы 1–2 сек

5

5

bottom = 1

top = 0

pressed = 1

завершение паузы

mv_up := 1

6

6

top = 0

pressed = 1

bottom = 0

liquid := 0

7

7

bottom = 0

pressed = 1

top = 1

mv_up := 0

clamp := 0

8

8

top = 1

bottom = 0

pressed = 0

обнуление qb0 (выключение всего)

0

Для каждого шага в графе event указано изменение состояния, ожидаемое в результате действия, запущенного на предыдущем шаге. Состояние, указанное в state, уже достигнуто (на предыдущих шагах) и должно сохраняться. Например, условие pressed = 1 на шаге 3 указано в event, а на последующих шагах — в state. Это означает, что зажим тисков, ожидаемый на шаге 3, на последующих шагах будет постоянно проверяться — деталь должна быть зажата до конца обработки.

В табл. 4 приведены значения таймаутов. В первой колонке указано событие, запускающее отсчет времени, в следующей колонке — ожидаемое событие, а в последней — предельно допустимый промежуток времени (до наступления ожидаемого события).

Таблица 4. Значения таймаутов

start_event

stop_event

time_limit

clamp := 1 (зажим тисков)

pressed = 1 (тиски зажаты)

3 сек

clamp := 0 (разжим тисков)

pressed = 0 (тиски разжаты)

3 сек

mv_down := 1 (вкл. движения Z+)

mv_down := 0 (выкл. движения Z+)

8 сек

mv_up = 1 (вкл. движения Z–)

mv_up = 0 (выкл. движения Z–)

8 сек

4. Структура программы

Программа реализована в виде нескольких функций без параметров, они вызываются  последовательно (по возрастанию номеров) из OB1. Эти функции перечислены в табл. 5.

Таблица 5. Основные программные блоки

FC

Имя

Назначение

Условие вызова из OB1

1

sequencer

Реализует последовательное управление, описанное в табл. 3 в графах {step, event, action, next}.

Замечание: Не контролирует ни state, ни таймаут

2

state_ctrl

Контроль достигнутого состояния (см. state в табл. 3) в зависимости от номера шага. Если текущее состояние не совпадает с указанным в state, вызывает функцию stop.

^m2.2

3

time_ctrl

Контролирует таймауты согласно табл. 4. Если ожидаемое событие не наступает за указанное время, вызывает функцию stop.

^m2.3

4

stop

Обнуляет выходные сигналы и делает номер шага отрицательным: step := – abs(step); вызывается также из функций state_ctrl и time_ctrl

btn_stop

5

panel

Пультовый режим (движения по кнопкам).

Замечание: вызов функции запрограммирован, но сама функция пока что пустая

step <= 0

Вызовы контрольных функций state_ctrl и time_ctrl по умолчанию включены (поскольку после старта m2.2 = m2.3 = 0). Они могут быть отключены (за счет установки в 1 битов m2.2 и m2.3) при помощи Watch table или с панели оператора. Эта возможность упрощает наладку и тестирование.

Глобальные данные приведены в табл. 6. Нулевая начальная величина означает, что данные нужно либо поместить в несохраняемую (non-retain) память, либо явно обнулить в стартовом OB.

Таблица 6. Глобальные данные

Адрес

Имя

Назначение

Начальное значение

(при рестарте)

mw0

step

Номер шага циклограммы (см. табл. 1)

0

m2.2

Единица блокирует вызов функции state_ctrl

0

m2.3

Единица блокирует вызов функции time_ctrl

0