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

Таблицы истинности реализуют проект комбинаторной логики в кратком, табличном формате. Таблицы истинности поддерживаются только в блоках Stateflow® в модели Simulink®. Типовые приложения для таблиц истинности включают принятие решения для:

  • Обнаружение отказа и управление

  • Переключение режимов

Можно добавить блок Truth Table непосредственно в модель Simulink. Можно также задать функцию таблицы истинности в диаграмме Stateflow, состоянии или подграфике. Местоположение функции определяет набор состояний и переходов, которые могут вызвать функцию.

  • Если вы хотите вызвать функцию только в одном состоянии или подграфике и его подсостояниях, поместите свою функцию таблицы истинности в то состояние или подграфик. Эта функция заменяет любые другие функции того же имени в родительских элементах и предках того состояния или подграфика.

  • Если вы хотите вызвать функцию где-нибудь в том графике, поместите свою функцию таблицы истинности в уровень графика.

  • Если вы хотите вызвать функцию из какого-либо графика в вашей модели, поместите свою таблицу истинности в уровень графика и позвольте экспортировать функций уровня графика. Для получения дополнительной информации смотрите Экспорт Функции Stateflow для Повторного использования.

Например, эта функция таблицы истинности имеет имя ttable. Требуется три аргумента (xY, и z) и возвращает одно выходное значение (r).

Функция состоит из этого расположения условий, решений и действий.

Условие

Решение 1

Решение 2

Решение 3

Решение по умолчанию

x == 1

T

F

F

-

y == 1

F

T

F

-

z == 1

F

F

T

-

Действие

r = 1r = 2r = 3r = 4

Каждое из условий, вводимых в столбец Condition, должно оценить к истинному (ненулевое значение) или ложь (нулевое значение). Результаты для каждого условия заданы как T (TRUE), F (FALSE), или - (TRUE или FALSE). Каждый из столбцов решения комбинирует результат для каждого условия с логическим AND в составное условие, которое упоминается как решение.

Вы оцениваете таблицу истинности одно решение за один раз, начиная с Decision 1. Default Decision покрывает все возможные остающиеся решения. Если одно из решений верно, вы выполняете его действие, и затем выполнение таблицы истинности завершено.

Например, если условия x == 1 и y == 1 являются ложными и условие z == 1 верно, затем Decision 3 верен и переменная r установлен равный 3. Остающиеся решения не тестируются, и оценка таблицы истинности закончена. Если первые три решения являются ложными, то Default Decision автоматически верен и его действие (r=4) выполняется. Эта таблица приводит псевдокод, соответствующий оценке этого примера таблицы истинности.

Псевдокод

Описание

if ((x == 1) & !(y == 1) & !(z == 1))
  r = 1;

Если Decision 1 верен, то установленный r=1.

elseif (!(x == 1) & (y == 1) & !(z == 1))
  r = 2;

Если Decision 2 верен, то установленный r=2.

elseif (!(x == 1) & !(y == 1) & (z == 1))
  r = 3;

Если Decision 3 верен, то установленный r=3.

else
  r = 4;
endif

Если все другие решения являются ложными, то Default Decision верен. Установите r=4.

Задайте функцию таблицы истинности

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

  2. Введите метку подписи для функции, как описано в Объявляют Аргументы функции и Возвращаемые значения.

  3. Программируйте функцию таблицы истинности. Для получения дополнительной информации см. Программу Таблица истинности.

  4. В Model Explorer расширьте объект диаграммы и выберите функцию таблицы истинности. Аргументы и возвращаемые значения функциональной подписи появляются как элементы данных, которые принадлежат вашей функции. Аргументы имеют осциллограф Input. Возвращаемые значения имеют осциллограф Output.

  5. В диалоговом окне Свойств данных для каждого значения аргумента и возвращаемого значения, задайте свойства данных, как описано в Set Data Properties.

  6. Создайте любые дополнительные элементы данных, требуемые вашей функцией. Для получения дополнительной информации смотрите, Добавляют Данные Через Model Explorer.

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

    • Local — Локальные данные сохраняются от одного вызова функции до следующего вызова функции. Допустимый для C строит диаграмму только.

    • Constant — Постоянные данные сохраняют свое начальное значение посредством всех вызовов функции.

    • Parameter — Данные о параметре сохраняют свое начальное значение посредством всех вызовов функции.

    • Temporary — Временные данные инициализируют в начале каждого вызова функции. Допустимый для C строит диаграмму только.

Инициализируйте функциональные данные

Можно инициализировать функциональные данные (кроме аргументов и возвращаемых значений) из рабочей области MATLAB®. Для получения дополнительной информации смотрите, Инициализируют Данные из Базового рабочего пространства MATLAB.

Задайте временные данные

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

В графиках, которые используют MATLAB в качестве языка действия, вы не должны задавать временные функциональные данные. Если вы используете неопределенную переменную, Stateflow создает временную переменную. Переменная доступна для остальной части функции.

Объявите аргументы функции и возвращаемые значения

Функциональная метка подписи задает имя для вашей функции и официальные имена для ее аргументов и возвращаемых значений. Метка подписи имеет этот синтаксис:

[return_val1, return_val2,...] = function_name(arg1, arg2,...)
Можно задать несколько возвращаемых значений и несколько входных параметров. Каждое возвращаемое значение и входной параметр могут быть скаляром, вектором или матрицей значений. Для функций только с одним возвращаемым значением не используйте скобки в метке подписи.

Можно использовать то же имя переменной и в аргументах и в возвращаемых значениях. Например, функция с этой меткой подписи использует переменные y1 и y2 как оба ввода и вывода:

[y1, y2, y3] = f(y1, u, y2)
Если вы экспортируете эту функцию в код С, y1 и y2 передаются ссылкой (как указатели), и u передается значением. Передача входных параметров ссылкой уменьшает число раз, что сгенерированный код копирует промежуточные данные, приводящие к более оптимальному коду.

Вызовите функции таблицы истинности в состояниях и переходах

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

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

Совет

Если формальные аргументы функциональной подписи являются скалярами, проверяют, что вводы и выводы вызовов функции следуют правилам скалярного расширения. Для получения дополнительной информации смотрите Значения Присвоения ко Всем Элементам Матрицы.

Задайте свойства функций таблицы истинности

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

Имя

FunctionName . Щелкните по ссылке имени функции, чтобы принести вашу функцию к переднему плану в его нативном графике.

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

Управляет встраиванием вашей функции в сгенерированном коде:

  • Auto — Определяет, встроить ли вашу функцию на основе внутреннего вычисления.

  • Inline — Встраивает вашу функцию, если вы не экспортируете ее в другие графики, и это не часть рекурсии. (Рекурсия существует если ваши вызовы функции сама прямо или косвенно посредством другого вызова функции.)

  • Function — Не встраивает вашу функцию.

Метка

Метка Signature для вашей функции. Для получения дополнительной информации смотрите, Объявляют Аргументы функции и Возвращаемые значения.

Underspecification

Управляет уровнем диагностики для underspecification в вашей функции таблицы истинности. Для получения дополнительной информации см. Правильные Чрезмерно определенные и Таблицы истинности Underspecified.

Сверхспецификация

Управляет уровнем диагностики для сверхспецификации в вашей функции таблицы истинности. Для получения дополнительной информации см. Правильные Чрезмерно определенные и Таблицы истинности Underspecified.

Язык действия

Управляет языком действия для вашей функции таблицы истинности Stateflow. Выберите между MATLAB или C. Для получения дополнительной информации см. Опции Языка для Таблиц истинности Stateflow.

Описание

Функциональное описание. Можно ввести краткие описания функций в иерархии.

Ссылка на документ

Соединитесь с онлайн-документацией для функции. Можно ввести веб-адрес URL или команду MATLAB, которая отображает документацию в подходящем онлайн-формате, таком как файл HTML или текст в Окне Команды MATLAB. Когда вы кликаете по гиперссылке Document link, Stateflow отображает документацию.

Похожие темы