Элементы и блоки
Команды FUP состоят из элементов и блоков, графически объединяемых в сегменты. Элементы и блоки можно разделить на следующие группы:
Команды как элементы
STEP 7 представляет часть команд FUP в виде отдельных элементов, которые не нуждаются ни в адресах, ни в параметрах
Блок | Описание | Раздел в этом руководстве |
---|---|---|
![]() |
Отрицание двоичного ввода |
Команда как блок с адресом
STEP 7 представляет некоторые из команд FUP в виде блоков, для которых Вы должны указать адрес
Блок | Описание | Раздел в этом руководстве |
---|---|---|
![]() |
Присвоить |
Команда как блок с адресом и значением
STEP 7 представляет некоторые из команд FUP в виде блоков, для которых нужно указать адрес и значение (например, значение таймера или счетчика, см. рисунок ниже)
Блок | Описание | Раздел в этом руководстве |
---|---|---|
![]() |
Таймер с задержкой включения с запоминанием |
Команда как блок с параметрами
STEP 7 представляет некоторые из команд FUP в виде блоков с входами и выходами. Входы расположены слева от блока, а выходы справа. Вы указываете входные параметры и некоторые из выходных параметров. Большинство из выходных параметров предоставляется программным пакетом STEP 7. Для назначения параметров необходимо использовать специальную запись типов данных. Параметры EN (деблокировать вход) и ENO (деблокировать выход) описаны ниже.
Блок | Описание | Раздел в этом руководстве |
---|---|---|
![]() |
Деление вещественных чисел |
Параметры EN и ENO
Если параметр EN (деблокировать вход) блока FUP активизирован, то блок выполняет определенную функцию. Если эта функция выполняется блоком без ошибок, то активизируется параметр ENO (деблокировать выход). Параметры EN и ENO блока FUP относятся к типу данных BOOL и могут быть размещены в областях памяти I, Q, M, D или L (см. табл. ниже).
Как действуют EN и ENO, описано ниже:
• Если EN не активизирован (его сигнальное состояние равно 0), то блок не выполняет свою функцию и ENO не активизируется (его сигнальное состояние тоже равно 0).
• Если EN активизирован (его сигнальное состояние равно 1) и если блок выполняет свою функцию без ошибок, то ENO тоже активизируется (его сигнальное состояние тоже равно 1).
• Если EN активизирован (его сигнальное состояние равно 1) и если при исполнении блоком функции возникает ошибка, то ENO не активизируется (его сигнальное состояние остается равным 0).
Области памяти и их функции
Большинство адресов в FUP относятся к областям памяти. Следующая таблица показывает типы областей и их функции.
В таблице 5–2 перечислены максимальные диапазоны адресов для различных областей памяти.
* С командами FUP Вы можете использовать адрес в области памяти L только тогда, когда Вы описали его как VAR_TEMP в таблице описания переменных.
Булева логика и таблицы истинности
Язык программирования FUP основан на двоичной логике булевой алгебры, в которой переменные могут принимать значения “истина” (1) или “ложь” (0). Каждая логическая команда проверяет состояние сигнала переменной на равенство 1 (истина, удовлетворяется) или 0 (ложь, не удовлетворяется) и генерирует результат. Затем команда или сохраняет результат, или использует его для выполнения булевой логической операции. Результат логической операции называется RLO
Для представления логики используются логические блоки, известные из булевой алгебры.
Результаты логических операций для всех возможных комбинаций логических переменных перечисляются в таблицах истинности. Правила булевой логики иллюстрируются ниже на примере логических операций И, ИЛИ и исключающее ИЛИ.
Логическая операция И
В логической операции И опрашиваются сигнальные состояния двух или более указанных адресов. Если на всех входах сигнал равен 1 то на выходе будет 1. Если хотя бы на одном входе будет ноль, то на выходе тоже будет ноль.
![]() |
Условие удовлетворяется, когда сигнальное состояние равно 1 на входах I1.0 И I1.1. |
Возможные результаты логической операции И могут быть представлены в таблице истинности (табл. 5–3). Здесь 1 означает “удовлетворяется”, а 0 означает “не удовлетворяется”.
результат опроса сигнального состояния по адресу I1.0 равен | результат опроса сигнального состояния по адресу I1.1 равен | результат логической операции имеет cледующее значение: |
---|---|---|
1 | 1 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
0 | 0 | 0 |
Логическая операция ИЛИ
В логической операции ИЛИ опрашиваются сигнальные состояния двух или более указанных адресов. Если хотя бы на 1 входе сигнал равен 1 то и на выходе будет единица.
![]() |
Условие удовлетворяется, когда равно 1 сгнальное состояние на входе I1.0 или I1.1. |
результат опроса сигнального состояния по адресу I1.0 равен | результат опроса сигнального состояния по адресу I1.1 равен | результат логической операции имеет cледующее значение: |
---|---|---|
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
0 | 0 | 0 |
Логическая операция исключающее ИЛИ
В логической операции исключающее ИЛИ опрашиваются сигнальные состояния двух или более указанных адресов. Если сигнальное состояние одного из адресов равно 1, то условие удовлетворяется, и команда дает результат 1. Если сигнальные состояния всех адресов равны 0 или 1, то условие не удовлетворяется, и операция результат равен 0.
![]() |
Условие удовлетворяется, когда сигнальное состояние равно 1 только на входе I1.0 или I1.1 (т.е. не на обоих одновременно). |
результат опроса сигнального состояния по адресу I1.0 равен | результат опроса сигнального состояния по адресу I1.1 равен | результат логической операции имеет cледующее значение: |
---|---|---|
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
0 | 0 | 0 |
Значение регистров CPU в командах
Регистры помогают CPU выполнять логические и арифметические операции, а также операции сдвига и преобразования. Эти регистры описаны ниже. Аккумуляторы - это регистры общего назначения, которые используются для обработки байтов, слов и двойных слов. Аккумуляторы имеют длину 32 бита.

Слово состояния содержит биты, к которым Вы можете обращаться в операндах битовых логических операций. Следующие разделы объясняют значения битов с 0 по 8.

Изменение битов в слове состояния
Значение | Смысл |
---|---|
0 | устанавливает состояние сигнала в 0 |
1 | устанавливает состояние сигнала в 1 |
x | изменяет состояние |
1 | состояние остается неизменным |
Первичный опрос
Если честно, я сам иногда не совсем понимаю зачем надо было все так усложнять, но тем не менее биты состояния всегда приводятся, но я их прячу за всплывающие окна, поэтому кому интересно может учить целиком, кому нет, тот может и вовсе не смотреть, но отрицать их существования нельзя тем более что это важно!
Бит 0 слова состояния называется битом первичного опроса (бит FC, см. рис. выше). В начале сегмента FUP сигнальное состояние бита FC всегда равно 0, если только предыдущий сегмент не был завершен блоком SAVE.
Каждая логическая операция опрашивает сигнальное состояние бита FC, а также сигнальное состояние адреса, к которому обращается команда. Сигнальное состояние бита FC определяет последовательность выполнения цепи логических сопряжений. Если бит FC равен 0 (в начале сегмента FUP), то команда сохраняет результат в бите
результата логической операции (RLO) слова состояния и устанавливает бит FC в 1. Это называется первичным опросом. Результат “1” или “0”, сохраняемый после первичного опроса в бите RLO, называют результатом первичного опроса. Если сигнальное состояние бита FC равно 1, то операция логически сопрягает результат опроса состояния сигнала по обрабатываемому адресу с RLO, сформированным после первичного опроса, и сохраняет результат в бите RLO. Логическая цепочка, составленная из команд FUP, всегда заканчивается операцией над выходом (например, установить выход, сбросить выход, присвоить значение) или командой перехода в зависимости от результата логической операции (RLO). Эти команды сбрасывают бит FC в 0.
Результат логической операции
Бит 1 слова состояния называется битом результата логической операции (бит RLO, см. рис. выше). Этот бит сохраняет результат цепи логических операций или операций сравнения. Сигнальное состояние бита RLO дает информацию о потоке сигнала. Первая команда в сегменте FUP опрашивает сигнальное состояние адреса и выдает результат 1 или 0. Эта команда сохраняет результат опроса в бите RLO. Вторая команда в цепи логических операций также опрашивает сигнальное состояние некоторого адреса и формирует результат. Теперь команда комбинирует этот результат со значением бита RLO слова состояния в соответствии с правилами
булевой логики (см. выше Первичный опрос). Этот результат логической операции сохраняется в бите RLO слова состояния, заменяя предыдущее значение в бите RLO. Каждая следующая команда в цепи логических операций комбинирует два значения: результат опроса сигнала по указанному адресу и текущее значение RLO. Вы можете, например, присвоить RLO во время первичного опроса состояние некоторого меркерного бита или запустить команду перехода.
Бит состояния
Бит 2 слова состояния называется битом состояния (бит STA, ). Бит состояния сохраняет значение того бита, к которому производится обращение. Состояние логической операции, выполняющей чтение из памяти, всегда совпадает со значением бита, который опрашивается этой командой (бита, над которым выполняется логическая операция). Состояние битовой операции, которая записывает в память (установить выход, сбросить выход или присвоить), совпадает со значением бита, в который эта команда осуществляет запись. Если запись не производится, то значение совпадает со значением бита, к которому обращается команда. Бит состояния не имеет значения для битовых операций, которые не обращаются к памяти. Эти команды устанавливают бит состояния в 1 (STA=1). Бит состояния не опрашивается командами. Он интерпретируется только во время тестирования программы (статус программы).
Бит OR
Бит 3 слова состояния называется битом OR. Бит OR необходим для выполнения логической операции И перед ИЛИ. Логическая операция И может содержать команды И и И-НЕ. Бит OR показывает этим командам, что ранее
выполненная логическая операция И дала значение 1, так что результат логической операции ИЛИ уже определен. Любые другие команды, обрабатывающие биты, сбрасывают бит OR.
Бит переполнения
Бит 5 слова состояния называется битом переполнения (бит OV, ). Бит OV указывает на наличие ошибки. Он устанавливается арифметической операцией или операцией сравнения чисел с плавающей точкой после возникновения ошибки (переполнение, недопустимая команда, недопустимое число с плавающей точкой). Этот бит устанавливается или сбрасывается в соответствии с результатом выполнения арифметической операции или операции сравнения (ошибка).
Бит переполнения с сохранением
Бит 4 слова состояния называется битом переполнения с сохранением (бит OS). Бит OS устанавливается вместе с битом OV, когда возникает ошибка. Так как бит OS не меняется, когда арифметические операции выполняются без ошибок (в отличие от бита OV), он показывает, произошла или нет ошибка в ранее выполненных операциях. Бит OS сбрасывают следующие команды: JOS (перейти, если бит переполнения с сохранением = 1, должна программироваться на AWL), вызовы блоков и команды конца блока.
CC1 и CC0
Биты 7 и 6 слова состояния называются кодом условия 1 и кодом условия 0 (СС1 и СС0). Биты СС1 и СС0 предоставляют информацию о следующих результатах или битах:
• результат арифметической операции
• результат операции сравнения
• результат цифровой операции
• биты, которые были выдвинуты из операнда операцией сдвига или циклического сдвига.
В таблицах ниже представлены значения битов CC1 и CC0 после выполнения программой определенных операций.
CC1 и CC0 после арифметических операций, без переполнения | ||
---|---|---|
CC1 | CC0 | Объяснение |
0 | 0 | Результат = 0 |
0 | 1 | Результат < 0 |
1 | 0 | Результат > 0 |
CC1 и CC0 после арифметических операций над целыми числами, с переполнением | ||
---|---|---|
CC1 | CC0 | Объяснение |
0 | 0 | Переполнение в отрицательной области при сложении целых и двойных целых чисел |
0 | 1 | Переполнение в отрицательной области при умножении целых и двойных целых чисел Переполнение в положительной области при сложении целых чисел, вычитании целых чисел, сложении двойных целых чисел, вычитании двойных целых чисел, получении дополнения до 2 целого числа и получении дополнения до 2 двойного целого числа |
1 | 0 | Переполнение в положительной области при умножении целых чисел и двойных целых чисел, делении целых чисел и двойных целых чисел Переполнение в отрицательной области при сложении целых чисел, вычитании целых чисел, сложении двойных целых чисел, вычитании двойных целых чисел |
1 | 1 | Деление на 0 при делении целых чисел, при делении двойных целых чисел и при получении остатка от деления двойных целых чисел. |
CC1 и CC0 после арифметических операций над числами с плавающей точкой, с переполнением |
||
---|---|---|
CC1 | CC0 | Объяснение |
0 | 0 | Ступенчатая потеря значимости |
0 | 1 | Переполнение отрицательной области |
1 | 0 | Переполнение положительной области |
1 | 1 | Недопустимое число с плавающей точкой |
CC1 и CC0 после операций сравнения | ||
---|---|---|
CC1 | CC0 | Объяснение |
0 | 0 | IN2 = IN1 |
0 | 1 | IN2 < IN1 |
1 | 0 | IN2 > IN1 |
1 | 1 | IN1 или IN2 недопустимое число с плавающей точкой |
CC1 и CC0 после операций сдвига и циклического сдвига | ||
---|---|---|
CC1 | CC0 | Объяснение |
0 | 0 | Последний сдвинутый бит = 0 |
1 | 0 | Последний сдвинутый бит = 1 |
CC1 и CC0 после поразрядных логических операций со словами | ||
---|---|---|
CC1 | CC0 | Объяснение |
0 | 0 | Результат = 0 |
1 | 0 | Результат <> 0 |
Бит двоичного результата
Бит 8 слова состояния называется битом двоичного результата (бит BR, ). Бит BR образует связь между обработкой битов и слов. Этот бит позволяет эффективно интерпретировать результат операции над словами как двоичный результат и включать этот результат в цепочку логических операций. Бит BR предтавляет собой бит
внутренней памяти, в котором может быть сохранен результат логической операции RLO перед выполнением операции над словами, изменяющей RLO, так что старое значение RLO снова доступно после операции, когда возобновляется прерванная последовательность битовых операций. С помощью бита BR Вы можете, например, запрограммировать функциональный блок (FB) или функцию (FC) на языке AWL и вызвать FB или FC в FUP.
Если Вы хотите написать функциональный блок или функцию, которые Вы хотите вызвать в FUP, независимо от того, пишете Вы FB или FC на AWL или на FUP, Вы должны принять во внимание бит BR. Бит BR соответствует параметру ENO (деблокировать выход) блока FUP. RLO сохраняется в бите BR с помощью команды SAVE (в AWL) или блока FUP SAVE в соответствии со следующими критериями:
• Сохранить RLO, равный 1, в бите BR, когда FB или FC обрабатывается без ошибок.
• Сохранить RLO, равный 0, в бите BR, если при обработке FB или FC возникает ошибка.
Запрограммируйте эти команды в конце FB или FC, так чтобы они были последними командами, выполняемыми в блоке.
Бит BR может быть сброшен в 0 непреднамеренно. Если Вы пишете FB или FC в FUP и не обрабатываете бит BR, как это описано выше, FB или FC может переписать бит BR другого FB или другой FC. Во избежание этой ошибки сохраняйте RLO в конце FB или FC, как описано выше.
Значение EN/ENO
Параметры EN (деблокировать вход) и ENO (деблокировать выход) блока FUP функционируют следующим образом:
• Если EN не активизирован (т.е. состояние сигнала равно ”0”), то блок свою функцию не выполняет, и ENO не активизируется (т.е. состояние сигнала тоже равно ”0”).
• Если EN активизирован (т.е. состояние сигнала равно ”1”) и соответствующий блок выполняет свою функцию без ошибок, то ENO тоже активизируется (т.е. состояние сигнала тоже равно ”1”).
• Если EN активизирован (т.е. состояние сигнала равно ”1”) и при обработке функции возникает ошибка, то ENO не активизируется (т.е. состояние сигнала равно ”0”).
Если Вы в своей программе вызываете системный функциональный блок (SFB) или системную функцию (SFC), то SFB или SFC указывает через сигнальное состояние бита BR, выполнил ли CPU эту функцию без ошибок или с ошибкой:
• Если при исполнении возникает ошибка, то бит BR устанавливается в 0.
• Если функция была обработана без ошибок, то бит BR равен 1.
<--Предыдущая статья | Следующая статья--> |