Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Краткий справочник по STL

.pdf
Скачиваний:
937
Добавлен:
16.02.2016
Размер:
4.28 Mб
Скачать

S7-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