Краткий справочник по STL
.pdfS7-300/400 Система команд |
Описание |
Команды_программного_контроля Содержание
Краткое_вступительное_слово
Начнем с краткого вступительного слова. В контроллерах семейства S7-300 и S7-400 реализован на аппаратном уровне так называемый ресурс MCR. Изначально этот ресурс выключен. Зачем он нужен? Что он из себя представляет?
Ресурс MCR влияет на алгоритм выполнения следующих команд:
1. |
Присвоить бит {пример: = |
Q 124.3 } |
2. |
Установить бит {пример: S |
M 5.1 } |
3. |
Сбросить бит {пример: R |
M 12.0 } |
4. |
Передача байта, слова или двойного слова {пример: T MB 15 } |
Когда он выключен, то указанные команды выполняются обычным порядком. Алгоритм выполнения этих команд несколько изменяется, когда данный ресурс активен (см. описание соответствующих команд). Программист, решая конкретную задачу автоматизации, сам принимает решение об использовании, или не использовании ресурса MCR. Воспользуйтесь рисунком из файла 'MCR.BMP'. Как видно, основным элементом ресурса является стек, позволяющий накапливать до восьми значений бита RLO. Такое накопление позволяет организовывать вложения2. Есть еще два элемента ресурса MCR: действующий в данный момент бит MA (вершина стека) и указатель стека MSP. Однако данная информация об организации ресурса MCR в большей степени является познавательной, чем представляет практический интерес. С практической точки зрения важным является то, как программист может управлять этим ресурсом.
Итак, с аппаратным ресурсом MCR связаны четыре команды:
1.MCRA
2.MCRD
3.MCR(
4.)MCR
Команда MCRA включает ресурс. В Вашу обязанность входит выключение ресурса с помощью команды MCRD (после того, как Вы закончили его использовать).
Команда MCR( записывает в вершину стека текущее значение RLO, стек при этом автоматически сдвигается вниз.
Команда )MCR выталкивает из вершины стека бит, записывая его в RLO, стек при этом автоматически сдвигается вверх.
Содержание
2 Обращаем внимание. Переполнение стека является ошибкой, выполнение пользова тельской программы прекращается.
62
S7-300/400 Система команд Описание
Команды_программного_контроля Содержание
Эти две команды должны использоваться совместно. Естественно, возможны вложения, но при переполнении стека формируется ошибка
(размер стека =8). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Когда ресурс MCR включен, следующие команды (их выполнение): |
|
|
|||||||||||||
- '=' |
(присвоить бит) |
|
|
|
|
|
|
|
|
|
|
||||
- 'S' |
(установить бит) |
|
|
|
|
|
|
|
|
|
|
||||
- 'R' |
(сбросить бит) |
|
|
|
|
|
|
|
|
|
|
|
|
||
- 'T' |
(перенос/передача B, W или DW) |
|
|
|
|
|
|
|
|||||||
зависят от текущего состояния бита MA (т.е. от вершины стека). |
|
|
|||||||||||||
1. Включить_MCR_ресурс |
|
|
|
|
|
|
MCRA |
||||||||
Формат: |
MCRA |
|
|
|
|
|
|
|
|
|
|
|
|
||
Описание. Данная команда включает MCR ресурс. |
|
|
|
|
|
|
|
||||||||
|
|
BR |
|
CC1 |
|
CC0 |
OV |
|
OS |
OR |
STA |
RLO |
/FC |
||
Зависит от |
- |
|
- |
|
- |
- |
|
- |
- |
- |
- |
- |
|||
Воздействует на |
- |
|
- |
|
- |
- |
|
- |
- |
- |
- |
- |
|||
2. Выключить_MCR_ресурс |
|
|
|
|
|
MCRD |
|||||||||
Формат: |
MCRD |
|
|
|
|
|
|
|
|
|
|
|
|
||
Описание. Данная команда выключает MCR ресурс. |
|
|
|
|
|
|
|
||||||||
|
|
BR |
|
CC1 |
|
CC0 |
OV |
|
OS |
OR |
STA |
RLO |
/FC |
||
Зависит от |
- |
|
- |
|
- |
- |
|
- |
- |
- |
- |
- |
|||
Воздействует на |
- |
|
- |
|
- |
- |
|
- |
- |
- |
- |
- |
|||
3. Записать_в_стек |
|
|
|
|
|
|
|
|
|
MCR( |
|||||
Формат: |
MCR( |
|
|
|
|
|
|
|
|
|
|
|
|
||
Описание. Команда записывает RLO в вершину стека MCR ресурса. |
|||||||||||||||
Уровень вложенности увеличивается на единицу. |
|
|
|
|
|
|
|
|
|
||||||
|
|
BR |
|
CC1 |
|
CC0 |
OV |
|
OS |
OR |
STA |
RLO |
/FC |
||
Зависит от |
- |
|
- |
|
- |
- |
|
- |
- |
- |
* |
- |
|||
Воздействует на |
- |
|
- |
|
- |
- |
|
- |
0 |
1 |
- |
0 |
|||
4. Прочитать_из_стека |
|
|
|
|
|
|
|
)MCR |
|||||||
Формат: |
)MCR |
|
|
|
|
|
|
|
|
|
|
|
|
||
Описание. Команда переносит вершину стека MCR ресурса в RLO. |
|||||||||||||||
Уровень вложенности уменьшается на единицу. |
|
|
|
|
|
|
|
|
|
||||||
|
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|||||
Зависит от |
- |
|
- |
|
- |
- |
|
- |
- |
- |
- |
- |
|||
Воздействует на |
- |
|
- |
|
- |
- |
|
- |
0 |
1 |
- |
0 |
Вопрос. Прокомментировать для 3. и 4. зависимость и воздействие на флаги?
Содержание
63
S7-300/400 Система команд |
Описание |
|
Команды_программного_контроля |
|
|
Содержание |
|
|
5. Безусловный_вызов_без_параметров |
|
|
Формат: |
UC <идентификатор лог. блока> |
|
Описание. Безусловный вызов логического блока без передачи параметров. Команда сохраняет адрес возврата (селектор и относительный адрес), селекторы текущих DB и DI, бит MA в B-стеке, отключает MCR зависимость, создает распределение памяти под локальные данные.
Внимание. Используя данную команду, Вы не можете связать
некий DI с вызываемым логическим блоком, то есть нельзя UC FB 3, DI 2 |
|
|
|||||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
0 |
0 |
1 |
- |
0 |
6. Условный_вызов_без_параметров |
|
|
|
|
|
||||
Формат: |
CC <идентификатор лог. блока> |
|
|
|
|||||
Описание. Команда выполняется аналогично команде UC, только |
|||||||||
вызов осуществляется, если RLO=1. |
|
|
|
|
|
|
|
||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
- |
- |
- |
- |
0 |
0 |
1 |
1 |
0 |
Вопрос. Если локальная память распределяется, но нет |
|||||||||
возможности указать DI, то нет ли в этом парадокса? |
|
|
|
|
|||||
7. Вызов_CALL |
|
|
|
|
|
|
|
|
|
Формат: |
CALL <ид. лог. блока, ид. DI> [параметры] |
|
|
||||||
Описание. Безусловный вызов функции или функционального |
|||||||||
блока с возможностью передачи параметров. |
|
|
|
|
|
|
|||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
0 |
0 |
1 |
- |
0 |
Замечание. 1) идентификатор DI связанного блока данных указывается, если вызывается функциональный блок, и не указывается, если вызывается функция
2)разрешается использовать символические имена
3)данную команду следует применять в тех случаях, когда в вызываемую FC или FB требуется передать параметры
4)команду CALL запрещается использовать в организационных
блоках
Содержание
64
S7-300/400 Система команд |
|
Описание |
|
|
|
Команды_программного_контроля |
|
|
|
|
Содержание |
8. Конец_блока |
|
|
|
Формат: |
BE |
|
|
Описание. Команда завершения текущего блока или функции. Область локальных данных освобождается, вновь открываются те блоки
данных, которые были открыты, восстанавливается MCR зависимость. |
|
||||||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
0 |
0 |
1 |
- |
0 |
9. Конец_блока_безусловный |
|
|
|
|
|
|
|||
Формат: |
BEU |
|
|
|
|
|
|
|
|
Описание. Конец блока безусловный. Все то же самое, что и в |
|||||||||
команде BE. |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
|||||||||
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
0 |
0 |
1 |
- |
0 |
10. Конец_блока_условный |
|
|
|
|
|
|
|||
Формат: |
BEC |
|
|
|
|
|
|
|
|
Описание. Выполнение текущего блока завершается, если RLO=1, |
|||||||||
в этом случае выполняются действия, что в командах BE и BEU, иначе |
|||||||||
выполнение блока продолжается. |
|
|
|
|
|
|
|
||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
- |
- |
- |
- |
0 |
0 |
1 |
1 |
0 |
Замечание. Команды завершения текущего блока следует применять в случаях, когда требуется завершить блок, не доходя до логического конца этого блока.
Содержание
65
S7-300/400 Система команд |
Описание |
Команды_сдвигов |
Содержание |
Данная группа состоит из 10 команд:
Циклический_сдвиг_влево_двойного_слова
Циклический_сдвиг_вправо_двойного_слова
Однократный_циклический_сдвиг_влево_двойного слова через бит СС1
Однократный_циклический_сдвиг_вправо_двойного слова через бит СС1
Сдвиг_двойного_слова_влево_нулями
Сдвиг_слова_влево_нулями
Сдвиг_двойного_слова_вправо_нулями
Сдвиг_слова_вправо_нулями
Сдвиг_DINT_вправо_знаковым_битом
Сдвиг_INT_вправо_знаковым_битом
Содержание
66
S7-300/400 Система команд |
Описание |
Команды_сдвигов Содержание
Общее правило применимое к командам этой группы гласит: “Сдвиг объекта на 0 битов означает отсутствие сдвига“.
1. Циклический_сдвиг_влево_двойного_слова Формат: RLD
RLD <число>
Описание. Команда выполняет циклический сдвиг двойного слова влево. Если команда используется без числового операнда, то выполняется циклический сдвиг битов влево в 32-ух битном ACCU1 столько раз, какое значение содержится в ACCU2_LL (от 0 до 255).
В случае использования команды RLD <число> выполняется такой же циклический сдвиг влево, но количество сдвигов определяется
<числом>, значение <числа> находится в отрезке [0..32]. |
|
|
|
|
|
||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
2. Циклический_сдвиг_вправо_двойного_слова Формат: RRD
RRD <число>
Описание. Команда выполняет циклический сдвиг двойного слова вправо. Если команда используется без числового операнда, то выполняется циклический сдвиг битов вправо в 32-ух битном ACCU1 столько раз, какое значение содержится в ACCU2_LL (от 0 до 255).
В случае использования команды RLD <число> выполняется такой же циклический сдвиг вправо, но количество сдвигов определяется <числом>, значение <числа> находится в отрезке [0..32].
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
Содержание
67
S7-300/400 Система команд |
Описание |
Команды_сдвигов Содержание
3. Однократный_циклический_сдвиг_влево_двойного слова через бит СС1
Формат: RLDA
Описание. Однократный циклический сдвиг двойного слова влево через бит CC1.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
4. Однократный_циклический_сдвиг_вправо_двойного слова через бит СС1
Формат: RRDA
Описание. Однократный циклический сдвиг двойного слова вправо через бит CC1.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
Содержание
68
S7-300/400 Система команд |
Описание |
Команды_сдвигов Содержание
5. Сдвиг_двойного_слова_влево_нулями Формат: SLD
SLD <число>
Описание. Сдвиг двойного слова влево, справа вталкиваются нули. Если команда используется без числового операнда, то выполняется сдвиг битов влево в 32-ух битном ACCU1 столько раз, какое значение содержится в ACCU2_LL (от 0 до 255).
В случае использования команды SLD <число> выполняется такой же сдвиг влево, но количество сдвигов определяется <числом>, значение <числа> находится в отрезке [0..32].
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
6. Сдвиг_слова_влево_нулями Формат: SLW
SLW <число>
Описание. Сдвиг слова влево, справа вталкиваются нули. Если команда используется без числового операнда, то выполняется сдвиг битов влево в ACCU1_L столько раз, какое значение содержится в ACCU2_LL (от 0 до 255).
В случае использования команды SLW <число> выполняется такой же сдвиг влево, но количество сдвигов определяется <числом>, значение <числа> находится в отрезке [0..15].
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
Содержание
69
S7-300/400 Система команд |
Описание |
Команды_сдвигов Содержание
7. Сдвиг_двойного_слова_вправо_нулями Формат: SRD
SRD <число>
Описание. Сдвиг двойного слова вправо, слева вталкиваются нули. Если команда используется без числового операнда, то выполняется сдвиг битов вправо в ACCU1 столько раз, какое значение содержится в ACCU2_LL (от 0 до 255).
В случае использования команды SRD <число> выполняется такой же сдвиг вправо, но количество сдвигов определяется <числом>,
значение <числа> находится в отрезке [0..32]. |
|
|
|
|
|
|
|||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
8. Сдвиг_слова_вправо_нулями |
|
|
|
|
|
|
|||
Формат: SRW |
|
|
|
|
|
|
|
|
|
SRW |
<число> |
|
|
|
|
|
|
|
Описание. Сдвиг слова вправо, слева вталкиваются нули. Если команда используется без числового операнда, то выполняется сдвиг битов вправо в ACCU1_L столько раз, какое значение содержится в ACCU2_LL (от 0 до 255).
В случае использования команды SRW <число> выполняется такой же сдвиг вправо, но количество сдвигов определяется <числом>,
значение <числа> находится в отрезке [0..15]. |
|
|
|
|
|
|
|||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
Содержание
70
S7-300/400 Система команд |
Описание |
Команды_сдвигов Содержание
9. Сдвиг_DINT_вправо_знаковым_битом Формат: SSD
SSD <число>
Описание. Сдвиг длинного целого вправо за счет размножения знакового бита. Если команда используется без числового операнда, то выполняется сдвиг битов вправо в ACCU1 столько раз, какое значение содержится в ACCU2_LL (от 0 до 255).
В случае использования команды SSD <число> выполняется такой же сдвиг вправо, но количество сдвигов определяется <числом>,
значение <числа> находится в отрезке [0..32]. |
|
|
|
|
|
|
|||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
10. Сдвиг_INT_вправо_знаковым_битом |
|
|
|
|
|
||||
Формат: SSI |
|
|
|
|
|
|
|
|
|
SSI |
<число> |
|
|
|
|
|
|
|
Описание. Сдвиг целого числа вправо за счет размножения знакового бита. Если команда используется без числового операнда, то выполняется сдвиг битов вправо в ACCU1_L столько раз, какое значение содержится в ACCU2_LL (от 0 до 255).
В случае использования команды SSI <число> выполняется такой же сдвиг вправо, но количество сдвигов определяется <числом>,
значение <числа> находится в отрезке [0..15]. |
|
|
|
|
|
|
|||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
0 |
0 |
- |
- |
- |
- |
- |
Содержание
71