Краткий справочник по STL
.pdfS7-300/400 Система команд Описание
Команды_переходов Содержание
11. Если_равно_нулю Формат: JZ <метка>
Описание. Если результат предыдущей арифметической команды
оказался равен нулю, то выполняется переход на указанную метку. |
|
||||||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
* |
* |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
12. Если_не_равно_нулю Формат: JN <метка>
Описание. Если результат предыдущей арифметической команды
оказался отличен от нуля, то выполняется переход на указанную метку. |
|
||||||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
* |
* |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Замечание: СС1=1, СС0=0 → результат больше нуля.
13. Если_больше_или_равно_нулю Формат: JPZ <метка>
Описание. Если результат предыдущей арифметической команды оказался больше или равен нулю, то выполняется переход на указанную метку.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
* |
* |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
14. Если_больше_нуля Формат: JP <метка>
Описание. Если результат предыдущей арифметической команды
оказался больше нуля, то выполняется переход на указанную метку. |
|
||||||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
* |
* |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
15. Если_ошибка Формат: JUO <метка>
Описание. Если в результате выполнения предыдущей арифметической команды возникла ошибка (например, деление на нуль), то выполняется переход на указанную метку.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
* |
* |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Замечание. СС1=1, СС0=1 → арифметическая ошибка.
Содержание
42
S7-300/400 Система команд |
Описание |
Команды_переходов Содержание
16. Безусловный_переход Формат: JU <метка>
Описание. Выполняется переход на указанную метку без всяких условий.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
17. Организация_цикла Формат: LOOP <метка>
Описание. Вычитание 1 из ACCU1_L и если значение ACCU1_L после вычитания еще не равно нулю, то переход (обычно это переход назад, что тем самым позволяет организовать программный цикл).
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
18. Переход_по_значению_ACCU1 |
|
|
|
|
|
||||
Формат: JL <метка> |
|
|
|
|
|
|
|
||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Описание. После команды JL должны стоять команды безусловного перехода JU (но не более 255 команд). Метка в команде JL помечает строку программы, перед которой завершается список команд JU. В самом списке команд JU не разрешается использовать другие команды. Берется текущее значение ACCU1_LL и проводится такая связь:
1.Если ACCU1_LL=0, то выполняется первая команда JU после команды JL (первая в списке);
2.Если ACCU1_LL=1, то выполняется вторая команда JU;
3.И т.д. ;
4.Наконец, если значение ACCU1_LL больше чем количество команд JU в списке, то ни одна из команд JU не выполняется, а
осуществляется переход на метку, указанную в самой команде JL.
Итак, при выполнении команды JL либо будет выполнена одна команда JU, либо будет выполнен переход на метку, указанную в самой команде JL.
Содержание
43
S7-300/400 Система команд |
Описание |
Команды_загрузки_и_передачи |
Содержание |
Данная группа представлена 15 командами:
Загрузка_ACCU1_значением_операнда
Загрузка_ACCU1_содержимым_STW
Загрузка_AR1_значением_из_ACCU1
Загрузка_AR1_значением_из_AR2
Загрузка_AR1_значением_операнда
Загрузка_AR2_значением_из_ACCU1
Загрузка_AR2_значением_операнда
Обмен_содержимого_AR1_и_AR2
Запись_из_ACCU1_в_операнд
Запись_из_ACCU1_в_STW
Запись_из_AR1_в_ACCU1
Запись_из_AR1_в_AR2
Запись_из_AR1_в_операнд
Запись_из_AR2_в_ACCU1
Запись_из_AR2_в_адресуемый_операнд
Содержание
44
S7-300/400 Система команд |
Описание |
Команды_загрузки_и_передачи Содержание
1. Загрузка_ACCU1_значением_операнда Формат: L <операнд>
Описание. Сначала содержимое ACCU1 копируется в ACCU2. Затем содержимое адресуемого операнда заносится в ACCU1. Возможными операндами являются байт, слово, двойное слово из таких областей, как I, Q, PI, M, L, DB, DI.
|
|
|
BR |
|
CC1 |
CC0 |
OV |
OS |
OR |
STA |
|
RLO |
/FC |
Зависит от |
|
- |
|
- |
- |
- |
- |
- |
- |
|
- |
- |
|
Воздействует на |
|
- |
|
- |
- |
- |
- |
- |
- |
|
- |
- |
|
Примеры: |
|
|
|
|
|
|
|
|
|
|
|
|
|
L |
IB |
10 |
// Загрузить байт #10 из области входов |
|
|
||||||||
L |
MB |
120 |
// Загрузить байт #120 из области меркеров |
|
|||||||||
L |
DBD |
8 |
|
// Загрузить двойное слово #8 из текущего |
|
||||||||
|
|
|
|
// глобального блока данных |
|
|
|
|
|||||
L |
DIW |
15 |
// Загрузить слово #15 из текущего связанного |
|
|||||||||
|
|
|
|
// блока данных |
|
|
|
|
|
|
|||
L |
LD |
252 |
// Загрузить двойное слово #252 из |
|
|
||||||||
|
|
|
|
// локального стека |
|
|
|
|
|
|
Замечание. Если была загрузка байта, то он загрузится в ACCU1_LL, адресуемое слово загрузится в ACCU1_L, при этом старшие незадействованные разряды ACCU1 будут установлены в 0.
2. Загрузка_ACCU1_содержимым_STW |
|
|
|
|
|
||||||
Формат: LSTW |
|
|
|
|
|
|
|
|
|
|
|
Описание: ACCU1 := Слово Состояния; |
|
|
|
|
|
|
|||||
|
BR |
|
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
Зависит от |
|
* |
|
* |
* |
* |
* |
* |
* |
* |
* |
Воздействует на |
- |
|
- |
- |
- |
- |
- |
- |
- |
- |
|
Замечание. После выполнения данной команды ACCU1 выглядит |
|||||||||||
следующим образом: |
|
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Биты ACCU1 |
31¼9 |
|
|||||||||
Содержимое |
нули |
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
3. Загрузка_AR1_значением_из_ACCU1 |
|
|
|
|
|
||||||
Формат: LAR1 |
|
|
|
|
|
|
|
|
|
|
|
Описание. AR1 := ACCU1; |
|
|
|
|
|
|
|
||||
|
BR |
|
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
Зависит от |
|
- |
|
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
|
- |
- |
- |
- |
- |
- |
- |
- |
Содержание
45
S7-300/400 Система команд |
|
|
|
|
|
|
Описание |
|||
Команды_загрузки_и_передачи |
|
|
|
|
|
|
|
|
||
Содержание |
|
|
|
|
|
|
|
|
|
|
4. Загрузка_AR1_значением_из_AR2 |
|
|
|
|
|
|||||
Формат: LAR1 AR2 |
|
|
|
|
|
|
|
|
||
Описание. AR1 := AR2; |
|
|
|
|
|
|
|
|||
|
BR |
|
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
|
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
|
- |
- |
- |
- |
- |
- |
- |
- |
5. Загрузка_AR1_значением_операнда Формат: LAR1 <D>
Описание. Загрузить в AR1 содержимое адресуемого двойного слова или загрузить указатель. Двойное слово может быть выбрано из таких областей, как DB, DI, L и M.
|
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
|
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
|
Пример: |
DBD 20 |
|
|
|
|
|
|
|
|
|
LAR1 |
|
|
|
|
|
|
|
|
||
LAR1 |
LD |
180 |
|
|
|
|
|
|
|
|
LAR1 |
MD |
24 |
|
|
|
|
|
|
|
|
LAR1 |
P#M100.0 |
// Загрузить указатель на 100-ый адрес |
|
//из области меркеров
6.Загрузка_AR2_значением_из_ACCU1 Формат: LAR2
Описание. AR2 := ACCU1;
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
7. Загрузка_AR2_значением_операнда Формат: LAR2 <D>
Описание. Загрузить в AR1 содержимое адресуемого двойного слова или загрузить указатель. Двойное слово может быть выбрано из таких областей, как DB, DI, L и M.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Содержание
46
S7-300/400 Система команд |
Описание |
Команды_загрузки_и_передачи Содержание
8. Обмен_содержимого_AR1_и_AR2 Формат: CAR
Описание. Содержимое регистров AR1 и AR2 меняется местами.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
9. Запись_из_ACCU1_в_операнд Формат: T <операнд>
Описание. Копирование ACCU1 в адресуемый байт, слово или двойное слово. Данная команда зависит от MCR ресурса.
Если MCR ресурс активен и бит MA = 1 (вершина стека MCR ресурса), то содержимое аккумулятора копируется в адресуемый операнд (число копируемых байтов из аккумулятора зависит от размера адресуемого операнда, см. пример). Если бит MA = 0, то в адресуемый операнд запишутся нули.
Если же MCR ресурс выключен, то содержимое аккумулятора копируется в адресуемый операнд.
Операнды могут быть из следующих областей: I, Q, PQ, M, L, DB.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Пример: |
|
|
|
|
|
|
|
|
|
TQB 10 // QB10 :=ACCU1_LL ;
TMW 14 // MW14 :=ACCU1_L ;
TDBD 2 // Содержимое ACCU1 копируется во второе двойное
//слово глобального блока данных
10. Запись_из_ACCU1_в_STW Формат: T STW
Описание. Слово состояния загружается значением из аккумулятора, а именно биты с 0 по 8 из ACCU1 копируются в Слово состояния.
Биты ACCU1 31¼9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
Слово |
нули |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
состояния |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
||
Зависит от |
|
- |
- |
- |
- |
- |
- |
- |
- |
- |
|
Воздействует на |
Х |
Х |
Х |
Х |
Х |
Х |
Х |
Х |
Х |
Содержание
47
S7-300/400 Система команд Описание
Команды_загрузки_и_передачи Содержание
11. Запись_из_AR1_в_ACCU1 Формат: TAR1
Описание. Содержимое ACCU1 сохраняется в ACCU2. В ACCU1 копируется
содержимое адресного регистра AR1. |
|
|
|
|
|
|
|
||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
12. Запись_из_AR1_в_AR2 Формат: TAR1 AR2
Описание. Содержимое адресного регистра AR1 копируется в
адресный регистр AR2. ACCU1 и ACCU2 не изменяются. |
|
|
|
|
|||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
13. Запись_из_AR1_в_операнд Формат: TAR1 <D>
Описание. Содержимое адресного регистра AR1 копируется в адресуемое двойное слово, которое может находиться в одной из следующих областей: M, L, DB, DI. Содержимое ACCU1 и ACCU2 не изменяется.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
14. Запись_из_AR2_в_ACCU1 Формат: TAR2
Описание. Содержимое ACCU1 сохраняется в ACCU2. В ACCU1 копируется содержимое адресного регистра AR2.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
15. Запись_из_AR2_в_адресуемый_операнд Формат: TAR2 <D>
Описание. Содержимое адресного регистра AR2 копируется в адресуемое двойное слово, которое может находиться в одной из следующих областей: M, L, DB, DI. Содержимое ACCU1 и ACCU2 не изменяется.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Содержание
48
S7-300/400 Система команд |
Описание |
Содержание Математика_с_плавающей_точкой
Математика с плавающей точкой представлена 5 командами:
Сложение
Вычитание
Умножение
Деление
Модуль_числа
Содержание
49
S7-300/400 Система команд |
Описание |
Математика_с_плавающей_точкой
Содержание
1. Сложение Формат: +R
Описание. ACCU1 := ACCU1 + ACCU2;
Содержимое ACCU1 и ACCU2 рассматривается как числа с плавающей точкой. Содержимое регистров складывается, и результат сохраняется в ACCU1. По значению битов CC1, CC0, OS и OV можно судить о результате сложения.
Результат в ACCU1 |
|
Флаги |
|
|
Таблица |
||||
|
|
Описание |
|||||||
знак |
порядок |
мант-са |
CC1 |
CC0 |
OV |
OS |
|||
|
|
||||||||
0 |
255 |
¹ 0 |
1 |
1 |
1 |
1 |
Не число |
|
|
0 |
255 |
0 |
1 |
0 |
1 |
1 |
Плюс бесконечность |
||
(переполнение) |
|||||||||
|
|
|
|
|
|
|
|||
0 |
1..254 |
любой |
1 |
0 |
0 |
- |
Нормализованные |
||
допустимы |
числа |
|
|||||||
|
|
|
|
|
|
|
|||
|
|
й |
|
|
|
|
Очень |
маленькие |
|
0 |
0 |
¹ 0 |
0 |
0 |
1 |
1 |
|||
числа |
|
||||||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
(переполнение) |
||
0 |
0 |
0 |
0 |
0 |
0 |
- |
Результат нуль |
||
1 |
0 |
0 |
0 |
0 |
0 |
- |
Результат нуль |
||
1 |
0 |
¹ 0 |
0 |
0 |
1 |
1 |
Очень |
маленькие |
|
отрицательные |
|||||||||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
числа |
|
|
|
|
|
|
|
|
|
(переполнение) |
||
1 |
1..254 |
любой |
0 |
1 |
0 |
- |
Нормализованные |
||
допустимы |
отрицательные |
||||||||
|
|
|
|
|
|
||||
|
|
й |
|
|
|
|
числа |
|
|
1 |
255 |
0 |
0 |
1 |
1 |
1 |
Минус |
|
|
бесконечность |
|||||||||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
(переполнение) |
||
1 |
255 |
¹ 0 |
1 |
1 |
1 |
1 |
Не число |
|
|
|
Замечание. |
|
|
|
|
|
|
1.данная таблица применима не только к команде сложения +R, но и к другим командам этой группы
2.'Не число' означает, что формат чисел с плавающей точкой IEEE не выдерживается
3.'+/-Бесконечность' означает, что имеет место слишком большое положительное (или
отрицательное) число
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
Х |
Х |
Х |
- |
- |
- |
- |
Содержание
50
S7-300/400 Система команд |
Описание |
Математика_с_плавающей_точкой
Содержание
Пример OPN DB 10
LID 10 // ACCU1 :=ID10 ;
L |
MD 14 // ACCU2 |
:=ID10 ; ACCU1 :=MD14 ; |
+R |
// ACCU1 |
:=ACCU2 + ACCU1 ; |
TDBD 25
2. Вычитание Формат: -R
Описание. ACCU1 := ACCU2 - ACCU1;
Содержимое ACCU1 и ACCU2 рассматривается как числа с плавающей точкой. Из содержимого ACCU2 вычитается содержимое ACCU1 и результат сохраняется в ACCU1. По значению битов CC1, CC0, OS и OV можно судить о результате вычитания (см. таблицу, приведенную в описании команды '+R').
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
Х |
Х |
Х |
- |
- |
- |
- |
Пример: |
|
|
|
|
|
|
|
|
|
OPN DB 10 |
|
|
|
|
|
|
|
|
|
L-3.90289
LMD 14
-R
TDBD 25
3. Умножение Формат: *R
Описание. ACCU1 := ACCU1 * ACCU2;
Содержимое ACCU1 и ACCU2 рассматривается как числа с плавающей точкой. Содержимое ACCU2 умножается на содержимое ACCU1 и результат сохраняется в ACCU1. По значению битов CC1, CC0, OS и OV можно судить о результате умножения (см. таблицу, приведенную в описании команды '+R').
|
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
|
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
Х |
Х |
Х |
Х |
- |
- |
- |
- |
|
Пример: |
|
|
|
|
|
|
|
|
|
|
OPN |
DB |
25 |
|
|
|
|
|
|
|
|
L |
ID |
10 |
|
|
|
|
|
|
|
|
L |
MD |
14 |
|
|
|
|
|
|
|
|
*R |
|
|
|
|
|
|
|
|
|
|
T |
DBD |
25 |
|
|
|
|
|
|
|
|
Содержание
51