Академический Документы
Профессиональный Документы
Культура Документы
ЯЗЫКЕ STEP 5
1
2
ПРОГРАММИРОВАНИЕ ФУНКЦИОНАЛЬНЫХ БЛОКОВ НА
ЯЗЫКЕ STEP 5
Прежнее название:
"Программирование управляющих устройств на языке STEP 5", том 3
Ганс Бергер
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
их представление в виде функционального плана, контактного плана и списка
команд. Второй том содержит обзор предоставляемых изготовителем стандартных
функциональных блоков, а также описание этих вспомогательных программных
средств.
Внутренняя структура и самостоятельно производимая подготовка функциональных
блоков для индивидуальных задач управления описываются в предлагаемом третьем
томе.
Содержание настоящей книги соответствует уровню техники к моменту нового
издания. Изменениям в запасе операций устройств автоматизации отображаются в
соответствующих инструкциях по эксплуатации.
6
СОДЕРЖАНИЕ
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
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
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
11
8 Преобразование STEP-5 - MC5 260
комбинации битов машинного кода
8.1 Преобразование логических операций и 260
функций памяти
8.2 Преобразование функций времени и счета 264
8.3 Преобразование функций теста битов 265
8.4 Преобразование функций загрузки и переноса 266
8.5 Преобразование функций сравнения, вычислительных 269
функций и логических операций над данными
12
I ЯЗЫК ПРОГРАММИРОВАНИЯ STEP 5
Ø логические операции
Ø функции запоминания
Ø функции времени
Ø функции счета
Ø функции бит-тестов
13
- операции над данными
Ø функции загрузки и переноса
Ø функции сравнения
Ø функции вычислений
Ø логические операции с данными
- организационные функции
Ø функции блоков
Ø функции переходов функции сдвига
Ø функции преобразования
Ø прочие функции
14
Двоичные функции
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. Внесение в арифметическую память
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
Двоичные, функции с параметрами, блоков
25
Операции над данными с параметрами блоков
1. Загрузка
Перенос параметра блока
2. Кодированная загрузка параметра блока
3. Загрузка слова
Загрузка двойного слова параметра
блока
II - Функции обработки
26
1.2 Краткое описание
Логические операции
При опросе на состояние "I" результат будет равен "I", если операнд этой операции
имеет состояние "I". Если состояние операнда "О", то и результат опроса будет "О".
При опросе на состояние "О" результат будет равен "I", если операнд этой операции
имеет состояние "О". Если операнд "I", то результат опроса "О".
Результат опроса сопрягается с находящимся в процессоре логическим результатом
по функциям И или ИЛИ. При первом опросе процессор перенимает результат
опроса как логический результат.
27
Функции запоминания
Функции времени
Время, указанное при стартовой операции(SI, SV, SE, SS, SA) при смене
логического результата (нарастающий или падающий фронт, в зависимости от
стартовой операции)запускается с тем значением, которое указано в данный
момент в аккумуляторе I. Ниже приводится импульсная диаграмма течения
времени:
28
При операции "сброс" (R) значение времени сохраняется, если логический
результат равен "I". Логический "О' влияния не имеет.
Операция "деблокирование" (FR) выполняется только при нарастающем фронте
логического результата. Она вызывает новый запуск таймера, если стартовая
операция сопровождается результатом "I".
29
Функции счета
30
Бит-тестовые функции
31
Значение операндов, указанных при операции "загрузка" (L), загружается в
аккумулятор справа. С помощью операции "перенос" (T) производится перенос
содержания аккумулятора к операндам этой операции. Загрузка и перенос не
зависят от логического результата и не влияют на него / исключение составляют
устройства автоматизации S5-130A и S5-130K /.
32
Если при операции "загрузка" в качестве операнда указан таймер или счетчик, то
значение указанного при операции времени или счета загружается в аккумулятор в
двоичном коде /без бита состояния и дискретности времени/.
Функции сравнения
33
Содержание аккумулятора 2 сравнивается с содержанием аккумулятора I
соответственно указанной функции сравнения. После выполнения сравнения
логический результат "I", если сравнение не выполнено - "О". При выполнении
операции сравнения происходит установка индикации.
Арифметические функции
34
Операции над данными
Функции блоков
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
Функции сдвига
38
Преобразовательные функции
Функции обработки
39
Декрементирование, инкрементирование
40
Блокирование или деблокирование выдачи команд
Эта операция выполняется только при логическом результате "I". Логический "О"
действия не имеет. После выполнения операции "блокирование выдачи команд"
(BAS) отображение процесса на выходах больше не изменяется. Операция
"деблокирование выдачи команд" (BAF) отменяет запрет, введенный BAS.
41
Функции памяти с параметрами блоков
42
С помощью этих операций производится загрузка в аккумулятор константы,
указанной в виде параметра блока /актуального параметра/. С помощью операции
LW загружаются 16 битов, с помощью операции LD 32 бита.
1.3 Понятия
1.3.1 Инструкции из одного и нескольких слов
Инструкции языка STEP 5 в большинстве случаев непосредственно транслируются в
соответствующие инструкции МС 5, благодаря чему список МС 5 является прямым
отображением списка команд STEP-5. Исключения составляют инструкции с
константой /кроме LKB/, далее бит-тестовые функции, двоичные функции с
областью операндов D (данные), переход при запоминаемом переполнении SPS и
вызовы функциональных блоков. Эти исключения необходимо учитывать для
соблюдения дистанции перехода менее 128 слов МС 5.
43
Переход при запоминаемом переполнении SPS
Представление констант
Примеры:
44
Вызовы функциональных блоков
Вызов функционального блока, написанного в виде инструкции на языке STEP-
5, требует двух инструкций языка МС-5: собственно операции вызова и
абсолютного перехода через последующий список параметров.
1.3.2. Аккумуляторы
45
В двух дополнительных вспомогательных аккумуляторах можно хранить
промежуточные результаты цифровых операций, благодаря чему напрямую
выполняются сложные арифметические действия.
Через аккумуляторы проходят следующие операции:
Функции загрузки
46
Функции переноса
С помощью функции переноса всегда производится перенос содержания
аккумулятора 1 к операнду, указанному при операции переноса. Обращаться
непосредственно к вспомогательным аккумуляторам нельзя.
Функции сдвига
Функции преобразования
Декрементирование, инкрементирование
Функции сдвига, преобразования, декрементирования и инкрементирования влияют
только на содержание аккумулятора I. На содержание вспомогательных
аккумуляторов они не влияют.
Функции сравнения
Данные функции служат для сравнения содержаний аккумулятора 1 и аккумулятора
2. При этом влияния на значения, записанные в аккумуляторах, не оказывается.
Пример
В слове данных DW7 необходимо установить в состояние "I" биты с № 4 по № 7, не
изменяя остальные биты.
47
Состояние аккумуляторов перед выполнением инструкции L DW 7
48
Вычислительные функции /основные арифметические действия/
Основные арифметические действия влияют на аккумуляторы 1,2 и 3. Действия
производятся над содержанием аккумуляторов 1 и 2; результат записывается в
аккумуляторе I. Одновременно аккумулятор 2 принимает содержание аккумулятора
3, а аккумулятор 3 - содержание аккумулятора 4. Если аккумуляторы 3 и 4 в
устройстве автоматизации отсутствуют, содержание аккумулятора 2 не изменяется.
Пример
Содержание слова данных DW8 нужно увеличить на 750. Программа
на языке STЕP-5
49
1.3.3 Индикация
При выполнении операций над данными/напр., вычислительных операций/ иногда
возникает необходимость опроса результата на ноль, положительное или
отрицательное значение или же на нахождение его еще в разрешенной области
чисел. Для этих опросов при выполнении операций устанавливаются индикаторы
/флаги/. Это 1-разрядные ЗУ в блоке логики, которые можно опрашивать через
функции перехода.
Блоки логики устройств автоматизации SIMATIC S5-150S имеют 4 флага:
флаг
50
Слово данных 20 является в данном примере 1-м операндом, слово данных 21 -2-м
операндом.
51
Формирование индикации при вычислениях с плавающей запятой:
52
Формирование индикации при операциях над данными
Операции над значениями данных ведут к установке индикаторов ANZ0 и
ANZ1.Индикаторы переполнений остаются без изменения. Установка индикаторов
зависит от содержания аккумулятора 1 после обработки операций:
53
Формирование индикации при функциях преобразования
54
2 ПОДГОТОВКА ФУНКЦИОНАЛЬНЫХ БЛОКОВ
55
2.1 Параметрирование блоков
В Функциональных блоках есть возможность произвольно задавать операнды, с
которыми должен работать этот функциональный блок. Эти операнды называются
актуальными операндам. При вызове функционального блока их указывают вместо
параметров блока.
Указываемые пользователем
актуальные операнды
Список инструкций
56
Один и тот же функциональный блок может вызываться многократно. При каждом
вызове ему может присваиваться другой актуальный операнд, т.е. производиться
"параметрирование". Такой список с актуальными операндами является составной
частью вызова функционального блока.
57
Пример:
:U = EIN
:U = SP
:= = BEF
Параметры блоков через Нормальные операнды "EIN" и, опрашиваются на
состояние "I" и результаты опроса сопрягаются по функции И. Результат логической
операции присваивается параметру блока с помощью формального операнда "BEF".
При обработке инструкции, в которой производится обращение к параметру блока,
используется актуальный операнд, соответствующий параметру блока. Для
Нормального операнда EIN, напр., применяется /"подставляется/ операнд, который в
списке параметров блока указан обозначением "EIN".
Пример:
выполненная программа
58
2.3 Обозначение параметров блока
Библиотечный номер
59
Наименование функционального блока
Е = параметр входов
А = параметр выходов
D = данные
В = вызов блока
T = время /таймер/
Z = счетчик
"E, D, B, T" или "Z" это те параметры, которые при графическом изображении
ставятся на левой стороне символа функции. Параметры, обозначенные буквой "А",
при графическом изображении ставятся на правой стороне символа функции.
60
Тип параметра блока проверяется программирующим устройством при
параметрировании вызова функционального блока.
Если параметр блока относится к виду "Е" или "А", в качестве типа можно
указывать:
Е n.m вход
А n.m выход
М n.m метка
При типе параметра "BY" допустимы следующие актуальные операнды:
ЕВ n байт входов
АB n байт выходов
MB m байт меток
DL n данные левого байта
DR n данные правого байта
PB n байт периферии
QB n байт периферии из расширенной области
EW n слово входов
AW n слово выходов
MW n слово меток
DW n слово данных
FW n слово периферии
QW n слово периферии из расширенной области
BS n данные системы /слово/
BT n данные системы /слово/ из расширенной области
ВА n данные переноса системы /слово/
BB n данные переноса системы /слово/ из расширенной области
61
При параметре вида "D" допустимы следующие актуальные параметры:
62
Параметрирование
Операции /инструкции на замещение/, которые должны параметрироваться, в
функциональном блоке программируются /символически/ наименованием
параметра блока. При этом к наименованиям можно обращаться многократно в
разных местах функционального блока. Пример:
в виде функциональной
или контактной схемы
Актуальные операнды
63
Обработка формальных операндов
64
3 ОПИСАНИЕ ДВОИЧНЫХ ФУНКЦИЙ
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 обращается
всегда к только что вызванному блоку данных.
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 Операция ИЛИ
Пример:
:O E 17.1
:ON M 3.5
:O A 5.6
:= A 2.7
68
Функция ИЛИ считается выполненной в том случае, когда один или несколько
операндов в результате опроса имеют состояние "I". Если все операнды этой
функции имеют результат "О", они считается невыполненной. В нашем примере
выход А 2.7 устанавливается при выполненной функции ИЛИ и сбрасывается, если
функция ИЛИ не выполняется. Выход А 2.7 будет иметь состояние "О" только при
условии, что вход Е 17.1 и выход А 5.6 имеют состояние "О", а метка М 3.5 -
состояние "I"
Количество операций опроса в одном логическом сопряжении теоретически может
быть произвольно большим. Точно также произвольной является
последовательность и соотношение чередования опросов на состояние "I" и на
состояние "О".
Сформированные в результате опросов инструкции МС 5 являются однословными
инструкциями, за исключением полученных в результате логических операций с
областью операндов данных D.
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.
70
Результаты операций по функциям ИЛИ обрабатываются по И. Результат
логической операции по функции И присваивается выходу А 1.7.
В чисто двоичных логических операциях функция "открыть скобку" всегда связана с
функцией И, так как "открыть скобку" пишется только в тех случаях, когда
функцию ИЛИ нужно поставить перед функцией И. Язык программирования STEP
5 позволяет также использовать скобки, если требуется промежуточная запись
логического результата /см. разделы 3.2.2 и 4.3.3/. В таком случае также может
встречаться сочетание функции "открыть скобку" с функцией ИЛИ. Тогда пишется
инструкция "О(".
Суперпозиционирование скобок
71
3.1.5 Обработка результата логической операции, первичный опрос
72
Примеры:
Результат опроса
Примеры:
73
Условные операции
Пример:
: 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.
77
Благодаря обработке фронтов возможно программно-техническое распознание
смены состояния сигнала. В разделе 3.2.3 описываются два различных вида
реализации обработки фронтов, а в разделе 3.2.4 - применение обработки фронтов
на примере двоичного преобразователя.
Область операндов "метки" в устройствах автоматизации, как правило, защищена
батареей, т.е. метки "реманентны". Они сохраняют свои состояния при
исчезновении напряжения. При восстановлении напряжения можно опрашивать
состояние сигналов. Обходным путем через метку можно также получить
реманентную характеристику для любого выхода /раздел 3.2.5/.
78
3.2.1 RS - память
79
переносится на блоки периферии только в конце программы
Пример:
81
Метка с запоминанием
Пример:
82
Операцией "скобку открыть" процессор запоминает полученный ранее логический
результат и начинает новый шаг логической операции /см. раздел 3.1.5: "Обработка
выражений в скобках"/. Установившийся при операции "скобку закрыть"
логический результат сопрягается с записанным в памяти логическим результатом.
Пример:
83
Обработка фронтов с помощью импульсных меток
Обработка фронтов с помощью импульсных меток программно выполняется таким
образом, что ее помимо функциональных блоков можно программировать в
программных и организационных блоках. Тем самым для обработки фронтов
получают всегда одинаковую последовательность инструкций.
Импульсная метка устанавливается, если состояние сигнала метки фронта не
совпадает с состоянием сигнала входа. Эта импульсная метка служит в качестве ЗУ
промежуточных результатов; соответственно она может использоваться
многократно.
При наличии фронта сигнала импульсная метка имеет состояние "I". В дальнейшем
его можно опрашивать и использовать в логических операциях.
После распознания фронта метка фронта должна быть приведена в соответствие с
входным сигналом, с тем чтобы во время следующего цикла обработки процессор
не. принял ее за новую метку. Это слежение возложено на импульсную метку.
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 метка фронта вновь устанавливается..
85
Обработка фронтов с помощью условного перехода дает по сравнению с обработкой
фронтов с помощью импульсной метки преимущество, заключающееся в том, что
определенная часть программы после фронта проходит и обрабатывается' один
единственный раз. Принцип обработки Фронтов с помощью условного перехода
заключается в том, что какая-то часть программы перескакивается только при
отсутствии фронта. Т.е. условный переход SPB всегда должен выполняться, только
при отсутствии фронта и не выполняется, если программные средства распознали
наличие Фронта сигнала.
1. Начало
2. Вход имеет такое же состояние сигнала, что метка фронта ?
3. Да
4. Нет
ё. Приведение метки фронта в соответствие
6. Часть программы, которая должна обрабатываться только при наличии фронта
7. Конец
86
Примеры:
87
3.2.4 Двоичный преобразователь
Импульсная диаграмма
88
Как только выход сброшен и импульсная метка имеет состояние "I", происходит
установка выход. Если выход уже был установлен, а импульсная метка имеет
состояние "I", происходит сброс выхода.
89
Как только выход А 4.4 сброшен, опрос И-НЕ А 4.4 дает результат "I" и происходит
установка выхода. Если выход А 4.4 установлен, опрос И-НЕ А 4.4 дает результат
"О", который затем присваивается выходу. Выход сбрасывается.
Несмотря на применение присвоения выход А 4.4 является запоминающим, так как
этот фрагмент программы обрабатывается только при наличии фронта. Во всех
остальных случаях он не обрабатывается, благодаря чему выход сохраняет
состояние сигнала.
Через вход Е .18.3 устанавливается метка М 150.0. С помощью входа Е 18.4 метка
М 150.0 вновь сбрасывается. Состояние сигнала метки присваивается выходу А
17.7.
90
3.2.6 Установка входов
91
3.3 Функции времени
92
I. Дискрета времени
2. Параметр времени
3. Вспомогательная метка для опроса
4. Метка фронта для запуска и деблокирования таймера
93
Дискрета времени загружается только при кодированной загрузке
параметра времени LCT в аккумулятор.
Ø в виде импульса,
Ø в виде удлиненного импульса,
Ø в виде задержки включения
Ø в виде задержки включения с запоминанием и
Ø в виде задержки отключения.
Эти пять характеристик раскрываются в разделах 3.3.6 - 3.3.10.
94
Задание времени
При запуске таймера в качестве параметра времени принимается значение,
хранящееся в аккумуляторе I. Как и когда это значение было загружено в
аккумулятор, роли не играет /см. также раздел 4.1.1 "Загрузка"/. В качестве
значения времени из аккумулятора берутся 16 битов, стоящих справа. Они должны
иметь следующее построение:
не учитываются
95
При задании в качестве константы продолжительности времени после указания
параметра времени через точку следует указание дискретности /см. раздел 4.1.4
"Загрузка параметров времени"/.
Заданный в десятичном виде параметр времени переносится в двоичном виде в
слово времени и там обрабатывается. В слове времени параметр записан в
двоичном коде /бит 0…9/. Остальные биты, наряду с дискретностью, содержат
также данные о состояниях, которые используются процессором для распознания и
обработки характеристики времени. В соответствии с заданной дискретностью
параметр времени после запуска таймера уменьшается на одну единицу, пока не
достигнет нулевого значения.
96
Пример:
I. Запуск таймера
2. Сброс таймера
3. Двоичный опрос таймера
Таймер можно опрашивать так же, как, например, и вход, а результат опроса
использовать в последующих логических операциях. В зависимости от
характеристики Функции времени опрос на состояние "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
При логическом результате "О" при операции запуска выполнение операции
деблокирования влияния не имеет.
99
Характеристика времени в виде короткого импульса
1
Если логический результат на входе запуска таймера изменяется с "О" на "I',
происходит запуск таймера. Он работает с запрограммированной
продолжительностью времени до тех пор, пока на входе запуска сохраняется
состояние "I'. Опросы на состояние "I' будут давать результат "I" в течение всего
времени работы таймера.
2
Если логический результат на входе запуска таймера изменится на "О" до истечения
времени, метка фланга времени и вспомогательная метка для двоичного опроса на
состояние "О" окажутся установленными. Опрос таймера на состояние "I" даст
результат "О". Остальные биты слова времени останутся без изменений. Стоящий в
слове времени параметр времени показывает, на сколько раньше был прерван отсчет
времени.
100
Характеристика при сбрасывании
2
При неработающем таймере логическая "I" на входе сброса влияния не имеет.
3
Если логический результат на входе запуска при наличии сигнала сброса сменит
свое состояние с "О" на "I", таймер хотя и окажется запущенным, однако
немедленно будет снова сброшен запрограммированной операцией сброса /на
диаграмме сброс обозначен штрихом/. Учитывая последовательность
программирования, описанную в разделе 3.3.3, на двоичном опросе таймера эта
операция не скажется.
101
Характеристика при деблокировании
1
Если во время отсчета логический результат на входе деблокирования изменится' с
"О" на "I", то отсчет времени начнется заново. При этом новом запуске
запрограммированная продолжительность времени принимается как заданное
значение. Смена логического результата на входе деблокирования с ''I" на "О"
влияния не оказывает.
2
Смена логического результата на входе деблокирования с "О" на "I" и подача на
вход запуска логической "I" неработающего таймера ведет также к запуску таймера
с запрограммированной продолжительностью времени в виде короткого импульса.
3
Смена логического результата на входе деблокирования с "О" на "I" при наличии
на входе запуска логического "О" на таймер не влияет.
102
3.3.7 Запуск таймера со временем в виде продленного импульса
Пример:
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
Характеристика времени в качестве задержки включения
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)
110
3,4
Смена логического результата на деблокирующем входе с "О" на "I" при
сброшенном таймере и наличие еще на входе запуска "I" ведет к повторному
запуску таймера. При этом новом запуске запрограммированная продолжительность
времени принимается как текущее задание.
111
1,2
Смена логического результата на входи запуска таймера с "О" на "I" ведет к
запуску таймера. Отрабатывается вся запрограммированная продолжительность
времени независимо от последующих результатов на входе запуска. После
истечения времени опрос таймера на состояние "I" дает результат "I", независимо
от логического результата на входе запуска. Результат опроса только тогда снова
станет "О", когда произойдет сброс таймера, независимо от логического результата
на входе запуска.
3
Сиена логического результата на входе запуска таймера с "О" на "I" во время его
работы ведет к повторному запуску таймера. При этом новом запуске
запрограммированная продолжительность времени принимается как текущее
задание.
1,2
Появление на входе сброса таймера логической "I" ведет к сбросу таймера,
независимо от логического результата на входе запуска. Опросы таймера на
состояние "I" дают тогда результат "О".
Смена логического результата на входе сброса с "I" на "О" на таймер не
влияет.
112
3
Смена логического результата на входе запуска с "О" на "I" при наличии сигнала
сброса хотя и ведет к запуску таймера, однако запрограммированный далее сброс
тотчас, же снова приводит к сбросу таймера /обозначен на диаграмме штрихом/.
При соблюдении последовательности программирования, указанной в разделе 3.3.3,
это не скажется на двоичном опросе.
1
Смена при отсчете времени и при логическом результате "I" на входе запуска
таймера логического результата на деблокирующем входе с "О" на "I" ведет к
повторному запуску таймера. При этом новом запуске запрограммированная
продолжительность времени принимается как текущее задание. Смена логического
результата на деблокирующем входе с "I" на "О" действия не имеет.
113
2
Смена логического результата на деблокирующем входе с "О" на "I" после
запрограммированной отработки времени на таймер не влияет.
3
Смена логического результата на деблокирующем входе с "О" на "I" вовремя
работы таймера и при наличии "О" на входе запуска на таймер не влияет.
3,4
Смена логического результата на входе деблокирования с"0" на "I" при сброшенном
таймере и при наличии еще на входе запуска результата. "I" ведет к новому запуску
таймера. При этом новом запуске запрограммированная продолжительность
времени принимается как текущее задание.
114
Характеристика при деблокировании (3)
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" во время
работы таймера ведет к его новому запуску. При этом новом запуске
запрограммированная продолжительность времени принимается как текущее
задание.
118
Установка параметра счета в счетчик происходит с помощью нарастающего фронта
сигнала. В разделе 3.4.2 раскрывается структура параметра счета, если он должен
задаваться с помощью переменной величины.
С помощью операции "сброс" происходит сбрасывание счетчика, т.е. установка
счетчика в нулевое положение. В разделе 3.4.3 указывается рекомендуемая
последовательность инструкций при программировании функций счета.
Счетчик может вести как прямой /раздел 3.4.4./, так и обратный счет /раздел 3.4.5/.
Обе операции вызываются только нарастающим фронтом сигнала.
При опросе счетчика получают двоичный результат, говорящий о наличии в
счетчике параметра, который больше нуля или равен нулю /раздел 3.4.6/.
Деблокирование счетчика подготавливает установку, прямой и обратный счет, при
наличии соответствующих условий для выполнения этих операций /см. раздел
3.4.7/.
Опрос параметра счета, его загрузка в аккумулятор (в числовом виде)
описываются в разделе 4.1.3.
119
Назначение битов:
120
Бит № 13 Метка фронта для прямого счета
Операция "прямой счет" ZV действует только при управлении
возрастающим фронтом логического результата. Этот бит
является меткой фронта, которая позволяет процессору
распознать фронт.
На этот бит можно также воздействовать операцией
"деблокирование” благодаря чему получают имитацию фронта
на входе прямого счета процессора. Таким образом можно
заново вызвать прямой отсчет.
121
Задание параметра счета
Пример:
Необходимо задать параметр 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
его рост прекращается. После этого смена состояния сигнала на входе прямого счета
никакого действия не оказывает. Переноса не происходит.
Счетчик будет вести обратной счет, если операции обратного счета предшествовала
смена логического результата, с "О" на "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/
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".
127
Бит-тестовые функции используются со следующими операндами:
-вход
-выход
-метки
-слово времени
-слово счета
-данные
-системные данные *)
-системные данные из расширенной области
-данные системного переноса
-данные системного переноса из расширенной области
Число перед запятой /точкой/ указывает на адрес байта или слова. Число после
запятой обозначает запрашиваемый бит.
Пример:
Бит № 7 слова данных 20 DW 20 необходимо установить в состояние "I".
Если опрос на состояние "I" выполнен, т.е. опрошенный бит имеет состояние
"I", логический результат устанавливается в состояние "I", а в противном
случае - в "О".
Операция Р всегда является первичным опросом /см. раздел 3.1.5/, независимо от
предшествующих операций. Полученный после этой операции результат можно
сопрягать с дальнейшими опросами.
Если опрос на состояние "О" выполнен, т.е. опрошенный бит имеет состояние
"О", логический результат устанавливается в состояние "I", а в противном
случае - в "О".
Операция PN всегда является первичным опросом /см. раздел 3.1.5/, независимо от
предшествовавших операций. Полученный после этой операции результат можно
сопрягать с дальнейшими опросами.
129
3.5.3 Безусловная установка бита
С помощью, операции "безусловная установка бита" SU можно установить в
состояние "I" каждый отдельный бит дискретного операнда.
130
4 ОПЕРАЦИИ НАД ДАННЫМИ
131
4.1 Функции, загрузки и переноса
3агрузка и перенос
132
Параметры областей операндов таймеров и счетчиков обрабатываются иначе, чем
параметры других областей операндов. Их разрешается комбинировать только с
одной функцией загрузки, однако путем кодового преобразования их можно также
загружать в аккумулятор /см. раздел 4.1.3 и 4.1.4/.
133
Обзорная таблица инструкций загрузки и переноса /продолжение/
134
Обзорная таблица инструкций загрузки и переноса /окончание/
4.1.1 Загрузка
135
150K, S5-150S выполняется независимо от логического результата и независимо от
индикации. Логический результат и индикация воздействию не подвергаются.
136
Информация из областей операндов входов, выходов, меток, и данных загружается,
в аккумулятор в виде байтов, слов или двойных слов, информация непосредство из
блоков периферии - в виде байтов или слов, информация из ЗУ системных данных и
из ЗУ данных системного переноса загружается только в виде слов.
Ширина аккумулятора составляет в устройствах S5-110S, S5-130W, S5-150-A и
S5-150K 16 битов, а. в устройстве S5-150S - 32 бита. Информация меньшей
ширины откладывается в аккумуляторе справа. Остальные разряды заполняются
нулями.
Возможные комбинации операции загрузки с областями операндов входов, выходов,
меток, блоков- периферии и данных в сочетании с "указанием длины" - байт, слово
или двойное слово - приведены и описаны в 1-м томе руководства
"Программирование управляющих устройств на языке STEP 5" -
"Программирование основных функций".
Загрузка данных
При загрузке данных необходимо обращать внимание на правильность
предварительного выбора блока данных. Вызванный блок данных сохраняет свое
действие до тех пор, пока нет обработки операций вызова какого-либо другого
блока данных. Исключение: возврат в старший блок но команде конца блока /см.
раздел 5.1/.
L BS 0 bis 255
137
Загрузка данных системного переноса
Загрузка информации из области данных системного переноса может производиться
только пословно с параметром от 0 до 255. Соответствующая инструкция гласит: L
ВА 0 - 255.
В устройстве автоматизации S5-150S эта область расширена, благодаря чему
возможно обращение к удвоенному объему системных данных. Расширение
происходит через новый операнд: ВВ "данные системного переноса из расширенной
области". Соответствующая инструкция гласит:
L ВВ О - 255.
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 какое-либо постоянное значение
/напр., при сравнении на какое-то предельное значение/, это значение может быть
введено в программу в виде константы;
Представление этой константы зависит от ее назначения. Возможны
следующие виды представления:
139
Влияние аккумулятора 2
Операция "загрузка" изменяет содержание аккумулятора 1 и аккумулятора 2.
Значение операнда при операции загрузки загружается в аккумулятор I.
Одновременно значение, находящееся в аккумуляторе I, "сдвигается" в аккумулятор
2.
Пример:
Загрузить слово входов EW 20. Исходное
состояние:
140
Ширина аккумулятора составляет в устройствах S5-110S, S5-130W, S5-150A и S5-
150K - 16 разрядов, а в устройстве S5-150 S - 32 разряда. При переносе информации
меньшей ширины, она выбирается по "правую сторону" аккумулятора.
Возможные комбинации операций переноса с областями операндов входов,
выходов, меток, Периферии и данных в сочетании с указанием "длины" - байт, слово
или двойное слово - приведены и описаны в первом томе настоящего пособия, в
разделе "Программирование основных Функций".
Перенос к данным
При переносе к данным следует обращать внимание на предварительный выбор
правильного блока данных. Он считается действительным до тех пор, пока не
ведется обработка операции вызова другого блока данных.
Исключение: обратный переход в старший блок по команде окончания блока /см.
раздел 5.1/.
141
Пример:
Выходы
142
С помощью второго интерфейса устройств расширения к центральному блоку 150S
можно подключать вторую шину периферии. Обращение к подключенным к этой
шине блокам входов и выходов производится через специальный операнд (Q):
143
Находящееся теперь в. аккумуляторе значение можно подвергать дальнейшей
обработке. Перенос из аккумулятора в счетчик не возможен. Если счетчик
необходимо установить на новое значение, прибегают к операции "установка
счетчика" /см. раздел 3.4/.
Пример:
Значение счетчика Z27 необходимо перенести в двоичном коде в слово данных
DW34 блока данных DB 18.
144
При кодированной загрузке биты состояний счетчика тоже не учитываются.
Числовое значение в двоично-десятичном коде подвергается дальнейшей обработке,
например, его можно переносить на выходы, к которым подключена цифровая
индикация.
Пример:
Двоично-десятичное значение счетчика Z53 необходимо перенести к байтам
выходов АВ 82 и АВ 83.
:LC Z 53 Загрузка значения счетчика в двоично-десятичном коде в аккумулятор
:Т AW 82 Перенос содержания аккумулятора в слово выходов AW 82
Состояние слова выходов после переноса:
Числовое значение
145
Находящееся теперь в аккумуляторе значение может быть подвергнуто дальнейшей
обработке. Перенос из аккумулятора к функции времени невозможен. Если нужно,
чтобы функция времени устанавливалась каким-либо параметром, это делается с
помощью операции запуска Функции времени /см. раздел 3.3/.
Пример:
Параметр времени Т16 необходимо сравнить с постоянной величиной 20. Если
параметр времени меньше, устанавливается метка М51.6 .
:L T 16 Загрузка параметра времени Т16 в аккумулятор 1
:L KB 20 Загрузка постоянного значения + 20 в аккумулятор 1.
Находящийся в аккумуляторе 1 ранее параметр времени
загружается в аккумулятор 2.
Сравнение содержания обоих аккумуляторов на “меньше”
:< F по характеристике с фиксированной запятой.
146
При кодированной загрузке биты состояний не учитываются; однако в аккумулятор
загружается дискретность времени. Имеющийся в двоично-десятичном коде
параметр времени может подвергаться дальнейшей обработке, например,
переноситься на выходы, к которым подключена цифровая индикация.
Пример:
дискретность Параметр
времени времени
продолжительность времени
147
4.2 Представление чисел
Примеры:
148
4.2.1 16-разрядные числа с фиксированной запятой
Числа, с фиксированной запятой представляют собой двоичные числа,
сопровождаемые знаком. Они могут принимать положительные и отри-
цательные значения. В языке программирования STEP 5 эти числа обозначены
символом "F".
16-разрядное число с Фиксированной запятой занимает одно слово. Отдельные
биты этого слова распределяются следующим образом:
149
4.2.2 32-разрядные числа с фиксированной запятой
150
Число с плавающей запятой занимает всегда, двойное слово. Отдельное биты
этого двойного слова распределяются следующим образом:
151
Пример:
Представление числа +5,5 в виде числа с плавающей запятой.
Число 5,5 находится между 22 (4) и 23 (8), что позволяет нам в качестве порядка
брать число 3, так как мантисса меньше I. В нашем случае:
Общее замечание
152
Выполнение функций сравнения не зависит от логического результата.
При обработке функции сравнения выполняются всегда. Результат сравнения имеет
двоичный вид. Состояние сигнала "I" обозначает, что сравнение выполнено.
Состояние сигнала "О" появляется при невыполненном сравнении. Двоичный
результат поступает в распоряжение к дальнейшей обработке как логический
результат.
При сравнениях с оценкой содержания операндов /напр., при сравнении на
"меньше"/ необходимо указывать способ представления числа. Содержание обоих
операндов оценивается и сравнивается в соответствии с указанном представлением
числа. По соображениям единообразия система представления чисел указывается
также при Функциях сравнения на равнозначность и неравнозначность. Указывать
можно все виды представления чисел (F, D, G).
153
Состояние аккумуляторов после выполнения инструкции LEW10:
154
Выполнение инструкции >F
Установка индикации
155
Io4
Пример:
На выходе A 8.2 будет состояние "I", если выполнено сравнение 1 или 2.. двоичный
результат сравнения 1 принимается процессором как логический результат. Через
инструкцию 0( выполняется промежуточное запоминание этого логического
результата /см. также раздел 3.1.4/.
156
Теперь образуется логический результат выражения в скобках. В нашем примере
это результат сравнения 2. Этот результат сопрягается с находящимся в
промежуточной памяти результатом 1-го сравнения по Функции ИЛИ, если
обрабатывается операция "закрыть скобку" Логический результат присваивается
выходу А 8.2.
Пример:
Если текущий параметр времени Т19 меньше 100, должна устанавливаться метка М
77.2.
сравниваемое значение
157
программа на языке STEP 5:
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
Выполнение инструкции +F
160
Состояние аккумуляторов после выполнения инструкции T DW53
161
Состояние аккумуляторов после выполнения инструкции L DW52:
162
Установка индикации (флагов)
В зависимости от результата основной арифметической операции происходит
установка индикации /см. понятия "индикация"/. Опрос ее можно производить
функциями перехода.
4.4.1 Сложение
163
4.4.2 Вычитание
164
4.4.3 Умножение
4.4.4 Деление
165
4.4.5 Запоминание промежуточных результатов
Состояние аккумуляторов
166
Состояние аккумуляторов
167
Пример:
Необходимо продемонстрировать принцип действия инструкции ENT. С целью
упрощения вычисления выполняются с константами, чтобы легче было проследить
за загрузкой аккумуляторов.
Необходимо высчитать: 3 х 4 + 5 х 6.
В соответствии с правилами арифметики сначала выполняется умножение, в
результате чего получаем два промежуточных результата:
Z1 = 3 х 4 = 12
Z2 = 5 х 6 = 30
Затем оба промежуточных результата складываются и получается окончательный
результат.
Е = Z1 + Z2 = 42
: XF
:+F Образуется второй промежуточный результат Z2.
После выполнения этой операции в аккумуляторе 2
находится первый промежуточный результат Z1.
Оба промежуточных результата складываются.
Окончательный результат поступает в аккумулятор 1 и
используется в дальнейшей обработке.
168
Состояние аккумуляторов /каждый раз после выполнения стоящей слева,
инструкции/
169
4.4.6 Комбинированные арифметические функции
Пример I:
Необходимо сложить значения, находящиеся в словах входов EW30 и EW32; из
суммы вычесть содержание слова данных DW17. После прибавления постоянного
значения 300 результат записать в слово данных DW18.
170
Состояние аккумуляторов во время процесса вычислений /после
выполнения стоящей слева инструкции/:
Пример 2
К содержанию слова данных DW28 необходимо прибавить троек ратное значение
слова меток MW196. Результат записать в слово данных DW30.
171
Вариант А
:L КB 3
:L MM 196
:XF Значение слова меток MW 196 утраивается.
:L DW 28 К промежуточному результату прибавляется значение слова,
:+F данных DW28.
172
Вариант В
:L MW)96
:L DW 28
:+F Значение слова меток MW 196 в общей сложности
:+F трижды прибавляется к значению слова данных
:+F DW28.
173
Пример 3:
:L KB 4
:L Z 18 Значение счетчика Z18 умножается на четыре.
:XF
:L DW 5 Промежуточная запись учетверенного значения
:ENT счетчика.
:L MW 192 Сложение значений слова данных DW5 и слова
: +F меток MW 192.
174
Ниже приводится состояние аккумуляторов во время выполнения вычислительных
операций после отработки указанных сверху инструкций:
175
При выполнении логических операций над данными значения операндов
интерпретируются как чистые комбинации битов. Результат поступает для
дальнейшего использования в аккумулятор I.
Обработка логических операций над данными не зависит от логического результата
и сама на логический результат не влияет.
176
Состояние аккумуляторов после выполнения инструкции LEW6
177
Выполнение инструкции UW
178
Содержание аккумулятора при выполнении логической операции над данными не
изменяется.
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)
Пример:
Необходимо выполнить логическую операцию исключающее или над значением
слова данных DW12 и значением слова данных DW29. Результат записать в слово
данных DW 115.
182
4.5.4 Комбинированные логические функции данных
Пример:
Необходимо установить в состояние "О" биты №0 - №3 и № 12 - № 15 в слове
входов EW37. Биты №7 и № II необходимо установить в состояние "I". Результат
записать в слово данных DW91.
183
5 ОПИСАНИЕ ОРГАНИЗАЦИОННЫХ ФУНКЦИЙ
184
Содержание аккумулятора, может быть уменьшено с помощью Функции
декрементирования и увеличено с помощью функции инкрементирования.
Функции обработки позволяют вести "-конкретную" обработку программы на
языке STEP-5 т.е. программным путем можно изменить параметры обработанных
инструкций языка STEP-5. Благодаря этому возможна многократная обработка
программы с постоянно изменяемыми операндами. Как вести такую обработку
описано в разделе 5.6.
С помощью операций запрет/разрешение выдачи команд /раздел 5.7/,
запрет/разрешение тревог /раздел 5.8/, запрет/разрешение запросов прерывания
/раздел 5.9/, запрет/разрешение на обработку ошибок адресации /раздел 5.10/ и стоп
/раздел 5.11/ можно воздействовать на обработку программу.
Запрет/разрешение выдачи команд воздействует на отображение процесса. на
выходах в зависимости от логического результата и позволяет вести обработку
Фрагмента программы не изменяя состояния сигналов на выходах /например, в
следящем режиме сблокированной цепочки/. Запрет/разрешение тревог
воздействует независимо от логического результата на выполнение обработки с
управлением по тревогам. Результат обработки ошибки адресации влияет на
дальнейшее поведение процессора в случае обращения к дефектному или
отсутствующему блоку.
Функция "стоп" позволяет останавливать процессор программно-техническим путем
/напр., в случае обнаружения ошибки/.
185
Структура программ, а также различнее виды обработки описаны в томе 1
"Программирование основных Функций".
Язык программирования располагает следующими операциями:
Вызов блока
186
Первым блоком, который обрабатывается циклической программой, является
организационный блок OВ 1 /см. том I, "Программирование основных Функций"/. В
этом блоке вызываются также другие подлежащие обработке блоки, которые в свою
очередь могут вызывать последующие блоки и т.д. Образуются "вложения" блоков
один в другой. Глубина вложений составляет, например, в устройствах
автоматизации S5-110S, S5-150W, S5-150A, S5-150K - 7 блоков, а в S5-150S - 15
блоков.
187
Пример:
Программный блок РВ 67 должен обрабатываться в зависимости от состояния
сигнала метки М 105.3. Программный блок РВ 68 должен обрабатываться
постоянно и независимо от сигнала метки.
Структура программы:
188
5.1.2 Вызов функциональных блоков
189
Пример:
Функциональные блоки FB227 И FВ228 должны обрабатываться в зависимости от
состояния сигнала метки М 117.4. Функциональней блок FB227 обрабатывается
при условии, что метка М 117.4 имеет состояние "I". При состоянии сигнала метки
М 117.4 равном "О" должен обрабатываться функциональный блок FB228. После
этого во всех случаях обрабатывается функциональный блок FB251.
Структура программы:
190
5.1.3 Вызов шаговых блоков
Условный вызов шагового блока SPB PB выполняется только тогда, когда при
обработке вызова логический результат равен "I". Тогда происходит выход из
линейной программы и обработка продолжается в начале вызванного шагового
блока.
Если при обработке условного вызова шагового блока логический результат "О",
вызов не выполняется. Продолжается линейная обработка программы. Логический
результат устанавливается в состояние "I".
1) В особых случаях /напр., в списках текстов для интерфейса AS512/ длина блока
данных может составлять до 2 К.
191
Абсолютный вызов блоков данных выполняется независимо от каких-либо условий.
Все адресованные в последующем данные относятся к этому блоку данных.
Циклическая обработка программы не прерывается. Логический результат и
содержание аккумулятора не изменяются.
Пример:
Необходимо произвести сравнение значения слова, данных DW53 из блока данных
DB12 со значением слова данных DW67 из блока данных DB 17. равнозначности
должна установиться метка М 7.3.
Конец блока
192
Выполнение операции "конец блока" BЕ не зависит от логического результата. При
обработке этой Функции всегда происходит смена блока. На логический результат
это не влияет. Через этот логический результат, например, можно устанавливать
метки. Начатая в вызванном блоке логическая операция в старшем блоке
продолжения не имеет.
ВЕ всегда является последней инструкцией в блоке.
193
Логический результат при смене остается по-прежнему "I". Он может служить,
например, для установки меток. Начавшаяся в вызванном блоке логическая
операция в старшем блоке продолжения не имеет.
Если при обработке операции ВЕВ логический результат "О", операция не
выполняется. Продолжается линейная обработка программы. Логический результат
устанавливается в состояние "I". Следующая запрограммированная инструкция
опроса будет всегда являться первичным опросом /см. раздел 3.1.5/.
194
Указание дистанции перехода
Указание дистанции перехода относится к инструкции перехода. Переходы могут
выполняться вперед, т.е. к инструкциям после инструкции перехода, и назад, т.е. к
инструкциям перед инструкцией перехода. При переходах вперед параметр
положительный, при переходах назад - отрицательный.
Дистанция перехода 1 означает, что обработка в процессоре будет продолжена по
следующей инструкции ; дистанция 2 означает, что обработка начнется через одну
инструкцию и т.д.
195
Пример:
196
5.2.1 Абсолютный переход SPA
Обработка программы:
Функция перехода SPB выполняется только при условии, что логический результат
равен "I". При результате "О" переход не выполняется. при этом логический
результат устанавливается в состояние "I". Если в инструкциях непосредственно
после SPB содержатся операции, зависящие от логического результата, то они
выполняются при несостоявшемся переходе. Если непосредственно за SPB стоят
инструкции опроса, напр., UЕ, ОЕ, и т.д., то эти опросы рассматриваются как
"первичные опросы", т.е. отсюда начинается новая логическая операция.
197
Обработка программы:
Пример:
Если входы Е 18.3 и Е 20.4 имеют состояние "I", обрабатывается фрагмент
программы А, в противном случае - Фрагмент В.
Алгоритм:
198
Программирование:
Пример:
199
5.2.4 Переход при логическом результате не равном нулю SPN
Пример:
201
5.2.7 Переход при переполнении SPO
202
5.2.8 Переход при переполнении с запоминанием SPS
Функции сдвига дают возможность побитового сдвига числовых значений влево или
вправо. С помощью операций
Ø SRW сдвиг вправо /слова/
Ø SLW сдвиг влево /слова/
Ø SVW сдвиг вправо со знаком /слова/
Ø SLD сдвиг влево /двойного слова/
Ø SVD сдвиг вправо со знаком /двойного слова/
Ø RRD циклический сдвиг /вращение/ вправо
Ø RLD циклический сдвиг /вращение/ влево
можно воздействовать на хранящийся в аккумуляторе параметр.
203
Выполнение функции сдвига не зависит от условий. Логический результат не
изменяется. Состояние последнего смешенного бита может быть опрошено
функцией перехода. Если этот бит имеет значение "О", то выполняется Функция
SPN /переход при результате равном нулю/. Если этот бит имеет значение "I",
выполняется функция SPN /переход при результате не равном нулю/ или SPP
/переход при знаке "плюс"/.
Функция сдвига с параметром 0 или 32 рассматривается как нулевая операция NOP.
При параметре 32 дополнительно происходит установка индикации.
204
5.3.2 Сдвиг влево /слова/ SLW
205
5.3.4 Сдвиг влево /двойного слова/ SLD
206
5.3.5 Сдвиг вправо со знаком /двойного слова/ SVD
С помощью Функции "сдвиг вправо со знаком /двойного слова/" SVD содержание
аккумулятора 1 можно по битам сдвинуть вправо. Параметр инструкции указывает
на количество разрядов, на которое производится сдвиг. Сдвиг может выполняться
минимально на 0 и максимально на 32 разряда..
Освобождающиеся при сдвиге разряды заполняются знаком, т.е. при
положительных числах - нулями, а при отрицательных - единицами.
207
5.3.7 Циклический сдвиг влево /двойного слова/ RLD
С помощью функции "циклический сдвиг влево /двойного слова/" RLD содержание
аккумулятора можно по битам сдвинуть влево. Параметр инструкции указывает на
количество разрядов, на которое производится сдвиг. Сдвиг может выполняться
минимально на 0 и максимально на 32 разряда.
Освобождающиеся при сдвиге разряды заполняются сдвигаемыми разрядами.
208
5.4 Функции преобразования
С помощью вышеназванных функций производится преобразование значения,
хранящегося в аккумуляторе I.
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
210
Пример:
Двоичное дополнение значения слова данных DW31 необходимо
занести в слово данных DW32.
211
Пример:
Двоичное дополнение значения двойного слова данных DD68 необходимо
записать в слово данных DD72.
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-разрядного числа с Фиксированной запятой.
215
Преобразование из двоичного кода в десятичный /16-разрядное число с
фиксированной запятой/DUF
Пример:
216
Преобразование /32-разрядного числа с фиксированной запятой/ из двоичной
системы в десятичную DUD
217
Пример:
Находящееся в двойном слове данных DD146 32-разрядное число с фиксированной
запятой необходимо переслать в двойное слово данных AD68 как число в системе
ДКДС.
218
Пример:
219
5.4.7 Преобразование /двойного слова/ из числа с плавающей запятой в
число с фиксированной запятой GFD
220
Если хранящееся в аккумуляторе значение больше или меньше области,
разрешенной для 32-разрядного числа с фиксированной запятой, устанавливается
переполнение с запоминанием Os. В этом случае преобразования не происходит.
221
Выполнение операций по декрементированию и инкрементированию
не зависит от логического результата. При обработке эти операции
выполняются всегда. На логический результат они не влияют.
Операции по декрементированию и инкрементированию не вызывают изменения
индикации.
222
На языке STEP-5 инструкции "обработать слово данных" и "обработать слово
меток" записываются как команды, состоящие из двух слов. Впервой инструкции
указывается операции обработки и слово данных
или меток; во второй инструкции указывается операция, которую следует
выполнить, и обозначение используемых операндов. Параметр операнда во всех
случаях должен быть "0" или"0.0"
223
Значение слова данных DW 17 в нашем примере может быть изменено с помощью
операций "инкрементирование" или "декрементирование". Тем самым изменяется
также параметр выполняемой инструкции.
При обработке инструкции "обработать слово данных" процессор обращается к
актуальному в данный момент блоку данных. Как и при всех операциях с операндом
"данные', здесь также следует предварительно позаботиться о правильном вызове
блока данных. При обработке инструкции "обработать слово меток" это
ограничение снимается. Инструкции "обработать слово данных" и "обработать
слово меток" всегда выполняются независимо от логического результата.
"Обработка слова данных" и "обработка слова меток" охватывают только замещение
параметра, т.е. использование слова, указанного в слове данных. Выполнение
замещенной инструкции происходит точно также, как если бы она была
запрограммирована отдельно.
224
Параметр этих индицируемых операций стоит в слове данных или слове меток. В
области операндов входов и выходов он имеет следующую структуру:
В правом байте слова данных или меток справа находится адрес байта, в левом
байте, также справа, - адрес бита.
225
Значение слова данных или меток при указании области операнда меток М имеет
следующую структуру:
В правом байте находится адрес байта, в левом байте справа - адрес бита.
Значение слова данных или меток при указании области операндов таймеров Т и
счетчиков Z имеет следующую структуру:
В правом байте слова данных или меток стоит параметр времени или параметр
счета. Левый байт при замещении параметров не учитывается.
226
Двоичные функции в сочетании с областью операндов данных в , точно также как и
бит-тестовые функции обрабатываться с индицированием не могут.
227
Параметр этих индицируемых операций находится в правом байте слова
данных или меток. Левый байт при замещении параметра не учитывается.
Пример:
выполненная инструкция
228
5.6.3 Индицирование организационных операции
Параметр этих индицируемых операций находится в правом байте слова данных или
меток. Левый байт при замещении параметра не учитывается.
Пример:
левый байт правый байт
: B DW 77 +25 *DW77
: SPA 0
:
:
:
SPA + 25
выполненная инструкция
229
В устройстве программирования ПГ 670 инструкция перехода индицируется
параметром 0 путем задания перехода в ту же самую строку. Например:
Ml : SPA = М1
230
5.7 Запрет или разрешение на выдачу команд
SA установить выход
RA сбросить выход
= А присвоение результата выходу
ТРВ пересылка байта периферии и
TPW пересылка слова периферии.
231
:U E 28.3 Действие "BAS" вновь отменяется, инструкцией "BAF".
:BAF Дальнейшая программа STEP-5 выполняется без
ограничений, касающихся выходов.
Пример:
Обработка блоков РВ 37, FB 103 и РВ 38 не должна прерываться сигналами
тревоги.
232
5.9 Запрет или разрешение запросов на прерывания
233
Через операцию "запрет обработки ошибки адресации" AFS обработка ошибки
запрещается. При появлении ошибки в адресе процессор продолжает нормально
работать. Операция "разрешение обработки ошибки адресации" AFF вновь
активизирует обработку. Выполнение операций AFS и AFF не зависит от
логического результата. Операции всегда выполняются при обработке. Они не вли-
яют на логический результат.
Пример:
При обработке программных блоков РВ 20 и РВ 21 ошибки в адресации не должны
обрабатываться.
:AFS Обработка ошибок в адресации запрещается.
:SPA РВ 20 Обработка этих блоков ведется без учета ошибок в
:SPA РВ 21 адресации.
:AFF Обработка ошибок в адресации вновь разрешена.
234
6 ОПИСАНИЕ КОМАНД ПОДСТАНОВКИ
235
6.1 Двоичные операции над параметрами блоков
236
В качестве операндов при вызове функционального блока могут использоваться:
Входы Е 0.0 до Е 127.7
Выходы А 0.0 до А 127.7
Метки М 0.0 до М 255.7
Таймеры Т 0 до Т 255 и
Счетчики Z 0 до Z 255.
Программа в выполненная
функциональном программа
блоке
237
Пример 2: операция ИЛИ-перед-И
Вызов функционального блока
Программа в выполненная
функциональном программа
блоке
238
В качестве операндов при двоичном /битовом/ сбрасывании /а также при других
функциях памяти/ допускаются:
Входы Е 0.0 до Е 127.7
Выходы А 0.0 до А 127.7 и
Метки М 0.0 до М 255.7.
239
Пример 2: Преобразователь битов с условным переходом
240
Для команд подстановки SI=xxxx и SE=xxxx в качестве операндов в вызове
блока допустимо только время. Соответствующие команды на языке STEP-5
будут гласить SIT или SET.
Для команд подстановки SVZ=xxxx, SSV=xxxx и SAR=xxxx в качестве
текущих операндов в вызове блока допустимы как таймеры, так и счетчики.
Характеристика команды STEP-5 после подстановки будет зависеть от
использованного текущего операнда. Две первых буквы операции подстановки
описывают временную характеристику, а третья - характер счета.
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).
245
Пример: Функции загрузки и пересылки
Вызов функционального блока
246
Загрузка слова параметра блока LW
247
Загрузка двойного слова параметра блока LD
248
В машинном коде МС5 под константу отводится две команды, битовые карты
которых представляют число 5,5 с плавающей запятой:
249
Пример: Обработать параметр блока
250
7 ПАРАМЕТРИРОВАНИЕ И ОБЕСПЕЧЕНИЕ ФУНКЦИОНАЛЬНЫХ
БЛОКОВ
251
Обеспечение и параметрирование функциональных блоков
252
Пример:
Выход Функционального блока (FB 218) должен управлять световым
сигнализатором (выход А 27.1). Световой сигнализатор должен иметь состояние
"I", если /внутренний/ накопитель команд или вход контроля ламп /Е12.0/ имеют
состояние сигнала "I". Параметрирование должно производиться индивидуально.
253
Программирование в программном блоке:
Пример:
Выход функционального блока (FB 218) должен управлять световым
сигнализатором (выход А 27.1). Световой сигнализатор должен иметь состояние
сигнала "I", если /внутренний/ накопитель команд или вход контроля ламп (Е 12.0)
имеют состояние "I". Обработка входа контроля ламп должна производиться без
параметра блока.
254
255
Программирование в программном блоке
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,
БИТОВЫЕ КАРТЫ МАШИННОГО КОДА
262
Операции с операндами Е и А:
263
Операции с операндами M, Т и Z
264
Операции с операндом D
х = значения не имеет
265
8.2 Преобразование функций времени и счета
Для запуска функции времени или для установки функции счета требуется указать
параметр времени или счета. Этот параметр запишется на машинном языке с
инструкцией загрузки перед операцией запуска или установки. Эта операция
загрузки всегда подразумевает загрузку словами /см. разделе 3.3.2 и 3.4.2/.
Адрес слова
266
8.3 Преобразование бит-тестовых функций
х = значения
не имеет
267
8.4 Преобразование функций загрузки и пересылки
Операции с операндами Е и А
Адрес байта
268
Операции с операндами M, D, Р и Q
269
Операции с операндами T, Z, BS, BT, BA и BB
270
8.5 Преобразование функций сравнения, вычислительных
функций и логических операций над числами
Функции сравнения /раздел 4.3/, вычислительные функции /раздел 4.4/ и
логические операции над числами /раздел 4.5/ преобразуются с языка
программирования STEP5 на машинный язык МС 5 напрямую.
Функция сравнения
Вычислительные функции
х = значения не имеет
271
Логические операции над числами
х = значения не имеет
Функции блоков
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 Преобразование инструкций подстановки /замещения/
275
Адрес параметра блока
276
9 СИСТЕМНЫЕ ФУНКЦИИ
277
Перевод надписей в обзорной таблице системных функций на стр.275
1. Операция
2. Операнд
3. Обозначение
4. Двоичные системные функции
Абсолютная установка бита
Абсолютный сброс бита
слова системных данных
слова системных данных из расширенной области
5. Дискретные системные функции
Перенести в
слово системных данных
слово системных данных из расширенной области
Косвенная загрузка регистра
Косвенный перенос регистра
Перенос блока по байтам
Перенос блока по словам
Суммировать с байтом-константой
Суммировать со словом-константой
Сменить содержание аккумулятора
Установить маску прерывания
Считать маску прерывания
6. Организационные системные функции
Абсолютный переход
Условный переход к организационному блоку
Конец обработки прерывания
Переход через системное мат. обеспечение
Обработка слова системных данных
Косвенная обработка параметра блока
Стоп обработки прерываний по времени
278
9.2 Двоичные системные функции
279
Посредством операций TBS или ТВТ содержание аккумулятора 1 переносится в
слово системных данных или в слово системных данных из расширенной
области. Операция переноса не зависит от логического результата и не влияет на
него.
Использование этих инструкций оправданно лишь в операционной системе, при
этом необходимо точно знать состояние загрузки области системных данных.
Последовательность инструкций
280
Последовательность инструкций
281
Последовательность инструкций
Вычислительные функции
282
Прочие числовые системные функции
Программа на языке
283
SIM Установить маску прерывания
LIM Считать маску прерывания
Блочные функции
284
UBE Конец обработки прерывания
285
Использование этой инструкции оправданно только в операционной системе с
соответствующей рамочной программой.
Функции перехода
286
:T BS 255
:B BS 255 Вызов выбранного блока данных
Ml: - Продолжение программы STEP-5
Примеры:
287
Определив параметр блока как константу и указав соответствующий код МС-5,
можно выполнить любую (однословную) инструкцию.
Пример:
288
9.5 ПРИМЕРЫ: СОЗДАНИЕ И КОПИРОВАНИЕ БЛОКА ДАННЫХ
Примеры этого раздела написаны для контроллеров S5-150A и S5-150K, однако
после изменения абсолютных адресов памяти (там, где это необходимо), их
можно использовать и в других контроллерах.
Этот пример приводится для иллюстрации работы с системными функциями.
Исходным пунктом в рассуждениях должна быть программа, полностью
находящаяся в области ППЗУ (EPROM) памяти контроллера. Эта программа
является энергонезависимой и сохраняется даже при смене плат памяти или блока
питания и может "загружаться" без помощи программирующего устройства простой
установкой модуля EPROM в предусмотренный для него разъем на плате ЗУ.
Однако во многих случаях требуется использовать и область памяти,
предназначенной для записи и считывания (область RAM),которая служит для
обработки блоков данных.
Это необходимо в тех случаях, когда область меток больше не может принять
предлагаемое количество переменных данных, или тогда, когда "индицируют", т.е.
работают с переменным параметром (в контроллерах S5-150A и S5-150K операция
BMW "Обработка слова меток" отсутствует).
В этих случаях при новом запуске контроллера необходимо организовать нужный
блок данных с помощью программы, записанной в области EPROM, и при
необходимости обеспечить его данными из этой области. "Организовать" в данном
случае значит обозначить в памяти место, которое необходимо для нового блока
данных:
написать заголовок блока, стереть содержание на необходимую длину и занести
в список адресов исходный адрес.
Задание
В области RAM программируемого контроллера требуется организовать блок
данных с переменным параметром (номером) и переменной длины. При этом
должны выдаваться распознанные ошибки с расшифровкой по видам. Кроме того,
во вновь организуемый блок требуется перенести содержание блока данных из
области EPROM. Требуется выполнить все необходимые проверки и сообщить о
распознанных ошибках.
289
Целесообразней всего решать эту задачу с помощью двух функциональных блоков:
одного для организации блока данных и одного - для копирования.
Функциональный блок для организации блока данных может, например, выглядеть
следующим образом:
С параметром NRLG двумя байтами вводится номер нового блока данных и его
длина. В параметре FEH готовится один байт с сообщениями об ошибках.
Функциональный блок для копирования блока данных мог бы выглядеть, например,
следующим образом:
290
СОЗДАНИЕ (ОРГАНИЗАЦИЯ) НОВОГО БЛОКА ДАННЫХ
Примеры программирования
291
Примеры программирования
292
Примеры программирования
293
Программный блок I:
Программный блок 2:
Параметр блока NRLG загружается в слово меток MW250, которое после этого
приобретает следующее состояние:
294
Программный блок 3:
Здесь, проверяется наличие набранного блока данных в памяти контроллера и в
списке адресов. Список адресов ведется в блоке данных DBO, за которым
закреплено постоянное место в запоминающем устройстве. Блок данных DB0 имеет
следующее строение:
Блок данных DB 0 Адрес в ЗУ
(байт)
295
Абсолютные адреса адресных блоков заносятся также в системные данные BS.
Ниже приводится фрагмент из области системных данных.
296
Распределение регистров в S5-150 А/K
Регистры адресуются с ориентацией по байтам. Один регистр состоит из двух
байтов, длина одного регистра составляет 16 битов.
Программный блок 4:
В четвертом блоке (схеме) сначала определяется новая граница распределения
памяти. Для этого от существующего предельного адреса памяти (хранящегося
BS 33) вычитается длина нового блока данных (в байтах!) и длина заголовка
блока (10 байтов). (Вычитается, потому что область RAM в ЗУ занимается
адресами от старших к младшим).
Если новый предельный адрес больше или равен нижнему пределу ЗУ (указан BS
32), содержание аккумуляторов 1 и 2 меняется местами и в системных данных BS33
записывается новый предельный адрес.
Поскольку адреса выходят за пределы 16-разрядных чисел с фиксированной
запятой, оба адреса сначала уменьшаются вдвое (через инструкцию SRW 1). Тем
самым оба числовых значения в бите № 15
297
становятся нулями, что позволяет произвести прямое сравнение чисел с
фиксированной запятой (>= F).
При ошибке происходит установка бита № 3 в байте ошибок и выход из
функционального блока.
Программный блок 5:
По программе в блоках с 5 по 9 производится перенос 5 слов заголовка блока в
память.
Первое слово является синхронизирующим, с которого начинается каждый блок
(КН = 7070). Эта синхронизирующая комбинация переносится в ячейку памяти,
адресованную в BS 33.
Программный блок 6:
Второе слово заголовка блока записывается по (байтовому) адресу BS33 +2. Оно
включает в себя тип блока.
Структура 2-го слова заголовка блока:
298
00 Блок недействителен и в список адресов не вносится (в
том числе и при новом запуске).
01 Блок действителен и находится в области RАМ
10 Блок действителен, находится в области RAM и
предназначается для дальнейшего использования в
области EPROM. После переноса в EPROM
обозначенные таким образом блоки стираются по
команде с помощью программатора (объявляются
недействительными).
Программный блок 7:
В 3-м слове заголовка блока находятся кодировки для программатора и часть
библиотечного номера. Кодировки для программатора располагаются в левом
байте 3-го слова следующим образом:
В правом байте 3-го слова указана предметная группа, издание и вариант, если блок
является стандартным функциональным блоком.
299
Программный блок 8:
4-е слово заголовка блока содержит библиотечный номер, индицируемый при
соответствующем распределении кодовых обозначений программаторов (3-е слово).
Этот номер может занимать область от 0 до 65535.
Программный блок 9:
В последнем слове заголовка блока указана длина блока (в словах), включая длину
заголовка блока (5 слов).
300
Функциональный блок FB212, DB-KOPIE
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.
306
Пример программирования
307
Цифровые системные функции
308
9.6 Битовые карты системных функций
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
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