Вы находитесь на странице: 1из 310

ПРОГРАММИРОВАНИЕ ФУНКЦИОНАЛЬНЫХ БЛОКОВ НА

ЯЗЫКЕ STEP 5

1
2
ПРОГРАММИРОВАНИЕ ФУНКЦИОНАЛЬНЫХ БЛОКОВ НА
ЯЗЫКЕ STEP 5

Прежнее название:
"Программирование управляющих устройств на языке STEP 5", том 3

Ганс Бергер

Перевод 3-го, переработанного немецкого издания, 1985 г.

Siemens Aktiengesellschaft

3
4
ПРЕДИСЛОВИЕ К 3-му ИЗДАНИЮ
Свободно программируемые управляющие устройства в последние годы заняли в
технике управления прочное место наряду с контакторными и полупроводниковыми
системами и АСУ ТП. Одним из таких примеров является система управления
Simatic-S3.
С появлением мощных электронных интегральных схем эта система была
подвергнута переработке, в результате чего появилась система автоматизации
Simatic-S5. В ней воплотился опыт, приобретенный при эксплуатации системы
Simatic-S3, и проведены усовершенствования, ставшие возможными благодаря
использованию микропроцессоров. Эти новшества, естественно, сказались и на
языке программировании. Так язык STEP 5, являющейся дальнейшим развитием
языка программирования STEP 3 , зарекомендовал себя как один из самых мощных
языков для программирования электронных управляющих устройств. С помощью
его основных функций решаются простые проблемы управления. Произвольное
представление этих основных функций в виде списка команд, функционального
плана или контактного плана дает каждому пользователю возможность выбирать
удобный для него способ описания управляющих функций. Полученное таким
образом довольно широкое согласование с представлением решаемых задач
управления упрощает обращение с этим языком, что облегчает широкому кругу
пользователей подготовку, ввод и изменение программ на языке STEP-5.
Предлагаемая изготовителем "библиотека" так называемых стандартных
функциональных блоков дает пользователю возможность рациональной подготовки
программ, что снижает расходы на математическое обеспечение. Сложные
индивидуальные функции и комплексные задачи, встречающиеся, например, в
аналоговых функциях регулирования в сочетании с обслуживанием и наблюдением
за параметрами регулирования, предоставляются в распоряжение пользователя в
готовом и отлаженном виде.
Самостоятельное программирование функциональных блоков, располагающих
значительно большим по сравнению с основными функциями запасом операций,
дает в руки опытного пользователя вспомогательное средство для
программирования сложных, индивидуальных задач управления на языке STEP 5.
Однако, большую часть необходимых для этого операций невозможно представить
в виде функционального или контактного плана, и, таким образом, для
представления внутренней, программы функционального блока остается только
список команд.
Этот наиболее близкий к внутреннему машинному языку способ записи благодаря
значительно более широкому по сравнению с основными функциями запасу
операций полностью использует возможности центрального процессора. Таким
образом, язык программирования STEP 5 перекрывает также верхний по мощности
диапазон свободно программируемых, управляющих устройств, который
охватывает благодаря использованию микропроцессора в качестве центрального
устройства функции, аналогичные ЭВМ для управления технологическими
процессами.
Пособие "Программирование управляющих устройств на языке STEP 5 " состоит из
3 томов. В первом томе описываются основные функции языка программирования и
5
их представление в виде функционального плана, контактного плана и списка
команд. Второй том содержит обзор предоставляемых изготовителем стандартных
функциональных блоков, а также описание этих вспомогательных программных
средств.
Внутренняя структура и самостоятельно производимая подготовка функциональных
блоков для индивидуальных задач управления описываются в предлагаемом третьем
томе.
Содержание настоящей книги соответствует уровню техники к моменту нового
издания. Изменениям в запасе операций устройств автоматизации отображаются в
соответствующих инструкциях по эксплуатации.

Эрланген, июнь 1985 г.

АКЦИОНЕРНОЕ ОБЩЕСТВО СИМЕНС

6
СОДЕРЖАНИЕ

1. Язык программирования STEP 5 13


1.I Обзор операций 13
I.I.I Двоичные функции 15
1.1.2 Операции над данными 18
1.1.3 Организационные функции 22
1.1.4 Двоичные функции с параметрами блоков 24
1.1.5 Операции над данными с параметрами блоков , 25
1.1.6 Организационные функции с параметрами блоков 25
1.2 Краткое описание 26
1.2.1 Двоичные функции 26
1.2.2 Операции над данными 30
1.2.3 Организационные функции 34
1.2.4 Двоичные функции с параметрами блоков 40
1.2.5 Операции над данными с параметрами блоков 41
1.2.6 Организационные функции с параметрами блоков 42
1.3 Понятия 42
1.3.1 Одно- и многословные команды 42
1.3.2 Аккумуляторы 44
1.3.3 Индикация 49

2 Подготовка функциональных блоков 54


2.1 Параметрирование с помощью параметров блоков 55
2.2 Обработка параметров блоков 56
2.3 Обозначение параметров блоков 58
3. Описание двоичных функций 64

3.1 Логические операции 64


3.1.1 Операция И, присвоение 65
3.1.2 Операция ИЛИ 67

7
3.1.3 Операция И перед ИЛИ 68
3.1.4 Операциям ИЛИ перед И 69
3.1.5 Обработка результата логической операции, 71
первичный опрос
3.2 Функции памяти 76
3.2.1 Память сброса и установки 78
3.2.2 Запоминание двоичных промежуточных результатов 79
3.2.3 Обработка фронтов 82
3.2.4 Двоичный преобразователь 87
3.2.5 Реманентная память 89
3.2.6 Установка входов 90
3.3 Функции времени 91
3.3.1 Структура слова времени 91
3.3.2 Запуск времени 93
3.3.3 Сброс времени 95
3.3.4 Опрос времени 96
3.3.5 Деблокировка времени 97
3.3.6 Запуск времени в виде короткого импульса 98
3.3.7 Запуск времени в виде продленного импульса 102
3.3.8 Запуск времени в виде задержки включения 105
3.3.9 Запуск времени в виде задержки включения с памятью 110
3.3.10 Запуск времени в виде задержки отключения 114

3.4 Функции счета 117


3.4.1 Структура слова счета 118
3.4.2 Установка счетчика 120
3.4.3 Сброс счетчика 122
3.4.4 Прямой счет 123
3.4.5 Обратный счет 123
3.4.6 Опрос счетчика 124
3.4.7 Деблокировка счетчика 124
3.5 Функции теста битов 126
3.5.1 Проверка бита на состояние "1" 128
3.5.2 Проверка бита на состояние "0" 128
3.5.3 Безусловная установка бита 129
3.5.4 Безусловный сброс бита 129

8
4 Описание логических функций с данными 130
4.1 Функции загрузки и переноса 131
4.1.1 Загрузка 134
4.1.2 Перенос 138
4.1.3 Загрузка параметров счета 141
4.1.4 Загрузка параметров времени 143
4.2 Представления чисел 146
4.2.1 16-разрядные числа с фиксированной запятой 147
4.2.2 32-разрядные числа с фиксированной запятой 148
4.2.3 Числа с плавающей запятой 148
4.3 Функции сравнения 150
4.3.1 Общая характеристика 150
4.3.2 Сравнение в начале логической операции 154
4.3.3 Сравнение внутри логической операции 154
4.3.4 Сравнение параметров времени и счета 155
4.4 Вычислительные функции 156
4.4.1 Сложение 161
4.4.2 Вычитание 162
4.4.3 Умножение 163
4.4.4 Деление 163
4.4.5 Запоминание промежуточных результатов 164
4.4.6 Комбинированные вычислительные функции 168
4.5 Логические операции с данными 173
4.5.1 Операция И UW 178
4.5.2 Операция ИЛИ OW 179
4.5.3 Исключительное ИЛИ XOW 180
4.5.4 Комбинированные операции 181

9
5 Описание организационных функций 182
5.1 Функции блоков 183
5.1.1 Вызов программного блока 185
5.1.2 Вызов функционального блока 187
5.1.3 Вызов шагового блока 189
5.1.4 Вызов блока данных 189
5.1.5 Операции завершения блока 190
5.2 Переходные функции 192

5.2.1 Абсолютный переход SPA 195


5.2.2 Условный переход SPA 195
5.2.3 Переход при нуле SPZ 197
5.2.4 Переход при SPN не равном нулю 198
5.2.5 Переход при знаке "плюс" SPP 198
5.2.6 Переход при знаке "минус" SPM 199
5.2.7 Переход при переполнении SPO 200
5.2.8 Переход при переполнении с запоминанием SPS 201
5.3 Функции сдвига 201
5.3.1 Сдвиг вправо /слово/ 201
5.3.2 Сдвиг влево /слово/ 203
5.3.3 Сдвиг вправо со знаком /слово/ 203
5.3.4 Сдвиг влево /двойное слово/ 204
5.3.5 Сдвиг вправо со знаком /двойное слово/ 205
5.3.6 Правое вращение /двойное слово/ 205
5.3.7 Левое вращение /двойное слово/ 206
5.4 Функции преобразования 207
5.4.1 Дополнение до единицы KEW 207
5.4.2 Двоичное дополнение/слово/ KZW 208
5.4.3 Двоичное дополнение/двойное слово/ KZD 209
5.4.4 Преобразование кода десятичного в двоичный DEF/DED 210
5.4.5 Преобразование кода двоичного в десятичный DUF/DUD 213
5.4.6 Преобразование /двойного слова/ 216
из представления с фиксированной запятой в пред
ставление с плавающей запятой
5.4.7 Преобразование /двойного слова/ из представления с 218
плавающей запятой в представление с фиксированной

10
5.5 Декрементирование, инкрементирование 219
5.6 Функции обработки 220
5.6.1 Индицирование двоичных операций 222
5.6.2 Индицирование операций над данными 225
5.6.3 Индицирование организационных операций 227
5.6.4 Пример: сравнение поля данных 228
5.7 Блокирование или деблокирование выдачи команд 229

5.8 Блокирование или деблокирование тревог 230

5.9 Блокирование или деблокирование тревог требований 231


5.10 Блокирование или деблокирование обработки 231
сбоев в адресовании
5.11 Стоп 232
6 Описание замещающих команд 233
6.1 Двоичные функции с параметрами блоков 234
6.1.1 Двоичные операции с параметрами блоков 234 Функции памяти с
6.1.2 параметрами блоков 236 Функции времени и счета с параметрами
6.1.3 блоков 238
6.2 Операции над данными с параметрами блоков 243
6.3 Организационные функции с параметрами блоков 247

7 Параметрирование и обеспечение функциональных блоков 249

7.1 Индивидуальное параметрирование 250


7.2 Обработка без параметров блоков 252
7.3 Побайтовое/пословное параметрирование 254
7.4 Параметрирование через слова данных 257

11
8 Преобразование STEP-5 - MC5 260
комбинации битов машинного кода
8.1 Преобразование логических операций и 260
функций памяти
8.2 Преобразование функций времени и счета 264
8.3 Преобразование функций теста битов 265
8.4 Преобразование функций загрузки и переноса 266
8.5 Преобразование функций сравнения, вычислительных 269
функций и логических операций над данными

8.6 Преобразование организационных функций 270


8.7 Преобразование команд замещения 273
8.8 Команды МС-5 программирующего устройства 274

9 Системные функции 275

9.1 Обзор системных функций 275


9.2 Двоичные системные функции 277
9.3 Системные операции над данными 277
9.4 Организационные системные функции 282
9.5 Пример: подготовка и копирование блока данных 287
9.6 Комбинации битов системных функций 307

12
I ЯЗЫК ПРОГРАММИРОВАНИЯ STEP 5

На языке программирования STEP 5 - в сочетании с устройствами автоматизации


Simatic-S5 - формулируются задачи автоматизирования. Весь объем функций этого
языка программирования подразделяется на основные функции и дополнительные
функции.
Основные функции могут использоваться во всех блоках программ языка STEP-5.
Для их программирования имеются три способа представления: в виде
функционального плана (FUP), контактного плана (KOP) и списка команд (AWL). В
этих видах программы STEP 5 можно и документировать.
Так как основные функции, представляемые в виде списка команд, могут также
программироваться в функциональных блоках, они хотя и были подробно описаны в
томе 1 кратко рассматриваются и в настоящем томе.
Дополнительные функции могут использоваться только в функциональных блоках
программ STEP-5 и допускают их программирование и документирование только в
виде списка команд. Их описание составляет основу данного тома.
Основные и дополнительные функции подразделяются на:
- двоичные функции,
- операции над данными и
- организационные функции.
Раздел 1.1 содержит обзор всех операций STEP-5 раздел 1.2 - их описание. В
разделе 1.3 дается понятийный аппарат, используемый при описании функций.

1.1 Обзор операций


К функциям с прямым указанием операндов относятся:
- двоичные функции

Ø логические операции
Ø функции запоминания
Ø функции времени
Ø функции счета
Ø функции бит-тестов

13
- операции над данными
Ø функции загрузки и переноса
Ø функции сравнения
Ø функции вычислений
Ø логические операции с данными
- организационные функции
Ø функции блоков
Ø функции переходов функции сдвига
Ø функции преобразования
Ø прочие функции

К функциям с параметрами блоков относятся:


- двоичные функции с параметрами блоков
Ø логические операции
Ø функции запоминания
Ø функции времени и счета
- Операции над данными с параметрами блоков
Ø функции загрузки и переноса
- организационные функции с параметрами блоков
Ø функции обработки

14
Двоичные функции

1. Операция И, опрос на "I"


2. Операция И, опрос на "О"
3. Операция ИЛИ, опрос на "I"
4. Операция ИЛИ, опрос на "О"
5. - входа
6. - выхода
7. - метки
8. - таймера
9. - счетчика
10. - данных
11. Операция ИЛИ над функциями И
12. Операция И над выражением в скобках
13. Операция ИЛИ над выражением в скобках
14. Скобку закрыть
15. Установка
16. Сброс
17. Присвоение результата /ограниченная установка/
18. - входа.
19. - выхода
20. - метки
15
21. - данных

16
1. Запуск в виде короткого импульса
2. Запуск в виде удлиненного импульса
3. Запуск в виде задержки включения
4. Запуск в виде задержки включения с запоминанием
5. Запуск в виде задержки отключения
6. Сброс
7. Деблокирование
8. - таймера
9. Установка
10. Сброс
11. Деблокирование
12. Прямой счет
13. Обратный счет
14. - счетчика

17
1. Проверка бита на "1"
2. Проверка бита на "0"
3. Безусловная установка бита
4. Безусловный сброс бита
5. - входа
6. - выхода
7. - метки
8. - слова времени
9. - слова счета
10. - слова данных
11. - слова данных системного переноса
12. - слова данных системного переноса из расширенной области
13. Проверка бита на "1"
14. Проверка бита на "0"
15. - системного слова данных
16. - системного слова данных из расширенной области

18
Операции над данными (байтами, словами. двойными словами)

Формат ввода через программирующие устройства

19
Перевод обозначений на стр. 18

1. Загрузка
2. Перенос
3. -байта входов
4. - слова входов
5. - двойного -слова входов
6. - байта выходов
7. - слова выходов
8.- двойного слова выходов
9. - байта меток
10.- слова меток
11.- двойного, слова меток
12.- данного /правый байт/
13.- данного /левый байт/
14.- данного /слово/
15.-данного /двойное слово/ 16.-байта периферии
17.-слова периферии
18.-байта периферии из расширенной области
19.-слова периферии из расширенной области
20.-слова данных системного переноса
21.-слова данных системного переноса из расширенной области

К нижней таблице:
1 Загрузка
2 -параметра времени
3 -параметра счета
4 -константы как числа с фиксированной запятой
5 -константы как байта
6 -константы в виде двух байтов
7 -константы в шестнадцатеричном выражении
8 -константы в виде комбинации битов
9 -константы в виде двух знаков
10 -константы как параметра времени
11 -константы как параметра счета
12 -константы в виде числа с плавающей запятой
13 -системного слова данных
14 -системного слова данных из расширенной области
15 Кодированная загрузка
16 - параметра времени
17 - параметра счета

20
1 Сравнение на равенство /16 битов/
2 Сравнение на "меньше" по 16-разр.характеристике с фикс. запятой
3 Сравнение на "больше" по 16-разр.характеристике с фикс. запятой
4 Сравнение на неравенство /16 битов/
5 Сравнение на "меньше равно" по 16-разр.характеристике с фикс. зап.
6 Сравнение на "больше равно" по 16-разр.характеристике с фикс. зап.
7 Сравнение на равенство /32 бита/
8 Сравнение на "меньше" по 32-разр.характеристике с фикс .запятой
9 Сравнение на "больше" по 32-разр.характеристике с фикс. запятой
10.Сравнение на неравенство /32 бита/
11.Сравнение на "меньше равно" по 32-разр.характеристике с фикс. зап.
12.Сравнение на "больше равно" по 32-разр.характеристике с фикс. зап.
13.Сравнение на равенство /32 бита/
14.Сравнение на "меньше" по 32-разр.характеристике с плавающей зал.
15.Сравнение на "больше" по 32-разр.характеристике с плавающей зап.
16.Сравнение на неравенство /32 бита/
17.Сравнение на "меньше равно" по 32-разр.характ. с плавающей зап.
18.Сравнение на "больше равно" по 32-разр.характ. с плавающей зап.

21
1 Сложение 16-разр.чисел с фиксированной запятой
2 Вычитание 16-разр.чисел с фиксированной запятой
3 Умножение 16-разр.чисел с фиксированной запятой
4 Деление 16-разр.чисел с фиксированной запятой
5 Сложение 32-разр.чисел с плавающей запятой
6 Вычитание 32-разр.чисел с плавающей запятой
7 Умножение 32-разр.чисел с плавающей запятой
8 Деление 32-разр.чисел с плавающей запятой
9. Внесение в арифметическую память

10. Операция И над данными /словом/


11. Операция ИЛИ над данными /словом/
12. Операция ЭКС-ИЛИ над данными /словом/
(исключающее ИЛИ)

22
1 Переход абсолютный
2 Переход условный
3 - к блоку программа
4 - к функциональному блоку
5 - к шаговому блоку
6 Вызов блока данных
7 Конец блока
8 Конец блока абсолютный
9 Конец блока условный
10 Переход абсолютный
11 Переход условный
12 Переход при содержании аккумулятора плюс
13 Переход при содержании аккумулятора "минус"
14 Переход при содержании аккумулятора "ноль"
15 Переход при переполнении
16 Переход при содержании аккумулятора не равном нулю
17 Переход при записанном в памяти переполнении
18 Сдвинуть влево /слово/
19 Сдвинуть вправо/слово/
20 Сдвинуть вправо со знаком /слово/
21 Сдвинуть влево /двойное слово/
22 Сдвинуть вправо со знаком /двойное слово/
23 Вращать влево /двойное слово/
24 Вращать вправо /двойное слово/

23
1 Простое дополнение /слово/
2 Двойное дополнение /слово/
3 двойное дополнение /двойное слово/
4 Преобразование кода десятичного в двоичный /слово/
5 Преобразование кода двоичного в десятичный /слово/
6 Преобразование кода десятичного в двоичный /двойное слово/
7 Преобразование кода двоичного в десятичный /двойное слово/
8 Преобразование фиксированной запятой в плавающую/дв. слово/
9 Преобразование плавающей запятой в фиксированную/дв. слово/
10 Инкрементировать содержание аккумулятора /правый байт/
11 Декрементировать содержание - аккумулятора /правый байт
12 Обработать слово данных
13 Обработать слово данных
14 Запретить выдачу команд
15 Разрешить выдачу команд
16 Запретить сигналы тревоги (прерываний)
17 Разрешить сигналы тревоги (прерываний)
18 Запретить вызывающие сигналы тревоги (прерываний)
19 Разрешить вызывающие сигналы тревоги (прерываний)
20 Запретить обработку ошибок в адресации
21 Разрешить обработку ошибок в адресации
22. Стоп

24
Двоичные, функции с параметрами, блоков

1. Операция И, опрос на "1"


2. Операция И, опрос на "0"
3. Операция ИЛИ, опрос на "1"
4. Операция ИЛИ, опрос на "0"
какого-либо параметра блока
5. Установка
6. Сброс двоичный
7. Присвоение результата /ограниченная установка/ какого-либо параметра блока
8. Сброс данных
9. Деблокирование
10. Запуск коротким импульсом
11. Запуск с задержкой включения
12. Запуск с задержкой отключения или с обратным счетом
13. Запуск с задержкой включения или с прямым счетом
14. Запуск удлиненным импульсом или установка счетчика какого-либо
параметра блока

25
Операции над данными с параметрами блоков

Организационные функции с параметрами блоков

1. Загрузка
Перенос параметра блока
2. Кодированная загрузка параметра блока
3. Загрузка слова
Загрузка двойного слова параметра
блока

I - Функции загрузки и переноса

II - Функции обработки

26
1.2 Краткое описание

1.2.1 Двоичные функции

Логические операции

При опросе на состояние "I" результат будет равен "I", если операнд этой операции
имеет состояние "I". Если состояние операнда "О", то и результат опроса будет "О".
При опросе на состояние "О" результат будет равен "I", если операнд этой операции
имеет состояние "О". Если операнд "I", то результат опроса "О".
Результат опроса сопрягается с находящимся в процессоре логическим результатом
по функциям И или ИЛИ. При первом опросе процессор перенимает результат
опроса как логический результат.

О Операция ИЛИ над функциями И


U( Операция И над скобками
O( Операция ИЛИ над скобками
) Скобку закрыть

При операции ИЛИ над функциями И результат последующей операции И


увязывается с предыдущим логическим результатом по функции ИЛИ. При
операциях над скобками логический результат выражения в скобках сопрягается с
предыдущим логическим результатом по функции И или ИЛИ. Функцией" скобку
закрыть" завершается выражение в скобках.

27
Функции запоминания

Операнд операции "установка"(S) имеет состояние "I", если логический результат


равен "I".
Операнд операции "сброс" (R) имеет состояние "О", если логический результат
равен "I".
Логический "О" на эту операцию не влияет.
Операнд операции "присвоение" (=) имеет состояние "I", если логический
результат равен "I". При логическом "О" состояние операнда будет "О".

Функции времени

Время, указанное при стартовой операции(SI, SV, SE, SS, SA) при смене
логического результата (нарастающий или падающий фронт, в зависимости от
стартовой операции)запускается с тем значением, которое указано в данный
момент в аккумуляторе I. Ниже приводится импульсная диаграмма течения
времени:

28
При операции "сброс" (R) значение времени сохраняется, если логический
результат равен "I". Логический "О' влияния не имеет.
Операция "деблокирование" (FR) выполняется только при нарастающем фронте
логического результата. Она вызывает новый запуск таймера, если стартовая
операция сопровождается результатом "I".

29
Функции счета

При операции "установка" (S) счетчик во время смены логического результата с


"О" на "I" устанавливается на значение, указанное в данный момент в
аккумуляторе I. Логический "О" и статическая 1 на эту операцию не влияют.
При операции "сброс" (R) счетчик в случае результата "I" устанавливается на "О".
Опросы дают состояние сигнала "О". Логический "О" на эту операцию не влияет.
Операция "деблокирование" (FR) выполняется только при нарастающем фронте
логического результата. Она вызывает установку, прямой или обратный счет
счетчика, если соответствующая операция сопровождается логическим результатом
"I".
При смене логического результата с "О" на "I" перед операциями "прямой счет"(ZV)
или "обратный счет" (ZR) значение указанного счетчика увеличивается или
уменьшается на I. Логический "О" и статическая "I" влияния не оказывают.

30
Бит-тестовые функции

Бит-тестовые функции выполняются независимо от логического результата.


Операции Р /проверка бита на состояние "I"/ и PN /проверка бита на состояние "О"/
всегда являются первичными опросами /см. раздел 3.1.5/. Стоящая после операций
SU /безусловная установка/ и RU /безусловный сброс/ логическая операция также
всегда является первичным опросом.

Операции над данными


Функции загрузки и переноса

31
Значение операндов, указанных при операции "загрузка" (L), загружается в
аккумулятор справа. С помощью операции "перенос" (T) производится перенос
содержания аккумулятора к операндам этой операции. Загрузка и перенос не
зависят от логического результата и не влияют на него / исключение составляют
устройства автоматизации S5-130A и S5-130K /.

32
Если при операции "загрузка" в качестве операнда указан таймер или счетчик, то
значение указанного при операции времени или счета загружается в аккумулятор в
двоичном коде /без бита состояния и дискретности времени/.

С помощью операции "кодированная загрузка" значение указанного при операции


времени или счетчика загружается в аккумулятор в коде вес /без бита состояния,
однако с указанием дискретности времени/.

Функции сравнения

33
Содержание аккумулятора 2 сравнивается с содержанием аккумулятора I
соответственно указанной функции сравнения. После выполнения сравнения
логический результат "I", если сравнение не выполнено - "О". При выполнении
операции сравнения происходит установка индикации.

Арифметические функции

Содержание аккумулятора 2 в соответствии с указанной арифметической


операцией сопрягается с содержанием аккумулятора I. Результат заносится в
аккумулятор 1 и происходит установка индикаторов.
Операция ENT позволяет производить прямое запоминание результата /как
правило: содержания аккумулятора/. При выполнении операции содержание
аккумулятора 3 переносится в аккумулятор 4 и содержание аккумулятора 2 в
аккумулятор 3. Установки индикации не происходит.

34
Операции над данными

Значение, стоящее в аккумуляторе I, логически сопрягается со значением в


аккумуляторе 2 /в соответствии с заданной операцией/. Над отдельными битами
обоих операндов производятся операции И, ИЛИ или исключительное ИЛИ.
Переноса в следующий бит не происходит. Результат заносится в аккумулятор 1 для
дальнейшей обработки

1.2.3 Организационные функции

Функции блоков

При операции "абсолютный переход" SPA к указанному блоку происходит


прерывание линейной обработки программы. Она продолжается в указанном блоке.
Операция не зависит от логического результата и не влияет на него. Логический
результат "забирается" при переходе и обрабатывается в условных операциях.
Инструкция опроса является первой инструкцией блока или после вызова блока
всегда является первичным опросом /см. раздел 3.1.5/.
При операции "условный переход" (SPB) к указанному блоку при логическом
результате "I" линейная обработка программы прекращается и продолжается в
указанном блоке. При логическом "О" эта операция не выполняется и продолжается
дальнейшая обработка программы. Логический результат устанавливается равным
"I".

35
С помощью операции "вызов блока данных" (A DB) производится выбор области
данных. Все последующие операции с операндами, обозначенными как "данные”,
относятся к этому блоку данных. Исключение: Обратный переход в старший блок
по команде "конец блока" (см. раздел 5.1).
Через операцию "конец блока" (BE) продолжается обработка программы в
"старшем" блоке после вызова только что обработанного блока. Эта операция не
зависит от логического результата и не влияет на него. Логический результат при
смене блока "забирается" и может быть использован в условных операциях.
Инструкция на опрос является первой инструкцией блока или после вызова блока
всегда выступает как первый опрос /ем. раздел 3.1.5/. Операция BE, как правило,
является последней инструкцией блока.
С помощью операции "абсолютный конец блока" (BEB) продолжается обработка
программы в "старшем" блоке. Эта операция не зависит от логического результата
и не влияет на него. Логический результат при смене блока "забирается" и может
быть использован в условных операциях. В отличие от операции BE операция ВЕА
может встречаться в блоке произвольно часто. В устройствах автоматизации S5-
150A S5-150K следующая за вызовом блока инструкция при обратном переходе
пропускается.
При операции "условный конец блока" (BEB) в случае логической "I" линейная
обработка программы прекращается и продолжается в "старшем" блоке после
вызова только что обработанного блока. При логическом "О" эта функция не
выполняется, а продолжается дальнейшая обработка программы с установкой
логического результата в "I".

Переходные функции

36
Цель перехода обозначается меткой. Метка перехода может максимально состоять
из 4 знаков. Дистанция перехода /расстояние между началом перехода и целью
перехода/ не должна превышать 127 слов /МС 5/.
Переходы можно выполнять как в прямом, так и обратном направлениях. Цель
перехода должна находиться в том же блоке /сегменте/, что и начало перехода,
операция "абсолютный переход" (SPA) выполняется независимо от условий,
Операция "условный переход" (SPA) выполняется при условии, что логический
результат равен "I". При "О" операция не выполняется, а логический результат
становится равным "I". Операция "переход при положительном содержании
аккумулятора" (SPM) выполняется при условии, что содержание аккумулятора
больше нуля. Если содержание аккумулятора равно нулю или меньше нуля,
операция, не выполняется. Логический результат не изменяется.
Операция "переход при отрицательном содержании аккумулятора" (SPM)
выполняется при условии, что содержание аккумулятора меньше нуля. Если оно
равно нулю или больше нуля, операция не выполняется. Логический результат не
изменяется.
Операция "переход при содержании аккумулятора равном нулю" (SPZ)
выполняется, если содержание аккумулятора равно нулю. Если оно не равно нулю.
Операция не выполняется. Логический результат не изменяется.
Операция "переход при переполнении" (SPO) выполняется при переполнении. Если
переполнения нет, операция не выполняется. Логический результат не изменяется.
Операция "переход при содержании аккумулятора не равном нулю" (SPN)
выполняется, если содержание аккумулятора не равно нулю. Если оно равно
нулю, операция не выполняется. Логический результат не изменяется,
Операция "переход при записанном в памяти переполнении" (SPS) выполняется,
если при выполнении вычислительных операций наступило переполнение. Оно
запоминается индикатором 0. и может быть использовано в SPS . Индикация ОS
сбрасывается или через SPS операцию переноса, операцию сдвига, операцию
сравнения или операцию с блоком. Логический результат остается без изменений.

37
Функции сдвига

Функции сдвига выполняются независимо от условий. Бит, сдвинутый последним,


может быть опрошен функциями перехода. Если этот бит имеет значение "О",
выполняется SPZ . При значении этого бита "I" выполняется SPN или SPP .
С помощью операций "сдвиг влево" SLW или SLD и "сдвиг вправо" SRW
содержание аккумулятора сдвигается влево или вправо. Параметр этой инструкции
указывает на количество разрядов бита, на которое сдвигается влево или вправо
содержание аккумулятора. Освобождающиеся при сдвиге разряды битов
заполняются нулями.
При операции "сдвиг вправо со знаком" SVW или SVD содержание аккумулятора
сдвигается вправо. Параметр этой инструкции указывает на число разрядов битов,
на которое сдвигается вправо содержание аккумулятора. Освобождающиеся при
сдвиге разряды битов заполняются знаком.
С помощью операций "вращение влево" RLD и "вращение вправо" RRD происходит
сдвиг содержания аккумулятора влево или вправо. Параметр этой инструкции
указывает на число разрядов битов, на которое сдвигается влево или вправо
содержание аккумулятора. Освобождающиеся при сдвиге разряды битов
заполняются сдвигаемыми разрядами битов.

38
Преобразовательные функции

Преобразовательные функции выполняются независимо от условий.


Преобразованию подвергается значение, стоящее в аккумуляторе.
Результат остается в аккумуляторе для дальнейшей обработки.
Преобразовательные функции KZW и KZD при выполнении ведут к установке
индикации. При выходе преобразовательных функций DEF, DUF, DED, DUD и
GFD за пределы области происходит установка переполнения Os с запоминанием.

Функции обработки

Операции "обработать слово данных" (BDW) и "обработать слово меток" (BMW)


как в языке STEP 5 , так и в МС 5 являются 2-словными операциями. В качестве
второй инструкции после функции обработки всегда необходимо указывать
выполняемую операцию с обозначением операнда. Параметр этой второй
инструкции составляет 0 при операциях над данными и 0.0 при двоичных
операциях. Действующий при выполнении операции операнд находится в
указанном слове данных или меток.
Выполнение операции зависит от операции, указанной в качестве второй
инструкции.

39
Декрементирование, инкрементирование

Правый байт содержания аккумулятора уменьшается или увеличивается на


указанное в параметре число.
Выполнение операции не зависит от условий. Оно ограничивается правым байтом
/без переноса/.

Блокирование или деблокирование тревог

Выполнение операции не зависит от условий. После обработки операции


"блокирование тревог" (AS) сигналов тревоги от процесса не поступает. Операция
"деблокирование тревог" AF снимает этот запрет.

Блокирование или деблокирование тревог-требований (запросов на прерывание)

Выполнение операции не зависит от условий. После обработки операции


"блокирование тревог-требований" (AAS) тревоги-требования не выполняются.
Операция "деблокирование "тревог-требований" (АAF) вновь снимает этот запрет.

Блокирование или деблокирование обработки ошибок в адресации

Выполнение операции не зависит от условий. После обработки операции


"блокирование обработки ошибок в адресации" (AFS) прекращается регистрация
сбоев в адресах. Операция "деблокирование обработки ошибок в адресации АFF
отменяет этот запрет.

40
Блокирование или деблокирование выдачи команд

Эта операция выполняется только при логическом результате "I". Логический "О"
действия не имеет. После выполнения операции "блокирование выдачи команд"
(BAS) отображение процесса на выходах больше не изменяется. Операция
"деблокирование выдачи команд" (BAF) отменяет запрет, введенный BAS.

Операция "стоп" (STP) приводит к останову центрального процессора.


Выполнение этой операции не зависит от условий. Центральный процессор может
быть вновь запущен в работу только через элементы обслуживания на лицевой
панели.

1.2.4 Двоичные функции с параметрами блоков


Функции с параметрами блоков обращаются назад к параметрам блока, указанным
при вызове функционального блока. В качестве операнда указывается обозначение
/= формальный операнд/ параметра блока. формальный операнд может состоять
макс. из 4 знаков.

Логические операции с параметрами блоков

Функция аналогична логическим операциям без параметров блоков, за


исключением операнда "данные" (D).

41
Функции памяти с параметрами блоков

Функция аналогична функциям памяти без параметров блоков, за исключением


операнда " данные" (D). Сброс здесь специально обозначен как двоичный сброс RB.

Функции времени и счета с параметрами блоков

Для формального операнда -хххх по желанию можно подставлять время Т или


счетчик Z. Тогда операция выполняется так, как это описано под
соответствующими функциями времени и счета.
Исключение: в операциях SI и SE разрешается подставлять только время Т.

1.2.5 Операции над данными с параметрами блоков

Функции загрузки и переноса с параметрами блоков

Функции аналогичны функциям загрузки и переноса без параметров блоков.

42
С помощью этих операций производится загрузка в аккумулятор константы,
указанной в виде параметра блока /актуального параметра/. С помощью операции
LW загружаются 16 битов, с помощью операции LD 32 бита.

1.2.6 Организационные функции с параметрами блоков

Функции обработки с параметрами блоков

Операция "обработать параметры блока" В позволяет обработку параметров блока,


если они присутствуют в виде вызовов блока.

1.3 Понятия
1.3.1 Инструкции из одного и нескольких слов
Инструкции языка STEP 5 в большинстве случаев непосредственно транслируются в
соответствующие инструкции МС 5, благодаря чему список МС 5 является прямым
отображением списка команд STEP-5. Исключения составляют инструкции с
константой /кроме LKB/, далее бит-тестовые функции, двоичные функции с
областью операндов D (данные), переход при запоминаемом переполнении SPS и
вызовы функциональных блоков. Эти исключения необходимо учитывать для
соблюдения дистанции перехода менее 128 слов МС 5.

Бит тестовые функции


Бит-тестовые функции P-, PN-, SU- и RU- /вместе с соответствующими операндами/
в языке STEP 5 являются однословными инструкциями. В машинном языке МС 5.
эти функции занимают два 16-разрядных слова:
в первом слове стоит проверяемый операнд, во втором - операция и указывается
номер бита /см. также раздел 8.3/.

43
Переход при запоминаемом переполнении SPS

Единственной функцией перехода, которая на. машинном языке МС 5 записывается


в виду двусловной инструкции, является операция SPS. В первом слове содержится
код операции SPS; во втором слове указана дистанция перехода /см. также раздел
8.6/.

Представление констант

В зависимости от типа констант инструкция по загрузке на машинном языке MС 5


может состоять из одного, двух или трех слов. Инструкция LKB является
однословной, так как параметровая область охватывает всего один байт.
Инструкция LKG представляет собой трехсловную инструкцию, так как число с
плавающей запятой изображено 32-разрядным двойным словом. Все остальные
инструкции с константами состоят из двух слов /см. также раздел 8.4/.

Примеры:

44
Вызовы функциональных блоков
Вызов функционального блока, написанного в виде инструкции на языке STEP-
5, требует двух инструкций языка МС-5: собственно операции вызова и
абсолютного перехода через последующий список параметров.

К инструкции перехода прибегают также и при отсутствии списка параметров. На


каждый параметр блока выделяется тогда одна инструкция МС-5 /при логических
операндах как функция И, при данных- операндах как функция загрузки, при
блоках как абсолютный вызов, при константах - само значение/. Исключение: при
параметрах типа "дата" и "KG" /число с плавающей запятой/ в этом месте списка
параметров стоит двухсловная инструкция.

1.3.2. Аккумуляторы

При обработке значений данных используются запоминающие устройства


/регистры/ блока логики. Эти регистры называются аккумуляторами.
Устройства автоматизации AG S5-130A и AG S5-130K имеют только по одному
аккумулятору, так как в качестве логических операций они располагают только
функциями загрузки и переноса.
Устройства автоматизации AG S5-110S, AG S5-130W, S5-150A и S5-150K
располагают уже двумя аккумуляторами: одним главным /аккумулятор I/ и одним
вспомогательным /аккумулятор 2/. С помощью этих устройств можно выполнять
простые операции над данными.
Устройство автоматизации S5-150S имеет 4 аккумулятора: один главный
/аккумулятор I/ и три вспомогательных аккумулятора /2,3,4/.

45
В двух дополнительных вспомогательных аккумуляторах можно хранить
промежуточные результаты цифровых операций, благодаря чему напрямую
выполняются сложные арифметические действия.
Через аккумуляторы проходят следующие операции:

Функции загрузки

Через функцию загрузки происходит загрузка в аккумулятор 1 значения операнда,


указанного при операции загрузки. Одновременно аккумулятор 2 принимает
значение, хранившееся ранее в аккумуляторе I. При этом прежнее содержание
аккумулятора 2 теряется.
Пример:
Аккумулятор 1 необходимо загрузить значением слова данных DW37, а
аккумулятор 2 - значением слова входов EW16.
Состояние аккумуляторов перед выполнением инструкций

Состояние аккумуляторов после выполнения инструкции L EW 16

Состояние аккумуляторов после выполнения инструкции L DW 37

Теперь можно производить действия над содержанием обоих аккумуляторов


/например, выполнить функцию сравнения или вычислительную функцию/.

46
Функции переноса
С помощью функции переноса всегда производится перенос содержания
аккумулятора 1 к операнду, указанному при операции переноса. Обращаться
непосредственно к вспомогательным аккумуляторам нельзя.

Функции сдвига
Функции преобразования
Декрементирование, инкрементирование
Функции сдвига, преобразования, декрементирования и инкрементирования влияют
только на содержание аккумулятора I. На содержание вспомогательных
аккумуляторов они не влияют.

Функции сравнения
Данные функции служат для сравнения содержаний аккумулятора 1 и аккумулятора
2. При этом влияния на значения, записанные в аккумуляторах, не оказывается.

Операции над данными


При этих операциях производятся действия с содержаниями аккумуляторов 1 и 2.
Результат этих действий записывается в аккумуляторе I. Содержание
вспомогательных аккумуляторов остается без изменений.

Пример
В слове данных DW7 необходимо установить в состояние "I" биты с № 4 по № 7, не
изменяя остальные биты.

Программа на языке STEP-5:

47
Состояние аккумуляторов перед выполнением инструкции L DW 7

Состояние аккумуляторов после выполнения инструкции L DW 7

Состояние аккумуляторов после выполнения инструкции L KH OOFO

С помощью инструкции OW производится операция над содержанием обоих


аккумуляторов по функции ИЛИ. После выполнения этой инструкции
аккумуляторы имеют следующее состояние:

Результат этой операции переносится в слово данных DW 7.

Вычислительные функции (ЕNT)


Через вычислительные функции ENT происходит загрузка аккумуляторов 3 и 4.
Аккумулятор 4 получает содержание аккумулятора, 3, аккумулятор 3 - содержание
аккумулятора 2. Содержание аккумулятора 4 теряется.

Состояние аккумуляторов перед выполнением инструкции ENT

Состояние аккумуляторов после выполнения инструкции ENT

Подробный пример к этому случаю смотри в разделе 4.4.6

48
Вычислительные функции /основные арифметические действия/
Основные арифметические действия влияют на аккумуляторы 1,2 и 3. Действия
производятся над содержанием аккумуляторов 1 и 2; результат записывается в
аккумуляторе I. Одновременно аккумулятор 2 принимает содержание аккумулятора
3, а аккумулятор 3 - содержание аккумулятора 4. Если аккумуляторы 3 и 4 в
устройстве автоматизации отсутствуют, содержание аккумулятора 2 не изменяется.

Пример
Содержание слова данных DW8 нужно увеличить на 750. Программа
на языке STЕP-5

Состояние аккумуляторов перед выполнением инструкций

Состояние аккумуляторов после выполнения инструкции L DW8

Состояние аккумуляторов после выполнения инструкции L KF+750

Состояние аккумуляторов после выполнения инструкции +F

После этого результат переносится в слово данных DW8

Подробный пример смотри в разделе 4.4.6.

49
1.3.3 Индикация
При выполнении операций над данными/напр., вычислительных операций/ иногда
возникает необходимость опроса результата на ноль, положительное или
отрицательное значение или же на нахождение его еще в разрешенной области
чисел. Для этих опросов при выполнении операций устанавливаются индикаторы
/флаги/. Это 1-разрядные ЗУ в блоке логики, которые можно опрашивать через
функции перехода.
Блоки логики устройств автоматизации SIMATIC S5-150S имеют 4 флага:
флаг

В устройствах автоматизации S5-150A и S5-150K устанавливаются только первых


три индикатора, в устройствах автоматизации S5-110S и S5-130W - только
переполнение (ANZ OV).
На индикацию влияют функции сравнения, вычислительные функции, операции над
дискретными величинами, функции смещения и некоторые функции
преобразования.

Формирование индикации при функциях сравнения

Выполнение функций сравнения ведет к установке индикаторов ANZ0 и ANZ1.


Индикаторы переполнения остаются без изменений.
Оба участвующих в сравнении операнда определяются следующим образом:
/операция загрузки/ /1-й операнд/
/операция загрузки/ / 2-й операнд/
/операция сравнения/

50
Слово данных 20 является в данном примере 1-м операндом, слово данных 21 -2-м
операндом.

Формирование индикации при вычислительных функциях

Выполнение вычислительных операций ведет к установке всех индикаторов. Это в


свою очередь зависит от содержания аккумулятора /результата арифметической
операции/ и от представления чисел, над которыми производилась вычислительная
операция.
формирование индикации при вычислениях с фиксированной запятой:

51
Формирование индикации при вычислениях с плавающей запятой:

Каждый результат вычислений с показателем <-128 /неполное заполнение/


устанавливает мантиссу в ноль, а показатель на -12.8.

Индикатор "переполнение" ANZ OV всегда устанавливается в тех случаях, когда


результат после выполнения вычислительной операции оказывается в
неразрешенной области чисел. Параллельно к этому устанавливается индикация
ANZ OS "переполнение с запоминанием".
Если результат выполнения последующей вычислительной операции /например,
при сложных операциях/ в пределах разрешенной области чисел, индикация ANZ
OV вновь устанавливается в 0. Однако индикатор ANZ OS сохраняет свою
установку, благодаря чему можно распознать переполнение результата внутри
сложной операции /цепочки/. Индикация ANZ OS сбрасывается при:
Ø операциях переноса
Ø операциях смещения
Ø операциях сравнения
Ø операциях с блоками и
Ø операциях перехода SPS.

52
Формирование индикации при операциях над данными
Операции над значениями данных ведут к установке индикаторов ANZ0 и
ANZ1.Индикаторы переполнений остаются без изменения. Установка индикаторов
зависит от содержания аккумулятора 1 после обработки операций:

Формирование индикации при функциях сдвига


Выполнение функций смещения ведет к установке индикаторов ANZО и ANZ1.
Индикаторы переполнений остаются без изменения.
Установка индикаторов зависит от состояния последнего смещенного бита:
Флаги

53
Формирование индикации при функциях преобразования

Образование двоичного дополнения (KZW, KZD) ведет к установке всех


индикаторов. Она зависит от результата функции преобразования:

Формирование индикации при 16-разрядном двоичном дополнении (KZW):

Результат преобразования КН = 0000


Армирование индикации при 32-разрядном двоичном дополнении (KZD)
происходит аналогично KZW.
Примечания к индикациям переполнения: см. формирование индикации при
вычислительных функциях.

54
2 ПОДГОТОВКА ФУНКЦИОНАЛЬНЫХ БЛОКОВ

Функциональные блоки отличаются от программных блоков:

Ø более широким по сравнению с программными блоками запасом операций,


Ø программированием, ограниченным списком инструкций /табличной формой/ и
Ø возможностью задавать операнды, с которыми должен работать данный блок
/"параметрирование"/.

Программируемый в программных блоках объем функций /см. том I:


Программирование основных функций/, может программироваться и в
функциональных блоках. Дополнительно в распоряжении имеется расширенный
объем функций, так называемые "дополняющие функции". Весь объем операций
описывается в настоящем томе /см. разделы 3,4 и 5/. Так как большинство
дополняющих функций нельзя представить графически, программы внутри
Функциональных блоков можно программировать и документировать только в виде
списков инструкции. Это же самое касается и основных функций внутри
функциональных блоков.
Функциональному блоку можно задать операнды, с которыми он должен работать.
Эти операнды называются "параметрами блока". Они указываются при вызове
функционального блока /см. раздел 2..1/.
Указанные при вызове текущие параметры блока /актуальные операнды/ реагируют
на внутреннюю программу функционального блока. Так как эти операнды могут
быть взяты из всех областей /напр., EW, AW, MW, PW, DW/, введен "Формальный"
операнд, который указывает на параметр блока, к которому следует обратиться.
Вместо этого формального операнда при обработке инструкции используется
соответствующий актуальный операнд. Более подробно это раскрывается в разделе
2.2. Программируемые с помощью формальных операндов операции описываются в
разделе 6.
При вызове функционального блока названия параметров блока задаются через
программирующее устройство. Таким образом, оператор получает руководство при
параметрировании функционального блока. В разделе 2.3 показано, как
программист может задавать эти названия при подготовке функциональных блоков.

55
2.1 Параметрирование блоков
В Функциональных блоках есть возможность произвольно задавать операнды, с
которыми должен работать этот функциональный блок. Эти операнды называются
актуальными операндам. При вызове функционального блока их указывают вместо
параметров блока.

Указываемые пользователем
актуальные операнды

Список инструкций

56
Один и тот же функциональный блок может вызываться многократно. При каждом
вызове ему может присваиваться другой актуальный операнд, т.е. производиться
"параметрирование". Такой список с актуальными операндами является составной
частью вызова функционального блока.

При параметрировании функционального блока через программирующее


устройство производится, проверка допустимости вводимого операнда. Для:
каждого определенного параметра блока можно указывать определенный тип
операнда. Параметры блоков подразделяются:

Ø операнд длиной в бит,


Ø операнд длиной в байт,
Ø операнд длиной в слово,
Ø операнд длиной в двойное слово,
Ø операнд таймер или счетчик,
Ø ввод данных в виде комбинации битов,
Ø ввод данных в виде числа с фиксированной запятой
/положительное, 2*8 битов/,
Ø ввод данных в виде числа с фиксированной запятой /слово/,
Ø ввод данных в виде шестнадцатеричной комбинации,
Ø ввод данных в виде знаков ИСО
Ø ввод данных в виде числа с плавающей запятой /двумя словами/,
Ø ввод данных в виде параметра времени,
Ø ввод данных в виде параметра счета и операнд блок

Спецификация этих типов параметров блоков приведена в разделе 2.3.

2.2 Обработка параметров блока

Программа в функциональном блоке определяет функцию, которую он должен


выполнять при обработке. С какими операндами должны выполняться эти функции
задает пользователь при параметрировании функционального блока /актуальный
операнд/. Программа в функциональном блоке должна обращаться к этому
параметру блока. Для этой цели указывается формальный операнд, который
отвечает обозначению параметра блока /и тем самым актуального операнда/.
Всякий раз появление Формального операнда обозначает, что здесь должен
ставиться операнд из списка параметров блока /актуальный операнд/.

57
Пример:
:U = EIN
:U = SP
:= = BEF
Параметры блоков через Нормальные операнды "EIN" и, опрашиваются на
состояние "I" и результаты опроса сопрягаются по функции И. Результат логической
операции присваивается параметру блока с помощью формального операнда "BEF".
При обработке инструкции, в которой производится обращение к параметру блока,
используется актуальный операнд, соответствующий параметру блока. Для
Нормального операнда EIN, напр., применяется /"подставляется/ операнд, который в
списке параметров блока указан обозначением "EIN".
Пример:

выполненная программа

58
2.3 Обозначение параметров блока

Подготовка Функционального блока подразделяется на две больших


части:

Ø на указание названий параметров блока и типов и


Ø на программирование функции, которая должна выполняться блоком.

В соответствии с этим функциональный блок делится на


Ø заголовок блока и на
Ø тело блока

Заголовок содержит все указания, которые требуются программирующему


устройству для графического представления функционального блока и для
проведения проверки операндов при параметрировании функционального блока.
Эта головная часть вместе с соответствующими данными вводится в
программирующее устройство перед началом программирования.

Ввод головной части

Перед вводом программы на языке STEP-5 вводится заголовок блока


Заголовок блока содержит
Ø библиотечный номер
Ø наименование функционального блока
Ø наименование параметров блока (формальный операнд)
Ø вид параметра блоками
Ø тип параметра блока

Библиотечный номер

Вводить можно номера от 0 до 65535. Этот номер присваивается функциональному


блоку независимо от его символических или абсолютных параметров.
Библиотечный номер вводится только один раз для однозначной идентификации
определенного функционального блока. Стандартные функциональные блоки
получают номера как изделия.

59
Наименование функционального блока

Длина наименования функционального блока максимально может составлять 8


знаков. Это наименование служит для обозначения функционального блока и оно
не идентично с символическим обозначением установки. Первый знак
наименования должен быть буквой.

Наименование параметра блока

Длина наименования параметра блока максимально может составлять 4 знака и


начинаться оно должно с буквы. Если наименование не вводится,
программирующее устройство завершает ввод головной части блока.
Если наименование параметра блока определения не имеет, этот функциональный
блок не параметрируется. В этом случае для программирования в распоряжении
имеется весь запас инструкций языка STEP-5, за исключением инструкций на
замещение. Максимальная длина списка параметров ограничена 40 параметрами
блоков.

Виды параметров блока


В качестве параметров могут вводиться операнды "E","A","D","B","T" ИЛИ "Z" .

Е = параметр входов
А = параметр выходов
D = данные
В = вызов блока
T = время /таймер/
Z = счетчик

"E, D, B, T" или "Z" это те параметры, которые при графическом изображении
ставятся на левой стороне символа функции. Параметры, обозначенные буквой "А",
при графическом изображении ставятся на правой стороне символа функции.

60
Тип параметра блока проверяется программирующим устройством при
параметрировании вызова функционального блока.
Если параметр блока относится к виду "Е" или "А", в качестве типа можно
указывать:

ВI для операнда с адресом бита


BY для операнда с адресом байта
W для операнда с адресом слова
D для операнда с адресом двойного слова
При типе параметра "ВI" допустимы следующие актуальные операнды:

Е n.m вход
А n.m выход
М n.m метка
При типе параметра "BY" допустимы следующие актуальные операнды:

ЕВ n байт входов
АB n байт выходов
MB m байт меток
DL n данные левого байта
DR n данные правого байта
PB n байт периферии
QB n байт периферии из расширенной области

При типе параметра "W" допустимы следующие актуальные операнды:

EW n слово входов
AW n слово выходов
MW n слово меток
DW n слово данных
FW n слово периферии
QW n слово периферии из расширенной области
BS n данные системы /слово/
BT n данные системы /слово/ из расширенной области
ВА n данные переноса системы /слово/
BB n данные переноса системы /слово/ из расширенной области

61
При параметре вида "D" допустимы следующие актуальные параметры:

ED n двойное слово входов


AD n двойное слово выходов
MD n двойное слово меток
DD n двойное слово данных

Если параметр блока относится к виду "D",B качестве типа можно


указывать:

КМ для комбинации битов /16 разрядов/


KH для шестнадцатеричной комбинации /макс.4 разряда/
KY для двух байтовых суммарных чисел, каждое в области от 0 до 255,
отделенных запятой
КС для знака /макс. 2 буквенно-числовых знака/
KF для числа с фиксированной запятой в области от -32768 до + 32767
KT для параметра времени /в двоично-десятичном коде BCD / с ценой
деления 1.0...999.3
KZ для параметра счета /в коде BCD/ О...999
KB для числа с фиксированной запятой в области от 0 до 255
KG для числа с плавающей запятой в области +1,701411*10+38

Если параметр блока относится к виду "В", расширение не допускается. В качестве


актуальных операндов в этом случае разрешены:

DB n блоки данных, выполняется команда ADBn


FB n функциональные блоки /без списка параметров/
РВ n программные блоки
SB n шаговые блоки

Вызов блоков производится безусловными переходами (SPA..n)


Если параметр блока относится к виду "Т", расширение не допускается. При
параметрировании вызванных Функциональных блоков разрешается только операнд
Т /время/.
Если параметра блока относится к виду "Z", расширение не допускается. При
параметрировании вызванных функциональных блоков допускается только операнд
Z /счетчик/.

62
Параметрирование
Операции /инструкции на замещение/, которые должны параметрироваться, в
функциональном блоке программируются /символически/ наименованием
параметра блока. При этом к наименованиям можно обращаться многократно в
разных местах функционального блока. Пример:

в виде функциональной
или контактной схемы

Актуальные операнды

63
Обработка формальных операндов

формальный операнд Актуальный операнд

64
3 ОПИСАНИЕ ДВОИЧНЫХ ФУНКЦИЙ

К двоичным функциям относятся:


Ø двоичные логические операции
Ø функции счета и
Ø функции памяти
Ø бит-тестовые функции
Ø функции времени
Описываемые в разделе 3.1 двоичные логические операции являются функциями И
и ИЛИ, а также комбинациями этих обеих функций. Необходимые при этих
операциях скобки также описываются в этом разделе.
Результат логических операций может запоминаться напрямую с выходом или с
меткой /раздел 3.2/. В этом разделе приводятся также примеры программирования
для обработки фронтов и двоичный преобразователь.
Функции времени в устройствах автоматизации S5-110S, S5-130W, S5-150A, S5-
150K и S5-150S реализуются программным путем. Раздел 3.3 посвящен описанию
внутренней структуры слова времени в запоминающем устройстве центрального
блока. Наряду со сбросом, опросом и деблокированием времени раскрываются
различные способы запуска любого таймера.
Функции счета, описываемые в разделе 3.4 также реализуются программным
путем, т.е. установка счетчика или прямой и обратный счет опираются на
центральный процессор. В этом же разделе приводится внутренняя структура
слова счета в центральном блоке.
С помощью бит-тестовых функций можно в двоичном виде, т.е. по битам,
производить опрос и независимую от результата логической операции установку
или сброс дискретных операндов /напр., слов данных/Уем. раздел 3'.5/.

3.1 Двоичные логические операции

Описываемые в этом разделе логические операции представляют собой функции


И и ИЛИ, а также комбинации этих обеих функций.
В разделе 3.1.1 дано описание функции И. Показано, как производить присвоение,
например, выходу, результата, полученного в логической операции. Раздел 3.1.2
раскрывает программирование функции ИЛИ.
В последующих разделах дано описание комбинаций этих двух функций. Операцию
И- перед -ИЛИ в разделе 3.1.3 можно программировать без скобок, тогда как для
реализации приводимой в разделе 3.1.4 операции ИЛИ- перед -И необходимо
обратиться к скобкам.

65
В разделе 3.1.5 показано, как в процессоре происходит формирование и дальнейшая
обработка логических результатов с помощью инструкций языка STEP 5. Здесь
также раскрывается понятие "результат опроса", принцип первичного опроса, а
также обработка выражений в скобках.
В разделах 3.1.1 - 3.1.5 дано такое описание примеров, как если бы к устройству
автоматизации были подключены внешние нормально открытые /НО/ контакты.
Что должно учитываться при программировании при наличии внешне
подключенных нормально закрытых /НЗ/ контактов, подробно объяснено в 1 томе
"Программирование основных функций". Этот том дает также руководство по
преобразованию таких операций, которые не поддаются прямому
программированию на языке STEP 5.
Другими двоичными инструкциями языка STEP 5, с помощью которых можно
формировать в процессоре логические результаты и влиять на них, являются бит-
тестовые инструкции. Их описание дано в разделе 3.5.
В устройстве автоматизации S5-150S возможен двоичный опрос данных. Область
операндов простирается от D0.0 до D255.15. Двоичные операции над этими
операндами не поддаются ни индицированию /т.е. обработке операциями BDW или
BMW /, ни замещению, так как эти операции, как и бит-тестовые инструкции, в
машинном коде МС 5 записаны в виде двухсловных инструкций.
При использовании операнда данных D следует обращать внимание на то, чтобы
предварительно был правильно вызван блок данных. Операнд D обращается
всегда к только что вызванному блоку данных.

3.1.1 Операция И, присвоение


С помощью операций И или И-НЕ производится опрос операндов и обработка
состояний их сигналов по функции И. От этого логического результата зависит
установка или сброс операнда. В качестве операндов при операциях опроса и
установки могут использоваться входы - Е, выходы А, метки М и данные D. Эти
операнды программируются в двоичном виде, т.е. к адресу байта или слова
необходимо еще указать адрес бита.

66
Пример:
:U E 5.0
:U A 7.3
:UN M 10.6
:= A 3.2
Операнды опрашиваются последовательно и результат опросов обрабатывается по
функции И. Опрос на состояние "I" и обработка его по И обозначена операцией "U".
В связи с этой операцией стоит операнд, который указывает, что нужно опрашивать.
В нашем примере это вход Е 5.0 и выход А 7.3. Если эти операнды имеют состояние
"I", то и результатом опроса будет "I". Результат опроса является тем состоянием
сигнала, над которым производится логическая операция. Если эти операнды имеют
состояние "О", то и результат опроса "О". Опрос на состояние "О" и его сопряжение
по И обозначается как операция И-НЕ "UN".
В нашем примере на состояние "О" опрашивается метка М 10.6. Результат равен "I",
если этот операнд имеет состояние "О". Если операнд, опрашиваемый на "О", имеет
состояние "I", результат опроса будет "О". В первой инструкции процессор
опрашивает вход Е 5.0/"первичный опрос", см. также раздел 3.1.5/. Результат
опроса запоминается. В следующей инструкции опрашивается выход А 7.3.
Результат этого опроса по функции И сопрягается с уже имеющимся в процессоре
результатом первого опроса и формируется новый результат /результат логической
операции (VKE)
Этот результат логической операции запоминается и сопрягается с результатом
следующего опроса, и т.д. Результат, стоящий в конце логической операции, может
быть использован для дальнейшей обработки. Логическая операция считается
выполненной, если ее результат "I", и она не выполнена, если результат "О".
Функция И считается выполненной в том случае, если все опросы этой функции
дают результат "I". Если один или несколько опросов дают результат "О", то это
сопряжение считается невыполненным.
С помощью логического результат можно, например, управлять выходом. В нашем
примере логический результат Функции И присвоен выходу А 3.2 / = А 3.2/. Если
сопряжение выполнено, происходит установка выхода А 3.2, т.е. он имеет состояние
"I"/. В нашем примере это произойдет в том случае, когда вход Е 5.0 и выход А 7.3
будут иметь состояние "I", а метка М 10.6 - состояние "О". При невыполненной
операции происходит сброс выхода А 3.2 /т.е. он устанавливается в состояние "О"/.

67
3.1.2 Операция ИЛИ

С помощью операций ИЛИ или ИЛИ-НЕ производится опрос операндов и


обработка состояний их сигналов по функции ИЛИ. Сформированный таким
образом логический результат дает установку или сброс операнда. В качестве
операндов при операциях опроса и установки могут использоваться входы Е,
выходы А, метки М и данные D. Эти операнды программируются в двоичном
виде, т.е. к адресу байта или слова необходимо еще указать адрес бита.

Пример:

:O E 17.1
:ON M 3.5
:O A 5.6
:= A 2.7

Операнды опрашиваются последовательно и результат опросов обрабатывается по


функции ИЛИ. Опрос на состояние "I" и сопряжение опрошенного состояния по
ИЛИ обозначается как операция "О". В нашем примере с этой операцией связаны
операнды Е 17.1 и А 5.6. Если эти операнды имеют состояние "I", то и результат
опроса "I". Опрос на состояние "О" и сопряжение опрошенного состояния сигнала
по функции ИЛИ обозначается как операция ИЛИ-ИЕ "ON" В нашем примере это
будет метка М 3.5. Если он имеет состояние "О", результат опроса будет "I".
Процессор обрабатывает инструкции по очереди. Результат опроса первой
инструкции /0 Е 17.1/ запоминается процессором и сопрягается по ИЛИ с
результатом опроса следующей инструкции. /"Первичный опрос" см. также раздел
3.1.5/. Полученный в ходе такой логической операции результат вновь
запоминается в процессоре и в свою очередь сопрягается в результатом опроса
следующей инструкции, и т.д. Результат, стоящий в конце логической операции,
может быть подвергнут дальнейшей обработке.

68
Функция ИЛИ считается выполненной в том случае, когда один или несколько
операндов в результате опроса имеют состояние "I". Если все операнды этой
функции имеют результат "О", они считается невыполненной. В нашем примере
выход А 2.7 устанавливается при выполненной функции ИЛИ и сбрасывается, если
функция ИЛИ не выполняется. Выход А 2.7 будет иметь состояние "О" только при
условии, что вход Е 17.1 и выход А 5.6 имеют состояние "О", а метка М 3.5 -
состояние "I"
Количество операций опроса в одном логическом сопряжении теоретически может
быть произвольно большим. Точно также произвольной является
последовательность и соотношение чередования опросов на состояние "I" и на
состояние "О".
Сформированные в результате опросов инструкции МС 5 являются однословными
инструкциями, за исключением полученных в результате логических операций с
областью операндов данных D.

3.1.3 Операция И-перед-ИЛИ

Эту операцию, состоящую из функций И и ИЛИ, в Булевой алгебре можно


записывать без скобок. Нужно определить, что "сначала" обрабатываются функции
И. Затем результаты сопряжении по И обрабатываются по функции ИЛИ.
Специальный процессоров битов в устройстве автоматизации позволяет
производить эту обработку "И- перед -ИЛИ".

69
Выход А 2.6 имеет состояние "I", если входы Е 2.2 и Е 2.7 или метки М 8.0 и М
1.3 имеют состояние "I".
Первая функция И /Е 2.2 и Е 2.7/ связывается со следующей функцией И /М 8.0 и М
1.3/ одним единственным 0 /функцией ИЛИ/. К этой операции всегда прибегают в
тех случаях, когда, функцию И ставят "перед" функцией ИЛИ. Единственное 0
программируется перед функцией И, после функции И оно больше не требуется.

Как функции И, так и состояния сигналов меток ведут к функции ИЛИ, которая
управляет выходом А 2.7.

3.1.4 Операция ИЛИ-перед-И

Эту операцию, состоящую из функций И и ИЛИ, в Булевой алгебре необходимо


писать со скобками, чтобы показать, что функции ИЛИ обрабатываются перед
функцией И.
На языке программирования STEP 5 функции ИЛИ также ставятся в скобки.
"Скобки открыть" и "скобки закрыть" программируется отдельно. "Скобки
открыть" "комбинируется" с функцией И или ИЛИ. Программирование внутри
выражения в скобках производится как описано в разделах 3.1.2 и 3.1.3. Входы,
ведущие непосредственно к функциям И, программируются как описано в разделе
3.1.1. Полученный логический результат поступает в распоряжение всей операции.

70
Результаты операций по функциям ИЛИ обрабатываются по И. Результат
логической операции по функции И присваивается выходу А 1.7.
В чисто двоичных логических операциях функция "открыть скобку" всегда связана с
функцией И, так как "открыть скобку" пишется только в тех случаях, когда
функцию ИЛИ нужно поставить перед функцией И. Язык программирования STEP
5 позволяет также использовать скобки, если требуется промежуточная запись
логического результата /см. разделы 3.2.2 и 4.3.3/. В таком случае также может
встречаться сочетание функции "открыть скобку" с функцией ИЛИ. Тогда пишется
инструкция "О(".

Суперпозиционирование скобок

Выражения в скобках могут суперпозиционироваться, т.е. одно выражение в


скобках может содержать в себе в свою очередь еще одно выражение в скобках.
Глубина таких вложений в различных устройствах автоматизации имеет следующие
значения:

У-во автоматизации Кол-во уровней скобок

71
3.1.5 Обработка результата логической операции, первичный опрос

Результат логической операции


Результат логической операции - это состояние сигнала в процессоре устройства
автоматизации, используемое в дальнейшей двоичной обработке сигнала. Этот
результат может сопрягаться с состоянием сигнала операндов или же операнды
подвергаются воздействию в зависимости от результата логической операции.
Опрос состояний сигнала операндов производится через инструкции опроса.
Инструкция опроса содержит одновременно тип логической операции, в
соответствии с которой состояние опрошенного сигнала должно быть увязано с
логическим результатом, хранящимся в процессоре.

72
Примеры:

: U E 17.1 Опрос входа Е 17.1 и обработка состояния сигнала по функции И


: O M 20.5 Опрос метки М 20.5 и обработка по функции ИЛИ

Результат опроса

Если подходить буквально, то с результатом логической операции увязывается не


состояние сигнала опрошенного операнда, а сначала должен быть образован
результат опроса. Этот результат опроса и подвергается дальнейшей обработке.
Результат опроса при опросах на "I" идентичен состоянию сигнала опрошенного
операнда. При опросах на состояние "О" результат опроса представляет собой
инвертированное состояние сигнала опрошенного операнда.

Примеры:

Инструкция Состояние Результат опроса сигнала


операнда

73
Условные операции

Условными операциями называются операции, исполнение которых зависит от


логического результата. Это операции присвоения, установки и сброса входов,
выходов, меток и данных; запуска таймеров и счетчиков ;условные переходы и
условные вызовы и т.д.
Образованный через инструкции опроса, логический результат используется для
выполнения этих условных операций /при логическом результате "I"/ или для ее
невыполнения /при логическом результате "О"/. Логический результат при
обработке условных операций не изменяется /исключение составляют: условный
переход, условные вызовы, условный конец блока/, благодаря чему одним и тем же
логическим результатом можно обрабатывать несколько условных операций.

Пример:

: U E 31.4
: UN E 7.5
: = A 3.0
: S A 5.5
: R M 10.3

Первичный опрос
Первая инструкция опроса, которая обрабатывается после условной операции,
называется первичным опросом. Она имеет особое значение, так как результат
опроса этой инструкции непосредственно поступает в процессор как логический
результат. "Старый" логический результат тем самым утрачивает силу. Первичный
опрос всегда является началом логической операции.

74
Результат первичного опроса запоминается процессором без логического
сопряжения. Сопряжение производится только лишь при следующем опросе.
Поэтому вид логической операции первичного опроса не является определяющим.
Например, можно менять местами И и ИЛИ, И-НЕ с ИЛИ-НЕ и наоборот. Однако
во избежание путаницы при программировании этого делать не следует.

Обработка выражений в скобках

Инструкция опроса после инструкции "скобку открыть" всегда будет первичным


опросом, так внутри выражения в скобках логический результат должен быть
образован заново. Инструкция опроса после инструкции "скобку закрыть" никогда
не является первичным опросом, так как - если выражение в скобках стоит в начале
логической операции - логический результат выражения в скобках рассматривается
как первичный опрос. Это же самое справедливо и для многоуровневых выражений
в скобках.

75
Пример:
.
.
.
:= A 20.3
:U( 1)
:O E 15.3 2)
:O E 11.4
:) 3)
:U E 23.6 4)
:U( 5)
:ON E 16.0 6)
:O E 16.4 7)
:) 8)
:U E 24.0
:= A 13.1
.
.
.

1)
В начале логической операции стоит выражение в скобках, которое открывается
инструкцией "U" . Общий логический результат этого выражения в скобках после
обработки последнего переходит непосредственно в процессор как состояние
сигнала первичного опроса.

2)
Первый опрос внутри выражения в скобках является первичным опросом, так как
логический результат внутри выражения еще только предстоит образовать.

3)
Операцией ")" закрывается выражение в скобках. Логический результат
выражения в скобках, поскольку речь идет о выражении в начале логической
операции, поступает для дальнейшей обработки непосредственно в процессор.
4)
Результат опроса этой инструкции сопрягается с уже имеющимся в процессоре
логическим результатом. Полученный результат запоминается процессором как
актуальный логический результат.

76
5)
Хранящийся в процессоре логический результат заносится в стек. Процессор
"освобождается" для операции внутри выражения в скобках.

6)
Этот опрос, стоящий после инструкции “U” , является первичным опросом
логической операции внутри скобок. Результат опроса этой инструкции переходит
непосредственно в процессор.

7)
Логический результат выражения в скобках и хранящийся в стеке "старый"
логический результат сопрягаются друг с другом. Полученный результат
становится для процессора актуальным.

8)
Результат этого опроса сопрягается с уже имеющимся в процессоре логическим
результатом. Актуальным становится новый результат, который в нашем
примере управляет выходом А 13.1.

3.2 Функции памяти


Язык программирования STEP5 позволяет производить прямое про-
граммирование функций логических операций /коммутационные сети/ и функций
памяти /коммутационные аппараты/. Основой функции памяти является триггерное
ЗУ /ЗУ сброса и установки/, программирование которого рассматривается в разделе
3.2.1. Принятая в электросхемах процедура создания запоминающего состояния
через самоудержание показана в первом томе "Программирование основных
функций" функции запоминания выступают не только как "статические" запоми-
нающие устройства. При сложных логических операциях иногда возникает
необходимость запоминать промежуточные результаты для обращения к ним в ходе
дальнейшего программирования. В качестве ЗУ промежуточных результатов в
распоряжении имеется область операндов "метки". Метка устанавливается,
сбрасывается и опрашивается как выход /раздел 3.2.2/.

77
Благодаря обработке фронтов возможно программно-техническое распознание
смены состояния сигнала. В разделе 3.2.3 описываются два различных вида
реализации обработки фронтов, а в разделе 3.2.4 - применение обработки фронтов
на примере двоичного преобразователя.
Область операндов "метки" в устройствах автоматизации, как правило, защищена
батареей, т.е. метки "реманентны". Они сохраняют свои состояния при
исчезновении напряжения. При восстановлении напряжения можно опрашивать
состояние сигналов. Обходным путем через метку можно также получить
реманентную характеристику для любого выхода /раздел 3.2.5/.

В устройствах автоматизации S5-110S, S5-130W, S5-150A, S5-150K и S5-150S в


распоряжении имеется отображение процесса на входах. Для имитации входных
сигналов можно устанавливать и сбрасывать биты этого отображения процесса
/раздел 3.2.6/.
В разделе "Функции памяти" описывается установка и сброс двоичных операндов
"входы", "выходы" и "метки". Установка или сброс отдельных битов слова данных
или операндов из областей таймеров и счетчиков рассматривается в разделе 3.5 на
примере раскрываемых там бит-тестовых инструкций.
В устройстве автоматизации S5-150S возможно в двоичном виде производить
установку, сброс и присвоение данных. Область операндов простирается от D0.0
до D255.15. Двоичные операции с этими операндами не допускают индикации /т.е.
обработки операциями BDW или BMW/ и подстановки, так как эти операции, как и
бит-тестовые инструкции, в машинном коде МС5 записываются как двухсловные
инструкции.
При использовании операнда о следует обращать внимание на предварительный
правильный выбор блока данных. Операнд данных D всегда обращается к только
что выбранному блоку данных.

78
3.2.1 RS - память

В языке программирования STEP5 известны также операции для Функций памяти.


Операция S служит для установки, операция R - для сброса памяти.
При обработке операции S логическим результатом "I" происходит установка
операнда. В приводимом ниже примере выход А 4.0 устанавливается' при условии,
что вход Е 7.0 имеет состояние "I". "Выход установлен" означает, что выход имеет
состояние "I". Если операция установки /при установленных операндах/
обрабатывается логическим результатом "О", т.е. если вход Е 7.0 вновь имеет
состояние "О", операнд /выход А 4.0/ остается установленным. Он не изменит также
своего состояния, если он будет повторно обработан результатом "I" или "О".
Операнд сбрасывается, если операция сброса обрабатывается логическим
результатом "I". В приводимом ниже примере выход А4.0 сбрасывается, если вход Е
7.1 имеет состояние "I". "Выход сброшен" означает, что состояние сигнала на
выходе "О".
Если операция сброса "при сброшенных операндах/ обрабатывается результатом
"О", операнд остается сброшенным. Он не изменит своего состояния: если операция
сброса повторно будет обработана логическим результатом "I" или "О".

Функция памяти с приоритетом сброса

При обработке операции установки и сброса логическим результатом "I"


выполняются обе операции. В этом случае важна последовательность
программирования /и тем самым последовательность обработки/. В
вышеприведенном примере сначала выполняется операция установки;
устанавливается выход А 4.0. Затем выполняется операция сброса, выход вновь
сбрасывается.
На весь остаток обработки программы выход А 4.0 остается сброшенным. Эта
кратковременная установка выхода А 4.0 производится только в отображении
процесса и не влияет на. состояние сигнала на относящемся сюда блоке периферии.
Отображение процесса, на выходах

79
переносится на блоки периферии только в конце программы

Функция памяти с приоритетом установки

При обработке операций установки и сброса логической "I" выполняются обе


операции. В этом случае важна последовательность программирования /и тем
самым последовательность обработки/. В вышеприведенном примере сначала
выполняется операция сброса; сбрасывается выход А 4.1. Затем выполняется
операция установки ; устанавливается выход А 4.1.
На. весь остаток обработки программы выход А 4.1 остается установленным.
Этот кратковременный сброс выхода А 4.1 производится только в отображении
процесса и не влияет на состояние сигнала на относящемся сюда блоке периферии
во время обработки программы. Отображение процесса на выходах переносится на
блоки периферии только в конце программы.

3.2.2 Запоминание двоичных промежуточных результатов

В сложных логических операциях иногда бывает необходимо запомнить


промежуточные результаты и опрашивать и обрабатывать их в ходе дальнейшей
программы. Для этого промежуточного запоминания в распоряжении имеется
область операндов "метки" М. Программно метка может обрабатываться как выход.
Однако он не ведет "наружу". Кроме того эта область операндов остается под током
за счет имеющейся в аппарате батареи даже при исчезновении напряжения,
благодаря чему обеспечивается реманентное запоминание /см. раздел 3.2.5/.
Для запоминания промежуточных результатов нельзя использовать отображение
процесса на выходах. Программно-техническое воздействие на отображение
процесса тех выходов, которые не имеют присвоенных им блоков периферии,
регистрируется процессором и интерпретируется им как сбой. Это задумано как
защита от ошибочного программирования /или от неисправных блоков периферии/
и в устройствах AG S5-110S, AG S5-130W, AG S5-150A, AG S5-150K И AG S5-150S
охватывают также и входы /см. том 2 "Использование стандартных
функциональных блоков"/.
Метка, программируемая для промежуточного запоминания логических
результатов, называется "буферной меткой".
Метки, используемые в качестве буферных, внутри программы могут применяться
многократно. При этом следует учитывать, что буферная метка сначала
устанавливается и затем опрашивается, и что, если вновь установить ту же самую
буферную метку, "старого" промежуточного результата в дальнейшем ходе
программы уже не будет.
80
Буферные метки, опрашиваемые в общей программе, могут использоваться только
один раз.

Пример:

Результат 1-й логической операции используется как во 2-й, так и в 3-й


операции. Метка М 1.0 устанавливается как буферная. Эта метка опрашивается
во 2-й и 3-й логической операции и ее состояние сигнала подвергается
дальнейшей обработке.

81
Метка с запоминанием

Метки можно программировать таким образом, что они становятся


запоминающими. В этом случае действуют те же самые правила, что и
описываемые в разделе 3.2.1 для области операндов выходов. (Как и у выходов,
запоминающая характеристика меток получается за счет обратной связи.)

Пример:

Приведенный пример содержит метку с запоминанием /метка М 11.0/.


Метка М 11.0 устанавливается, если на входе Е 8.2 и входе Е 8.3 сигнал "I". Она
сбрасывается, если вход Е 8.4 или вход Е 8.5 имеют состояние "I" . Сброс имеет
приоритет, так как он запрограммирован после установки.
Выход А 4.4 имеет состояние "I", если метка М 11.0 установлена если вход Е 8.6
имеет состояние "I".

Запоминание промежуточных результатов с помощью ЗУ скобок


Внутри выражения в скобках можно программировать не только двоичные
логические операции, но и все основные Функции языка программирования STEP 5
Нужно только обращать внимание на то, чтобы выражение в скобках завершалось
как положено операцией "скобку закрыть".

82
Операцией "скобку открыть" процессор запоминает полученный ранее логический
результат и начинает новый шаг логической операции /см. раздел 3.1.5: "Обработка
выражений в скобках"/. Установившийся при операции "скобку закрыть"
логический результат сопрягается с записанным в памяти логическим результатом.

Пример:

Функция памяти в выражении в скобках

Состояние сигнала метки М 103.4 сопрягается с состояниями входов Е 22.0 и Е 31.6


с выходом А 50.3 по функции ИЛИ.

3.2.3 Обработка фронтов


К обработке фронтов прибегают для регистрации и оценки нарастающего или
ниспадающего фронта сигнала. "Фронт" наблюдается при изменении сигналом
своего состояния /например, на входе/. Нарастающий фронт имеет место при
изменении состояния сигнала с "О" на "I". В обратном случае имеет место
ниспадающий фронт. Распознание смены сигнала происходит программным путем.
При каждом его проходе через накопитель программ происходит проверка на изме-
нение состояния сигнала /например, входа/ по сравнению с предыдущим проходом.
Старое состояние сигнала на входе записывается, чтобы иметь возможность
сравнивать его с новым состоянием. Эта задача возложена на метки /"метки
фронтов"/.

83
Обработка фронтов с помощью импульсных меток
Обработка фронтов с помощью импульсных меток программно выполняется таким
образом, что ее помимо функциональных блоков можно программировать в
программных и организационных блоках. Тем самым для обработки фронтов
получают всегда одинаковую последовательность инструкций.
Импульсная метка устанавливается, если состояние сигнала метки фронта не
совпадает с состоянием сигнала входа. Эта импульсная метка служит в качестве ЗУ
промежуточных результатов; соответственно она может использоваться
многократно.
При наличии фронта сигнала импульсная метка имеет состояние "I". В дальнейшем
его можно опрашивать и использовать в логических операциях.
После распознания фронта метка фронта должна быть приведена в соответствие с
входным сигналом, с тем чтобы во время следующего цикла обработки процессор
не. принял ее за новую метку. Это слежение возложено на импульсную метку.

Структура программы обработки фронта с помощью импульсной метки


Programmstruktur einer Ftankenauswertung mit tmputsmerker

1. Начало
2. На входе другое состояние сигнала, чем на метке фронта?
3. Да
4. Нет
5. Сброс импульсной метки
6. Установка импульсной метки
7. Приведение метки фронта в соответствие
8. Последующая обработка импульсной метки
9. Конец

84
Фронт нарастает, если вход Е 10.5 имеет состояние сигнала "I", a метка фронта М
50.0 - состояние "О". Тогда и импульсная метка М 100.0 имеет состояние "I". При
установлении импульсной метки устанавливается также метка фронта М 50.0. При
состоянии "О" на входе Е 10.5 метка Фронта М 50.0 вновь сбрасывается.

Обработка нисходящего фронта

фронт падает, если вход Е 10.6 имеет состояние "О", а метка фронта М 50.1 -
состояние "I". Тогда и импульсная метка М 100.0 имеет состояние "I". При
установлении импульсной метки метка фронта М 50.1. сбрасывается. При состоянии
"I” на входе Е 10.6 метка фронта вновь устанавливается..

Обработка фронтов при условном переходе


Второй вариант обработки фронтов применяется только внутри функциональных
блоков, так как здесь работа ведется с "условным переходом SPB " /см. раздел 5.2/.
Эту операцию нельзя программировать в программных или организационных
блоках.

85
Обработка фронтов с помощью условного перехода дает по сравнению с обработкой
фронтов с помощью импульсной метки преимущество, заключающееся в том, что
определенная часть программы после фронта проходит и обрабатывается' один
единственный раз. Принцип обработки Фронтов с помощью условного перехода
заключается в том, что какая-то часть программы перескакивается только при
отсутствии фронта. Т.е. условный переход SPB всегда должен выполняться, только
при отсутствии фронта и не выполняется, если программные средства распознали
наличие Фронта сигнала.

1. Начало
2. Вход имеет такое же состояние сигнала, что метка фронта ?
3. Да
4. Нет
ё. Приведение метки фронта в соответствие
6. Часть программы, которая должна обрабатываться только при наличии фронта
7. Конец

86
Примеры:

Обработка нарастающего фронта

Сброс метки фронта М 50.2. если вход Е 10.7 имеет состояние


сигнала "О".
Последовательность этих инструкций дает логический результат
"О" только при нарастании фронта на входе Е 10.7. Во всех
остальных случаях логический результат будет "I".
Этот условный переход всегда выполняется при условии, что
логический результат равен "I .
Приведение метки фронта в соответствие. Так как после операции
SPB логический результат всегда "I" /см. раздел 5.2/, происходит
установка метки М 50.2.
Часть программы, которая должна обрабатываться только при
нарастающем фронте
Дальнейшая программа STEP-5

Обработка нисходящего фронта

Установка метки фронта М 50.3, если вход Е 11.0 имеет


состояние сигнала "I".
Последовательность этих инструкций дает логический результат
"О" только при наличии нисходящего фронта на входе Е 11.0. Во
всех остальных случаях логический результат равен "I".
Этот условный переход всегда выполняется при условии, что
логический результат равен "I .
Приведение метки фронта в соответствие. Так как после
операции SPB логический результат всегда "I" /см. раздел 5.2/,
происходит сброс метки М 50.3.
Часть программы, которая должна обрабатываться только при
нарастающем фронте
Дальнейшая программа STEP-5 .

87
3.2.4 Двоичный преобразователь

Двоичный преобразователь является функциональным звеном с одним входом и


одним выходом. При изменении сигнала на входе двоичного преобразователя,
например, из состояния "О" в состояние "I" произойдет изменение состояния
сигнала на. выходе. Это /новое/ состояние сигнала сохраняется до следующей, в
нашем примере положительной, смены сигнала. После этого вновь произойдет
изменение состояния сигнала на выходе. Таким образом на выходе этого
функционального звена появляется половина входной частоты.

Импульсная диаграмма

Для решения этой задачи требуется обработка фронтов. В соответствии с


показанными в разделе 3.2.3 обработками фронтов двоичный преобразователь также
можно программировать двумя различными способами. Есть двоичные
преобразователи с импульсными метками, и есть двоичные преобразователи с
условным переходом.

Двоичный преобразователь с импульсной меткой


Этот вид программирования допускается использовать в программных и
организационных блоках. Запрограммированный таким способом двоичный
преобразователь не поддается графическому изображению. /Графически
изображаемые двоичные преобразователи приведены в 1 томе: "Программирование
основных функций/.
Здесь применяется обработка фронта, с импульсной меткой для нарастающего
фронта, как указано в разделе 3.2.3. Такое программирование позволяет
регистрировать нарастание фронта сигнала на входе Е 14.4.

88
Как только выход сброшен и импульсная метка имеет состояние "I", происходит
установка выход. Если выход уже был установлен, а импульсная метка имеет
состояние "I", происходит сброс выхода.

Если выход А 4.3 устанавливается, импульсная метка должна сбрасываться., чтобы


предотвратить немедленный сброс выхода А 4.3. Эта программа не поддается
графическому изображению, что обусловлено таким сбрасыванием импульсной
метки.

Двоичный преобразователь с условным переходом

Этот вид программирования допускается лишь в функциональных блоках, так как


только здесь допустим условный переход SPB.
Обработка фронтов с условным переходом осуществляется также, как описано в
разделе 3.2.3. Благодаря такой последовательности инструкций фрагмент
программы с выходом двоичного преобразователя обрабатывается только при
нарастающем фронте сигнала на входе ЕI4.5.

89
Как только выход А 4.4 сброшен, опрос И-НЕ А 4.4 дает результат "I" и происходит
установка выхода. Если выход А 4.4 установлен, опрос И-НЕ А 4.4 дает результат
"О", который затем присваивается выходу. Выход сбрасывается.
Несмотря на применение присвоения выход А 4.4 является запоминающим, так как
этот фрагмент программы обрабатывается только при наличии фронта. Во всех
остальных случаях он не обрабатывается, благодаря чему выход сохраняет
состояние сигнала.

3.2.5 Реманентная память (Энергонезависимое ЗУ)

В системе автоматизации SIMATIC S5 метки буферизируются. Благодаря этому


они сохраняют первоначальное состояние своих сигналов примерно в течение 4
недель после отключения напряжения. Выходы же, напротив, при восстановлении
напряжения сбрасываются. Чтобы получить реманентную характеристику выходов,
состояние сигнала, которое должен иметь выход, отображается в метке. Тогда
соответствующий выход принимает состояние сигнала метки.
В устройствах автоматизации S5-110S и S5-130W буферизирована только
половина области меток. Тогда как метки с М 0.0 по М 127.7 сохраняют свое
состояние сигналов при отключении напряжения, метки с М 128.0 по М 255.6 при
восстановлении напряжения сбрасываются /как отображение процесса на выходах/.

Через вход Е .18.3 устанавливается метка М 150.0. С помощью входа Е 18.4 метка
М 150.0 вновь сбрасывается. Состояние сигнала метки присваивается выходу А
17.7.

90
3.2.6 Установка входов

Функции памяти могут также использоваться в области операндов "входы". Однако


это возможно только при условии, что присутствует отображение процесса на
входах. Отображение процесса представляет собой область памяти в данных
системы. Каждый раз в начале циклической обработки программы в эту область
памяти загружаются состояния сигналов входных блоков. После этого процессор
работает только с этой областью памяти. Таким отображением процесса для входов
располагают устройства автоматизации S5-110S, S5-130W, S5-150A, S5-150K И S5-
150S.
Установка и сброс входов, а также присвоение логического результата происходит
здесь также, как и на выходах или метках.

Установка входов используется при пуско-наладочных работах когда нужно


проимитировать входные сигналы. В качестве первого вызова блоков в
организационный блок OВ 1 записывается вызов программного блока.
В этом программном блоке происходит установка или сброс входов. Последующая
программа работает затем с этими измененными /имитируемыми/ параметрами
входов.

91
3.3 Функции времени

Реализованные в устройствах автоматизации таймеры представляют собой области


операндов в памяти центрального блока. Таймер в этой области операндов пред-
ставляет собой 16-разрядное слово. Это 16-разрядное слово включает в себя разряды
состояний, цену времени, а также параметр времени. Биты состояний необходимы
процессору для обработки Функций времени. Цена времени указывает временной
интервал, через который значение времени уменьшается на одну единицу.
Параметр времени указывает на количество прошедших единиц /см. раздел 3.3.1/.
Для запуска таймера, реализуемого программным путем, кроме операции пуска
дополнительно необходимо указать продолжительность времени. В разделе 3.3.2
показана структура параметра времени, заданного программой.
Поведение таймера при сбросе раскрывается в разделе 3.3.3. Здесь же приводится
рекомендуемая последовательность инструкций при программировании функций
времени. В разделе 3.3.4 описывается двоичный опрос функции времени.
С запуском таймера начинается его подготовка к новому запуску /раздел 3.3.5/. Как
только создаются необходимые условия, таймер вновь запускается.
В раздел 3.3.6 по 3.3.10 представлены различные программируемые характеристики
таймеров. Объясняется "нормальное" течение времени и воздействие на его течение
операций "сброс" и "пуск".
Опрос параметров времени и загрузка параметров времени (в числовом виде)
описаны в разделе 4.1.4.

3.3.1 Структура слова времени


Функции времени образуют в памяти центрального процессора область операндов.
.Для одного операнда "Время" выделяется 16-разрядное слово. Это 16-разрядное
слово содержит параметр времени, цену времени и бит состояния для обработки
функции времени в процессоре. Слово времени имеет следующую структуру:

92
I. Дискрета времени
2. Параметр времени
3. Вспомогательная метка для опроса
4. Метка фронта для запуска и деблокирования таймера

Ниже приводится описание назначения отдельных битов.


Биты № 0 - 9 Параметр времени
В этих разрядах записано значение времени в двоичном коде.
Параметр времени при запуске таймера переносится в слово
времени. При нормальной обработке времени параметр времени
уменьшается на одну дискрету. Параметр времени 000 означает, что
время истекло. Параметр времени может загружаться в
аккумулятор как в двоичном, так и в двоично-десятичном коде.
Бит № 10 Метка фронта для деблокирования
Операция "деблокирование" выполняется только при воздействии
нарастающего фронта логического результата. Этот разряд является
меткой фронта, которая позволяет процессору опознать фронт.
Бит № II Метка фронта для запуска таймера
Операции по запуску таймера, SI, SV, SE и SS выполняются только
при нарастающем фронте, а операция SA -при нисходящем фронте.
На этот разряд может воздействовать также операция, благодаря
чему для процессора имитируется фронт на пусковом входе. Таким
образом производится новый запуск таймера.
Биты № 12,13 Дискрета времени
В этих разрядах записывается в двоичном коде пена единицы
времени /дискрета/. При запуске таймера дискрета. переносится в
слово времени. Дискрета указывает на продолжительность времени,
в течение которого параметр времени уменьшается на одну
единицу.

93
Дискрета времени загружается только при кодированной загрузке
параметра времени LCT в аккумулятор.

Биты № 14,15 Вспомогательные метки для опроса


При двоичном опросе таймера происходит опрос этих
вспомогательных меток. Если состояние сигналов вспо-
могательных меток не одинаково, опросы на состояние "1" дадут
результат "I", а в противном случае - "О". Воздействие на 14-й
разряд происходит при запуске таймера; состояние "I" разряда № 15
указывает на то, что параметр времени больше 000 и что он обраба-
тывается процессором. При сбросе таймера оба разряда
устанавливаются в состояние "О".
Отдельные биты слова времени можно также опрашивать, устанавливать и
сбрасывать бит-тестовыми операциями, описываемыми в разделе 3.5, и таким
образом воздействовать на обработку времени.

3.3.2 Запуск таймера

Запуск таймера происходит при смене логического результата. Смена состояния


сигнала является обязательным условием запуска таймера. Процессор запускает
таймер только по нарастающему или по
падающему фронту (в зависим, от старта). Соответствующей меткой
Фронта является бит № II соответствующего слова времени. Эта метка Фронта
имеет состояние "I" при запуске таймера и состояние "О", если операция запуска
обрабатывается логическим результатом "О".
Таймер можно также запустить через операцию "деблокирование таймера" FRT
/см. раздел 3.3.5/.
Любой таймер можно запустить по одной из следующих пяти характеристик:

Ø в виде импульса,
Ø в виде удлиненного импульса,
Ø в виде задержки включения
Ø в виде задержки включения с запоминанием и
Ø в виде задержки отключения.
Эти пять характеристик раскрываются в разделах 3.3.6 - 3.3.10.

94
Задание времени
При запуске таймера в качестве параметра времени принимается значение,
хранящееся в аккумуляторе I. Как и когда это значение было загружено в
аккумулятор, роли не играет /см. также раздел 4.1.1 "Загрузка"/. В качестве
значения времени из аккумулятора берутся 16 битов, стоящих справа. Они должны
иметь следующее построение:

1. Заданное в двоично-десятичном коде значение времени


от 0 до 999
2. Заданная в двоично-десятичном коде дискретность времени
3. Эти биты роли не играют, т.е. при запуске таймера они не учитываются

Пример: Требуется задать время 127 секунд распределение


битов:

не учитываются

95
При задании в качестве константы продолжительности времени после указания
параметра времени через точку следует указание дискретности /см. раздел 4.1.4
"Загрузка параметров времени"/.
Заданный в десятичном виде параметр времени переносится в двоичном виде в
слово времени и там обрабатывается. В слове времени параметр записан в
двоичном коде /бит 0…9/. Остальные биты, наряду с дискретностью, содержат
также данные о состояниях, которые используются процессором для распознания и
обработки характеристики времени. В соответствии с заданной дискретностью
параметр времени после запуска таймера уменьшается на одну единицу, пока не
достигнет нулевого значения.

3.3.3 Сброс таймера

Таймер сбрасывается, если операции сброса предшествует логический результат


«I». До тех пор, пока это состояние сохраняется, опросы таймера на состояние «I»
дают результат «О», а опросы на «О» –результат «I». При сбросе значение времени
устанавливается в ноль /сбрасывается/.
Если сброс таймера должен действовать «статично» и независимо от логического
результата на стартовом входе таймера, нужно чтобы сброс таймера
программировался сразу же после установки таймера и до его опроса.
Если таймер сброшен, параметр времени, дискретность времени и биты образования
статуса таймера /биты № 14 и 15/ устанавливаются в состояние «О». Без изменения
остаются только метки фронтов для запуска таймера /бит № II/ и деблокирования
таймера /бит № 10/.

96
Пример:

Последовательность программирования таймеров Пример:

I. Запуск таймера
2. Сброс таймера
3. Двоичный опрос таймера

3.3.4 Опрос таймера

Таймер можно опрашивать так же, как, например, и вход, а результат опроса
использовать в последующих логических операциях. В зависимости от
характеристики Функции времени опрос на состояние "I" даст различные варианты
временных процессов /см. разделы 3.3.6 -3.3.10/. Опрос на состояние "О", как и при
опросе входов, например, дает прямо противоположный результат, чем опрос на
состояние "I". Для получения результата при опросе таймера опрашиваются биты №
14 и № 15 соответствующего слова времени. Опрос на состояние "I" даст в
результате "I", если оба бита имеют различное состояние
сигналов. Если оба бита имеют одинаковое состояние сигналов, результат опроса
"О".
/Установка битов № 14 и № 15 в слове времени описывается в разделе 3.3.1/.

97
3.3.5 Деблокирование таймера
Деблокирование таймера осуществляется при смене перед операцией
деблокирования логического результата с "О" на "I". Такая смена состояния сигнала
обязательно должна предшествовать деблокированию таймера. Процессор
выполняет операцию деблокирования только при наличии нарастающего
фронта сигнала. Соответствующей меткой Фронта является бит № 10 каждого
слова времени.
Для запуска таймера и для нормального временного процесса необходимости в
деблокировании таймера нет. К деблокированию прибегают при новом старте,
чтобы возобновить отсчет времени от исходной точки. Это возможно только при
условии, что стартовая операция по-прежнему обрабатывается результатом "I".
После выполнения операции деблокирования- происходит сброс бита № II в слове
времени /метка Фронта для запуска таймера/. Если и следующая стартовая операция
обрабатывается результатом "I", процессор "распознает" нарастающий фронт
сигнала. Произойдет установка метки и новый запуск таймера. Запуск произойдет
на полную продолжительность установленного времени. Если для задания
продолжительности времени используется переменная величина, то при запуске
подставляется актуальное значение времени.
Операция по деблокированию таймера служит исключительно для того, чтобы
производить повторный запуск таймера, не прибегая предварительно к обработке
стартовой операции логическим нулем. Деблокирование таймера при различных
вариантах временных процессов показано в разделах 3.3.6 - 3.3.10.

1. Деблокирование таймера
2. Запуск таймера как импульс
3. Опрос таймера

98
t- запрограммированная продолжительность времени
1
При работающем таймере происходит новый запуск. С момента выполнения
операции деблокирования таймер отсчитывает полностью запрограммированное
время.
2
Так как логический результат при операции запуска еще равен "I", происходит
новый запуск таймера.

3
При логическом результате "О" при операции запуска выполнение операции
деблокирования влияния не имеет.

3.3.6 Запуск таймера со временем в виде короткого импульса

99
Характеристика времени в виде короткого импульса

t- запрограммированная продолжительность времени

1
Если логический результат на входе запуска таймера изменяется с "О" на "I',
происходит запуск таймера. Он работает с запрограммированной
продолжительностью времени до тех пор, пока на входе запуска сохраняется
состояние "I'. Опросы на состояние "I' будут давать результат "I" в течение всего
времени работы таймера.

2
Если логический результат на входе запуска таймера изменится на "О" до истечения
времени, метка фланга времени и вспомогательная метка для двоичного опроса на
состояние "О" окажутся установленными. Опрос таймера на состояние "I" даст
результат "О". Остальные биты слова времени останутся без изменений. Стоящий в
слове времени параметр времени показывает, на сколько раньше был прерван отсчет
времени.

100
Характеристика при сбрасывании

t= запрограммированная продолжительность времени


1
Если во время отсчета времени на вход сброса таймера подать логический
результат "I", произойдет сброс таймера. Опрос на состояние "I" даст результат "О".
Параметр времени и дискретность также будут сброшены в ноль.
Если логический результат на входе сброса сменит свое состояние с "I" на "О", на
таймере это не скажется.

2
При неработающем таймере логическая "I" на входе сброса влияния не имеет.

3
Если логический результат на входе запуска при наличии сигнала сброса сменит
свое состояние с "О" на "I", таймер хотя и окажется запущенным, однако
немедленно будет снова сброшен запрограммированной операцией сброса /на
диаграмме сброс обозначен штрихом/. Учитывая последовательность
программирования, описанную в разделе 3.3.3, на двоичном опросе таймера эта
операция не скажется.

101
Характеристика при деблокировании

t-запрограммированная продолжительность времени

1
Если во время отсчета логический результат на входе деблокирования изменится' с
"О" на "I", то отсчет времени начнется заново. При этом новом запуске
запрограммированная продолжительность времени принимается как заданное
значение. Смена логического результата на входе деблокирования с ''I" на "О"
влияния не оказывает.

2
Смена логического результата на входе деблокирования с "О" на "I" и подача на
вход запуска логической "I" неработающего таймера ведет также к запуску таймера
с запрограммированной продолжительностью времени в виде короткого импульса.

3
Смена логического результата на входе деблокирования с "О" на "I" при наличии
на входе запуска логического "О" на таймер не влияет.

102
3.3.7 Запуск таймера со временем в виде продленного импульса

Пример:

Характеристика времени в виде продленного импульса

t- запрограммированная продолжительность времени

1,2
Смена логического результата на входе запуска таймера с "О" на "I" ведет к запуску
таймера. Он отсчитывает запрограммированное время независимо от дальнейших
изменений логического результата на входе запуска. До тех пор, пока ведется
отсчет времени, опросы на. состояние "I" будут давать результат "I".

103
3
Смена логического результата на входе запуска с "О" на "I" во время работы
таймера ведет к повторному запуску времени с запрограммированной
продолжительностью.

Характеристика при сбрасывании

1,2
Если на входе сброса во время работы таймера появляется "I", происходит сброс
времени. Опрос на состояние "I" даст тогда результат "О". Параметр времени и его
дискретность также сбрасываются на "О".
Смена логического результата на входе сброса с "I" на "О" при наличии на входе
запуска логической "I" на таймер не влияет.

3
Если при поступлении сигнала сброса логический результат на входе запуска
сменит свое состояние с "О" на "I", запуск таймера хотя и произойдет, однако
тотчас же из-за запрограммированного далее сброса время окажется сброшенным
/на диаграмме показано штрихами/ Если учесть последовательность
программирования, указанную в разделе 3.3.3, то двоичный опрос от этого не
изменится.

104
Характеристика при деблокировании

1
Смена логического результата на деблокирующем входе с "О" на "I" при
работающем таймере ведет к повторному запуску времени. При этом новом запуске
запрограммированная продолжительность времени принимается как текущее
заданное значение. Смена логического результата на деблокирующем входе с "I" на
"О" на таймер не влияет.

2
Смена логического результата на деблокирующем входе с "О" на "I" при
неработающем таймере и при поступлении на вход запуска логического результата
"I" ведет к запуску таймера со временем, запрограммированным в виде продленного
импульса.

3,4
Смена логического результата на деблокирующем входе с "О" на "I" при наличии
на входе запуска логического результата "О" на таймер не влияет.

105
3.3.8 Запуск таймера со временем в качестве задержки включения

Пример:

106
Характеристика времени в качестве задержки включения

t= запрограммированная продолжительность времени

1
Смена логического результата на входе запуска таймера с "О" на "I" ведет к запуску
таймера. Время истечет в соответствии с программой. Опросы на состояние "I" дают
результат "I", если время истекло в соответствии с программой, а на вход запуска
поступил еще сигнал "I" /задержка включения/.

2
Смена логического результата на входе запуска с "I" на "О" при ведущемся отсчете
времени ведет к сбросу метки фронта времени и прекращению его обработки.
Опрос таймера на состояние "I" в таких случаях всегда дает результат "О".
Находящийся в слове времени параметр времени указывает на его остаток, на.
сколько раньше была прервана работа таймера.

107
Характеристика при сбрасывании

1
При появлении на входе сброса таймера логического результата "I" до истечения
времени происходит сброс таймера. Опрос на состояние "I" дает тогда результат
"О", хотя таймер не работает и на входе запуска нет логической "I". Параметр
времени и его дискретность также сбрасываются на ноль.
Смена логического результата на входе сброса с "I" на "О" при наличии на входе
запуска "I" на таймер не влияет.
2
Появление на входе сброса таймера логического результата "I", когда он уже не
работает, также ведет к сбросу времени. В результате этого опрос таймера на
состояние "I" дает результат "О".

108
Смена при наличии сигнала сброса логического результата на входе запуска с "О"
на "I" хотя и ведет к запуску таймера однако из-за запрограммированного вслед
сброса тотчас происходит его сброс /на диаграмме обозначен штрихом/. Если учесть
последовательность программирования, указанную в разделе 3.3.3, то двоичный
опрос от этого не изменится

Характеристика при деблокировании

1
Смена логического результата на входе деблокирования при работающем таймере с
"О" на "I" ведет к новому запуску таймера. При этом новом запуске
запрограммированная продолжительность времени принимается как текущее
задание. Смена логического результата на деблокирующем входе с "I" на "О"
влияния не имеет.

2
Смена логического результата на. деблокирующем входе с "О" па "I" при нормально
истекшем времени на таймер не влияет.

109
Характеристика при деблокировании (2)

Характеристика при деблокировании (3)

110
3,4
Смена логического результата на деблокирующем входе с "О" на "I" при
сброшенном таймере и наличие еще на входе запуска "I" ведет к повторному
запуску таймера. При этом новом запуске запрограммированная продолжительность
времени принимается как текущее задание.

3.3.9 Запуск таймера с запоминаемой задержкой включения

Характеристика задержки включения с запоминанием

111
1,2
Смена логического результата на входи запуска таймера с "О" на "I" ведет к
запуску таймера. Отрабатывается вся запрограммированная продолжительность
времени независимо от последующих результатов на входе запуска. После
истечения времени опрос таймера на состояние "I" дает результат "I", независимо
от логического результата на входе запуска. Результат опроса только тогда снова
станет "О", когда произойдет сброс таймера, независимо от логического результата
на входе запуска.

3
Сиена логического результата на входе запуска таймера с "О" на "I" во время его
работы ведет к повторному запуску таймера. При этом новом запуске
запрограммированная продолжительность времени принимается как текущее
задание.

Характеристика при сбрасывании

1,2
Появление на входе сброса таймера логической "I" ведет к сбросу таймера,
независимо от логического результата на входе запуска. Опросы таймера на
состояние "I" дают тогда результат "О".
Смена логического результата на входе сброса с "I" на "О" на таймер не
влияет.

112
3
Смена логического результата на входе запуска с "О" на "I" при наличии сигнала
сброса хотя и ведет к запуску таймера, однако запрограммированный далее сброс
тотчас, же снова приводит к сбросу таймера /обозначен на диаграмме штрихом/.
При соблюдении последовательности программирования, указанной в разделе 3.3.3,
это не скажется на двоичном опросе.

Характеристика при деблокировании(1)

1
Смена при отсчете времени и при логическом результате "I" на входе запуска
таймера логического результата на деблокирующем входе с "О" на "I" ведет к
повторному запуску таймера. При этом новом запуске запрограммированная
продолжительность времени принимается как текущее задание. Смена логического
результата на деблокирующем входе с "I" на "О" действия не имеет.

113
2
Смена логического результата на деблокирующем входе с "О" на "I" после
запрограммированной отработки времени на таймер не влияет.

3
Смена логического результата на деблокирующем входе с "О" на "I" вовремя
работы таймера и при наличии "О" на входе запуска на таймер не влияет.

Характеристика при деблокировании(2)

3,4
Смена логического результата на входе деблокирования с"0" на "I" при сброшенном
таймере и при наличии еще на входе запуска результата. "I" ведет к новому запуску
таймера. При этом новом запуске запрограммированная продолжительность
времени принимается как текущее задание.

114
Характеристика при деблокировании (3)

3.3.10 Запуск таймера в качестве задержки отключения

115
Характеристика задержки отключения

1,3
Смена логического результата на входе запуска таймера с "I" на, "О" ведет к запуску
таймера. Он отрабатывает запрограммированное время. Опросы таймера на
состояние "I" дают результат "I", если логический результат на входе запуска "I" или
если время не истекло.

2
Смена логического результата на входе запуска таймера с "О" на "I" при отработке
времени ведет к его сбросу. Запуск таймера произойдет вновь только при наличии
падающего фронта на входе запуска.

116
Характеристика при сбрасывании

1
Появление логического результата "I" на входе сброса во время работы таймера
ведет к сбросу времени. Результат опроса на состояние "I" будет"0".

2
Одновременное присутствие логического результата "I" на входе сброса и на входе
запуска даст приоритет сбросу, если была учтена последовательность
программирования, указанная в разделе 3.3.3. Опросы на состояние "I" будут давать
тогда "О".

3
Смена логического результата на входе запуска, с "I" на "О" при наличии сигнала
сброса хотя и приведет к запуску таймера, однако запрограммированный далее
сброс тотчас же приведет к. его сбросу /на диаграмме обозначено штрихом/. При
учете последовательности программирования, указанной в разделе 3.3.3., это не
скажется на двоичном опросе.

117
Характеристика при деблокировании

1,3
Смена логического результата на деблокирующем входе с "О" на "I" при
неработающем таймере на таймер не влияет. Не имеет действия также смена
логического результата с "I" на "О".

2
Смена логического результата на деблокирующем входе с "О" на "I" во время
работы таймера ведет к его новому запуску. При этом новом запуске
запрограммированная продолжительность времени принимается как текущее
задание.

3.4 Функции счета

Язык программирования STEP 5 позволяет производить непосредственную


реализацию счетчиков. Счетчики в устройствах автоматизации S5-110S, S5-130W,
S5-150A, 150К и S5-150S представляют собой области операндов в памяти
центрального блока. В этой области операндов счетчик представляет собой 16-
разрядное слово, в котором записаны биты состояний и параметр счета. Биты
состояний нужны процессору для обработки счетчиков. Параметр счета является
собственно содержанием" счетчика и соответствует состоянию счетчика /см. раздел
3.4.1/.

118
Установка параметра счета в счетчик происходит с помощью нарастающего фронта
сигнала. В разделе 3.4.2 раскрывается структура параметра счета, если он должен
задаваться с помощью переменной величины.
С помощью операции "сброс" происходит сбрасывание счетчика, т.е. установка
счетчика в нулевое положение. В разделе 3.4.3 указывается рекомендуемая
последовательность инструкций при программировании функций счета.
Счетчик может вести как прямой /раздел 3.4.4./, так и обратный счет /раздел 3.4.5/.
Обе операции вызываются только нарастающим фронтом сигнала.
При опросе счетчика получают двоичный результат, говорящий о наличии в
счетчике параметра, который больше нуля или равен нулю /раздел 3.4.6/.
Деблокирование счетчика подготавливает установку, прямой и обратный счет, при
наличии соответствующих условий для выполнения этих операций /см. раздел
3.4.7/.
Опрос параметра счета, его загрузка в аккумулятор (в числовом виде)
описываются в разделе 4.1.3.

3.4.1 Структура слова счета

Функции счета образуют область операндов в памяти центрального процессора.


Для операнда "счетчик" отведено 16-разрядное слово. Оно содержит параметр счета
и биты состояний для обработки функции счета с помощью процессора. Слово
счета имеет следующую структуру:

1. Вспомогательная метка для опросов


2. Метки Фронтов для установки, деблокирования, прямого и обратного счета
3. Параметр счета

119
Назначение битов:

Биты № 0...9 Параметр счета


В эти биты заносится параметр счета в двоичном кеде.
Параметр счета переносится в слово счета при установке
счетчика. Параметр счета может варьироваться с помощью
операций прямого и обратного счета в области от 000 до 999.
Параметр счета может загружаться в аккумулятор как в
двоично-десятичном, так и в двоичном коде.

Бит № 10 Метка фронта для деблокирования


Операция "деблокирование" FR действует только при
управлении возрастающим фронтом логического результата.
Этот бит является меткой фронта, которая позволяет
процессору распознать фронт.

Бит № II Метка фронта для установки


Операция "установка" S действует только при. управлении
возрастающим фронтом логического результата. Этот бит
является меткой фронта, которая позволяет процессору
распознать фронт.
Па этот бит можно также воздействовать операцией
"деблокирование", благодаря чему на входе установки
процессора получают имитацию фронта. Таким образом можно
заново устанавливать счетчик.

Бит № 12 Метка фронта для обратного счета


Операция "обратный счет" ZR действует только при
управлении возрастающим фронтом логического результата.
Этот бит является меткой фронта, которая позволяет
процессору распознать фронт.
На этот бит можно также воздействовать операцией
"деблокирование", благодаря чему получают имитацию
фронта на входе обратного счета. Таким образом можно
заново начать обратный отсчет.

120
Бит № 13 Метка фронта для прямого счета
Операция "прямой счет" ZV действует только при управлении
возрастающим фронтом логического результата. Этот бит
является меткой фронта, которая позволяет процессору
распознать фронт.
На этот бит можно также воздействовать операцией
"деблокирование” благодаря чему получают имитацию фронта
на входе прямого счета процессора. Таким образом можно
заново вызвать прямой отсчет.

Биты № 14, 15 Вспомогательные метки для опросов


При двоичном опросе счетчика опрашиваются эти
вспомогательные метки. При разных состояниях сигналов
вспомогательных меток опросы на состояние "I" дадут
результат "I", а в противном случае - "О" Бит № 14 постоянно
отведен под состояние сигнала "О"; бит № 15 состоянием
своего сигнала "I" показывает, что параметра счета больше
000. При сбросе счетчика этот бит устанавливается в "О".
Каждый отдельный бит слова счета можно также опрашивать бит-тестовыми
операциями, описанными в разделе 3.5, производить установку и сброс, и
воздействовать таким образом на обработку счетчика.

3.4.2 Установка счетчика


Установка счетчика происходит при смене логического результата перед операцией
установки с "О" на "I". Такая смена состояния сигнала является обязательным
условием установки счетчика. Процессор устанавливает счетчик только при
наличии возрастающего фронта. Соответствующей меткой фронта является бит №
II каждого слова счета. Если счетчик установлен, эта метка фронта имеет состояние
"I". Если операция установки была обработана логическим результатом "О", метка
фронта имеет состояние "О".
Счетчик можно также установить через операцию "деблокирование счетчика" FRZ
/см. раздел 3.4.7/.

121
Задание параметра счета

При установке счетчика в качестве параметра счета принимается число, хранящееся


в аккумуляторе I. Как и когда это число было загружено в аккумулятор, роли не
играет /см. также раздел 4.1.1, загрузка/. В качестве параметра счета берутся 12
битов, стоящих в аккумуляторе справа. Они должны иметь следующее построение:

1. Параметр счета от 0 до 999 в двоично-десятичном коде


2. Эти биты при установке счетчика не учитываются.

Пример:
Необходимо задать параметр 127
Распределение битов:

I. Не учитывается
Заданный в десятичном виде параметр счета переносится в двоичном виде в
соответствующее слово счета и там обрабатывается. В слове счета параметр
записывается в двоичном коде в биты с 0 по 9. Остальные 6 битов являются битами
состояний, которые используются процессором для обработки счетчика.

122
3.4.3 Сброс счетчика
Счетчик сбрасывается, если операции сброса предшествует логический результат
"I". Пока сохраняется результат "I", опросы счетчика на состояние "I" дают
результат "О", а опросы на состояние "О" - дают результат "I". При сбросе счетчика
параметр счета устанавливается в ноль /сбрасывается/.
Чтобы сброс счетчика действовал "статично" и не зависел от логического результата
на других входах счетчика, необходимо, чтобы сброс счетчика программировался
сразу же после установки и прямого или обратного счета и перед опросом.

Пример:

Последовательность программирования счетчиков

1. Прямой счет
2. Обратный счет
3. Установка счетчика
4. Сброс счетчика
5. Опрос счетчика

123
3.4.4 Прямой счет

Счетчик будет вести прямой счет, если операции прямого счета предшествовала
смена логического результата с "О" на "I". Такая смена состояния сигнала является
обязательным условием прямого счета. Процессор ведет прямой счет только при
наличии нарастающего фронта сигнала. Соответствующей меткой фронта является:
бит № 14 каждого слова счета. При прямом счете она имеет состояние "I", и
состояние "О", если операция прямого счета обрабатывается логическим
результатом U .
Счетчик может также вести прямой счет под воздействием операции
"деблокирование счетчика" FRZ /см. раздел 3.4.7/.
при каждой смене состояния сигнала на входе прямого счета параметр счета
увеличивается на одну единицу. При достижении параметром верхней границы 999
его рост прекращается. После этого смена состояния сигнала на входе прямого счета
никакого действия не оказывает. Переноса не происходит.

3.4.5 Обратный счет

Счетчик будет вести обратной счет, если операции обратного счета предшествовала
смена логического результата, с "О" на "I". Такая смена сигнала является
обязательной предпосылкой обратного счета. Процессор ведет обратный отсчет
только при наличии нарастающего фронта сигнала. Соответствующей меткой
фронта является бит ^ 12 каждого слова счета. Эта метка фронта имеет при
обратном счете состояние "I" и состояние "О", если операция обратного счета обра-
батывалась логическим результатом "О".
Счетчик может также вести обратный счет под воздействием операции
"деблокирование счетчика"/см. раздел 3.4.7/.
При каждой смене состояния сигнала на входе обратного счета параметр счета
уменьшается на одну единицу. Уменьшение прекращается при достижении
параметром нижней границы 0. Смена состояния сигнала на входе обратного счета
после этого никакого действия не оказывает. Отсчета с отрицательными
значениями не происходит.

124
3.4.6 Опрос счетчика
С помощью операций И (U-)и ИЛИ (O-) или И-НЕ и ИЛИ-НЕ (UN-, ON-) счетчик
может быть опрошен на параметры больше нуля или равные нулю. Опросы на
состояние "I" дают результат "I", если состояние счетчика больше нуля, и результат
"О", если состояние счетчика равно нулю.
Для образования результата опроса счетчика опрашиваются биты М° 14 и № 15
соответствующего слова счета. Опрос на состояние "I" дает результат "I", если оба
бита имеют различные состояния сигналов. Если оба бита имеют одинаковое
состояние сигналов, результат опроса будет "О". /Установка битов № 14 и № 15
описывается в разделе 3.4.1/

3.4.7 Деблокирование счетчика.


Деблокирование счетчика происходит при смене логического результата,
предшествующего операции деблокирования, с "О" на "I". Такая смена состояния
сигнала является обязательной предпосылкой деблокирования счетчика. Процессор
выполняет операцию деблокирования только при наличии нарастающего фронта
сигнала. Соответствующей меткой фронта является бит ^ 10 в каждом слове счета.
Для установки счетчика и для счета деблокирования счетчика, не требуется. К
деблокированию прибегают только тогда, когда необходимо произвести установку,
прямой или обратный счет и при отсутствии нарастающего фронта сигнала на
соответствующем входе. Это возможно только при условии, что соответствующий
вход по-прежнему будет обрабатываться логическим результатом "I".
С исполнением операции деблокирования произойдет сброс битов № II /метка
фронта для установки, № 12 /метка фронта для обратного счета/ и № 13 /метка
фронта для прямого счета/. Как только одна из только что названных операций
будет обработана логическим результатом "I", процессор "узнает" нарастающий
фронт сигнала. Произойдет установка метки фронта и выполнение операции. Если
при установке счетчика параметр счета будет задан в виде переменной величины,
эта переменная величина будет, принята как текущее значение параметра счета.

125
Пример:

1
Установленный на счетчике параметр счета 150.

2
Счетчик ведет прямой счет с увеличением на 1 единицу.

3
Так как логический результат на входе прямого счета равен "I", значение
счетчика увеличилось на одну единицу.

4
Смена сигнала на входе Е 41.2 ведет к уменьшению значения на единицу.

126
5
Благодаря деблокированию выполняются операции прямого и обратного счета,
поскольку в обоих случаях логический результат "I".
6
Установка счетчика благодаря смене сигнала на входе Е 41.3.

7
Счетчик сброшен. Опрос UZ 20 дает результат "О".

8
Поскольку на входе установки все еще сохраняется результат "I", через
деблокирование счетчик вновь устанавливается на значение 150 Опрос UZ 20 дает
теперь результат "I".

3.5 Бит-тестовые функции

С помощью бит-тестовых функций можно производить двоичный /по битам/ опрос


дискретных операндов и оказывать на. них воздействие. Бит-тестовые функции
записываются на языке программирования STEP 5 как однословные команды. На
машинном языке МС 5 бит-тестовые функции занимают в накопители программ два
16-разрядных слова.

Бит-тестовые операции позволяют производить:

Ø опрос бита на. состояние "I" /раздел 3.5.1/,


Ø опрос бита на состояние "О" /раздел 3.5.2/,
Ø установку бита в состояние "I" /раздел. 3.5.3/ и
Ø установку бита в состояние "О" /раздел 3.5.4/.

Бит-тестовые операции являются абсолютными операциями, которые всегда


выполняются при обработке.

127
Бит-тестовые функции используются со следующими операндами:

-вход
-выход
-метки
-слово времени
-слово счета
-данные
-системные данные *)
-системные данные из расширенной области
-данные системного переноса
-данные системного переноса из расширенной области
Число перед запятой /точкой/ указывает на адрес байта или слова. Число после
запятой обозначает запрашиваемый бит.

Пример:
Бит № 7 слова данных 20 DW 20 необходимо установить в состояние "I".

Этот бит устанавливается в состояние "I".

Использованные в качестве дискретных операндов слова времени и счета могут


опрашиваться и подвергаться воздействию как полные 16-разрядные слова /как они
хранятся в памяти центрального блока/. Распределение отдельных разрядов слова
времени описано в разделе 3.3.1, а слова счета - в разделе 3.4.1.

*)Обращение к областям операндов "системные данные" и "системные данные из


расширенной области" возможно только в связи с операциями "проверка бита на
состояние "I" или "проверка бита на состояние "О".
128
3.5.1 Проверка бита на состояние "I"

С помощью операции "проверка бита на состояние "I" P можно опросить


каждый отдельный бит дискретного операнда..
Пример

Если опрос на состояние "I" выполнен, т.е. опрошенный бит имеет состояние
"I", логический результат устанавливается в состояние "I", а в противном
случае - в "О".
Операция Р всегда является первичным опросом /см. раздел 3.1.5/, независимо от
предшествующих операций. Полученный после этой операции результат можно
сопрягать с дальнейшими опросами.

3.5.2 Проверка бита на. состояние "О'


С помощью операции "проверка бита на состояние "О" PN можно опросить каждый
отдельный бит дискретного операнда.

Если опрос на состояние "О" выполнен, т.е. опрошенный бит имеет состояние
"О", логический результат устанавливается в состояние "I", а в противном
случае - в "О".
Операция PN всегда является первичным опросом /см. раздел 3.1.5/, независимо от
предшествовавших операций. Полученный после этой операции результат можно
сопрягать с дальнейшими опросами.

129
3.5.3 Безусловная установка бита
С помощью, операции "безусловная установка бита" SU можно установить в
состояние "I" каждый отдельный бит дискретного операнда.

Установить бит. № 14 слова данных 8 DW8 в состояние "I"


Выполнение операции SU не зависит от логического результата, т.е. указанный бит
при обработке этой команды всегда будет устанавливаться в состояние "I".
Ранее имевшийся логический результат воздействию не подвергается. Он,
например, может быть присвоен какой-либо метке. Запрограммированная после
операции SU логическая операция считается первичным опросом /см. раздел 3.1.5/.

3.5.4. Безусловный сброс бита

С помощью операции "безусловный сброс бита" RU можно установить в состояние


"О" каждый отдельный бит дискретного операнда.

Выполнение операции RU не зависит от логического результата, т.е. указанный бит


при обработке этой команды всегда будет устанавливаться в состояние "О".
Ранее имевшийся логический результат воздействию не подвергается. Он,
например, может быть присвоен какой-либо метке. Запрограммированная после
операции RU логическая операция считается первичным опросом /см. раздел
3.1.5/.

130
4 ОПЕРАЦИИ НАД ДАННЫМИ

К операциям над данными (байтами, словами, двойными словами) относятся:


Ø функции загрузки и переноса
Ø функции сравнения
Ø математические функции
Ø логические операции с данными
Операнды этих функций могут обрабатываться по байтам /8 битов/, по словам
/16 битов/, а в устройстве автоматизации AG S5-150 S -также по двойным словам
/32 бита/.
Описываемые в разделе 4.1 операции загрузки и переноса позволяют вести обмен
информацией на числовой основе между блоками периферии и данными в
запоминающем устройстве, а также между данными внутри запоминающего
устройства.
Если нужно произвести логическую операцию над содержанием двух операндов, то
помимо типа логической операции должно также учитываться внутреннее
представление /комбинация битов/ параметра операнда, а также его величина. В
языке программирования STEP 5 известны представления чисел в виде 16-
разрядных с фиксированной запятой, в виде 32-разрядных с фиксированной запятой
и в виде 32-разрядных с плавающей запятой /см. раздел 4.2/.
С помощью функций сравнения раздела 4.3 производится сравнение содержания
двух операндов на равенство, неравенство, больше, больше - равно, меньше и
меньше - равно. Сравнение влияет на двоичный логический результат и на
индикацию. Оценка сравнения, выражается или в переходах, или в продолжении
обработки логического результата.
В разделе 4.4 раскрываются математические функции - сложение, вычитание,
умножение и деление. Примеры с вариантами комбинаций этих четырех
арифметических функций дополняют указанный раздел.
Обработка содержания числовых операндов с помощью "масок" может
выполняться посредством описываемых в разделе 4.5 логических операций над
данными. Язык программирования STEP 5 позволяет выполнять над числовыми
величинами операции по И, ИЛИ и исключительное ИЛИ.

131
4.1 Функции, загрузки и переноса

Благодаря функциям загрузки и переноса язык программирования STEP 5 позволяет


вести обмен информацией между блоками периферии, отображением процесса на
входах и выходах и запоминающим устройством меток, данных и системных
данных, а также использовать информацию для дальнейшей обработки параметров
времени и счета. Этот обмен информацией происходит не напрямую, а всегда
"обходным путем" через аккумулятор. Этот аккумулятор представляет собой
особый регистр в процессоре и служит в качестве промежуточного запоминающего
устройства.
При обмене информацией обозначается направление потока информации /см.
схему/. Поток информации от запоминающего устройства в аккумулятор
называется загрузка /зарядка аккумулятора, см. раздел 4.1.1/. Поток информации от
аккумулятора к запоминающему устройству называется переносом /содержание
аккумулятора "переносится" в память, см. раздел 4.1.2:/. При загрузке и переносе
содержания областей операндов обрабатываются по байтам, по словам или
двойными словами.

3агрузка и перенос

132
Параметры областей операндов таймеров и счетчиков обрабатываются иначе, чем
параметры других областей операндов. Их разрешается комбинировать только с
одной функцией загрузки, однако путем кодового преобразования их можно также
загружать в аккумулятор /см. раздел 4.1.3 и 4.1.4/.

Обзорная таблица инструкций загрузки и переноса /без


инструкций замещения/

I.Загрузка байта входов


2.Загрузка слова входов
3.Загрузка двойного слова входов
4.Загрузка байта выходов
5.Загрузка слова выходов
6.Загрузка двойного слова выходов
7.Загрузка байта меток
8.Загрузка слова меток
9.Загрузка двойного слова меток
10.Загрузка левого байта данных
11.Загрузка правого байта дан.
12.3агрузка. слова данных
13.3агручка двойного слова дан.
14.Загрузка байта периферии
15.Загрузка байта периферии
16.Загрузка слова периферии
17.3агрузка слова периферии
18.Загрузка байта периферии из расширенной
области
19.Загрузка слова периферии и расширенной
области
20.Загрузка параметра времени
21. Загрузка, параметра времени
22. Кодированная загрузка параметра
времени
23. Кодированная загрузка параметре,
времени
24. Загрузка параметра счета
25. Загрузка параметра счета
26. Загрузка параметра счета
27. Кодированная загрузка параметра счета
28. Кодированная загрузка параметра счета
29. Кодированная загрузка параметра счета

133
Обзорная таблица инструкций загрузки и переноса /продолжение/

1. Загрузка константы в виде байта


2. Загрузка константы в виде числа с
фиксир. запятой
3. Загрузка константы в виде двух байтов"
4. Загрузка константы в виде 16-ричной
комбинации
5. Загрузка константы в виде комбинации
битов
6. Загрузка константы в виде двух знаков
7. Загрузка константы в виде параметра
времени
8. Загрузка константы в виде параметра
счета
9. Загрузка константы в виде числа с
плавающей запятой
10.Загрузка слога из ЗУ системных данных
11.Загрузка слова из расширенной области
ЗУ сист. данных
12.Загрузка слова из ЗУ данных системного
переноса
13.Загрузка слова из расширенной области
данных системного переноса
14.Перенос в байт входов
15.Перенос в слово входов
16.Перенос в двойное слово входов
17.Перенос в байт выходов
18.Перенос в слово выходов
19.Перенос в двойное слово выходов
20.Перенос в байт меток
21.Перенос в слово меток
22.Перенос в двойное слово

134
Обзорная таблица инструкций загрузки и переноса /окончание/

1. Перенос в левый байт данных


2. Перенос в правый байт данных
3. Перенос в слово данных
4. Перенос в двойное слово данных
5. Перенос в байт периферии
6. Перенос в байт периферии
7. Перенос в слово периферии
8. Перенос в слово периферии
9. Перенос в байт периферии из расширенной области
10.Перенос в слово периферии из расширенной области
11.Перенос в слово ЗУ данных системного переноса
12.Перенос в слово ЗУ данных системного переноса из расширенной обл.

4.1.1 Загрузка

С помощью операции "загрузка" L можно напрямую загружать в аккумулятор


информацию из областей операндов входов Е, выходов А, меток М, таймеров Т,
счетчиков 2 , данных D системных данных BS и ВТ, а также данных системного
переноса ВА и BB , константы /в различных способах представления/ и
информацию из блоков периферии.
Операция загрузки в устройствах автоматизации S5-110S, S5-130W, S5-150A, S5-

135
150K, S5-150S выполняется независимо от логического результата и независимо от
индикации. Логический результат и индикация воздействию не подвергаются.

136
Информация из областей операндов входов, выходов, меток, и данных загружается,
в аккумулятор в виде байтов, слов или двойных слов, информация непосредство из
блоков периферии - в виде байтов или слов, информация из ЗУ системных данных и
из ЗУ данных системного переноса загружается только в виде слов.
Ширина аккумулятора составляет в устройствах S5-110S, S5-130W, S5-150-A и
S5-150K 16 битов, а. в устройстве S5-150S - 32 бита. Информация меньшей
ширины откладывается в аккумуляторе справа. Остальные разряды заполняются
нулями.
Возможные комбинации операции загрузки с областями операндов входов, выходов,
меток, блоков- периферии и данных в сочетании с "указанием длины" - байт, слово
или двойное слово - приведены и описаны в 1-м томе руководства
"Программирование управляющих устройств на языке STEP 5" -
"Программирование основных функций".

Загрузка данных
При загрузке данных необходимо обращать внимание на правильность
предварительного выбора блока данных. Вызванный блок данных сохраняет свое
действие до тех пор, пока нет обработки операций вызова какого-либо другого
блока данных. Исключение: возврат в старший блок но команде конца блока /см.
раздел 5.1/.

Загрузка системных данных

Загрузка. информации из области системных данных может вестись только


пословно с параметром от 0 до 255. Соответствующая инструкция гласит:

L BS 0 bis 255

В устройстве автоматизации S5-150S эта область расширена, благодаря чему


возможно обращение к удвоенному объему системных данных. Расширение
происходит через новый операнд: ВТ "системные данные из расширенной области".
Соответствующая инструкция гласит: L ВТ 0 bis 255

137
Загрузка данных системного переноса
Загрузка информации из области данных системного переноса может производиться
только пословно с параметром от 0 до 255. Соответствующая инструкция гласит: L
ВА 0 - 255.
В устройстве автоматизации S5-150S эта область расширена, благодаря чему
возможно обращение к удвоенному объему системных данных. Расширение
происходит через новый операнд: ВВ "данные системного переноса из расширенной
области". Соответствующая инструкция гласит:
L ВВ О - 255.

Загрузка блоков периферии

Загрузка блоков периферии подразумевает только блоки входов. Параметр от 0 до


127 адресует дискретные вводы, которые ведут на отображение процесса. С
помощью параметра от 128 до 255, напр., обращаются к аналоговым блокам ввода.
К прямой загрузке блоков периферии прибегают в тех случаях, когда, например,
информация на блоках входа должна срочно обрабатываться в управляющем
устройстве. При загрузке входов информация черпается с отображения процесса на
входах и показывает таким образом состояние сигналов на входах в начале
программы, как если бы было загружено отображение процесса.
Через второй интерфейс устройств расширения в центральном блоке 150 S к
центральному блоку можно подключить вторую шину периферии. Обращение к
подключенным к этой шине блоков входов и выходов производится через особый
операнд (Q):
QB 0 - 255 Байт периферии из расширенной области
QW 0 - 254 Слово периферии из расширенной области

Таким образом можно обращаться к дополнительным аналоговым и дискретным


блокам входов и выходов.
Дискретные входы и выходы из расширенной области не имеют отображения
процесса. Для производства над этими операндами логических операций их нужно
загрузить в область меток или данных, где они подвергнутся дальнейшей обработке.

138
Пример:
Требуется произвести логическую операцию И над сигналом на входе Е 17.3 из
расширенной области и сигналом метки М 51.0. Результат присвоить выходу А 23.0
расширенной области.

: L QB 17
: T MB 198
: U M 198.3
: U M 51.0
: = M 199.0
...
: L MB 199
: T QB 23

Загрузка констант
При необходимости загрузить в аккумулятор 1 какое-либо постоянное значение
/напр., при сравнении на какое-то предельное значение/, это значение может быть
введено в программу в виде константы;
Представление этой константы зависит от ее назначения. Возможны
следующие виды представления:

Инструкция Представление константы

L КB 8-разрядное число с фикс. Запятой


L KF 16-разрядное число с фикс. запятой и знаком
L KG 32-разрядное число с плавающей запятой
L KM Комбинация битов /16 разрядов/
L КН 16-ричная комбинация /4 знака/
L KY два 8-разрядных числа с фикс.запятой, разде ленные
запятой
L КС два буквенно-цифровых знака в коде ASC II
L KT параметр времени с базой времени
L KZ параметр счета

Дальнейшую информацию по работе с этими инструкциями и областью констант


BM в книге "Программирование управляющих устройств на языке STEP5",ToM I,
раздел 6.1.

139
Влияние аккумулятора 2
Операция "загрузка" изменяет содержание аккумулятора 1 и аккумулятора 2.
Значение операнда при операции загрузки загружается в аккумулятор I.
Одновременно значение, находящееся в аккумуляторе I, "сдвигается" в аккумулятор
2.

Пример:
Загрузить слово входов EW 20. Исходное
состояние:

Состояние после выполнения инструкции LEW 20:

При операции загрузки содержание аккумулятора 2 теряется.

4.1.2 Перенос (пересылка)

С помощью операции "перенос" Т можно производить перенос информации из


аккумулятора 1 в области операндов входов Е, выходов А, меток м, данных D и
данных системного переноса BS и ВТ, а также непосредственно в блоки периферии
Р и Q.
Операция переноса в устройствах автоматизации S5-110S, S5-130W, S5-150A, S5-
150K, S5-150S выполняется независимо от логического результата и независимо от
индикации. Логический результат и индикация не изменяются.
Содержание аккумулятора байтами, словами или двойными словами переносится в
области операндов входов, выходов, меток и данных;
байтами или словами - в блоки периферии, словами - в данные системного
переноса. При этом содержание аккумулятора не изменяется благодаря чему
перенос может выполняться многократно.

140
Ширина аккумулятора составляет в устройствах S5-110S, S5-130W, S5-150A и S5-
150K - 16 разрядов, а в устройстве S5-150 S - 32 разряда. При переносе информации
меньшей ширины, она выбирается по "правую сторону" аккумулятора.
Возможные комбинации операций переноса с областями операндов входов,
выходов, меток, Периферии и данных в сочетании с указанием "длины" - байт, слово
или двойное слово - приведены и описаны в первом томе настоящего пособия, в
разделе "Программирование основных Функций".

Перенос к данным
При переносе к данным следует обращать внимание на предварительный выбор
правильного блока данных. Он считается действительным до тех пор, пока не
ведется обработка операции вызова другого блока данных.
Исключение: обратный переход в старший блок по команде окончания блока /см.
раздел 5.1/.

Перенос к блокам периферии


Перенос к блокам периферии касается только блоков выводов. Параметр 0 - 127
адресует дискретные выходы, на которые идет отображение процесса. Перенос в
эти блоки периферии одновременно ведет к соответствующему изменению значения
в отображении процесса.
С помощью параметра от 128 до 255, напр., обращаются к аналоговым выходам.
Переносом к блокам периферии пользуются в тех случаях, когда нужно обеспечить
немедленное изменение выходного сигнала. При переносе на выходы обращаются
только к отображению процесса. Оно будет перенесено на блоки выходов только
после окончания программы.

141
Пример:

Перенос к слову периферии PW 50

Состояние после выполнения инструкции Т PW 50:

Выходы

142
С помощью второго интерфейса устройств расширения к центральному блоку 150S
можно подключать вторую шину периферии. Обращение к подключенным к этой
шине блокам входов и выходов производится через специальный операнд (Q):

QB0 - 255 Байт периферии из расширенной области


QW0 - 254 Слово периферии из расширенной области

Таким образом можно обращаться к дополнительным аналоговым или


дискретным блокам входов и выходов.
Дискретные входы и выходы из расширенной области не имеют отображения
процесса. При необходимости выполнения над этими операндами логических
операций их следует загрузить в область меток или данных где произойдет
дальнейшая обработках См. пример в разделе 4.1.1.
Перенос к данным системного переноса

Перенос информации к данным системного переноса производится только пословно


с помощью параметра от 0 до 255. Соответствующая инструкция гласит: Т ВА 0 -
255. В устройстве автоматизации S5-150S эта область расширена, благодаря чему
можно обращаться к двойному объему данных системного переноса. Расширение
происходит через новый операнд: ВВ "данные системного переноса из расширенной
области". Соответствующая инструкция гласит: Т ВВ 0 - 255.

4.1.3 Загрузка, параметров счета

В области операндов "счетчики" каждое 16-разрядное слово образует счетчик.


Счетчик состоит из 6 разрядов, которые представляют необходимую для процессора
информацию о внутреннем состоянии счетчика, и из 10 разрядов, которые дают
представление собственно о числовом значении /см. раздел 3.4/.

Прямая загрузка числового значения


Числовое значение хранится в памяти в двоичном виде. Б этой форме оно
загружается и в аккумулятор. Биты состояния не загружаются;
вместо них в аккумулятор стоит "О".

143
Находящееся теперь в. аккумуляторе значение можно подвергать дальнейшей
обработке. Перенос из аккумулятора в счетчик не возможен. Если счетчик
необходимо установить на новое значение, прибегают к операции "установка
счетчика" /см. раздел 3.4/.

Пример:
Значение счетчика Z27 необходимо перенести в двоичном коде в слово данных
DW34 блока данных DB 18.

: L Z 27 Загрузка числового значения счетчика Z27 в аккумулятор


: A DB 18 вызов блока данных DB18
: T DW 34 Перенос содержания аккумулятора в слово данных DW34.

Кодированная загрузка числового значения


Имеющееся в двоичном виде числовое значение можно также загрузить в
аккумулятор в закодированном виде. Тогда оно будет храниться в аккумуляторе для
дальнейшей обработки уже в двоично-десятичном коде (BCD).

Числовое значение в двоично-


десятичном коде

144
При кодированной загрузке биты состояний счетчика тоже не учитываются.
Числовое значение в двоично-десятичном коде подвергается дальнейшей обработке,
например, его можно переносить на выходы, к которым подключена цифровая
индикация.

Пример:
Двоично-десятичное значение счетчика Z53 необходимо перенести к байтам
выходов АВ 82 и АВ 83.
:LC Z 53 Загрузка значения счетчика в двоично-десятичном коде в аккумулятор
:Т AW 82 Перенос содержания аккумулятора в слово выходов AW 82
Состояние слова выходов после переноса:

Числовое значение

4.1.4 Загрузка параметров времени


В области операндов "таймеры" каждое 16-разрядное слово образует функцию
времени, функция времени состоит из параметра времени /10 разрядов/, дискреты
времени /2 разряда/ и 4 битов состояний, которые показывают процессору состояние
Функции времени при ее обработке /см. раздел 3.3/.

Прямая загрузка значения времени


Параметр времени хранится в памяти в двоичном виде. В этой форме он загружается
в аккумулятор. Разряды состояний и дискрета времени не загружаются ; вместо них
в аккумуляторе стоит "О".

145
Находящееся теперь в аккумуляторе значение может быть подвергнуто дальнейшей
обработке. Перенос из аккумулятора к функции времени невозможен. Если нужно,
чтобы функция времени устанавливалась каким-либо параметром, это делается с
помощью операции запуска Функции времени /см. раздел 3.3/.
Пример:
Параметр времени Т16 необходимо сравнить с постоянной величиной 20. Если
параметр времени меньше, устанавливается метка М51.6 .
:L T 16 Загрузка параметра времени Т16 в аккумулятор 1
:L KB 20 Загрузка постоянного значения + 20 в аккумулятор 1.
Находящийся в аккумуляторе 1 ранее параметр времени
загружается в аккумулятор 2.
Сравнение содержания обоих аккумуляторов на “меньше”
:< F по характеристике с фиксированной запятой.

:= M 51.6 Установка метки М51.6 при выполненном сравнении.


Метка установлена постоянно, если параметр времени при запуске таймера –
независимо от базы времени - меньше 20 единиц.

Кодированная загрузка параметра времени


Имеющийся в двоичном виде параметр времени может также загружаться в
аккумулятор в "кодированном" виде. В этом случае в коде BCD получают как
параметр, так и дискретность времени.

146
При кодированной загрузке биты состояний не учитываются; однако в аккумулятор
загружается дискретность времени. Имеющийся в двоично-десятичном коде
параметр времени может подвергаться дальнейшей обработке, например,
переноситься на выходы, к которым подключена цифровая индикация.

Пример:

Закодированное в двоично-десятичном виде значение времени Т33 необходимо


перенести к байтам выходов АВ80 и АВ81.

:LC T 33 Загрузка значения времени Т33 в коде BCD в аккумулятор.

:T AW 80 Перенос содержания аккумулятора к слову выходов AW80.

Расперделение информации в слове выходов AW80 после переноса:

дискретность Параметр
времени времени
продолжительность времени

147
4.2 Представление чисел

Процессоры устройств автоматизации S5-110S, S5-130W, S5-150A, S5-150K, S5-


150S могут перерабатывать информацию в числовом виде. Так как процессоры
работают на двоичной основе, то - как правило - обрабатываются только двоичные
закодированные числа. Представление двоичных чисел, а также описание двоичной
и десятичной систем счисления приводится в первом томе "Программирование
основных функций".
Язык программирования STEP 5 включает следующие представления чисел:

Ø 16-ра.зрядные числа с фиксированной запятой /раздел 4.2.1/


Ø 32-разрядные числа с Фиксированной запятой /раздел 4.2.2/ и
Ø числа с плавающей запятой /раздел 4.2.3/.

В некоторых случаях, помимо этих представлений чисел в двоичном виде, могут


обрабатываться также числа в двоично-десятичном коде. Задание параметров
времени и счета, например, происходит в двоично-десятичном коде /см. разделы
4.1.3 и 4.1.4/. При переносе этих значений в области операндов они, однако,
преобразуются в двоично-кодированные величины которые затем и подвергаются
дальнейшей обработке, двоично-десятичные закодированные числа можно также
преобразовывать непосредственно в двоично-кодированные /см. разделы 5.4.4 и
5.4.6/ и наоборот /см. разделы 5.4.5 и 5.4.7/.

Способы представления чисел указываются в связи со сравнениями /все три способа


представления чисел/ и с арифметическими операциями /только ^6-разрядные с
Фиксированной запятой и с плавающей запятой/.

Примеры:

148
4.2.1 16-разрядные числа с фиксированной запятой
Числа, с фиксированной запятой представляют собой двоичные числа,
сопровождаемые знаком. Они могут принимать положительные и отри-
цательные значения. В языке программирования STEP 5 эти числа обозначены
символом "F".
16-разрядное число с Фиксированной запятой занимает одно слово. Отдельные
биты этого слова распределяются следующим образом:

Состояние сигнала бита № 15 представлено знаком (V). Состояние "О"


обозначает, что число имеет положительное значение. Состояние "I" обозначает
отрицательное число.
Разрядность отдельных битов положительного числа приведена на верхнем
рисунке отрицательное число пишется как двоичное дополнение. Двоичное
дополнение образуется за счет изменения состояния сигналов во всех битах на
противоположные (инвертирование) и прибавления к этому числу +1.
Имеющаяся в распоряжении область чисел составляет

149
4.2.2 32-разрядные числа с фиксированной запятой

32-разрядные числа с Фиксированной запятой представляют собой


двоичные числа, сопровождаемые знаком. Они могут принимать положительные и
отрицательные значения. В языке программирования STEP 5
они отмечены символом "D".
32-разрядное число с Фиксированной запятой занимает двойное слово. Отдельные
биты этого двойного слова распределяются следующим образом:

32-разрядные числа с фиксированной запятой обрабатываются также, как и 16-


разрядные с фиксированной запятой /см. раздел 4.2.1/. Они отличаются лишь
большей областью чисел, имеющейся в распоряжении.

4.2.3 Числа с плавающей занятой


Числа с плавающей запятой являются экспоненциальными числами, оба
компонента которых - мантисса и порядок - представлены как двоичные числа с
фиксированной запятой. Мантисса, представляется как 24-разрядное число с
фиксированной запятой, порядок - как 8-разрядное число с Фиксированной запятой.
В языке программирования STEP 5 эти числа, обозначаются буквой "G".

150
Число с плавающей запятой занимает всегда, двойное слово. Отдельное биты
этого двойного слова распределяются следующим образом:

Значение числа с плавающей запятой определяется по Формуле:

Число с плавающей запятой представляет собой значение в следующих границах:

положит. отрицат. отрицат. положит.


порядок порядок порядок порядок

отрицат. Мантисса ноль положит. мантисса

151
Пример:
Представление числа +5,5 в виде числа с плавающей запятой.

Число 5,5 находится между 22 (4) и 23 (8), что позволяет нам в качестве порядка
брать число 3, так как мантисса меньше I. В нашем случае:

Число с плавающей запятой, соответственно)выглядит следующим


образом:

4.3 Функции сравнения 4.3.1

Общее замечание

Язык программирования STEP 5 предоставляет возможность производить прямое


сравнение содержания /комбинации битов/ двух числовых операндов. Длина
операндов /байт, слово, двойное слово/ приводится в связи с операцией сравнения.

Сравнение может быть нескольких видов:

152
Выполнение функций сравнения не зависит от логического результата.
При обработке функции сравнения выполняются всегда. Результат сравнения имеет
двоичный вид. Состояние сигнала "I" обозначает, что сравнение выполнено.
Состояние сигнала "О" появляется при невыполненном сравнении. Двоичный
результат поступает в распоряжение к дальнейшей обработке как логический
результат.
При сравнениях с оценкой содержания операндов /напр., при сравнении на
"меньше"/ необходимо указывать способ представления числа. Содержание обоих
операндов оценивается и сравнивается в соответствии с указанном представлением
числа. По соображениям единообразия система представления чисел указывается
также при Функциях сравнения на равнозначность и неравнозначность. Указывать
можно все виды представления чисел (F, D, G).

Состояние аккумуляторов до выполнения oпeрации:

153
Состояние аккумуляторов после выполнения инструкции LEW10:

Состояние аккумуляторов после выполнения инструкции LDW22:

154
Выполнение инструкции >F

Если сравнение выполнено, метка М 19.0 устанавливается, в


противном случае - сбрасывается.

Установка индикации

Параллельно к выполнению Функций сравнения происходит установка индикации


/см. понятия "индикация"/. Установленную индикацию (флаг) можно опрашивать
следующими переходами:

Выполнение операций сравнения не зависит от индикации.

155
Io4

4.3.2 Сравнение в начале логической операции

Первые три инструкции представляют собой сравнение. Значение слова входов


EW17 сравнивается на равнозначность со значением слова данных DW8. В
зависимости от содержания обоих операндов образуется результат опрос. Результат
опроса Функции сравнения принимается процессором как логический результат.
Результат опроса функции сравнения всегда является первичным опросом
/см. раздел 3.1.5/.
В процессоре логический результат подвергается дальнейшей обработке. 3 нашем
примере он сопрягается по Функции И с состоянием сигнала на входе E 3.2.
Результат этого сопряжения присваивается выходу А 8.1.

4.3.3 Сравнение внутри логической операции

Если хотят запрограммировать Функцию сравнения внутри логической операции, то


инструкции на выполнение функции помещают в скобках.

Пример:

На выходе A 8.2 будет состояние "I", если выполнено сравнение 1 или 2.. двоичный
результат сравнения 1 принимается процессором как логический результат. Через
инструкцию 0( выполняется промежуточное запоминание этого логического
результата /см. также раздел 3.1.4/.

156
Теперь образуется логический результат выражения в скобках. В нашем примере
это результат сравнения 2. Этот результат сопрягается с находящимся в
промежуточной памяти результатом 1-го сравнения по Функции ИЛИ, если
обрабатывается операция "закрыть скобку" Логический результат присваивается
выходу А 8.2.

4.3.4 Сравнение параметров времени отсчета

Параметры времени и счета можно сравнивать в двоичном или в двоично-


десятичном виде.

Пример:
Если текущий параметр времени Т19 меньше 100, должна устанавливаться метка М
77.2.

двоичная загрузка операция сравнения

Значение счетчика Z58 необходимо сравнить с имеющимся в слове входов EW38


значением в двоично-десятичном коде. При равнозначности устанавливается метка
М 77.3.

Состояние слова входов EW38:

сравниваемое значение

157
программа на языке STEP 5:

Сравнение производится по характеристике чисел с Фиксированной запятой. Так


как биты № 15 всегда имеют состояние "О", то эти значения интерпретируются как
положительные числа. При этом условии числа в двоично-десятичном коде можно
сравнивать с двоично-кодированными числами, так как разряды двоично-десятично
закодированных чисел нарастают также, как и разряды двоично-кодированных
чисел.

4.4 Арифметические функции


С помощью арифметических функций производятся логические операции над двумя
числовыми значениями. Выполняются следующие операции:
Ø сложение /раздел 4.4.1/
Ø вычитание / раздел 4.4.2/
Ø умножение / раздел 4.4.3/ и
Ø деление / раздел 4.4.4/.
В устройстве автоматизации S5-150S возможно прямое запоминание
промежуточных результатов /раздел 4.4.5/.
В разделе 4.4.6 описаны комбинации этих четырех основных действий арифметики.
Арифметические операции выполняются независимо от логического результата и на
него не влияют. При выполнении арифметических операций учитывается система
представления чисел сопрягаемых величин. Результат хранится, в аккумуляторе 1
для дальнейшей обработки.

158
Влияние аккумуляторов
Операции основных арифметических действий логически увязывают содержания
аккумулятора 1 и аккумулятора 2 и заносят результат в аккумулятор I. В
устройствах автоматизации S5-110S, S5-130W, S5-150A и S5-150K содержание
аккумулятора 2 при этом остается без изменений.

Пример:
В слово данных DW53 необходимо записать сумму содержаний слов данных DW51
и DW52.

: L DW 51
: L DW 52
: +F
: T DW 53

Состояние аккумуляторов до выполнения операции

данные

159
Состояние аккумуляторов после выполнения инструкции LDW51

Состояние аккумуляторов после выполнения инструкции LDW52

Выполнение инструкции +F

160
Состояние аккумуляторов после выполнения инструкции T DW53

Содержание аккумулятора 2 при выполнении арифметической операции остается


без изменений.
В устройстве автоматизации S5-150S после выполнения основной арифметической
операции аккумулятор 2 принимает содержание аккумулятора 3, а аккумулятор 3 -
содержание аккумулятора 4.
В данном случае получаем следующие состояния загрузки аккумуляторов:
Состояние аккумуляторов до выполнения операции

Состояние аккумуляторов после выполнения инструкции L DW51

161
Состояние аккумуляторов после выполнения инструкции L DW52:

Состояние аккумуляторов после выполнения инструкции +F

Состояние аккумулятора после выполнения инструкции T DW53

Содержание аккумулятора 4 при выполнении основной арифметической операции


не изменяется.

162
Установка индикации (флагов)
В зависимости от результата основной арифметической операции происходит
установка индикации /см. понятия "индикация"/. Опрос ее можно производить
функциями перехода.

4.4.1 Сложение

163
4.4.2 Вычитание

Значение слова входов EW24 загружается в аккумулятор I.

Значение слова входов EW26 загружается в аккумулятор I;


одновременно предыдущее содержание этого аккумулятора
переносится в аккумулятор 2.
Содержание аккумулятора I (EW26) вычитается из содержания
акк. (EW 24) ; числа интерпретируются как 16-разрядные с
Фиксированной запятой.
Результат заносится в аккумулятор I. Происходит установка
индикации.

Перенос результата вычитания к данным DW 39.

164
4.4.3 Умножение

Значение двойного слова данных DD40 загружается в


аккумулятор 1.
Зрачение двойного слова данных DD42 загружается в
аккумулятор 1. Одновременно предыдущее содержание
этого аккумулятора переносится в аккумулятор 2.
Содержимое обоих аккумуляторов интерпретируется как
числа с плавающей запятой и перемножаются.
Результат заносится в аккумулятор 1.
Происходит установка индикации.
Перенос результата умножения к данным DD44.

4.4.4 Деление

Значение двойного слова данных DD46 загружается в


аккумулятор 1.
Значение двойного слова данных DD48 загружается в
аккумулятор 1; одновременно предыдущее содержание
аккумулятора 1 переносится в аккумулятор 2.
Содержание аккумулятора 2 (DD46) делится на содержимое
аккумулятора 1 (DD48);
Деление выполняется как с числами с плавающей запатой.
Результат заносится в аккумулятор 1.
Происходит установка индикации.
Перенос результата деления к данным DD 50.

165
4.4.5 Запоминание промежуточных результатов

С помощью вспомогательных аккумуляторов 3 и 4 в устройстве автоматизации S5-


150S имеется возможность при выполнении сложных вычислительных процессов
производить прямое запоминание и опрос промежуточных результатов. Загрузка
вспомогательных аккумуляторов 3 и 4 происходит посредством инструкции ENT
/внесение в арифметическое ЗУ/.
Инструкция ENT воздействует только на аккумуляторы 3 и 4. При выполнении
инструкции аккумулятор 4 принимает содержание аккумулятора 3. Аккумулятор 3
принимает содержание аккумулятора 2. Содержания аккумуляторов 1 и 2 остается
без изменений.
Инструкция ENT выполняется независимо от логического результата и не влияет на
него. Установки индикации не происходит.

Состояние аккумуляторов

Содержание аккумулятора 4 при этом теряется.

Опрос аккумуляторов 3 и 4 выполняется через одну из операций основных


арифметических действий. При выполнении одной из этих инструкций результат
запоминается аккумулятором 1; аккумулятор 2 принимает содержание аккумулятора
3, а аккумулятор 3 принимает содержание аккумулятора 4.

166
Состояние аккумуляторов

После выполнения одного из основных арифметических действий

Содержание аккумулятора 4 остается при этом без изменении.


Перезапись аккумулятора 2 возможна только в устройстве S5-150S. В других
командах контроллера содержание аккумулятора 2 не изменяется.

167
Пример:
Необходимо продемонстрировать принцип действия инструкции ENT. С целью
упрощения вычисления выполняются с константами, чтобы легче было проследить
за загрузкой аккумуляторов.

Необходимо высчитать: 3 х 4 + 5 х 6.
В соответствии с правилами арифметики сначала выполняется умножение, в
результате чего получаем два промежуточных результата:

Z1 = 3 х 4 = 12

Z2 = 5 х 6 = 30
Затем оба промежуточных результата складываются и получается окончательный
результат.

Е = Z1 + Z2 = 42

Запись программы на языке STEP-5:


:L KB 3
:L KB 4
:XF
:L KB 5 Получение первого промежуточного результата Z1
:ENT : L Промежуточный результат Z1 поступает в аккумулятор И.
КД 6 Промежуточный результат Z1 записывается в аккумулятор
3.

: XF
:+F Образуется второй промежуточный результат Z2.
После выполнения этой операции в аккумуляторе 2
находится первый промежуточный результат Z1.
Оба промежуточных результата складываются.
Окончательный результат поступает в аккумулятор 1 и
используется в дальнейшей обработке.

168
Состояние аккумуляторов /каждый раз после выполнения стоящей слева,
инструкции/

дальнейшие примеры арифметических операций см. в следующем разделе.

169
4.4.6 Комбинированные арифметические функции

Арифметические Функции можно комбинировать между собой. При этом нужно


учитывать, что умножение или деление при выполнении имеют тот же приоритет,
что и сложение или вычитание.
С помощью инструкции ENT промежуточные результаты заносятся в
аккумуляторы 3 и 4.

Пример I:
Необходимо сложить значения, находящиеся в словах входов EW30 и EW32; из
суммы вычесть содержание слова данных DW17. После прибавления постоянного
значения 300 результат записать в слово данных DW18.

170
Состояние аккумуляторов во время процесса вычислений /после
выполнения стоящей слева инструкции/:

Пример 2
К содержанию слова данных DW28 необходимо прибавить троек ратное значение
слова меток MW196. Результат записать в слово данных DW30.

Есть два варианта выполнения вычислений:


- Вариант А для устройства автоматизации S5-150S.
- Вариант В для всех остальных устройств автоматизации /кроме S5-150S/.

171
Вариант А

Необходимо произвести следующие вычисления:

Целесообразнее всего вычисления начать с умножения.

Программа на языке STEP-5:

:L КB 3
:L MM 196
:XF Значение слова меток MW 196 утраивается.
:L DW 28 К промежуточному результату прибавляется значение слова,
:+F данных DW28.

:T DW 30 Окончательный результат переносится в слово данных DW30.

Изменение состояний аккумуляторов после выполнения стоящей слева


инструкции:

172
Вариант В

Необходимо произвести следующие вычисления:

В устройствах автоматизации, где нет операции умножения, отсутствуют и


аккумуляторы и 4. поэтому при выполнении вычислений содержание аккумулятора
2 не изменяется и с ним /как в нашем случае/ можно многократно выполнять
сложение.

Программа на языке STEP-5:

:L MW)96
:L DW 28
:+F Значение слова меток MW 196 в общей сложности
:+F трижды прибавляется к значению слова данных
:+F DW28.

:T DW30 Результат переносится в слово данных DW30.

Изменение состояний аккумуляторов в ходе вычислений после выполнения стоящей


слева инструкции:

173
Пример 3:

Если 4-кратное значение счетчика Z18 равно сумме содержаний слова


данных DW5 и слова меток MW192, должна установиться метка
М 107.0. Необходимо выполнить следующие вычисления:

Программа на языке STEP 5:

:L KB 4
:L Z 18 Значение счетчика Z18 умножается на четыре.
:XF
:L DW 5 Промежуточная запись учетверенного значения
:ENT счетчика.
:L MW 192 Сложение значений слова данных DW5 и слова
: +F меток MW 192.

:!=F Сравнение учетверенного значения счетчика с


суммой на равнозначность.
:=M 107.0 При выполненном сравнении метка устанавливается в
состояние "I".

174
Ниже приводится состояние аккумуляторов во время выполнения вычислительных
операций после отработки указанных сверху инструкций:

4.5 Логические операции над числовыми данными


С помощью этих операций можно сопрягать между собой числовые значения двух
операндов по следующим функциям:

В разделе 4.5.4 приведены примеры логических операций над числами в различных


комбинациях.

175
При выполнении логических операций над данными значения операндов
интерпретируются как чистые комбинации битов. Результат поступает для
дальнейшего использования в аккумулятор I.
Обработка логических операций над данными не зависит от логического результата
и сама на логический результат не влияет.

Состояние аккумуляторов до выполнения операции

176
Состояние аккумуляторов после выполнения инструкции LEW6

Состояние аккумуляторов после выполнения инструкции L DW22

177
Выполнение инструкции UW

Аккумулятор после выполнения инструкции TDW34

178
Содержание аккумулятора при выполнении логической операции над данными не
изменяется.

Установка индикации (флагов)


При выполнении логических операций над данными производится установка
индикации /см. понятия "индикации"/. Опрос ее производится функциями
перехода.

Логические операции над данными выполняются всегда пословно. Если операнды,


над которыми должна выполняться операция, заданы в виде байтов, остальные биты
от 8 до 15 заполняются "О" и соответственно сопрягаются. При операндах,
имеющих Формат двойного слова, операция выполняется только над правым
словом. Переноса в левое слово не происходит.

179
4.5.1 Логическая Функция И двух слов (UW)
Логическая операция И выполняется над отдельными битами слова, находящегося в
аккумуляторе I, и соответствующими битами содержания аккумулятора 2.
Отдельные биты слова результата будут иметь состояние "I", если соответствующие
биты обоих слов, над которыми выполняется операция, также имеют состояние "I".
Результат заносится в аккумулятор 1 для дальнейшей обработки.

Пример:
Необходимо выполнить логическую операцию И над значением слова данных
DW10 и над значением слова данных DW27. Результат записать в слово данных
DW113.

180
4.5.2 Логическая функция ИЛИ двух слов (OW)
Логическая операция ИЛИ выполняется над отдельными битами слова,
находящегося в аккумуляторе I, и соответствующими битами содержания
аккумулятора 2. Отдельные биты слова результата будут иметь состояние "О", если
соответствующие биты обоих слов, над которыми выполняется операция, также
имеют состояние "О". Результат поступает в аккумулятор 1 для дальнейшей
обработки.

Пример:
Необходимо выполнить логическую операцию ИЛИ над значением слова данных
DW 11 и значением слова данных DW 28. Результат записать в слово данных DW
114.

Пример с комбинацией битов:

181
4.5.3 Логическая функция исключающее ИЛИ двух слов (XOW)

Логическая операция исключающее ИЛИ выполняется над отдельными битами


слова, находящегося в аккумуляторе I, и соответствующими битами содержания
аккумулятора 2. Отдельные биты слова результата тогда имеют состояние "I", если
только один из соответствующих битов обоих сопрягаемых слов имеет состояние
"I". Результат поступает в аккумулятор 1 для дальнейшей обработки.

Пример:
Необходимо выполнить логическую операцию исключающее или над значением
слова данных DW12 и значением слова данных DW29. Результат записать в слово
данных DW 115.

Пример с комбинацией битов:

182
4.5.4 Комбинированные логические функции данных

Логические функции данных можно произвольно комбинировать между собой.


Результат предыдущей логической операции, хранящийся в аккумуляторе I, можно
сопрягать со следующей логической функцией и т.д.

Пример:
Необходимо установить в состояние "О" биты №0 - №3 и № 12 - № 15 в слове
входов EW37. Биты №7 и № II необходимо установить в состояние "I". Результат
записать в слово данных DW91.

Пример с комбинацией битов:

183
5 ОПИСАНИЕ ОРГАНИЗАЦИОННЫХ ФУНКЦИЙ

К организационным функциям относятся:


Ø функции блоков
Ø функции переходов
Ø функции смешения
Ø функции преобразования
Ø декрементирование, инкрементирование
Ø функции обработки
Ø запрет или разрешение выдачи команд
Ø запрет или разрешение тревог (прерываний)
Ø запрет или разрешение тревог-требований ( запросов прерывания )
Ø запрет или разрешение на обработку ошибок адресации и стол.

Благодаря функциям блоков процессоры устройств автоматизации S5-110S, S5-


130W, S5-150A, S5-150K и S5-150S поддерживают "структурность" построения
программ языка STEP-5 /раздел 5.1/. Программа подразделяется на отдельные
участки /блоки/, которые могут обрабатываться постоянно или в зависимости от
логического результата. В качестве типов блоков существуют организационные
блоки, программные блоки, Функциональные блоки и шаговые блоки, которые
являются частями общей программы, а также блоки данных, которые представляют
собой области данных пользователя.
С помощью описываемых в разделе 5.2 Функций перехода можно прерывать
линейную обработку программу и продолжать в другом месте. функции перехода
выполняются, всегда /абсолютный переход/ или в зависимости от условий /переход
при логическом результате = I;
переход, если содержание аккумулятора равно или не равно нулю, положительное
или отрицательное; переход при переполнении/. К функциям, с помощью которых
/без указания операндов/ можно непосредственно воздействовать на содержание
аккумулятора, относятся функции смещения /раздел 5.3/, Функции преобразования
/раздел 5.4/ и декрементирование и инкрементирование /уменьшение и приращение/
/раздел 5.5/.
С помощью функций смещения содержание аккумулятора можно сдвигать влево
или вправо. Функции преобразования позволяют преобразовать содержание аккуму-
лятора в другой вид /напр., преобразование кода двоичной системы в двоично-
кодированную десятичную систему/.

184
Содержание аккумулятора, может быть уменьшено с помощью Функции
декрементирования и увеличено с помощью функции инкрементирования.
Функции обработки позволяют вести "-конкретную" обработку программы на
языке STEP-5 т.е. программным путем можно изменить параметры обработанных
инструкций языка STEP-5. Благодаря этому возможна многократная обработка
программы с постоянно изменяемыми операндами. Как вести такую обработку
описано в разделе 5.6.
С помощью операций запрет/разрешение выдачи команд /раздел 5.7/,
запрет/разрешение тревог /раздел 5.8/, запрет/разрешение запросов прерывания
/раздел 5.9/, запрет/разрешение на обработку ошибок адресации /раздел 5.10/ и стоп
/раздел 5.11/ можно воздействовать на обработку программу.
Запрет/разрешение выдачи команд воздействует на отображение процесса. на
выходах в зависимости от логического результата и позволяет вести обработку
Фрагмента программы не изменяя состояния сигналов на выходах /например, в
следящем режиме сблокированной цепочки/. Запрет/разрешение тревог
воздействует независимо от логического результата на выполнение обработки с
управлением по тревогам. Результат обработки ошибки адресации влияет на
дальнейшее поведение процессора в случае обращения к дефектному или
отсутствующему блоку.
Функция "стоп" позволяет останавливать процессор программно-техническим путем
/напр., в случае обнаружения ошибки/.

5.1 Функции блоков

Прикладные программы должны иметь "структурное" строение, т.е. они должны


подразделяться на законченные участки. При присвоении такому участку
определенной /технологической/ функции во время программирования получают
наглядные сегменты программ с простой стыковкой с другими частями программы.
Эти преимущества программирования положительно сказываются и при пуске
оборудования в эксплуатацию. Упрощается тестирование по участкам.
Если возникает необходимость в обработке этих блоков, их "вызывают" /см. схему/.
Вызов осуществляется с помощью абсолютных или обусловленных логическим
результатом операций вызова, находящихся в программе. Пои выполнении
операций вызова происходит выход из линейной программы и программа
обрабатывается в вызванном блоке.

185
Структура программ, а также различнее виды обработки описаны в томе 1
"Программирование основных Функций".
Язык программирования располагает следующими операциями:

Ø Вызов программных блоков /раздел 5.1.1/,


Ø Вызов функциональных блоков /раздел 5.1.2/,
Ø Вызов шаговых блоков /раздел 5.1.3/,
Ø Вызов блоков данных /раздел 5.1.4/
Ø Операции окончания блока /раздел 5.1.5/.
Конец блока отмечается операцией "конец блока". Эта операция может
программироваться абсолютно или в зависимости от логического результата. При
выполнении операции "конец блока" обработка программы. продолжается в том
блоке, где находится вызов к обрабатываемому в данный момент блоку. Обработка
продолжается по инструкции, следующей после этого вызова.

Вызов блока

186
Первым блоком, который обрабатывается циклической программой, является
организационный блок OВ 1 /см. том I, "Программирование основных Функций"/. В
этом блоке вызываются также другие подлежащие обработке блоки, которые в свою
очередь могут вызывать последующие блоки и т.д. Образуются "вложения" блоков
один в другой. Глубина вложений составляет, например, в устройствах
автоматизации S5-110S, S5-150W, S5-150A, S5-150K - 7 блоков, а в S5-150S - 15
блоков.

5.1.1 Вызов программных блоков

Блоки, получаемые в результате членения прикладной программы, называются


программными блоками РВ. При целенаправленном применении старшие
программные блоки представляют собой обзор программ пользователя.
Соответствующие подчиненные программные блоки охватывают все
технологически взаимосвязанные функции, напр., функции какого-либо
исполнительного элемента.
Программное блоки вызываются независимо от каких-либо условий или в
зависимости от логического результата. Абсолютный вызов программного блока
SPA PB при обработке выполняется всегда. Линейная обработка программы
прекращается и продолжается в начале вызванного программного блока.

Абсолютный вызов программного блока не зависит от логического результата не


влияет на него. Логический результат сохраняется и при смене блока
"захватывается" /кроме устройств S5-110S, S5-130W/. Этим логическим
результатом, например, можно произвести установку меток. Начатая в ставшем
блоке логическая операция в вызванном блоке не продолжается.

Условный вызов программного блока SPB PB выполняется тогда, когда при


обработке вызова логический результат равен "I". В этом случае линейная
обработка программы прекращается и переходит на начало вызванного
программного блока.
Если при обработке условного вызова программного блока логический результат
равен "О", вызов не выполняется. Продолжается линейная обработка программы.
Логический результат устанавливается в состояние "I".

187
Пример:
Программный блок РВ 67 должен обрабатываться в зависимости от состояния
сигнала метки М 105.3. Программный блок РВ 68 должен обрабатываться
постоянно и независимо от сигнала метки.

Структура программы:

188
5.1.2 Вызов функциональных блоков

С помощью функциональных блоков реализуются часто повторяющиеся или очень


сложные Функции. Функциональный блок представляет собой последовательность
операций, которая описывает ограниченную Функцию. В память он заносится один
раз и вызывается один или много раз старшими блоками /программными или
функциональными/. Вызов Функционального блока может быть "параметризован".
Ему присваиваются операнды, с которыми он должен работать /см, раздел 2.1/.
Благодаря этому обеспечивается произвольное использование Функциональных
блоков.
Функциональные блоки вызываются независимо от условий или в зависи-
мости от логического результата. Абсолютный вызов функционального блока SPA
FB выполняется при обработке. Линейная обработка программы прекращается и
продолжается в начале вызванного функционального блока.
Абсолютный вызов функционального блока не зависит от логического
результата не влияет на него. Логический результат сохраняется и при смене блока
"захватывается" /кроме устройств S5-110S и S5-130W/. Этот логический результат,
например, может быть использован для установки меток. Начатая в старшем блоке
логическая операция в вызванном блоке продолжения не имеет.
Условный вызов функционального блока SPB FB выполняется только тогда, когда
при обработке вызова логический результат равен "I". В этом случае линейная
обработка программы прекращается и переходит на начало вызванного
Функционального блока.
Если при обработке условного вызова функционального блока логический результат
равен "О", блок не обрабатывается. Продолжается линейная обработка
программы. Логический результат устанавливается в состояние "I".

189
Пример:
Функциональные блоки FB227 И FВ228 должны обрабатываться в зависимости от
состояния сигнала метки М 117.4. Функциональней блок FB227 обрабатывается
при условии, что метка М 117.4 имеет состояние "I". При состоянии сигнала метки
М 117.4 равном "О" должен обрабатываться функциональный блок FB228. После
этого во всех случаях обрабатывается функциональный блок FB251.

Структура программы:

190
5.1.3 Вызов шаговых блоков

Шаговые блоки представляют собой отдельные шаги в схемах управления. Один


шаговый блок соответствует одному шагу процесса. Он содержит выдаваемые
команды и условия перехода к следующему шагу.
Как правило шаговые блоки используются только в сочетании с функциональным
блоком "сблокированная схема управления". Однако они могут вызываться
поочередно и рассматриваются тогда, как программные блоки.
Шаговые блоки вызываются независимо от условий или в зависимости от
логического результата. Абсолютный вызов шагового блока SPA SB всегда
выполняется при обработке. Линейная обработка программы прекращается и
продолжается в начале вызванного шагового блока.
Абсолютный вызов шагового блока не зависит от логического результата и не
влияет на него. Логический результат сохраняется и при смене блока
"захватывается", "тот логический результат, например, может быть использован для
установки меток. Начатая в старшем блоке логическая операция в вызванном блоке
продолжения не имеет.

Условный вызов шагового блока SPB PB выполняется только тогда, когда при
обработке вызова логический результат равен "I". Тогда происходит выход из
линейной программы и обработка продолжается в начале вызванного шагового
блока.
Если при обработке условного вызова шагового блока логический результат "О",
вызов не выполняется. Продолжается линейная обработка программы. Логический
результат устанавливается в состояние "I".

5.1.4 Вызов блоков данных


В блоке данных содержатся данные, с которыми работает прикладная программа.
Один блок данных содержит 256 слов данных. Если этих слов недостаточно, блок
данных меняется ; производится вызов нового блока, все операции с символом
операнда D будут относится тогда к этому блоку данных.

1) В особых случаях /напр., в списках текстов для интерфейса AS512/ длина блока
данных может составлять до 2 К.

191
Абсолютный вызов блоков данных выполняется независимо от каких-либо условий.
Все адресованные в последующем данные относятся к этому блоку данных.
Циклическая обработка программы не прерывается. Логический результат и
содержание аккумулятора не изменяются.

Пример:
Необходимо произвести сравнение значения слова, данных DW53 из блока данных
DB12 со значением слова данных DW67 из блока данных DB 17. равнозначности
должна установиться метка М 7.3.

5.1.5 Операции окончания блока

Операциями окончания блока заканчивается обработка блока независимо или в


зависимости от логического результата. После этого обработка программы
продолжается в старшем блоке, если заканчивается организационный блок,
процессор продолжает работать в системной программе.

Конец блока

Заканчивается блок, обрабатываемый в настоящее время. Следует обратный


переход в ранее обрабатывавшийся блок, где содержался вызов блока. Обработка
программы будет продолжена с первой инструкцией на языке STEP-5 , следующей
за вызовом блока /к вызову блока в функциональных блоках относятся также
параметры блока/.

192
Выполнение операции "конец блока" BЕ не зависит от логического результата. При
обработке этой Функции всегда происходит смена блока. На логический результат
это не влияет. Через этот логический результат, например, можно устанавливать
метки. Начатая в вызванном блоке логическая операция в старшем блоке
продолжения не имеет.
ВЕ всегда является последней инструкцией в блоке.

Абсолютное окончание блока ВЕА


Происходит выход из обрабатываемого в настоящее время блока. Следует обратный
переход к ранее обрабатывавшемуся блоку, в котором содержался вызов блока.
Обработка программы в устройствах автоматизации S5-110S, S5-130W и S5-150S
продолжается с первой инструкцией на языке STEP-5 после вызова блока. /К
вызову блока в Функциональных блоках относятся также параметры блока/.
Примечание: В устройствах автоматизации S5-150A, S5-150K при обратном
переходе первая инструкция после вызова блока пропускается и программа
продолжается со второй инструкции. Поэтому в организационных блоках этих
устройств не разрешается программировать инструкцию ВЕА.
Выполнение операции ВЕА не зависит от логического результата. При обработке
этой Функции всегда происходит смена блока. Па логический результат это не
влияет. Через него можно, например, произвести установку меток.
Начавшаяся в вызванном блоке логическая операция в старшем блоке продолжения
не имеет.

Условное окончание блока ВЕВ


Выполнение операции ВЕВ зависит от логического результата. Если при
обработке операции ВЕВ логический результат "I", операция выполняется.
Обрабатываемый в настоящее время заканчивается. Следует обратный переход к
ранее обрабатывавшемуся блоку, в котором был вызов блока. Обработка
программы будет продолжена с первой инструкцией на языке STEP-5 после
вызова блока.

193
Логический результат при смене остается по-прежнему "I". Он может служить,
например, для установки меток. Начавшаяся в вызванном блоке логическая
операция в старшем блоке продолжения не имеет.
Если при обработке операции ВЕВ логический результат "О", операция не
выполняется. Продолжается линейная обработка программы. Логический результат
устанавливается в состояние "I". Следующая запрограммированная инструкция
опроса будет всегда являться первичным опросом /см. раздел 3.1.5/.

5.2 Функции перехода


Функции перехода позволяют прерывать линейную обработку программы и
продолжать ее в другом месте. Функции перехода. выполняются независимо
/абсолютно/ или в зависимости от каких-либо условий. В языке программирования
STEP-5 возможны следующие Функции перехода:
Ø SPA абсолютный переход /раздел 5.2 Л/
Ø SPB условный переход /раздел 5.2.2/
Ø SPZ переход при результате равном нулю (Zero) /раздел 5-.3/
Ø SPN переход при результате не равном нулю /раздел 5.2.4/
Ø SPP переход при знаке плюс /раздел 5.2.;)/
Ø SPM переход при знаке минус /раздел 5.2.G/
Ø SPO переход при переполнении /раздел 5.2.7/ и
Ø SPS переход при переполнении с запоминанием /раздел 5.2.8/.
Параметр инструкции перехода указывает цель. Цель перехода
определяется:
Ø указанием дистанции перехода или
Ø маркировкой меткой перехода.
Дистанция перехода указывается, в тех случаях, когда функция перехода должна
обрабатываться по указанным параметрам /см. раздел 5.6.3/. Программаторы
допускают указание только одной метки перехода.

Преобразование на машинный язык

Операции перехода на машинном языке MС 5, как и на языке программирования


STEP-5 записываются как однословные команды /за исключением SPS/.

194
Указание дистанции перехода
Указание дистанции перехода относится к инструкции перехода. Переходы могут
выполняться вперед, т.е. к инструкциям после инструкции перехода, и назад, т.е. к
инструкциям перед инструкцией перехода. При переходах вперед параметр
положительный, при переходах назад - отрицательный.
Дистанция перехода 1 означает, что обработка в процессоре будет продолжена по
следующей инструкции ; дистанция 2 означает, что обработка начнется через одну
инструкцию и т.д.

Большинство инструкций языка STEP-5 являются одиночными инструкциями.


Исключение составляют:
Ø Бит-тестовые функции
Ø Переход при переполнении с запоминанием SPS,
Ø Загрузка констант /кроме LKB / и
Ø Вызовы функциональных блоков.
В этом случае инструкциями считаются также параметры функциональных блоков
и указания параметров времени и счета /см. также раздел "Понятия", "Одно- и
многословные инструкции"/.

195
Пример:

Перехода могут выполняться только внутри блоков. Дистанция перехода не должна


выходить за пределы блока. Максимальная дистанция перехода составляет + 127
инструкций.

Маркировка перехода меткой


Цель перехода указывается символически. Место перехода обозначается меткой,
метка перехода состоит из 4 знаков, причем первый знак должен быть буквой. Эта
метка перехода указывается в инструкции перехода.

Переход разрешается только в пределах одного блока, а при работе на


программаторах- в пределах одного сегмента /схемы/, метки переходов
присваиваются каждому блоку. 3 различных блоках разрешается использовать
одинаковые обозначения меток переходов.

196
5.2.1 Абсолютный переход SPA

Функция перехода SPA выполняется всегда, т.е. независимо от каких-либо условий.


Линейная обработка программы прерывается. Она. будет продолжена в том месте,
которое определено или дистанцией или целью перехода.
Функция перехода не влияет на логический результат. Логический результат при
переходе "захватывается". Если непосредственно перед Функцией перехода или же
в месте перехода стоят инструкции опроса, например, UE, OЕ, и т.д., то они
рассматриваются как одна логическая операция.

Обработка программы:

5.2.2 Условный переход SPB

Функция перехода SPB выполняется только при условии, что логический результат
равен "I". При результате "О" переход не выполняется. при этом логический
результат устанавливается в состояние "I". Если в инструкциях непосредственно
после SPB содержатся операции, зависящие от логического результата, то они
выполняются при несостоявшемся переходе. Если непосредственно за SPB стоят
инструкции опроса, напр., UЕ, ОЕ, и т.д., то эти опросы рассматриваются как
"первичные опросы", т.е. отсюда начинается новая логическая операция.

197
Обработка программы:

Обработка программы при


выполненном переходе

С помощью условного перехода SPB можно программировать ветвления программ,


зависящих от логического результата.

Пример:
Если входы Е 18.3 и Е 20.4 имеют состояние "I", обрабатывается фрагмент
программы А, в противном случае - Фрагмент В.

Алгоритм:

198
Программирование:

5.2.3 Переход при логическом результате "ноль" SPZ

Функция перехода SPZ выполняется только тогда, если


Ø после выполнения арифметической функции содержание аккумулятора 1 равно
нулю,
Ø при выполнении функции сравнения содержание аккумулятора 2 равнозначно
содержанию аккумулятора 1 /выполнено сравнение на равенство/,
Ø после логической операции с данными содержание аккумулятора равно нулю
и
Ø после выполнения функции сдвига значение последнего смещенного бита
равно "0"
Во всех остальных случаях функция SPZ не выполняется /см. также раздел
"Понятия", "/индикация"/.
Функция SPZ не зависит от логического результата и не влияет на него. при
переходе логический результат "захватывается".

Пример:

199
5.2.4 Переход при логическом результате не равном нулю SPN

Функция перехода SPN выполняется только тогда, если


Ø после выполнения арифметической функции содержание аккумулятора 1 не
равно нулю,
Ø при выполнении функции сравнения содержание аккумулятора 2 больше или
меньше содержания аккумулятора 1 /выполнено" сравнение на неравенство/,
Ø после логической операции с данными содержание аккумулятора 1 не равно
нулю и
Ø после выполнения функции сдвига значение последнего смешенного бита.
равно "Г'.
Во всех остальных случаях функция SPN не выполняется /см. также раздел
"Понятия", "Индикация"/.
Функция перехода SPN не зависит от логического результата и не влияет на него.
При переходе логический результат "захватывается".

Пример:

5.2.5 Переход при знаке "плюс" SPP_

Функция перехода SPP выполняется только тогда, цели


Ø после выполнения арифметической функции содержание аккумулятора 1 лежит
в разрешенной положительной области чисел /например, в области +1...+32767
при пословных вычислениях с фиксированной запятой F/
Ø после выполнения арифметической функции содержание аккумулятора 1 меньше
разрешенной области чисел /например, меньше - 32768 при пословных
вычислениях с фиксированной запятой F/
Ø при выполнении функции сравнения содержание аккумулятора 2 больше
содержания аккумулятора 1 /выполнено сравнение на "больше"/,
Ø после выполнения логической операции над данными содержание
аккумулятора. 1 не равно нулю и
Ø после выполнения функции сдвига значение последнего смешенного бита "I".
Во всех остальных случаях переход SPP не выполняется /см. также раздел
"Понятия", "Индикация"/.
Функция перехода SPP не зависит от логического результата и не влияет на него.
При переходе логический результат "захватывается".
200
5.2.6 Переход при знаке "минус" SPM

Функция перехода SPM выполняется только тепла, если


Ø После арифметической функции содержание аккумулятора 1 находится в
разрешенной отрицательной области чисел /например, в области -I...-32768
при пословных вычислениях с фиксированной запятой F /,
Ø после арифметической функции содержание аккумулятора 1 больше
разрешенной области чисел /например, больше +32767 при пословных
вычислениях с фиксированной запятой F / и
Ø при выполнении функции сравнения содержание аккумулятора 2 меньше
содержания аккумулятора I /выполнено сравнение на "меньше"/.
Во всех остальных случаях функция SPM не выполняется /см.также раздел
"Понятия", Индикация"/.
Функция перехода SPM не зависит от логического результата и не влияет на него.
При переходе логический результат "захватывается".

201
5.2.7 Переход при переполнении SPO

Функция перехода SPO выполняется только тогда, если


Ø после арифметической функции содержание аккумулятора 1 меньше
допустимой области чисел /например, меньше -32768 пословных
вычислениях с фиксированной запятой F / и
Ø после арифметической функции содержание аккумулятора 1 больше
допустимой области чисел /например, больше +32767 пословных
вычислениях с фиксированной запятой F /.

Во всех остальных случаях Функция SPO не выполняется /см. также раздел


"Понятия", "Индикация"/.
Функция перехода SPO не зависит от логического результата и не влияет на него.
При переходе логический результат "захватывается".

202
5.2.8 Переход при переполнении с запоминанием SPS

Функция перехода SPS выполняется только тогда, если


Ø после вычислительной функции содержание аккумулятора 1 меньше
разрешенной области чисел /например, меньше -32768
Ø при вычислениях с фиксированной запятой F/ и
Ø после вычислительной функции содержание аккумулятора 1 больше
разрешенной области чисел /например, больше +32767 при вычислениях с
фиксированной запятой F/.
Во всех остальных случаях SPS не выполняется /см. также раздел "Понятия",
"Индикация"/.

5.3 Функции сдвига

Функции сдвига дают возможность побитового сдвига числовых значений влево или
вправо. С помощью операций
Ø SRW сдвиг вправо /слова/
Ø SLW сдвиг влево /слова/
Ø SVW сдвиг вправо со знаком /слова/
Ø SLD сдвиг влево /двойного слова/
Ø SVD сдвиг вправо со знаком /двойного слова/
Ø RRD циклический сдвиг /вращение/ вправо
Ø RLD циклический сдвиг /вращение/ влево
можно воздействовать на хранящийся в аккумуляторе параметр.

203
Выполнение функции сдвига не зависит от условий. Логический результат не
изменяется. Состояние последнего смешенного бита может быть опрошено
функцией перехода. Если этот бит имеет значение "О", то выполняется Функция
SPN /переход при результате равном нулю/. Если этот бит имеет значение "I",
выполняется функция SPN /переход при результате не равном нулю/ или SPP
/переход при знаке "плюс"/.
Функция сдвига с параметром 0 или 32 рассматривается как нулевая операция NOP.
При параметре 32 дополнительно происходит установка индикации.

Преобразование на машинный язык


Операции сдвига на машинном языке MС5, как и на языке STEP 5,
записываются в виде однословных инструкций.

5.3.1 Сдвиг вправо /слова/

С помощью функции "сдвиг вправо /слова/" SRW содержание аккумулятора 1


может быть по битам сдвинуто вправо. Параметр инструкции указывает на
количество разрядов, на которое производится сдвиг. Сдвиг может выполняться
минимально на 0 разрядов и максимально на 15 разрядов.
Освобождающиеся разряды заполняются нолями.

204
5.3.2 Сдвиг влево /слова/ SLW

С помощью Функции "сдвиг влево /слова/" содержание аккумулятора 1 может быть


по битам сдвинуто влево. Параметр инструкции указывает на количество разрядов,
на которое производится сдвиг. Сдвиг может выполняться минимально на 0
разрядов и максимально на 15 разрядов. Освобождающиеся' при сдвиге разряды
заполняются нулями.

5.3.3 Сдвиг вправо со знаком /слова/ SVW


С помощью функции "сдвиг вправо со знаком /слова/" содержание аккумулятора 1
может быть по битам сдвинуто вправо. Параметр инструкции указывает на
количество разрядов, на которое производится сдвиг. Сдвиг может выполняться
минимально на 0 разрядов и максимально на 15 разрядов.
Освобождающиеся при сдвиге разряды, заполняются знаком, т.е. при
положительных числах - нулями, а при отрицательных - единицами.

205
5.3.4 Сдвиг влево /двойного слова/ SLD

С помощью функции "сдвиг влево /двойного слова/" SLD содержание


аккумулятора 1 можно по битам сдвинуть влево. Параметр инструкции указывает
на количество разрядов, на которое производится сдвиг. Сдвиг может выполняться
минимально на 0 и максимально на 32 разряда. Освобождающиеся при сдвиге
разряды заполняются нулями.

32-разрядный аккумулятор, например, может быть загружен следующими


программами с указанными шестнадцатеричными комбинациями:

206
5.3.5 Сдвиг вправо со знаком /двойного слова/ SVD
С помощью Функции "сдвиг вправо со знаком /двойного слова/" SVD содержание
аккумулятора 1 можно по битам сдвинуть вправо. Параметр инструкции указывает
на количество разрядов, на которое производится сдвиг. Сдвиг может выполняться
минимально на 0 и максимально на 32 разряда..
Освобождающиеся при сдвиге разряды заполняются знаком, т.е. при
положительных числах - нулями, а при отрицательных - единицами.

5.3.6 Циклический сдвиг вправо /двойного слова/RRD


С помощью операции "циклический сдвиг вправо /двойного слова/"RRD
содержание аккумулятора 1 можно по битам сдвинуть вправо. Параметр
инструкции указывает на количество разрядов, на которое производится сдвиг.
Сдвиг может выполняться на 0 и максимально на 32 разряда.
Освобождающиеся при сдвиге разряды заполняются сдвигаемыми разрядами.

207
5.3.7 Циклический сдвиг влево /двойного слова/ RLD
С помощью функции "циклический сдвиг влево /двойного слова/" RLD содержание
аккумулятора можно по битам сдвинуть влево. Параметр инструкции указывает на
количество разрядов, на которое производится сдвиг. Сдвиг может выполняться
минимально на 0 и максимально на 32 разряда.
Освобождающиеся при сдвиге разряды заполняются сдвигаемыми разрядами.

208
5.4 Функции преобразования
С помощью вышеназванных функций производится преобразование значения,
хранящегося в аккумуляторе I.

Возможны следующие преобразования:


Дополнение до единицы/раздел 5.4.1/, Двоичное дополнение /слова //раздел
5.4.2/, Двоичное дополнение /двойного слова//раздел 5.4.3/, Кодовое
преобразование десятично-двоичное /раздел 5.4.4/, Кодовое преобразование
двоично-десятичное /раздел 5.4.5:, Преобразование выражения с
фиксированной запятой /двойное слово/ в выражение с плавающей запятой
/раздел 5.4.6/ и Преобразование выражения с плавающей запятой в
выражение с Фиксированной запятой /двойное слово//раздел 5.4.7/.
Обработка Функций преобразования не зависит от логического результата. В свою
очередь функции преобразования не изменяют логического результата. При
некоторых преобразованиях происходит установка индикаторов /смотри
последующие разделы/.

5.4.1 Дополнение до единицы KEW

Значение, находящееся в аккумуляторе I, при образовании дополнения до единицы


инвертируется бит за битом. Пули заменяются единицами и наоборот.

Установки индикаторов не происходит.


Пример:
Дополненное до единицы значение слова данных DW25 необходимо занести в слово
данных DW26.
:L DW 25 Загрузка значения слова данных DW25 в аккумулятор.
:KEW Образование дополнения до единицы.
:T DW 26 Пересылка /преобразованного/ содержания аккумулятора в
слово данных DW26.

209
Пример битовой карты:

0 1 0 1 1 1 0 1 0 0 1 1 1 0 0 0 L DW 25

KEW

0 1 0 1 1 1 0 1 0 0 1 1 1 0 0 0 T DW 26

5.4.2 Двоичное дополнение (слова) KZW

При образовании двоичного дополнения значение, хранящееся в аккумуляторе I,


сначала инвертируется бит за битом /как при дополнении до единицы, а затем к
содержанию аккумулятора прибавляется +1.
Двоичное дополнение KZW применяется при 16-разрядных числах с
Фиксированной запятой. Эта операция воздействует только на биты с 0 по 15
содержания аккумулятора.
При образовании двоичного дополнения происходит установка индикации.

210
Пример:
Двоичное дополнение значения слова данных DW31 необходимо
занести в слово данных DW32.

5.4.3 Двоичное дополнение (двойного слова) KZD

При образовании двоичного дополнения значение, хранящееся в аккумуляторе I,


сначала инвертируется бит за битом /как при дополнении до единицы /, а затем к
содержанию аккумулятора прибавляется +1.
Двоичное дополнение KZD применяется при 32-разрядных числах с фиксированной
запятой. Эта операция воздействует на биты с 0 по 32 содержания аккумулятора.
При образовании двоичного дополнения происходит установка индикации.

211
Пример:
Двоичное дополнение значения двойного слова данных DD68 необходимо
записать в слово данных DD72.

5.4.4 Преобразование из десятичного кода в двоичный DEF/DED


Функция преобразования из десятичного кода в двоичный DEF или DED
интерпретирует содержание аккумулятора 1 как двоично-кодированное десятичное
число. Пни операции DEF последнее преобразуется в 16-разрядное число с
Фиксированной запятой, а при операции DED -в 32-разрядное с Фиксированной
запятой. Если содержание аккумулятора 1 преобразованию не поддается /например,
из-за псевдотетрады не интерпретируется как двоично-кодированное десятичное
число/, происходит установка переполнения с запоминанием Os. В этом случае
кодового преобразования не происходит.

212
Преобразование из десятичного кода в двоичный /16-разрядного числа, с
Фиксированной запятой/ DEF
Находящееся в аккумуляторе 1 значение интерпретируется как двоично-
кодированное десятичное число с 3 декадами. 3 декады располагаются в
аккумуляторе справа и представляют собой значение десятичного числа. Знак
занимает 12 - 15 биты аккумулятора. Состояние "О" этих битов обозначает
положительное значение, а "I" - отрицательное.

Пример:
Поступившее в слово входов EW62 десятичное число необходимо записать в слово
данных DW2 в виде 16-разрядного числа с фиксированной запятой.

213
Преобразование из десятичного кода в двоичный /32-разрядное число с
фиксированной запятой/DЕD
Находящееся в аккумуляторе 1 значение интерпретируется как двоично-
кодированное десятичное число с 7 декадами. 7 декад располагаются в
аккумуляторе справа и представляют собой значение десятичного числа. Знак
занимает биты с 28 по 31. Состояние "О" этих битов говорит о положительном
значении, а "I" - об отрицательном. В результате преобразования в аккумулятор 1
поступает 32-разрядное число с Фиксированной запятой.

214
Пример:
Находящееся в двойном слове входов ED64 десятичное число необходимо занести
в двойное слово данных DD4 в виде 32-разрядного числа с Фиксированной запятой.

5.4.5 Преобразование из двоичного кода в десятичный DUF/DUD

Функция преобразования из двоичного кода в десятичный DUF или DUD


интерпретирует содержание аккумулятора 1 как 16-разрядное число с
Фиксированной запятой (DUF) или как 32-разрядное число с Фиксированной
запятой (DUD).
Если значение находящегося в аккумуляторе числа с Фиксированной запятой
больше 999 или 9999 999, происходит установка переполнения с запоминанием.
Кодового преобразования в этом случае не происходит.

215
Преобразование из двоичного кода в десятичный /16-разрядное число с
фиксированной запятой/DUF

Стоящее в аккумуляторе 1 значение интерпретируется как 16-разрядное число с


Фиксированной запятой и преобразуется в 7-декадное число двоично-кодированной
десятичной системы ДКДС. Располагающиеся в аккумуляторе 1 справа 3 декады
представляют собой значение десятичного числа. Знак занимает биты с 12 по 15.
Состояние сигнала "О" обозначает положительное числа, состояние "I" -
отрицательное.

Пример:

Находящееся в слове данных DW 144 16-разрядное число с фиксированной запятой


необходимо переслать в слово выходов AW66 как двоично-кодированное
десятичное число.

216
Преобразование /32-разрядного числа с фиксированной запятой/ из двоичной
системы в десятичную DUD

Находящееся в аккумуляторе 1 значение интерпретируется как 32-разрядное число


с Фиксированной запятой и переводится в двоично-кодированное десятичное число
с 7 декадами. 7 декад располагаются в аккумуляторе 1 справа и представляют собой
величину десятичного числа. Знак занимает с 2.8 по 31 биты аккумулятора.
Состояние сигнала "О" говорит о положительном значении, а "I" - об отрица-
тельном.

217
Пример:
Находящееся в двойном слове данных DD146 32-разрядное число с фиксированной
запятой необходимо переслать в двойное слово данных AD68 как число в системе
ДКДС.

5.4.6 Преобразование /двойного слова/ из числа с фиксированной запятой в


число с плавающей запятой FDG

Функция преобразования /двойного слова/ из числа с фиксированной запятой в


число с плавающей запятой FDG интерпретирует содержание аккумулятора 1
как 32-разрядное число с Фиксированной запятой. Последнее переводится в
число с плавающей запятой.
Числа с Фиксированной запятой, имеющие не менее 9 ведущих нолей или 9
ведущих единиц, переводятся точно. Числа с меньшим количеством нулей или
единиц теряют 9-п битов в младших разрядах (n = число ведущих /старших/
цифр). Ошибка составляет менее 2-22 (примерно 2*10-7 всей области, в
абсолютном выражении это меньше 255).

218
Пример:

Находящееся в двойном Слове данных DD206 32-разрядное число с


фиксированной запятой необходимо переписать в двойное слово данных DD208 в
виде числа с плавающей запятой.

219
5.4.7 Преобразование /двойного слова/ из числа с плавающей запятой в
число с фиксированной запятой GFD

Функция перевода выражения с плавающей запятой в выражение с фиксированной


запятой /двойного слова/GFD интерпретирует содержание аккумулятора 1 как
число с плавающей запятой. Последнее переводится в 32-разрядное число с
Фиксированной запятой.
Числа с плавающей запятой, которые не являются целыми числами, округляются до
меньшего по величине целого числа. Число с плавающей запятой со значением <1 в
виде выражения с фиксированной запятой становится 0.
Пример:
Находящееся в двойном слове данных DD2 число с плавающей запятой
необходимо занести в двойное слово данных DD10 в виде 32-разрядного числа с
Фиксированной запятой.

220
Если хранящееся в аккумуляторе значение больше или меньше области,
разрешенной для 32-разрядного числа с фиксированной запятой, устанавливается
переполнение с запоминанием Os. В этом случае преобразования не происходит.

5.5 Декрементирование D, инкрементирование I

С помощью, операцией декрементирование в и инкрементирование I производится


изменение данных в аккумуляторе I. Содержание аккумулятора уменьшается
/декрементируется/ или увеличивается /инкрементируется. Параметр этой операции
указывает, на сколько единиц уменьшается или увеличивается содержание
аккумулятора. Он может задаваться в пределах от 0 до 255.
Содержание аккумулятора, изменяется только в правом байте. Переноса в левый
байт не происходит. Счет ведется по "модулю 256", т.е. при превышении значения
255 счет начинается снова с самого начала, соответственно при выходе за 0 счет
снова начинается с 255.

221
Выполнение операций по декрементированию и инкрементированию
не зависит от логического результата. При обработке эти операции
выполняются всегда. На логический результат они не влияют.
Операции по декрементированию и инкрементированию не вызывают изменения
индикации.

5.6 Функции обработки

Инструкции "обработать слово данных BDW" и "обработать слово меток BMW"


используются для "индицирования" инструкций языка STEP-5. To есть
пользователь имеет возможность динамичного изменения параметра инструкции
программным путем во время обработки.
Функции обработки с параметрами блока описываются в разделе 7.3.

222
На языке STEP-5 инструкции "обработать слово данных" и "обработать слово
меток" записываются как команды, состоящие из двух слов. Впервой инструкции
указывается операции обработки и слово данных
или меток; во второй инструкции указывается операция, которую следует
выполнить, и обозначение используемых операндов. Параметр операнда во всех
случаях должен быть "0" или"0.0"

В машинном коде МС 5 инструкции "обработать слово данных" и "обработать


слово меток" также состоят из двух слов. Процессор выполняет операцию,
указанную во втором слове. Обозначение операнда дополняется на значение
стоящего при операции обработки слова данных или меток.

223
Значение слова данных DW 17 в нашем примере может быть изменено с помощью
операций "инкрементирование" или "декрементирование". Тем самым изменяется
также параметр выполняемой инструкции.
При обработке инструкции "обработать слово данных" процессор обращается к
актуальному в данный момент блоку данных. Как и при всех операциях с операндом
"данные', здесь также следует предварительно позаботиться о правильном вызове
блока данных. При обработке инструкции "обработать слово меток" это
ограничение снимается. Инструкции "обработать слово данных" и "обработать
слово меток" всегда выполняются независимо от логического результата.
"Обработка слова данных" и "обработка слова меток" охватывают только замещение
параметра, т.е. использование слова, указанного в слове данных. Выполнение
замещенной инструкции происходит точно также, как если бы она была
запрограммирована отдельно.

5.6.1 Индицирование двоичных операций (установка флагов)

224
Параметр этих индицируемых операций стоит в слове данных или слове меток. В
области операндов входов и выходов он имеет следующую структуру:

В правом байте слова данных или меток справа находится адрес байта, в левом
байте, также справа, - адрес бита.

225
Значение слова данных или меток при указании области операнда меток М имеет
следующую структуру:

В правом байте находится адрес байта, в левом байте справа - адрес бита.
Значение слова данных или меток при указании области операндов таймеров Т и
счетчиков Z имеет следующую структуру:

В правом байте слова данных или меток стоит параметр времени или параметр
счета. Левый байт при замещении параметров не учитывается.

226
Двоичные функции в сочетании с областью операндов данных в , точно также как и
бит-тестовые функции обрабатываться с индицированием не могут.

5.6.2 Индицирование операций над числами

К индицируемым операциям над числами относятся:

227
Параметр этих индицируемых операций находится в правом байте слова
данных или меток. Левый байт при замещении параметра не учитывается.

Пример:

выполненная инструкция

228
5.6.3 Индицирование организационных операции

К индицируемым организационным операциям относятся:

SPA PB абсолютный вызов программного блока условный


SPB PB вызов программного блока абсолютный вызов
SPA FB функционального блока условный вызов
SPB FB функционального блока абсолютный вызов
SPA SB шагового блока условный вызов шагового блока
SFB SB вызов блока данных
A DB
SPA абсолютный переход
SPB условный переход
SPZ переход при нуле
SPN переход не при нуле
SPP переход при знаке "плюс"
SPM переход при знаке "минус"
SPO переход при переполнении

SRW сдвиг вправо /слова/


SLW сдвиг влево /слова/
SVW сдвиг вправо со знаком /слова/ циклический
RRD сдвиг вправо /двойного слова. циклический
RLD сдвиг влево /двойного слова/
D декрементирование /правого байта/
I инкрементирование /правого байта/

Параметр этих индицируемых операций находится в правом байте слова данных или
меток. Левый байт при замещении параметра не учитывается.
Пример:
левый байт правый байт

: B DW 77 +25 *DW77
: SPA 0
:
:
:
SPA + 25
выполненная инструкция

*) Дистанция перехода указана как число с фиксированной запятой.

229
В устройстве программирования ПГ 670 инструкция перехода индицируется
параметром 0 путем задания перехода в ту же самую строку. Например:
Ml : SPA = М1

5.6.4 Пример: сравнение поля данных

Требуется сравнить область данных слов с DM20 по DW 100 со словом входов


EW10. Если значение в слове входов больше значения в слове данных, то
произойдет установка определенной метки. Метки, начиная с М 50.0, присвоены
соответствующим словам данных.
Регистр индексов для параметра слова данных - слово DW 2, для параметра
меток - слово DW 5.

230
5.7 Запрет или разрешение на выдачу команд

Операции "запрет на выдачу команд" BAS и "разрешение на выдачу команд" BAF


используются в тех случаях, когда необходимо обработать программы без
изменения состояния сигналов на выходах. Эти операции можно использовать для
проведения тестов или например, чтобы отследить какую-либо сблокированную
цепочку.
Операции запрета или разрешения на выдачу команд воздействуют на отображение
процесса на выходах следующим образом: операция "запрет на выдачу команд"
BAS запрещает установку или сброс отображения процесса на выходах. Как
только эта операция вступает в силу, прекращается выполнение следующих
инструкций:

SA установить выход
RA сбросить выход
= А присвоение результата выходу
ТРВ пересылка байта периферии и
TPW пересылка слова периферии.

Отображение процесса на выходах и тем самым также сами выходы состояния


сигналов больше не изменяют. Однако опрос выходов может по-прежнему
производиться.
Операция "разрешение выдачи команд" BAF вновь отменяет действие операции
"запрет выдачи команд" BAS , т.е. после ее исполнения инструкции,
воздействующие на выходы, выполняются как обычно.
Выполнение операций "BAS" и "BAF" зависит от логического результата.
Операции выполняются только тогда, когда логический результат при их обработке
равен "I". Логический "О" на эти операции влияния не имеет.
Если непосредственно за BAS или ВАF следуют инструкции опроса, например,
UE, OE, и т.д., эти опросы обрабатываются как первичные, т.е. в этом случае
начинается новая логическая операция.

231
:U E 28.3 Действие "BAS" вновь отменяется, инструкцией "BAF".
:BAF Дальнейшая программа STEP-5 выполняется без
ограничений, касающихся выходов.

5.8 Запрет или разрешение прерываний

К операциям "запрет прерываний" AS и "разрешение прерываний" AF прибегают


для воздействия на обработку прерываний процесса /обработка с управлением по
прерываниям/. Они используются в тех случаях, когда хотят обработать ряд блоков
без прерывания их обработки сигналами тревоги от процесса.
Операции "запрет/разрешение прерываний" следующим образом воздействуют на
обработку с управлением по прерываниям: операция "запрет прерываний" AS
запрещает обработку программы STEP-5 с управлением по прерываниям.
Прерывания не выполняются. Операция "разрешение прерываний" вновь
отменяет действие операции AS, т.е. после ее выполнения начинается обработка
возникающих или возникших на фазе запрета сигналов прерываний.
Выполнение операций AS и AF не зависит от логического результата При
обработке эти операции выполняются всегда. На логический результат они не
влияют.

Пример:
Обработка блоков РВ 37, FB 103 и РВ 38 не должна прерываться сигналами
тревоги.

232
5.9 Запрет или разрешение запросов на прерывания

В программируемом контроллере S5-150S имеется возможность параллельно к


обработке с управлением по прерываниям от процесса вести обработку с
управлением по прерываниям через так называемые запросы на прерывания.
Принцип действия запросов на прерываниям такой же, как и у прерываний от
процесса. Программа обрабатывается в организационных блоках ОВ35 - ОВ39 при
условии, если биты с № 8 по № 12 в системных данных BSO установлены в
состояние "I".
С помощью операций AAS И ААF можно запретить или вновь разрешить
обработку, вызванную запросом на прерывание. Операция "запрет запросов на
прерывание" AAS запрещает обработку с управлением по прерываниям, вызванную
запросом на прерывание. Операция "разрешение запросов на прерывание" AAF
вновь отменяет действие операции AAS.
Выполнение операций AAS и AAF не зависит от логического результата. Операции
при обработке выполняются всегда. Они не влияют на логический результат.

5.10 Запрет или разрешение обработки ошибок адресации

К операциям запрета или разрешения на обработку ошибок адресации AFS и AFF


прибегают в тех случаях, когда через процессор хотят воздействовать на
/предполагаемую/ ошибку в адресе. Процессор сообщает об ошибке в адресе, если
через какую-то операцию на языке STEP-5 обратились к входу или выходу в
отображении процесса, которые при новом запуске были зарегистрированы как
отсутствующие "nicht vorhanden". Это происходит при дефектном или при не
вставленном блоке.

При распознании ошибки в адресации центральный процессор прерывает обработку


программы STEP-5 и приступает к обработке организационного блока OВ 25. В
этом организационном блоке определяется дальнейшее поведение контроллера.
Если организационный блок OВ 25 не был запрограммирован, процессор при
появлении ошибки в адресе перейдет в состояние "стоп".

233
Через операцию "запрет обработки ошибки адресации" AFS обработка ошибки
запрещается. При появлении ошибки в адресе процессор продолжает нормально
работать. Операция "разрешение обработки ошибки адресации" AFF вновь
активизирует обработку. Выполнение операций AFS и AFF не зависит от
логического результата. Операции всегда выполняются при обработке. Они не вли-
яют на логический результат.

Пример:
При обработке программных блоков РВ 20 и РВ 21 ошибки в адресации не должны
обрабатываться.
:AFS Обработка ошибок в адресации запрещается.
:SPA РВ 20 Обработка этих блоков ведется без учета ошибок в
:SPA РВ 21 адресации.
:AFF Обработка ошибок в адресации вновь разрешена.

5.11 СТОП STP


К операции "стоп" STP прибегают, чтобы остановить центральный процессор.
После обнаружения ошибки в работе управляющего устройства или со стороны
оператора еще, например, могут быть выданы сигналы. После этого управляющее
устройство останавливается командой STP. Из состояния "стоп" можно выйти
только через манипуляции на фронтальной панели центрального блока.
Выполнение операции "STP" не зависит от логического результата.
Операция всегда выполняется при обработке.
/Дальнейшую информацию см. в разделе 9.4: Операции останова/.

234
6 ОПИСАНИЕ КОМАНД ПОДСТАНОВКИ

Команды подстановки /замещения/ можно программировать только внутри


функциональных блоков. Команды подстановки содержат только функцию,
подлежащую выполнению, и поперечную ссылку на список параметров вызова
функционального блока. При обработке команд подстановки процессор вместо
поперечной ссылки /формальный операнд/подставляет операнд, указанный в списке
параметров /текущий операнд/ и выполняет созданную таким образом команду
языка STEP 5. Благодаря этому запрограммированный один раз функциональный
блок, который только один единственный раз занесен в память устройства
автоматизации, может многократно обрабатываться с различными операндами.
Команды подстановки, как и основные команды, подразделяются на
Ø двоичные функции /операции над битами/
Ø функции с числами (операции над словами) и
Ø организационные функции.
Двоичные функции над параметрами блоков /раздел 6.1/ содержат, кал и основные
функции/ логические операции, функции памяти, времени и счета. По способу
записи функции времени и счета отнесены к командам подстановки. Выполнение
зависит от того, какой операнд /времени или счета/ будет использован /подставлен/.
Описываемые в разделе 6.2 функции с двоичными словами над параметрами блоков
аналогичны описанным в 4 разделе функциям загрузки и переноса с расширенным
запасом операций.
К организационным функциям с параметрами блоков относится только функция
обработки. Она позволяет обрабатывать и выполнять параметры, указанные в
вызове функционального блока /раздел 6.3/.

235
6.1 Двоичные операции над параметрами блоков

Программируемыми в виде команд подстановки двоичными операциями являются:


Ø двоичные логические операции над битами
Ø функции памяти, а также
Ø функции времени и счета.
Описываемые в разделе 6.1.1 логические операции над битами и описываемые в
разделе 6.1.2 функции памяти записываются как и основные операции /за
исключением двоичного сброса/ и точно так же обрабатываются процессором.
Функции времени и счета в командах на подстановку обобщены. Выполнение
операции зависит от подставленного операнда. В зависимости от того, будет ли в
качестве текущего операнда в вызове блока стоять операнд времени или счета,
команда подстановки имеет другую Функцию /см. раздел 6.1.3/.
Для бит-тестовых операций /раздел 3.5/ не существует эквивалентных команд
подстановки. Область операндов данных D в сочетании с двоичными Функциями
также не поддается замещению.
6.1.1 Логические операции над параметрами блоков
Программируемыми в качестве команд подстановки логическими операциями
являются:
Ø Функция И с опросом на состояние "I" (U=хххх).
Ø Функция И с опросом на состояние "О" (UN=xxxx).
Ø Функция ИЛИ с опросом на состояние "I" (O=хххх)
Ø Функция ИЛИ с опросом на состояние "О" (ON=xxxx).
Функция этих операций, а также возможные комбинации описаны в разделе 3.1.
После того, как процессор подставил в качестве параметра блока заданный текущий
операнд, команда обрабатывается как "обычная" логическая функция.

236
В качестве операндов при вызове функционального блока могут использоваться:
Входы Е 0.0 до Е 127.7
Выходы А 0.0 до А 127.7
Метки М 0.0 до М 255.7
Таймеры Т 0 до Т 255 и
Счетчики Z 0 до Z 255.

При обработке логический результат получается в соответствии с описанием в


разделе 3.1.5.
Пример 1: операция И-перед- ИЛИ

Программа в выполненная
функциональном программа
блоке

237
Пример 2: операция ИЛИ-перед-И
Вызов функционального блока

Программа в выполненная
функциональном программа
блоке

6.1.2 Функции памяти с параметрами блока


Двоичные параметры блока можно не только опрашивать, но также
устанавливать и сбрасывать. Для этого в распоряжении имеются следующие
операции:
Ø установка параметра блока (S = хххх),
Ø /двоичный/ сброс параметра блока (RB = хххх) и
Ø присвоение параметра блока (= = хххх) .
В отличие от сброса двоичного операнда, например сброс выхода вместе с
формальным операндом указывается, подразумевается ли двоичный сброс битов
(RB =хххх)или сброс двоичных слов (RD = хххх, см.раздел 6.1.3). Допустимый в
вызове блока операнд зависит от вида сбрасывания.

238
В качестве операндов при двоичном /битовом/ сбрасывании /а также при других
функциях памяти/ допускаются:
Входы Е 0.0 до Е 127.7
Выходы А 0.0 до А 127.7 и
Метки М 0.0 до М 255.7.

Получающаяся после подстановки текущего операнда команда языка STEP 5


обрабатывается, как описано в разделе 3.2. Программироваться могут точно такие
же последовательности операций.

Пример 1: Обработка фронтов с помощью импульсных меток

Вызов функционального блока

239
Пример 2: Преобразователь битов с условным переходом

Вызов функционального блока:

6.1.3 Функции времени и счета с параметрами блока

Программируемые в качестве команд подстановки Функции времени и счета


записываются частично иначе, чем функции времени и счета с операндами времени
и счета. В качестве команд подстановки допускаются:
Ø Запуск параметра блока в качестве короткого импульса (SI=xxxx)
Ø Запуск параметра блока в качестве задержки включения (SE=xxxx)
Ø Запуск параметра блока в качестве продленного импульса или установка
/в виде двоичного слова/ параметра блока (SVZ=xxxx)
Ø Запуск параметра блока в качестве задержки включения или прямой счет
параметра блока (SSV=xxxx)
Ø Запуск параметра блока в качестве задержки отключения или обратный
счет параметра блока (SAR=xxxx)
Ø Сброс параметра блока /в виде двоичного слова/ (RD=xxxx) и
Ø Деблокирование параметра блока (FR=xxxx).

240
Для команд подстановки SI=xxxx и SE=xxxx в качестве операндов в вызове
блока допустимо только время. Соответствующие команды на языке STEP-5
будут гласить SIT или SET.
Для команд подстановки SVZ=xxxx, SSV=xxxx и SAR=xxxx в качестве
текущих операндов в вызове блока допустимы как таймеры, так и счетчики.
Характеристика команды STEP-5 после подстановки будет зависеть от
использованного текущего операнда. Две первых буквы операции подстановки
описывают временную характеристику, а третья - характер счета.

Для команд подстановки RD=xxxx и FR=xxxx в качестве текущих операндов в


вызове блока допустимы как таймеры, так и счетчики. соответствующие команды
на языке STEP-5 будут гласить рт или RZ и FRT или FRZ.
В отличие от команд RT или RZ языка STEP-5 в команде подстановки указывается,
что речь идет о сбросе двоичного слова . С помощью RD=хххх можно подставлять
только таймеры и счетчики, с помощью RB=xxxx /см.раздел 6.1.2/ только входы,
выходы и метки.
Образовавшаяся, после подстановки операндов команда STEP-5 обрабатывается,
как описано в разделах 3.3 и 3.4. Могут программироваться такие же
последовательности операций.
При запуске таймера или при установке счетчика параметр времени или счета
задается, как указано в разделах 3.3 и 3.4.

241
Параметр времени или счета может также задаваться как параметр блока. В этом
случае следует различать, относится ли параметр времени или счета к операндам,
или же он задан как константа. Слову операндов в качестве вида параметра
блока, предшествуют "Е" или "А" /с типом "W"/, благодаря чему содержимое этого
параметра блока загружается в аккумулятор через команду L = хххх. Константе
предшествует вид параметра блока "D" /с типом KT или KZ /, благодаря чему этот
параметр блока непосредственно загружается в аккумулятор через инструкцию LW
= хххх.

242
Последующие примеры показывают подстановку времени и счетчика в
функциональном блоке.
Пример1: 3апуск таймера на отключение с задержкой
Вызов функционального блока:

243
Пример 2: Счетчик прямого обратного счета
Вызов функционального блока:

244
6.2 Операции над параметрами блоков в виде чисел
Программируемыми в качестве команд подстановки операциями над двоичными
числами являются функции загрузки и пересылки.
Описываемые в разделе 6.2.1 функции загрузки и пересылки, в отличие от
описываемых в разделе 4.1 функций загрузки и переноса, расширены на функцию
загрузки битовой карты параметра блока.
Программируемыми в качестве команд подстановки функциями загрузки и
пересылки являются:
Ø функция загрузки (L=xxxx)
Ø кодированная функция загрузки (LC=xxxx)
Ø функция пересылки (T=хххх)
Ø загрузка слова параметра блока (LW=xxxx) и
Ø загрузка двойного слова параметра блока (LD=xxxx).

Функции загрузки L=xxxx, кодированной загрузки LC=xxxx и переноса


T=хххх описаны в разделе 4.1. После того, как процессор подставит операнды,
заданные в качестве параметров блока, инструкция обрабатывается как "обычная"
операция с числами.

В качестве операндов при вызове функциональных блоков можно


использовать:

245
Пример: Функции загрузки и пересылки
Вызов функционального блока

246
Загрузка слова параметра блока LW

Операция для загрузки слова параметра блока LW в качестве команды подстановки


применима только в сочетании с каким-либо формальным операндом. Параметр, к
которому производится обращение в этой операции, должен быть параметром типа
"D" - данные. Заданное в качестве текущего параметра данное при выполнении
операции загружается в аккумулятор, где оно может быть подвергнуто дальнейшей
обработке.

Пример: Загрузка константы

При вызове функционального блока параметр блока L указывает на длину области


данных. Эта длина параметризуется при вызове функционального блока.

Вызов функционального блока

247
Загрузка двойного слова параметра блока LD

Операция для загрузки двойного слова параметра блока LD применима только в


сочетании с каким-либо формальным операндом. Параметр блока, к которому
обращается: эта операция, должен быть параметром типа "D" - данные. Данное,
заданное в качестве текущего параметра, при выполнении операции загружается в
аккумулятор, где оно может быть подвергнуто дальнейшей обработке.
Операция LD является единственной среди инструкций замещения, позволяющей
загружать двойное слово.

Пример: Загрузка константы с плавающей запятой

Заданное в вызове функционального блока число с плавающей запятой необходимо


прибавить к двойному слову данных DD 101.

Вызов функционального блока

248
В машинном коде МС5 под константу отводится две команды, битовые карты
которых представляют число 5,5 с плавающей запятой:

6.3 Организационные функции с параметрами блока

Операция по обработке параметра блока В=хххх является единственной


организационной командой подстановки. При ее выполнении параметр типа
"команда" должен быть присвоен параметру блока.
В качестве текущих операндов могут задаваться программные блоки PB,
функциональные блоки FB, шаговые блоки SB и блоки данных DB. Вызов первых
/при выполнении операции В = хххх/ выполняется абсолютно, а блоки данных
набираются.

249
Пример: Обработать параметр блока

В функциональном блоке - каждый по своему вызову - должны произвольно


вызываться функциональный блок "подпрограмма" и блок данных.

Вызов функционального блока:

250
7 ПАРАМЕТРИРОВАНИЕ И ОБЕСПЕЧЕНИЕ ФУНКЦИОНАЛЬНЫХ
БЛОКОВ

Место сопряжения между программными блоками и функциональными блоками


описывается параметрированием функциональных блоков, а в случае
необходимости - обеспечением функциональных блоков. Для этого сопряжения- в
основном имеется три различных варианта:
Ø индивидуальное параметрирование /раздел 7.1/,
Ø обработка без параметров блока /раздел 7.2/,
Ø побайтовое/пословное параметрирование /раздел 7.3/ и
Ø параметрирование через слова данных /раздел 7.4/.

Параметрирование функциональных блоков


Параметрирование функциональных блоков соответствует распределению
параметров функционального блока при его вызове. Здесь указываются операнды, с
которыми должен работать функциональный блок. При графическом изображении
/в виде функционального или контактного плана/ операнды пишутся рядом с
расположенными слева входами, а справа - выходами символа функционального
блока. При изображении в виде списка команд операнды пишутся подряд вслед за
операцией вызова.

Обеспечение функциональных блоков


Обеспечение функциональных блоков соответствует подготовке входных сигналов
функциональных блоков и обработке выходных сигналов функциональных блоков.
Прежде чем вызвать и параметрировать функциональный блок, производят
подготовку операндов, с которыми должен работать функциональный блок,
например, через логические операции или расчетом с помощью арифметических
функций. После вызова функционального блока производится дальнейшая
обработка операндов на выходах функционального блока; например, данные
операнды логически связываются с другими операндами в подчиненной этому
функциональному блоку управляющей схеме.

251
Обеспечение и параметрирование функциональных блоков

7.1 Индивидуальное параметрирование

При индивидуальном параметрировании указывается каждый отдельный сигнал


места сопряжения. Операнды без подготовки или без дальнейшей обработки
указываются непосредственно в списке параметров. Если входы функционального
блока требуют специальной подготовки
входного сигнала, то в качестве операндов для параметров блока используются
промежуточные метки. Промежуточные метки используются также в тех случаях,
когда выходные сигналы функционального блока требуют дальнейшей обработки.
Использованные промежуточные метки можно повторно использовать при вызове
следующего функционального блока.
Обращение к указываемым таким образом операндам производится
непосредственно из программы функционального блока с помощью команд
подстановки /инструкции с формальными операндами/.
Индивидуальное параметрирование используется при коротких списках параметров.
Его преимущество в том, что при документировании виден каждый отдельный
параметр блока. Индивидуальное параметрирование
теряет свой смысл, если список параметров получается слишком длинным и трудно
просматриваемым или если внутри функционального блока необходимо
запоминать большое количество состояний сигналов.

252
Пример:
Выход Функционального блока (FB 218) должен управлять световым
сигнализатором (выход А 27.1). Световой сигнализатор должен иметь состояние
"I", если /внутренний/ накопитель команд или вход контроля ламп /Е12.0/ имеют
состояние сигнала "I". Параметрирование должно производиться индивидуально.

253
Программирование в программном блоке:

7.2 Обработка без параметра блока

Функциональный блок можно обеспечивать операндами не только через список


параметров. Программа функционального блока работает как с формальными
операндами, так и со всеми другими признаками операндов. К параметрированию
без параметров блока прибегают тогда, когда операнды имеют очень часто
используемую функцию, например, аварийное отключение, проверка ламп.
Запрограммированный таким образом функциональный блок теряет свою
универсальность, так как некоторые операнды имеют жесткое присвоение.

Пример:
Выход функционального блока (FB 218) должен управлять световым
сигнализатором (выход А 27.1). Световой сигнализатор должен иметь состояние
сигнала "I", если /внутренний/ накопитель команд или вход контроля ламп (Е 12.0)
имеют состояние "I". Обработка входа контроля ламп должна производиться без
параметра блока.

254
255
Программирование в программном блоке

7.3 Побайтовое/пословное параметрирование

При параметрировании по байтам или по словам двоичные сигналы места


сопряжения объединяются в байт или слово. Для этого используется байт меток или
слово меток которые затем указываются в качестве параметра блока. Отдельные
биты этого байта или слова меток устанавливаются или сбрасываются перед
вызовом. После вызова их можно опрашивать и обрабатывать дальше. Надобность в
промежуточных метках отпадает.
Указанные в качестве параметра блока байт или слово меток не поддаются
внутренней обработке по битам, потому что при каждом вызове
функционального блока байт или слово меток меняются. Сигнальные состояния
этих байтов меток или слов меток должны быть перенесены на вспомогательные
метки. На них и работает программа функционального блока.
К параметрированию по байтам и словам прибегают в тех случаях, когда список
параметров для индивидуального параметрирования получается слишком длинным.
При опросе состояний сигналов и документировании область меток сопряжения
можно просматривать напрямую, при условии, что известно распределение разрядов
битов этой области. Параметрирование по байтам и словам теряет целесообраз-
ность, если внутри функционального блока приходится запоминать большое
количество состояний сигналов.

256
Пример:
Выход функционального блока (FB 218) должен управлять световым
сигнализатором (выход А 27.1). Световой сигнализатор должен иметь состояние "I",
если /внутренний/ накопитель команд или вход контроля ламп (Е 12.0) имеют
состояние "I". Параметрирование производится через байт меток.

257
Программирование в программном блоке:

258
7.4 Параметрирование через слова данных

К параметрированию через двоичные слова данных прибегают тогда, когда


функциональные блоки должны хранить большое количество внутренних состояний
сигналов или очень часто вызываться. Состояния сигналов, которые подлежат
внутреннему запоминанию, а также важные состояния сигналов для опроса
состояний и документирования заносятся в слова данных.
Эти слова данных при параметрировании указываются как параметры блока. Для
поразрядной обработки слов данных значения, слов данных в Функциональном
блоке необходимо перенести во вспомогательную метку. При таком способе
параметрирования целесообразно иметь два места сопряжения: одно для вводов, а
другое для выводов. Сопряжение вводов содержит все заданные при обеспечении
состояния сигналов, а сопряжение выводов - все внутренние состояния сигналов
функционального блока и все состояния сигналов, ведущих на выходы
функционального блока.
Если записать все состояния сигналов обеспечения в данные, то программное время
обработки сократится. Перед обработкой самой программы сравнивается состояние
сигналов "старого" сопряжения вводов /записанное в слове данных/ с состоянием
"нового" сопряжения вводов /записанное в метке сопряжении/.
Совпадение обоих сопряжении говорит о том, что во время обработки остальной
программы изменений не произошло. Необходимость в обработке
функционального блока или его частей отпадает.
Другим преимуществом этого метода параметрирования является возможность
простой организации данных, например, в звеньях отдельных управляющих схем
или в функциях регулирования. Данные в этом случае запоминаются группами в
блока данных, которые обеспечиваются или опрашиваются "старшими"
функциональными блоками /например, для выдачи сообщений/.

259
Пример:
Выход функционального блока (FB 218) должен управлять световым
сигнализатором (выход А 27.1). Световой сигнализатор должен иметь состояние
сигнала "I", если /внутренний/ накопитель команд или вход контроля ламп (Е 12.0 )
имеют состояние "I". Параметрирование производится через слово данных /левый
байт = сопряжение вводов, правый байт = сопряжение выводов/.

Контроль ламп

Световой Накопитель
сигнализатор команд

260
Программирование в программном блоке:

261
8 ПРЕОБРАЗОВАНИЕ STEP 5 - MC 5,
БИТОВЫЕ КАРТЫ МАШИННОГО КОДА

STEP 5 является языком программирования для устройств автоматизации SIMATIC


S5. Программирующее устройство преобразует этот язык программирования в
машинный язык МС5. МС 5 является языком, который может быть "понят" и
обработан процессором устройства автоматизации SIMATIC S5.
Двоичные комбинации этого машинного языка служат машинным кодом.
Преобразование языка программирования в машинный язык в большинстве случаев
происходит 1:1, т.е. инструкция на языке STEP 5 соответствует инструкции на
языке МС 5. В некоторых исключительных случаях язык МС 5 требует большего
числа инструкций, чем запрограммировано на языке STEP 5 /см. "Понятия": одно- и
многословные инструкции/.

8.1 Преобразование двоичных логических операций и функций памяти

К двоичным логическим операциям относятся опросы входов, выходов, меток,


данных, таймеров и счетчиков, установка входов, выходов, меток и данных, а также
отдельные ИЛИ между функциями И, а также операции для обработки выражений в
скобках.
Операнды "входы" Е и "выходы" А языка программирования STEP 5 в машинном
языке МС 5 отличаются областью адресов. В качестве общего операнда в МС 5 "Е"
обозначает "входы".
Инструкции STEP 5 преобразуются непосредственно в инструкции МС 5

262
Операции с операндами Е и А:

263
Операции с операндами M, Т и Z

264
Операции с операндом D

Двоичные логические операции и функции памяти с операндом D /данные/


занимают в языке программирования STEP 5 одно слово, а в машинном языке МС
5 - два 16-разрядных слова. Первое слово языка МС 5 является признаком
двоичной операции с данными; во втором слове указывается операция, которая
должна быть выполнена, с указанием параметров.

Прочие логические операции

х = значения не имеет

265
8.2 Преобразование функций времени и счета

Для запуска функции времени или для установки функции счета требуется указать
параметр времени или счета. Этот параметр запишется на машинном языке с
инструкцией загрузки перед операцией запуска или установки. Эта операция
загрузки всегда подразумевает загрузку словами /см. разделе 3.3.2 и 3.4.2/.

Адрес слова

266
8.3 Преобразование бит-тестовых функций

Бит-тестовые Функции занимают в языке программирования STEP 5 одно слова, а в


машинном языке МС 5 - два 16-разрядных слова /см. раздел 3.5/. Указание
проверяемого операнда стоит в языке МС 5 на первом месте. Далее следует
операция и адрес бита.

1-е слово: указание проверяемого операнда

2-е слово: указание выполняемой операции

х = значения
не имеет

267
8.4 Преобразование функций загрузки и пересылки

Функции загрузки и пересылки переводятся непосредственно с языка


программирования STEP 5 на машинный язык МС 5.

Операции с операндами Е и А

Адрес байта

268
Операции с операндами M, D, Р и Q

Адрес байта или слова

269
Операции с операндами T, Z, BS, BT, BA и BB

Адрес слова Операции с операндом к

Указание постоянного значения приводится в следующем слове /эти операции


представляют собой двухсловные инструкции/.

Указание постоянного значения приводится в следующих двух слова в соответствии


с нормированным представлением чисел с плавающей запятой /эта операция
представляет собой трехсловную инструкцию/.

270
8.5 Преобразование функций сравнения, вычислительных
функций и логических операций над числами
Функции сравнения /раздел 4.3/, вычислительные функции /раздел 4.4/ и
логические операции над числами /раздел 4.5/ преобразуются с языка
программирования STEP5 на машинный язык МС 5 напрямую.
Функция сравнения

Вычислительные функции

х = значения не имеет

271
Логические операции над числами

х = значения не имеет

8.6 Преобразование организационных функций

Организационные функции /раздел 5/ на машинном языке представляют собой


однословные инструкции, за исключением "обработать слово данных" BDW и
"обработать слово меток" BMW, которые как на языке STEP5, так и в машинном
коде МС 5 являются двухсловными инструкциями, и "переход при переполнении с
запоминанием" "SPS", которая в МС 5 занимает два слова.

Функции блоков

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SPA PB 0 1 1 1 0 1 0 1
SPA FB 0 0 1 1 1 1 0 1
SPA SB 0 1 1 1 1 1 0 1
SPB PB 0 1 0 1 0 1 0 1
SPB FB 0 0 0 1 1 1 0 1
SPB SB 0 1 0 1 1 1 0 1
A DB 0 0 1 0 0 0 0 0
BE 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0
BEA 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 1
BEB 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0

27 … … 20

Номер блока

272
Функции перехода, функции смещения

Функции преобразования

х = значения не имеет

273
Прочие организационные функции

инкремент/декремент или адрес слова х = значения не имеет

274
8.7 Преобразование инструкций подстановки /замещения/

Инструкции замещения в машинном языке МС 5, также как и в языке


программирования STEP5 /см. раздел 6/, являются однословными командами.

Инструкции замещения с двоичными операндами

Адрес параметра блока

Инструкции замещения с числовыми операндами

Адрес параметра блока

275
Адрес параметра блока

8.8 Инструкции МС 5 в программирующем устройстве

Инструкции МС 5, которые могут выдаваться программирующим устройством, это


нулевые операции NOP0, NOP1 и инструкции по построению изображения BLD.
Эти инструкции используются для графического построения функциональных или
контактных схем и в языке STEP 5 не выступают. Процессор при обработке этих
инструкций никаких операций не выполняет.

Параметр инструкции построения изображения

276
9 СИСТЕМНЫЕ ФУНКЦИИ

Наряду с базовыми функциями и функциями расширения существуют также


системные функции, дополняющие запас операций языка STEP 5.
Системные функции используются во внутренних системных программах для
реализации операционных функций.
С помощью системных функций можно непосредственно вмешиваться в обработку
системной программы, переписывать содержание памяти в любом месте и изменять
содержание оперативного регистра в центральном процессоре. Поэтому прибегать к
системным функциям (если вообще) следует в самом крайнем случае!
В разделе 9.1 приводится обзор системных функций. Подобно базовым функциям
они делятся на:

двоичные системные функции (раздел 9.2)


цифровые системные функции (раздел 9.3) и
организационные системные функции (раздел 9.4).

Применение системных функций описывается в разделе 9.5. В последней части


этой главы рассматриваются битовые карты системных функций.

277
Перевод надписей в обзорной таблице системных функций на стр.275

1. Операция
2. Операнд
3. Обозначение
4. Двоичные системные функции
Абсолютная установка бита
Абсолютный сброс бита
слова системных данных
слова системных данных из расширенной области
5. Дискретные системные функции
Перенести в
слово системных данных
слово системных данных из расширенной области
Косвенная загрузка регистра
Косвенный перенос регистра
Перенос блока по байтам
Перенос блока по словам
Суммировать с байтом-константой
Суммировать со словом-константой
Сменить содержание аккумулятора
Установить маску прерывания
Считать маску прерывания
6. Организационные системные функции
Абсолютный переход
Условный переход к организационному блоку
Конец обработки прерывания
Переход через системное мат. обеспечение
Обработка слова системных данных
Косвенная обработка параметра блока
Стоп обработки прерываний по времени

278
9.2 Двоичные системные функции

SU – Абсолютная установка бита


RU - Абсолютный сброс бита
- BS 0.0 bis 255.15 Слова системных данных
- BT 0.0 bis 255.15 Слова системных данных из расширенной области

С помощью бит-тестовых функций можно устанавливать или сбрасывать отдельные


биты в слове системных данных или в слове системных данных из расширенной
области. Бит-тестовые функции записываются на языке программирования STEP 5
как однословные инструкции. На машинном языке МС 5 они занимают два 16-
разрядных слова в накопителе программ.

Выполнение операций SU и RU не зависит от логического результата, т.е.


указываемый бит при обработке этих инструкций всегда будет устанавливаться в
состояние "I" или "О".
Влияния на ранее имевшийся логический результат не происходит. Его можно
присвоить, например, какой-либо метке. Программируемая за логическими
операциями SU и RU любая двоичная логическая операция рассматривается как
первичный опрос (см. раздел 3.1.5).
Использовать эти инструкции целесообразно только в операционной системе. При
этом необходимо точно знать состояние загрузки области системных данных.

9.3 Дискретные системные функции

279
Посредством операций TBS или ТВТ содержание аккумулятора 1 переносится в
слово системных данных или в слово системных данных из расширенной
области. Операция переноса не зависит от логического результата и не влияет на
него.
Использование этих инструкций оправданно лишь в операционной системе, при
этом необходимо точно знать состояние загрузки области системных данных.

LIR 0 - 14 косвенная загрузка регистра

TIR 0 - 14 косвенный перенос регистра

Операции LIR и TIR позволяют производить считывание и запись по всей области


абсолютных адресов. Абсолютный адрес (ЗУ) находится в аккумуляторе I.
Посредством операции LIR указанный при этой операции регистр загружается
содержанием ячейки памяти, адресованной в аккумуляторе 1 (см. следующий ниже
пример). Посредством операции TIR производится перенос содержания указанного
регистра в адресованную в аккумуляторе 1 ячейку памяти. В обоих случаях перенос
информации осуществляется пословно (16 разрядов).
Приводимые ниже примеры относятся к контроллерам S5-150A и S5 -150К,
регистры которых и область памяти имеют байтовую адресацию.

Последовательность инструкций

вызывает загрузку регистра (пары) 12 (+13) содержанием ячеек памяти с


адресами ЕЕООH и EEOIH.

280
Последовательность инструкций

вызывает перенос содержания регистра (пары) 14 (+15) в ячейки памяти с адресами


ЕЕ02H и ЕЕО3H.

Операция TIR с содержанием КН = 80 по адресу 65 534 включает светодиод на


лицевой панели платы процессора. При содержании КН = 00 светодиод снова
выключается.
Операция TIR по адресу 65 535 влияет на аппаратное обеспечение процессора
(маску).
Распределение регистра и области памяти в контроллерах S5-150A и S5-150K
описывается в разделе 9.5.

TNB 0 - 255 перенос блока по байтам

TNW 0 - 255 перенос блока по словам

Операции TNB и TNW вызывают копирование целых областей памяти.


Максимально можно переносить содержание 256 байтов (с помощью операции
TNB) или 256 слов (с помощью операции TNW, но только в S5-150S ). Адрес
исходного поля находится в аккумуляторе 2, адрес поля назначения - в
аккумуляторе I. Перенос блоков осуществляется по убывающей, т.е. необходимо
всегда указывать верхние адреса полей.

281
Последовательность инструкций

переносит содержание ячеек памяти с адресами с F080, по F000


в ячейки памяти с адресами ЕЕ80 - ЕЕОО, в общей сложности 128 байтов.

Вычислительные функции

Операции ADD BF и ADD KF увеличивают содержание аккумулятора 1 на


величину указанной константы. Поскольку указывать можно и отрицательные
числа, то это позволяет выполнять функции как сложения, так вычитания.
Переноса содержания аккумуляторов не происходит, т.е. содержание
аккумуляторов 2 и 4 сохраняется. Индикация не устанавливается.

Операция ADD KF на языке программирования STEP 5 записывается


в виде однословной инструкции. На машинном языке МС 5 в накопителе
программ она занимает два 16-разрядных слова.

282
Прочие числовые системные функции

ТАК Поменять местами содержание аккумуляторов


При выполнении операции ТАК меняется содержание аккумуляторов 1 и 2.
Содержание аккумуляторов 3 и 4 сохраняется. Индикация не устанавливается.
В нижеследующем примере от значения слова меток MW 180 вычитается двоичное
число, стоящее в битах с 0 по II слова входов ЕW 22, и результат переносится в
слово данных DW 17.

Программа на языке

Состояние аккумуляторов после выполнения стоящих над


ними инструкций

283
SIM Установить маску прерывания
LIM Считать маску прерывания

Маска прерывания выступает как интерфейс между системным математическим


обеспечением и аппаратной частью процессора. Посредством операции LIM
опрашиваются состояния аппаратной части, которые затем обрабатываются
системным матобеспечением. Операция SIM позволяет программным путем влиять
на аппаратную часть процессора.
Такое же действие вызывают в контроллерах S5-110S - S5-150K операции TIR с
адресом 65535 или "загрузка системных данных" BSl,3.
Использование этих инструкций целесообразно только в операционных системах
с соответствующей рамочной программой.

9.3 Организационные системные функции

Блочные функции

SPA абсолютный переход


SPB условный переход
- OВ 0 - 39 к организационному блоку

С выполнением операции SPA прекращается линейная обработка программы с


продолжением в указанном организационном блоке. Операция не зависит от
логического результата и на него не влияет. При переходе логический результат
"забирается" вместе с ним и может обрабатываться условными операциями.
Инструкция опроса выступает как первый опрос блока или после его вызова -всегда
как первый опрос (см.раздел 3.1.5).
С операцией SPB линейная обработка программы прекращается только при
логическом результате "I" с продолжением в указанном организационном блоке.
При логическом результате "О" эта операция не выполняется и обработка
программы продолжается, при этом логический результат становится "I". Следует
избегать использования этих инструкций в прикладных программах, чтобы
исключить проблемы координации с системной программой.

284
UBE Конец обработки прерывания

Операция UBE вызывает обратный перенос в регистры центрального процессора


информации, записанной при прерывании; при этом происходит "извлечение" из
стека прерываний в обратном порядке.
К прерываниям относятся:

> отключение сети > превышение времени цикла


> переполнение стека > затребование DMA
> отключение батарей > обработка таймера
> задержка квити- > затребование тестового поля
рования
> ошибка в замещении > сигналы тревоги от процесса

> срабатывание > тревоги требований и тревоги


выключателя СТОП > будильника

При прерывании (по инструкции МС 5 или при смене блока)


линейная обработка программы прекращается и происходит разветвление
системной программы по установленной процедуре прерываний. При этом
внутренние состояния центрального процессора, которые он имел на момент
распознания прерывания, записываются в системные данные (в стек прерываний).
Этими внутренними состояниями являются:
> содержания аккумуляторов
> содержание регистра команд
> содержание счетчика адресов STEP 5
> выделение стека блоков
> исходный адрес текущего блока данных
> выделение стека скобок
> логическая индикация уровней скобок
> индикация результатов и
> индикация . рерываний.

В установленной процедуре прерываний принимается решение о том, как


реагировать на появление прерывания: переходом в СТОП или вызовом
организационного блока.
После обработки программы прерываний через операцию UBE производится
загрузка центрального процессора "старыми" данными и программа продолжается с
прерванного места (но не со СТОП!).

285
Использование этой инструкции оправданно только в операционной системе с
соответствующей рамочной программой.

Функции перехода

SPR -32768 - Переход посредством


+32767 системного матобеспечения

Операция SPR выполняется всегда, т.е. независимо от каких-либо условий.


Линейная обработка программы прерывается и продолжается в том месте, которое
было определено дистанцией перехода.

Прочие организационные системные функции

В BS 0 - 255 Обработать слово системных данных


ВI Косвенная обработка параметра блока

При операции BBS содержание указанного слова системных данных загружается в


регистр команд и выполняется. Операция, подлежащая выполнению, должна быть
записана на языке МС 5 как однословная инструкция, в противном случае
центральный процессор определит ее как ошибку в замещении.
Операция BBS выполняется всегда независимо от логического результата.
Инструкция, находящаяся в данных системы, выполняется точно также, как если бы
она была запрограммирована отдельно.
Слово системных данных BS255 в контроллере S5-150A/K и BS 243 в S5-150S
системной программой (пока) не занято. Поэтому его можно использовать для этой
обработки. Например, требуется вызвать блок данных, установленный байтом
входов ЕВ 24 (в двоичном выражении):

286
:T BS 255
:B BS 255 Вызов выбранного блока данных
Ml: - Продолжение программы STEP-5

С помощью операции ВI можно обрабатывать параметры блока. Предварительно


необходимо загрузить в аккумулятор 1 номер параметра блока, подлежащего
обработке.
Если в качестве параметра блока указывается двоичный операнд, то при нем должна
предусматриваться операция И U (UND). Числовые операнды сопровождаются
операцией L (Laden)- загрузка. Операнды "блоки" должны сопровождаться
абсолютными операциями вызовов. Таймеры и счетчики относятся к двоичным
операндам.

Примеры:

Если в функциональном блоке FB 203


вышеуказанного примера будет дана следующая
последовательность инструкций, то выполняется
следующая инструкция

287
Определив параметр блока как константу и указав соответствующий код МС-5,
можно выполнить любую (однословную) инструкцию.
Пример:

Обработка операции STS микропрограммой процессора разветвляется на


микропрограммированные шлейфы стонов. Выйти из этих шлейфов можно только
через нажатие выключателя СТОП (на лицевой стороне блока процессора).
Примечание:
Операция STP (СТОП, вызываемый пользователем) вызывает только требование
стопа в системных данных. Обработка программы пользователя продолжается.
После изменения в системной программе происходит обработка этого требования
стопа и разветвление на микропрограммированные стоп-шлейфы. Операция STW
является внутрисистемной инструкцией стопа оперативного матобеспечения,
призванной оптимизировать обработку прерываний по времени.
Использовать эту инструкцию целесообразно только в операционной системе с
соответствующей рамочной программой.

288
9.5 ПРИМЕРЫ: СОЗДАНИЕ И КОПИРОВАНИЕ БЛОКА ДАННЫХ
Примеры этого раздела написаны для контроллеров S5-150A и S5-150K, однако
после изменения абсолютных адресов памяти (там, где это необходимо), их
можно использовать и в других контроллерах.
Этот пример приводится для иллюстрации работы с системными функциями.
Исходным пунктом в рассуждениях должна быть программа, полностью
находящаяся в области ППЗУ (EPROM) памяти контроллера. Эта программа
является энергонезависимой и сохраняется даже при смене плат памяти или блока
питания и может "загружаться" без помощи программирующего устройства простой
установкой модуля EPROM в предусмотренный для него разъем на плате ЗУ.
Однако во многих случаях требуется использовать и область памяти,
предназначенной для записи и считывания (область RAM),которая служит для
обработки блоков данных.
Это необходимо в тех случаях, когда область меток больше не может принять
предлагаемое количество переменных данных, или тогда, когда "индицируют", т.е.
работают с переменным параметром (в контроллерах S5-150A и S5-150K операция
BMW "Обработка слова меток" отсутствует).
В этих случаях при новом запуске контроллера необходимо организовать нужный
блок данных с помощью программы, записанной в области EPROM, и при
необходимости обеспечить его данными из этой области. "Организовать" в данном
случае значит обозначить в памяти место, которое необходимо для нового блока
данных:
написать заголовок блока, стереть содержание на необходимую длину и занести
в список адресов исходный адрес.

Задание
В области RAM программируемого контроллера требуется организовать блок
данных с переменным параметром (номером) и переменной длины. При этом
должны выдаваться распознанные ошибки с расшифровкой по видам. Кроме того,
во вновь организуемый блок требуется перенести содержание блока данных из
области EPROM. Требуется выполнить все необходимые проверки и сообщить о
распознанных ошибках.

289
Целесообразней всего решать эту задачу с помощью двух функциональных блоков:
одного для организации блока данных и одного - для копирования.
Функциональный блок для организации блока данных может, например, выглядеть
следующим образом:

С параметром NRLG двумя байтами вводится номер нового блока данных и его
длина. В параметре FEH готовится один байт с сообщениями об ошибках.
Функциональный блок для копирования блока данных мог бы выглядеть, например,
следующим образом:

С параметром ALT указывается номер копируемого блока данных (источник), с


параметром NEU - номер создаваемого блока данных (цель). В параметре FEH
подготавливается байт с сообщениями об ошибках.

Функциональный блок FB 211, DB-EINR


В функциональном блоке FB211 прежде всего должна производиться проверка,
определяющая наличие параметров, выходящих за пределы разрешенной области.
После этого в память заносится заголовок блока, дополняется список адресов и
стирается область под новый блок данных.
Представленная на следующих страницах программа имеет такую структуру с
комментариями, что можно отказаться от представления структурного плана.
Программа подробно разъясняется на отдельных схемах.

290
СОЗДАНИЕ (ОРГАНИЗАЦИЯ) НОВОГО БЛОКА ДАННЫХ

Примеры программирования

291
Примеры программирования

292
Примеры программирования

293
Программный блок I:

Определяются параметры блока.

Программный блок 2:
Параметр блока NRLG загружается в слово меток MW250, которое после этого
приобретает следующее состояние:

№ блока данных Длина блока данных

Номер блока данных и его длина не должны быть равны 0.


В противном случае произойдет установка бито № 0 или № 1 в
байте ошибок и обработка функционального блока будет прервана.

294
Программный блок 3:
Здесь, проверяется наличие набранного блока данных в памяти контроллера и в
списке адресов. Список адресов ведется в блоке данных DBO, за которым
закреплено постоянное место в запоминающем устройстве. Блок данных DB0 имеет
следующее строение:
Блок данных DB 0 Адрес в ЗУ
(байт)

295
Абсолютные адреса адресных блоков заносятся также в системные данные BS.
Ниже приводится фрагмент из области системных данных.

Чтобы определить наличие определенного блока производят считывание


содержания ячейки памяти, в которой хранится начальный адрес блока. Если в
ячейке стоит "ноль", то блок отсутствует.

Блок 3 будет содержать следующую программу:


L BS 34 Загружается начальный адрес адресного блока
для блоков данных.
L MB 250 Поскольку S5-150A/K имеют байтовую
SLW 1 адресацию, номер блока данных (содержание
+F МВ250) необходимо умножить на 2 (SLW1).
Прибавив результат к содержанию BS34,
получим адрес ЗУ, в котором находится
начальный адрес искомого блока данных.
LIR 0 Этот исходный адрес загружается в регистр 0
(точнее в регистры 0 и 1). Таким образом, в
аккумуляторе 1 будет или начальный адрес блока
данных (если этот блок присутствует), или
значение 0 (тогда этот блок отсутствует).

296
Распределение регистров в S5-150 А/K
Регистры адресуются с ориентацией по байтам. Один регистр состоит из двух
байтов, длина одного регистра составляет 16 битов.

Если указанный блок данных уже присутствует, то происходит установка бита №


2 в байте ошибок и выход из функционального блока.

Программный блок 4:
В четвертом блоке (схеме) сначала определяется новая граница распределения
памяти. Для этого от существующего предельного адреса памяти (хранящегося
BS 33) вычитается длина нового блока данных (в байтах!) и длина заголовка
блока (10 байтов). (Вычитается, потому что область RAM в ЗУ занимается
адресами от старших к младшим).
Если новый предельный адрес больше или равен нижнему пределу ЗУ (указан BS
32), содержание аккумуляторов 1 и 2 меняется местами и в системных данных BS33
записывается новый предельный адрес.
Поскольку адреса выходят за пределы 16-разрядных чисел с фиксированной
запятой, оба адреса сначала уменьшаются вдвое (через инструкцию SRW 1). Тем
самым оба числовых значения в бите № 15

297
становятся нулями, что позволяет произвести прямое сравнение чисел с
фиксированной запятой (>= F).
При ошибке происходит установка бита № 3 в байте ошибок и выход из
функционального блока.

Состояние области RAM

Программный блок 5:
По программе в блоках с 5 по 9 производится перенос 5 слов заголовка блока в
память.
Первое слово является синхронизирующим, с которого начинается каждый блок
(КН = 7070). Эта синхронизирующая комбинация переносится в ячейку памяти,
адресованную в BS 33.
Программный блок 6:
Второе слово заголовка блока записывается по (байтовому) адресу BS33 +2. Оно
включает в себя тип блока.
Структура 2-го слова заголовка блока:

298
00 Блок недействителен и в список адресов не вносится (в
том числе и при новом запуске).
01 Блок действителен и находится в области RАМ
10 Блок действителен, находится в области RAM и
предназначается для дальнейшего использования в
области EPROM. После переноса в EPROM
обозначенные таким образом блоки стираются по
команде с помощью программатора (объявляются
недействительными).

11 Блок действителен и находится в области EPROM.

Программный блок 7:
В 3-м слове заголовка блока находятся кодировки для программатора и часть
библиотечного номера. Кодировки для программатора располагаются в левом
байте 3-го слова следующим образом:

В правом байте 3-го слова указана предметная группа, издание и вариант, если блок
является стандартным функциональным блоком.

299
Программный блок 8:
4-е слово заголовка блока содержит библиотечный номер, индицируемый при
соответствующем распределении кодовых обозначений программаторов (3-е слово).
Этот номер может занимать область от 0 до 65535.

Программный блок 9:
В последнем слове заголовка блока указана длина блока (в словах), включая длину
заголовка блока (5 слов).

Программный блок 10:


После записи заголовка блока в память дополняется список адресов (в блоке данных
DB 0). к абсолютному адресу начала блока
данных DB о, (содержащемуся в системных данных BS 34), прибавляется номер
нового блока (двойной величины из-за байтовой адресации). После этого
загружается адрес, с которого начинается новый блок (после заголовка блока).
Содержания аккумуляторов 1 и 2 меняются местами и начальный адрес блока
заносится в соответствующее место списка.
Программный блок II:
Последовательность инструкций в блоке II вызывает новый блок. Выполненная
операция гласит: A DBn, где п является номером блока, записанным в байте
меток MB 250.

Программный блок 12:


Зарезервированное в памяти место под новый блок данных стирается, т.е.
занимается КН = 0000.

Программный блок 13:


Знаком правильной организации блока является заполнение байта ошибок FEH
нулями.

300
Функциональный блок FB212, DB-KOPIE

В функциональном блоке FB212 сначала производится проверка


параметров, чтобы они не выходили за пределы разрешенной области. После
этого рассчитываются начальные адреса переноса данных и производится
перенос.
Приводимые на следующих страницах программы построены и проком-
ментированы таким образом, что можно отказаться от представления
структурного плана. Пояснения даются к каждому блоку программы.

301
Копирование блоков данных

Примеры программирования

302
Примеры программирования

303
304
Программный блок I:
Определяются параметры блока.
Программный блок 2:
Проверяется, является ли параметр блока ALT больше 0 и меньше 256. При
отклонении происходит установка бита №0 в байте ошибок и обработка
функционального блока прерывается.
Программный блок 3:
Проверяется, является ли параметр блока NEU больше 0 и меньше 256. При
отклонении происходит установка бита №1 в байте ошибок и обработка
функционального блока прерывается.

Программный блок 4:
В 4 программном блоке сначала загружается абсолютный начальный адрес старого
блока данных в слово меток МW252. Последовательность инструкций разъясняется
в предыдущем примере (PB 211, программный блок 3). После этого происходит
установка бита №2 байта ошибок и выход из функционального блока, если
указанный блок данных не внесен в список адресов.
Программный блок 5:
Здесь - также как и в блоке 4 - проверяется, занесен ли новый блок данных в список
адресов.
Программный блок 6:
Длина старого блока данных указана в пятом слове заголовка блока. Это слово стоит
за 2 (байтовых) адреса перед начальным адресом блока данных, которые записаны в
слове меток MW 252.
Длина (в словах!) загружается в аккумулятор I, за вычетом длины заголовка блока.
Результат в конце программного блока находится в слове меток MW 250.

Программный блок 7:
Точно также как в программном блоке 6 определяется длина нового блока данных и
сравнивается с длиной старого (копируемого) блока данных. При недостаточной
длине происходит установка бита №4 байта ошибок и обработка функционального
блока прекращается.

305
Программный блок 8:
В программном блоке 8 рассчитываются начальные адреса для переноса блоков. Так
как перенос блоков выполняется по убывающей, то самый верхний адрес будет
начальным адресом.
Сначала в слово меток MW 250 записывается длина в байтах. Эта длина
прибавляется к абсолютным начальным адресам.
Программный блок 9:
Операция TNB вызывает перенос максимально 255 байтов. Если байтов больше, то
эту операцию выполняют несколько раз с соответствующим вводом адресов в слова
меток MW252 и MW254.

Программный блок 10:


Производится перенос блоков остальных байтов (<255). Для этого битовая карта
инструкции TNB n (п = количеству оставшихся байтов) переносится в системные
данные BS 255 и затем обрабатывается.
Программный блок II:
При завершении процесса копирования без ошибок байт ошибок FEH
заполняется нулями.

Организационный блок OВ 20. НОВЫЙ ЗАПУСК


В организационном блоке 0В 20 сначала пишется блок данных DB57 длиной,
начиная от DW0 до DW159. При обнаружении ошибки происходит установка
выхода А 16.0 и обработка организационного блока прерывается.
При безошибочном написании содержание блока данных DB 157 копируется в блок
данных DB57. При обнаружении ошибки происходит установка выхода А 16.1; если
новый блок данных оказался слишком коротким (в нашем случае
DB57),дополнительно установится выход А 16.2.

306
Пример программирования

307
Цифровые системные функции

308
9.6 Битовые карты системных функций

Двоичные системные функции


Двоичные системные функции занимают на языке программирования STEP 5 одно
слово, а на машинном языке МС 5 - два 16-разрядных слова. Операнд, подлежащий
контролю, указывается на языке МС 5 на первом месте. Затем следует операция и
адрес бита.
1-е слово: проверяемый операнд

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BS 0 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1
BT 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1

2-е слово: проверяемый операнд

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SU 0 1 0 0
RU 0 0 0 0

23 … 2 0 27 … 20

адрес бита адрес слова

309
Организационные системные функции

310

Вам также может понравиться