
Краткий справочник по STL
.pdf
S7-300/400 Система команд |
Описание |
Команды_преобразования Содержание
15. Отбрасывание_дробной_части Формат: TRUNC
Описание. Содержимое ACCU1 рассматривается как число с плавающей точкой, оно преобразуется в Long integer путем отбрасывания дробной части. Причем, если исходное число не умещается в формате Long integer, то это рассматривается как ошибка, и производится установка битов OV и OS.
ACCU2 не изменяется.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
Х |
Х |
- |
- |
- |
- |
16. Обмен_байтами_в_двойном_слове Формат: CAD
Описание. Осуществляется обмен байтами в ACCU1 по
следующей схеме: |
|
|
До выполнения команды |
31 |
1 |
|
[____A___][____B___][____C___][____D___] |
|
где A, B, C и D -значения соответствующих байтов ACCU1 |
|
|
|
|
|
После выполнения |
31 |
1 |
|
[____D___][____C___][____B___][____A___] |
|
|
|
|
ACCU2 не изменяется. |
|
|
|
|
|
|
|
|
|
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
17. Обмен_байтами_в_слове |
|
|
|
|
|
|
|||
Формат: CAW |
|
|
|
|
|
|
|
|
|
Описание. Осуществляется обмен байтами в ACCU1_L. |
|
|
|||||||
ACCU2 и ACCU1_H не изменяются. |
|
|
|
|
|
|
|||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Содержание
32

S7-300/400 Система команд |
Описание |
Содержание |
Счетчики |
Есть 7 команд для работы со счетчиками:
Установить_начальное_значение_счетчика
Сброс_счетчика
Очистить_флаг_детектирования_фронта
Подсчет_на_увеличение
Подсчет_на_уменьшение
Прочитать_текущее_значение_счетчика
Прочитать_текущее_значение_счетчика_в BCD формате
Содержание
33

S7-300/400 Система команд Описание
Счетчики Содержание
1. Установить_начальное_значение_счетчика Формат: S <счетчик>
Описание. Команда загружает из ACCU1_L стартовое значение в
указанный счетчик, если в бите RLO имел место переход от 0 |
к 1. |
|||||||||
Значение в ACCU1_L должно быть в BCD формате и принадлежать отрезку [0…999]. |
|
|
||||||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
|
- |
Воздействует на |
- |
- |
- |
- |
- |
0 |
- |
- |
|
0 |
Пример: |
|
|
|
|
|
|
|
|
|
|
A I 2.3 |
// Входной бит I 2.3 выбран в качестве условия, по |
|
||||||||
|
// которому будет загружаться счетчик C1 |
|
|
|
LC#350 // Начальное значение
S C1 // Загрузить начальное значение в счетчик Замечание. Счетчики создаются программным способом
операционной системой CPU (не путайте с Функциональными Счетными Модулями). Число счетчиков зависит от модели CPU – на старших моделях счетчиков больше.
2. Сброс_счетчика Формат: R <счетчик>
Описание. Команда R <счетчик> сбрасывает текущее значение указанного счетчика в нуль, если бит RLO=1.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
- |
- |
- |
- |
- |
0 |
- |
- |
0 |
Пример: |
|
|
|
|
|
|
|
|
|
A I 2.3 |
// Условие сброса |
|
|
|
|
|
|
RC3 // Сброс, если условие выполняется
3. Очистить_флаг_детектирования_фронта Формат: FR <счетчик>
Описание. Когда имеет место переход RLO от 0 к 1, команда FR <счетчик> очищает флаг обнаружения фронта, который используется для установки и счета адресуемого счетчика. Данная команда при нормальной установке или нормальном счете не требуется. Она применяется в тех случаях, когда необходимо загрузить, либо выполнить счет без учета переходов от 0 к 1 в битах, которые отвечают за такое управление (при условии, что эти биты находятся в состоянии 1).
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
- |
- |
- |
- |
- |
0 |
- |
- |
0 |
Содержание
34

S7-300/400 Система команд |
Описание |
Счетчики Содержание
Пример:
AI 2.0 //В бите I2.0 реализуется условие для
//выполнения команды FR
FR C3 //Очистить флаг детектирования фронта для //выбранного счетчика C3, если в бите I2.0 имеет //место положительный фронт.
4. Подсчет_на_увеличение Формат: CU <счетчик>
Описание. Команда CU <счетчик> увеличивает значение выбранного счетчика на 1, если в RLO имеет место переход от 0 к 1 и значение самого счетчика меньше 999. Когда значение счетчика достигает верхнего предела 999, он останавливается. Дальнейшие переходы в RLO не имеют никакого влияния, и флаг переполнения OV не установлен.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
- |
- |
- |
- |
- |
0 |
- |
- |
0 |
Пример: |
|
|
|
|
|
|
|
|
|
AI 2.1 // В бите I2.1 реализуется условие для увеличения
//значения счетчика на 1. Если в этом бите имеет место переход от 0 к 1,
//то счетчик увеличивает свое значение. Естественно, бит RLO является
//посредником между битом I2.1 и счетчиком C3
CU C3 |
// Счетчик увеличивает свое значение на 1, |
//если условие выполняется.
5.Подсчет_на_уменьшение
Формат: CD <счетчик>
Описание. Команда CD <счетчик> уменьшает значение выбранного счетчика на 1, если в RLO имеет место переход от 0 к 1 и значение самого счетчика больше нуля. Когда значение счетчика достигает нижнего предела (т.е. нуля), он останавливается. Дальнейшие переходы в RLO не имеют никакого влияния, и флаг переполнения OV не установлен.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
- |
- |
- |
- |
- |
0 |
- |
- |
0 |
Пример: |
|
|
|
|
|
|
|
|
|
L9 // Начальное значение
AI 0.1 // Если выполняется условие загрузки счетчика, то
SC1 // загрузить счетчик начальным значением
AI 0.0 // Если выполняется условие декремента счетчика,
CD |
C1 |
// то вычесть 1 из текущего значения |
AN |
C1 |
// Значение счетчика равно нулю ? |
=Q 0.0 // Q0.0 = 1 , если значение счетчика - нуль
Содержание
35

S7-300/400 Система команд Описание
Счетчики Содержание
6. Прочитать_текущее_значение_счетчика Формат: L <счетчик>
Описание. Команда загружает текущее значение указанного счетчика в двоичном формате (Integer) в ACCU1_L. Не забывайте, что содержимое ACCU1 предварительно сохраняется в ACCU2.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Пример: |
|
|
|
|
|
|
|
|
|
LC3 // Загрузить в ACCU1_L значение счетчика в
//двоичном формате
7.Прочитать_текущее_значение_счетчика_в BCD формате Формат: LC <счетчик>
Описание. Команда загружает текущее значение указанного
счетчика в двоично-десятичном формате (BCD) в ACCU1_L. Не забывайте, что содержимое ACCU1 предварительно сохраняется в ACCU2.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Пример: |
|
|
|
|
|
|
|
|
|
LC C3 // Загрузить в ACCU1_L значение счетчика // в BCD формате
Содержание
36

S7-300/400 Система команд |
Описание |
Содержание Команды_для_работы_с_блоками_данных
Шесть команд данной группы не зависят и не воздействуют на регистр флагов. Эти команды дают пользователю возможность работать
сблоками данных:
Обменять_содержимое_DB_и_DI
Открыть_блок_данных
Прочитать_длину_глобального_блока
Прочитать_длину_связанного_блока
Прочитать_номер_глобального_блока
Прочитать_номер_связанного_блока
Содержание
37
S7-300/400 Система команд |
Описание |
Команды_для_работы_с_блоками_данных Содержание
1.Обменять_содержимое_DB_и_DI Формат: CDB
Описание. Меняет содержимое регистров DB и DI между собой.
2.Открыть_блок_данных
Формат: OPN <идентификатор блока данных>
Описание. Сделать открытым для работы указанный блок данных, ранее открытый блок данных автоматически закрывается.
Пример: |
|
|
|
OPN |
DB |
10 |
// Открыть DB10 как глобальный блок данных |
L |
DBW |
35 |
// 35-ое слово из глобального блока данных |
TMW 22
OPN |
DI |
20 |
|
L |
DIB |
12 |
// 12-ый байт из связанного блока данных |
T |
DBB |
37 |
// И передать его в 37-ой байт глобального DB |
OPN |
DB |
15 |
// Открыть DB15 как глобальный блок данных |
|
|
|
// DB10 автоматически закрывается |
L |
DBB10 |
// Загрузить 10-ый байт из глобального DB15 |
3. Прочитать_длину_глобального_блока Формат: LDBLG
Описание. Содержимое ACCU1 сохраняется в ACCU2, затем в ACCU1 загружается длина текущего глобального блока данных в байтах.
4. Прочитать_длину_связанного_блока Формат: LDILG
Описание. Содержимое ACCU1 сохраняется в ACCU2, затем в ACCU1 загружается длина текущего связанного блока данных в байтах.
5. Прочитать_номер_глобального_блока Формат: LDBNO
Описание. Содержимое ACCU1 сохраняется в ACCU2, затем в ACCU1 загружается номер текущего глобального блока данных.
6. Прочитать_номер_связанного_блока Формат: LDINO
Описание. Содержимое ACCU1 сохраняется в ACCU2, затем в ACCU1 загружается номер текущего связанного блока данных.
Содержание
38

S7-300/400 Система команд |
Описание |
Содержание |
Команды_переходов |
|
|
18 команд, образующих данную группу, дают пользователю полный набор инструментов для написания программ с условными ветвлениями:
Если_установлен_BR
Если_сброшен_BR
Сохранение_RLO_и_переход_при_установленном RLO
Сохранение_RLO_и_переход_при_сброшенном RLO
Если_установлен_RLO
Если_сброшен_RLO
Если_установлен_OV
Если_установлен_OS
Если_меньше_нуля
Если_меньше_или_равно_нулю
Если_равно_нулю
Если_не_равно_нулю
Если_больше_или_равно_нулю
Если_больше_нуля
Если_ошибка
Безусловный_переход
Организация_цикла
Переход_по_значению_ACCU1
Содержание
39

S7-300/400 Система команд Описание
Команды_переходов Содержание
1. Если_установлен_BR
Формат: JBI <метка>
Описание. Выполняется переход на указанную метку, если установлен флаг BR.
BR
*
-
2. Если_сброшен_BR
Формат: JNBI <метка>
Описание. Выполняется переход на указанную метку, если сброшен флаг BR.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
* |
- |
- |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
0 |
1 |
- |
0 |
3. Сохранение_RLO_и_переход_при_установленном RLO Формат: JCB <метка>
Описание. Первым действием RLO копируется в BR, затем
выполняется переход на указанную метку, если RLO=1 |
|
|
|
|
|
||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
Х |
- |
- |
- |
- |
0 |
1 |
1 |
0 |
4. Сохранение_RLO_и_переход_при_сброшенном RLO Формат: JNB <метка>
Описание. Первым действием RLO копируется в BR, затем
выполняется переход на указанную метку, если RLO=0 |
|
|
|
|
|
||||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
Х |
- |
- |
- |
- |
0 |
1 |
1 |
0 |
5. Если_установлен_RLO Формат: JC <метка>
Описание. Выполняется переход на указанную метку, если
установлен флаг RLO. |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
|||||||||
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
- |
- |
- |
- |
- |
0 |
1 |
1 |
0 |
Содержание
40

S7-300/400 Система команд |
Описание |
Команды_переходов Содержание
6. Если_сброшен_RLO
Формат: JCN <метка>
Описание. Выполняется переход на указанную метку, если сброшен флаг RLO.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
- |
- |
- |
- |
* |
- |
Воздействует на |
- |
- |
- |
- |
- |
0 |
1 |
1 |
0 |
7. Если_установлен_OV Формат: JO <метка>
Описание. Выполняется переход на указанную метку, если
установлен флаг OV. |
|
|
|
|
|
|
|
|
|
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
- |
- |
* |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
8. Если_установлен_OS |
|
|
|
|
|
|
|
||
Формат: JOS <метка> |
|
|
|
|
|
|
|
||
Описание. |
Выполняется |
переход |
на указанную |
метку, если |
|||||
установлен флаг OS. |
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
|
|||||||||
Зависит от |
- |
- |
- |
- |
* |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
0 |
- |
- |
- |
- |
Замечание. Почему команда №7 'JO' не сбрасывает бит OV, а команда 'JOS' сбрасывает бит OS?
9. Если_меньше_нуля Формат: JM <метка>
Описание. Если результат предыдущей арифметической команды оказался меньше
нуля, то выполняется переход на указанную метку. |
|
|
|
|
|
|
|||
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
* |
* |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Замечание. CC1=0, CC0=1 → результат меньше нуля.
10. Если_меньше_или_равно_нулю Формат: JMZ <метка>
Описание. Если результат предыдущей арифметической команды оказался меньше или равен нулю, то выполняется переход на указанную метку.
|
BR |
CC1 |
CC0 |
OV |
OS |
OR |
STA |
RLO |
/FC |
Зависит от |
- |
* |
* |
- |
- |
- |
- |
- |
- |
Воздействует на |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Замечание. CC1=0, CC0=0 → результат равен нулю.
Содержание
41