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





| Векторный | Си | ST |
в палитре на схеме

Описание

Блок реализует произвольную логическую операцию по выбору пользователя:
  1. & (И) (операция аналогична блоку Оператор И).
  2. 1 (ИЛИ) (Оператор ИЛИ).
  3. > (БОЛЬШЕ) (Операция БОЛЬШЕ).
  4. < (МЕНЬШЕ) (Операция МЕНЬШЕ).
  5. = (РАВНО) (Операция РАВНО).
  6. ≠ (НЕ РАВНО) (Операция НЕ РАВНО).
  7. ≥ (БОЛЬШЕ ИЛИ РАВНО) (Операция БОЛЬШЕ ИЛИ РАВНО).
  8. ≤ (МЕНЬШЕ ИЛИ РАВНО) (Операция МЕНЬШЕ ИЛИ РАВНО).
  9. ⊻ (ИСКЛЮЧАЮЩЕЕ ИЛИ, XOR) (XOR).
  10. ¬⊻ (ИСКЛЮЧАЮЩЕЕ НЕ-ИЛИ, NOT XOR) (NOT XOR).
В зависимости от выбранной логической операции изменяется пиктограмма блока на схеме, а также количество портов в некоторых случаях.

Входные порты

Имя Описание Тип линии связи
inport_1 Порт первого операнда. Математическая
inport_2 Порт второго операнда. Математическая

Выходные порты

Имя Описание Тип линии связи
outport Порт для результата операции. На выходе может быть 0 или 1. Математическая

Свойства

Название Имя Описание По умолчанию Тип данных
Тип второго операнда what Указывает тип второго операнда. Если вектор – то осуществляется поэлементная операция. Скаляр – производится операция с каждым элементом первого входа и значением второго входа. Скаляр Перечисление
Тип операции log_type Тип логической операции. & (И) Перечисление
Контроль ошибки равенства при генерации кода checkerr

Для операций РАВНО и НЕ РАВНО выдавать или нет предупреждение при использовании этого блока при генерации кода:

Нет - не выдавать сообщений.

Предупреждение - генерировать предупреждение (при этом генерация кода далее продолжается).

Ошибка - генерировать ошибку (и запрет на дальнейшую генерацию кода).

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

Ошибка Перечисление
Точность оператора сравнения действительных чисел eps

Для операций РАВНО и НЕ РАВНО - точность сравнения, если выбран вариант "Сравнение с eps". Входные сигналы для операции РАВНО при этом сравниваются следующим образом:

где – выходной сигнал блока,

– входные сигналы,

– точность сравнения. Для операции НЕ РАВНО, сравнение будет выполнено аналогично (наоборот).

0.001 Вещественное

Параметры

Блок не имеет параметров.

Промпт

//Описание блока, реализующего произвольную логическую операцию
//по выбору пользователя:
// 1. & (И) (операция аналогична блоку "Оператор И")
// 2. | (ИЛИ) (аналогична блоку "Оператор ИЛИ")
// 3. > (БОЛЬШЕ)
// 4. < (МЕНЬШЕ)
// 5. = (РАВНО)
// 6. ≠ (НЕ РАВНО)
// 7. ≥ (БОЛЬШЕ ИЛИ РАВНО)
// 8. ≤ (МЕНЬШЕ ИЛИ РАВНО)
// 9. ⊻ (ИСКЛЮЧАЮЩЕЕ ИЛИ, XOR)
// 10. ¬⊻ (ИСКЛЮЧАЮЩЕЕ НЕ-ИЛИ, NOT XOR)
//В зависимости от выбранной логической операции изменяется пиктограмма блока
//на схеме, а также количество портов в некоторых случаях
// what - тип второго операнда. Указывает тип второго операнда. Если вектор -
//то осуществляется поэлементная операция. Скаляр - производится операция с каждым
//элементом первого входа и значением второго входа. По умолчанию: Скаляр
// log_type - тип операции. Тип логической операции. По умолчанию: & (И)
// checkerr - контроль ошибки равенства при генерации кода. Для операций РАВНО
//и НЕ РАВНО выдавать или нет предупреждение при использовании этого блока при
//генерации кода:
//  Нет - не выдавать сообщений
//  Предупреждение - генерировать предупреждение (при этом генерация кода далее
//продолжается)
//  Ошибка - генерировать ошибку (и запрет на дальнейшую генерацию кода)
//  Сравнение с eps - вместо операции математически точного равенства, генерировать
//сравнение входов с заданной точностью. Это бывает необходимо делать для
//действительных чисел из-за особенности их представления в компьютерной технике.
//В этом случае надо задать так же число eps в свойстве "Точность оператора сравнения
//действительных чисел". По умолчанию: Ошибка
// eps - точность оператора сравнения действительных чисел. Для операций РАВНО
//и НЕ РАВНО - точность сравнения, если выбран вариант "Сравнение с eps". Входные
//сигналы для операции РАВНО при этом сравниваются следующим образом:
//y(t) = 1, если |x1(t) − x2(t)| ≤ ε
//y(t) = 0, если |x1(t) − x2(t)| > ε
// y(t) - выходной сигнал блока
// x1(t), x2(t) - входные сигналы
// ε - точность сравнения. Для операции НЕ РАВНО сравнение будет выполнено
//аналогично (наоборот). По умолчанию: 0.001
//Входы: inport_1 - порт первого операнда; inport_2 - порт второго операнда
//Выходы: outport - порт для результата операции. На выходе может быть 0 или 1

block: (
  type = "Логические операции",
  points=[(-200 , 0),(-184 , 0),(-200 , -16),(408 , 308)],
  what = Скаляр,
  log_type = & (И),
  checkerr = Ошибка,
  eps = 0.001
  ),