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

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

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

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

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

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

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

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

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

Примечание

Функция таблицы истинности может получить доступ к графику и утвердить данные выше его в иерархии 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. Введите метку подписи для функции.

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

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

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

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

    Примечание

    Не используйте имя символа графика как аргумент функции или возвращаемое значение. Например, если любой x или y данные о графике, задавая функцию с подписью y = f(x) результаты в ошибке времени выполнения.

  3. Чтобы программировать функцию, откройте редактор таблицы истинности путем двойного клика по функциональному полю.

  4. В редакторе таблицы истинности добавьте условия, решения и действия. Для получения дополнительной информации см. Программу Таблица истинности.

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

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

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

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

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

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

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

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

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

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

    Совет

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

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

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

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

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

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

Можно задать свойства для функции таблицы истинности в Model Explorer или диалоговом окне свойств Truth Table.

  • Использовать Model Explorer:

    1. Чтобы открыть Model Explorer, во вкладке Modeling, выбирают Model Explorer.

    2. В панели Model Hierarchy выберите функцию таблицы истинности.

    3. В панели Truth Table отредактируйте свойства функции таблицы истинности.

  • Использовать диалоговое окно свойств Truth Table:

    1. В редакторе Stateflow щелкните правой кнопкой по функции таблицы истинности.

    2. Выберите Properties.

    3. Отредактируйте свойства функции таблицы истинности.

Можно также задать свойства функции таблицы истинности программно при помощи Stateflow.TruthTable объекты. Для получения дополнительной информации о Stateflow программируемый интерфейс, см. Обзор API Stateflow.

Имя

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

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

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

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

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

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

Метка

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

Underspecification

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

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

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

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

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

Описание

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

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

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

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

Чтобы открыть диалоговое окно свойств Truth Table, во вкладке Modeling, нажимают Table Properties.

Свойства для блоков Truth Table являются комбинацией свойств функций таблицы истинности и графиков, которые используют MATLAB в качестве языка действия. Для описания каждого свойства смотрите Specify Properties Truth Table Functions and Specify Properties для диаграмм Stateflow.

Можно также задать свойства блока Truth Table программно при помощи Stateflow.TruthTableChart объекты. Для получения дополнительной информации о Stateflow программируемый интерфейс, см. Обзор API Stateflow.

Смотрите также

Похожие темы