Файл: Системы автоматизации с использованием программируемых логических контроллеров (Г.П. Митин, 2005).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 1630

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

«Запуск таймера как формирователя задержки

включения с запоминанием»

LAD

STL

12.1

Т2

LD 12.1

1 1

1

IN

TONR

TONR Т2,10

1

10

- РТ

Импульсная диаграмма

12.1

/

Т2 (текущее

значение)

Прямой счет и реверсивный счет

Операция Прямой счет выполняет счет в прямом

Сххх

направлении при нарастающем фронте на входе пря­

си сти

мого счета (CU) до достижения максимального значе­

R

ния. Если текущее значение (Сххх) больше или равно

PV

предварительно установленному значению (PV), то

Сххх

включается бит счетчика (Сххх). Счетчик сбрасывает­

CU CTUD

ся, если активизируется вход сброса.

C D

;i

В STL вход сброса находится в вершине стека, а

— R

вход прямого счета представляет собой значение, за­

PV

гружаемое на второй уровень стека.

CV Сххх, PV

Операция Реверсивный счет выполняет счет в

прямом направлеьши при нарастающем фронте на вхо­

CVR

Сххх, PV

де прямого счета (CU). При нарастающем фронте на

входе обратного счета (CD) операция выполняет счет в обратном направ­ лении. Если текущее значение (Сххх) >= предварительно установленному значению (PV), то включается бит счетчика (Сххх). Счетчик сбрасывается, если активизируется вход сброса.

В STL вход сброса находится в вершине стека. Вход прямого счета представляет собой значение на втором уровне стека, а вход обратного счета - значение на третьем уровне стека.

Операнды Сххх: от О до 255

PV: VW, Т, С, IW, QW, MW, SMW, АС, AIW, константа, *VD, *АС,

SW.

94


Описание операций со счетчиками S7-200

Прямой счетчик (CTU) при нарастающем фронте на входе прямого счета выполняет отсчет вперед от текущего значения счетчика. Счетчик сбрасывается, если активизируется вход сброса или выполняется операция «Сброс». Счетчик останавливается, когда достигнуто максимальное значе­ ние (32.767).

Реверсивный счетчик (CTUD) при нарастающем фронте на входе прямого счета выполняет счет вперед, а при нарастающем фронте на входе обратного счета выполняет счет назад. Счетчик сбрасывается, если активи­ зируется вход сброса или выполняется операция «Сброс». Если достигает­ ся максимальное значение (32.767), то следующий нарастающий фронт на входе прямого счета вызывает «опрокидывание» счетчика, и счет начина­ ется снова с минимального значения (-32.767), Если при счете достигается минимальное значение (-32.767), то при следующем нарастающем фронте на входе обратного счета счетчик «опрокидывается» и считает дальше с максимального значения (32.767).

Если Вы сбрасываете счетчик посредством операции «Сброс», то сбрасывается как бит счетчика, так и текущее значение счетчика.

Обращение к текущему значению, а также к биту счетчика осущест­ вляется с помощью номера счетчика.

Так как каждый счетчик обладает собственным текущим значением, то не назначайте одинаковый номер нескольким счетчикам.

Пример операций со счетчиком

14.0

Вперед

13.0

Назад

12.0

Сброс

С48 (текущее значение)

С48 (бит счетчика)

STL

LD

14.0 // Такт, сигнал прямого счета

LD

13.0 // Такт, сигнал обратного счета

LD

12.0//Сброс

CVR

С48, 4

Импульсная диаграмма

FLTL

95

1.4. Операции управления программой

END

Операция Условное окончание обработки закан­ чивает обработку главной программы в зависимости от результата предшествующей логической операции.

Главная программа должна заканчиваться катуш­ кой Абсолютное окончание обработки.

В STL операция Абсолютное окончание обработ­ ки представляется командой MEND.

Операнды: нет.

Все программы пользователя должны завершать главную программу операцией «Абсолютное окончание обработки». Опе­ рация «Условное окончание обработки» используется, когда обработка должна завершаться до операции «Абсолютное окончание обработки».

STOP

fTI

Операция STOP заканчивает обработку програм­

А 1 1

(STOP)

мы пользователя немедленно, переводя CPU из режима

работы RUN в режим работы STOP.

Операнды: нет.

т j STOP

1

Если операция STOP выполняется в программе

обработки прерываний, то последняя немедленно за­

вершается и все стоящие в очереди прерывания игнорируются. Остаток программы обрабатывается, и в конце цикла CPU переходит в режим STOP.

F CALL n

SBR 11

CRET

RUT

Вызов, начало и окончание подпрограммы

Операция Вызов подпрограммы передает управле­ ние подпрограмме (п).

Операция Начало подпрограммы отмечает начало подпрограммы (п).

Операция Условное окончание подпрограммы за­ вершает подпрограмму в зависимости от результата предшествующей логической операции.

Любая подпрограмма должна заканчиваться опе­ рацией Абсолютное окончание подпрограммы.

Операнды п: от О до 63 Если обработка подпрограммы закончена, то глав­

ная программа выполняется дальше с той операции, ко­ торая следует за операцией CALL.

Можно производить вложение подпрограмм (внутри одной подпрограммы вызывать другую под-

96


гфограмму) с глубиной вложения, равной максимум восьми уровням. До­ пустима рекурсия (подпрограмма вызывает саму себя), однако применять рек>фсию следует с осторожностью.

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

Таким образом, когда вызывается подпрограмма, то самый верхний элемент стека всегда равен «1». Поэтому можно в сегменте, следующим за операцией SBR, подключать выходы и блоки непосредственно к левой шине тока. В STL операция загрузки, следующая за операцией SBR, может опускаться.

Аккумуляторы используются как главной программой, так и подпро­ граммами. Вызов подпрограммы не приводит к запоминанию и последую­ щему восстановлению аккумуляторов.

Пример операций над подпрограммами

LAD

STL

Network I

.Network

SMO.l

H I—

в первом цикле: вызов SBR 10

LD

SMO.l

-(CALL)

CALL 10

для инициализации.

IN etwo гк

Network 39

MEND

-(^]^Q

) Все подпрограммы нужно распо­

лагать после операции END.

Network

SBR

10

Network 50

10

Network

SBR

Начало подпрограммы 10.

LD

Ml4.3

CRET

Network 65

Network

И'

RET

Ml 4.3

I

f

V

Подпрограмма 10 может закан-

VRET

)

чиваться условно ? RET)

Network 68

Любая подпрограмм должна закан-

-Лиг£у

) чиваться абсолютно (RET).Здecь

завершается подпрограмма 10.

97


IN'l n
CRHII
RbTI
HlNI I
-^<hri) -(^hll)

f

f

1.5. Прерывания

Начало и окончание программы обработки прерываний

Операция Начало программы обработки преры­ ваний отмечает начало программы обработки прерыва­ ний (п).

Операция Условное окончание программы обра­ ботки прерываний заканчивает программу обработки прерываний в зависимости от предшествующего логи­ ческого сопряжения.

Каждая программа обработки прерываний должна заканчиваться операцией Абсолютное окончание про­ граммы обработки прерываний.

Операнды п: от О до 127.

Программы обработки прерываний

Можно снабдить каждую программу обработки прерываний меткой прерывания, отмечающей начало программы. Программа обработки пре­ рываний состоит из операций, которые располагаются между меткой пре­ рывания и операцией абсолютного окончания программы. Вы можете за­ кончить программу (и тем самым снова передать управление главной про­ грамме), выполняя операцию «Абсолютное окончание программы обра­ ботки прерываний» (RETI) или операцию «Условное окончание програм­ мы обработки прерываний». Каждая программа обработки прерываний должна завершаться операцией «Абсолютное окончание программы обра­ ботки прерываний».

Указания по использованию программ обработки прерываний

С помощью обработки прерываний можно реагировать на особые внутренние или внешние события. Программу обработки прерываний сле­ дует строить таким образом, чтобы она выполняла определенную задачу, а затем снова передавала управление главной программе. Программируйте как можно более короткие программы обработки прерываний с точными указаниями, так чтобы эти программы могли обрабатываться быстро и другие процессы прерывались ненадолго. Пренебрежение этими указания­ ми может привести к непредвиденным состояниям, способным нарушить работу оборудования, управляемого главной программой. Для программ обработки прерываний девиз «чем короче, тем лучше» определенно верен.

Ограничения

При работе с программами обработки прерываний обратите внима­ ние на следующие указания:

Присоединяйте все программы обработки прерываний к концу глав­ ной программы LAD.

98


•в программах обработки прерываний нельзя использовать операции DISI, ENI, CALL, HDEF, FOR/NEXT, LSCR, SCRE, SCRT и END.

Заканчивайте каждую программу обработки прерываний абсолютно (операция RETT).

Системная поддержка прерываний

Контакты, катушки и аккумуляторы могут испытывать воздействие прерываний. Поэтому система запоминает стек, аккумуляторы и специаль­ ные маркеры (SM), отображающие состояние аккумуляторов и команд, и загружает их позже снова. Благодаря этому предотвращается нарушение главной программы вследствие перехода к программе обработки прерыва­ ний и возврата из нее.

Совместное использование данных в главной программе и программе обработки прерываний

Можно совместно использовать данные в главной программе и в од­ ной или нескольких программах обработки прерываний. Так, например, часть главной программы может предоставлять данные, которые обраба­ тываются программой обработки прерываний, и наоборот. Если главная программа и программа обработки прерываний совместно используют данные, то необходимо осознавать тот факт, что события прерываний про­ исходят асинхронно по отношению к главной программе. Поэтому они мо­ гут появляться в любой момент времени обработки главной программы. Вследствие выполнения программ обработки прерываний могут возникать нарушения целостности совместно используемых данных, когда обработка операций в главной программе прерывается событиями прерываний.

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

Для программы на STL, которая совместно исгюльзует одну единст­ венную переменную: если совместно используется только одна перемен­ ная в виде байта, слова или двойного слова и программа написана в форме STL, то промежуточные результаты операций с совместно используемыми данными следует записывать только по адресам памяти или в аккумулято­ рах, которые не используются совместно.

Для программы на LAD, которая совместно использует одну единст­ венную переменную: если совместно используется только одна перемен­ ная в виде байта, слова или двойного слова и программа написана в форме LAD, то обращение к совместно используемым адресам памяти следует производить только с помощью операций передачи (MOV_B, MOV_W,

99