- •Содержание
- •5. Элементы языка программирования 66
- •6. Библиотека стандартных функциональных блоков 77
- •Введение
- •Общие сведения
- •Программистская модель плк с300
- •Внешний вид контроллера
- •Модули ввода/вывода
- •Распределение памяти контроллера
- •Программистская модель контроллера.
- •Регистры и флаги
- •Области операндов контроллера
- •Отображение входов и выходов
- •Область данных
- •Область меток
- •Область таймеров
- •Область счётчиков
- •Область периферии
- •Область расширенной периферии
- •Структура и обработка технологических программ
- •Система команд лмк
- •Логические команды
- •Команды присвоения битных операндов
- •Команды опроса битных переменных
- •Команды переходов
- •Команды пересылки
- •Арифметические команды
- •Команды сравнения
- •Логические байтовые и словные команды
- •Байтовые и словные команды сдвига
- •Индексная адресация.
- •Счетчики
- •Команды обработки счётчиков
- •Последовательность программирования счётчика
- •Примеры программирования счётчика
- •U е 5.0 ;Если сработал фотоэлемент на входе e5.0
- •Формат слова уставки счётчика
- •Таймеры
- •Команды обработки таймеров
- •Последовательность программирования таймера
- •Примеры программирования таймера
- •Формат слова уставки таймера
- •Организационные команды
- •Команды вызова, активизации и завершения блоков
- •Команды блокировки, деблокировки, задания допустимой длительности скана
- •Команды структурирования текста
- •Команды обработки канала связи
- •Элементы языка программирования
- •Организационные блоки
- •Особенности прерывания циклической обработки блоками ob2...Ob18
- •Программные блоки
- •Функциональные блоки
- •Формат функциональных блоков
- •Особенности использования формальных параметров
- •Блоки данных
- •Формат и использование блока назначений nb0
- •Комментарии к программе
- •Комментарий к строке
- •Комментарий к операнду
- •Комментарий к элементу цепи ркс и к цепи ркс
- •Библиотека стандартных функциональных блоков
- •Блоки организации связи по каналу “эвм”
- •Блоки обработки системы реального времени
- •Арифметические блоки
- •Блоки обработки модулей расширенной периферии
- •Системные блоки
- •Блоки регулирования
Команды переходов
Команды переходов осуществляют условную или безусловную передачу управления в точку программы, находящуюся в этом же сегменте блока.
Замечание: переходы допускаются только со строк, находящихся выше того места, куда должен быть выполнен переход, т.е. переход на предыдущие по программе команды запрещен! При возникновении такой ошибки время скана программы становится равным бесконечности, т.к. пропускается команда конца блока, и блок становится бесконечной длины.
1) SPA - безусловный переход на строку.
Формат команды: SPA =SM.
Безусловный переход на строку, помеченную символьной меткой SM. Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
Формат индексной команды:
В DWx(MWx)
+SPA =SM
где x - номер слова данных или метки, содержащего индекс; SM - символьная метка. Команда изменяет флаги ZF, CF, SF, PF, OF.
ПРИМЕР:
В DWx(MWx)
+SPA =ММ
MM: SPA =М0 ;точка перехода при DWx(MWx)=0
SPA =М1 ;точка перехода при DWx(MWx)=1
SPA =М2 ;точка перехода при DWx(MWx)=2
SPA =Mn ;точка перехода при DWx(MWx)=n
Если индекс DWx (MWx) = 0, индексная команда выполняет переход на команду SPA =М0. Если индекс DWx (MWx) = 1, выполняется переход на команду SPA =М1 и т.д. Между индексируемыми командами SPA =SM не должно быть других команд, даже пустых строк и строк комментариев.
2) SPB - переход на строку по логическому аккумулятору.
Формат команды: SPB =SM.
Переход на строку, помеченную символьной меткой SM, если логический аккумулятор LA=1. Команда сбрасывает флаги CF и OF в 0, изменяет флаги ZF, SF, PF. Команда “заканчивает опрос”.
ПРИМЕР:
U E 3.5 ; Занесение в LA значения логического входа Е 3.5
SPB =END ; Если Е 3.5 = 1, то перейти на метку с названием END
… : Если Е 3.5 = 0, то программа выполняется дальше без перехода
END : ; На эту строчку произойдет переход при выполнении условия Е 3.5 = 1
=1 A 8.1 ; Продолжается выполнение программы
BE ; Перейти в начало программы.
3) SPP - переход на строку по “больше”.
Формат команды: SPP =SM.
Переход на строку, помеченную символьной меткой SM, если CF=0 и ZF=0 (если беззнаковый RW2 (RG2, RB2) > RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
4) SPM - переход на строку по “меньше”.
Формат команды: SPM =SM.
Переход на строку, помеченную символьной меткой SM, если CF=1 (если беззнаковый RW2 (RG2, RB2) < RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
5) SPPZ - переход на строку по “больше или равно”.
Формат команды: SPPZ =SM.
Переход на строку, помеченную символьной меткой SM, если CF=0 (если беззнаковый RW2 (RG2, RB2) >= RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
6) SPMZ - переход на строку по “меньше или равно”.
Формат команды: SPMZ =SM.
Переход на строку, помеченную символьной меткой SM, если CF=1 или ZF=1 (если беззнаковый RW2 (RG2, RB2) <= RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
7) SPZ - переход на строку по “равно”.
Формат команды: SPZ =SM.
Переход на строку, помеченную символьной меткой SM, если ZF=1 (если беззнаковый или знаковый RW2 (RG2, RB2) = RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
8) SPN - переход на строку по “не равно”.
Формат команды: SPN =SM.
Переход на строку, помеченную символьной меткой SM, если ZF=0 (если беззнаковый или знаковый RW2 (RG2, RB2) >< RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
9) SPG - переход на строку по “больше с переполнением”.
Формат команды: SPG =SM.
Переход на строку, помеченную символьной меткой SM, если ZF=0 и SF=OF (если знаковый RW2 (RG2, RB2) > RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
10) SPL - переход на строку по “меньше с переполнением”.
Формат команды: SPL =SM.
Переход на строку, помеченную символьной меткой SM, если SF >< OF (если знаковый RW2 (RG2, RB2) < RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
11) SPGZ - переход на строку по “больше или равно с переполнением”.
Формат команды: SPGZ =SM.
Переход на строку, помеченную символьной меткой SM, если SF=OF (если знаковый RW2 (RG2, RB2) >= RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
12) SPLZ - переход на строку по “меньше или равно с переполнением”.
Формат команды: SPLZ =SM.
Переход на строку, помеченную символьной меткой SM, если ZF=1 или SF >< OF (если знаковый RW2 (RG2, RB2) <= RW1 (RG1, RB1)). Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
13) SPO - переход на строку по “флагу переполнения”.
Формат команды: SPO =SM.
Переход на строку, помеченную меткой SM, если OF=1. Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
14) SPS - переход на строку по “флагу знака”.
Формат команды: SPS =SM.
Переход на строку, помеченную меткой SM, если SF=1. Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
15) SPE - переход на строку по “флагу четности”.
Формат команды: SPE =SM.
Переход на строку, помеченную меткой SM, если PF=1. Команда не меняет аккумуляторы и флаги. Команда “заканчивает опрос”.
Команды SPP, SPM, SPPZ, SPMZ, SPZ, SPN могут использоваться для разветвления программы по результату сравнения беззнаковых операндов в аккумуляторах RW2 (RB2) и RW1 (RB1) или по результату сравнения аккумуляторов RG2 и RG1. Команды SPG, SPL, SPGZ, SPLZ, SPZ, SPN могут использоваться для разветвления программы по результату сравнения знаковых операндов в аккумуляторах RW2 (RB2) и RW1 (RB1) или RG2 и RG1. Для этого соответствующая команда перехода ставится после любой команды сравнения (см. п. 4.9).