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

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

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

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

Таблицы истинности поддерживаются только в Simulink®.

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

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

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

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

Существует ли ваша таблица истинности как блок в модели Simulink или как функция в диаграмме Stateflow, вы программируете их тот же путь.

Размещение таблицы истинности

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

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

Условие

Решение 1

Решение 2

Решение 3

Решение 4

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. Decision 4 покрывает все возможные остающиеся решения. Если одно из решений верно, таблица выполняют связанное действие, и затем выполнение таблицы истинности завершено.

Например, если условия x == 1 и y == 1 являются ложными и условие z == 1 верно, затем Decision 3 верен и переменная r установлен равный 3. Остающиеся решения не тестируются, и оценка таблицы истинности закончена. Если первые три решения являются ложными, то решение по умолчанию автоматически верно и его действие (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

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

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

Задавать функцию таблицы истинности:

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

  2. Программируйте функцию таблицы истинности. См. Программу Таблица истинности.

  3. Используйте Property Inspector и панель Символов, чтобы задать свойства данных для каждого значения аргумента и возвращаемого значения.

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

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

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

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

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

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

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

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

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

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

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

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

Имя

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

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

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

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

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

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

Метка

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

Underspecification

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

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

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

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

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

Описание

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

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

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

Похожие темы

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