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

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

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

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

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

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

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

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

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

Примечание

Функция таблицы истинности может получить доступ к графику и данным о состоянии над ней в иерархии Stateflow.

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

Эта функция таблицы истинности имеет имя ttable. Требуется три аргумента (x, y, и 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, должно быть рассчитано как true (ненулевое значение) или false (нулевое значение). Результаты для каждого условия заданы как T (true), F (false) или - (true или false). Каждый из столбцов принятия решения объединяет результат для каждого условия с логическим И в составное условие, которое упоминается как решение.

Вы оцениваете таблицу истинности по одному решению за раз, начиная с 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

Если все другие решения являются ложными, то решение по умолчанию является true. Задайте 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. В диалоговом окне Data properties для каждого аргумента и возвращаемого значения задайте свойства данных, как описано в Set Data Properties.

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

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

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

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

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

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

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

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

    Совет

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

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

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

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

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

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

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

  • Чтобы использовать браузер Model Explorer:

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

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

    3. На панели Truth Table измените свойства функции таблицы истинности.

  • Чтобы использовать диалоговое окно Свойства таблицы истинности:

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

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

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

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

Имя

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

Функция Inline опции

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

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

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

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

Метка

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

Underspecification

Управляет уровнем диагностики для недоопределения в функции таблицы истинности. Для получения дополнительной информации см. «Исправление переопределенных и недоопределенных таблиц истинности».

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

Управляет уровнем диагностики для сверхспецификации в функции таблицы истинности. Для получения дополнительной информации см. «Исправление переопределенных и недоопределенных таблиц истинности».

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

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

Описание

Описание функции. Можно ввести краткое описание функций в иерархии.

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

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

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

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

Свойства для блоков Truth Table являются комбинацией свойств функций таблицы истинности и графиков, которые используют MATLAB в качестве языка действий. Описание каждого свойства см. в разделах «Задание свойств функций таблицы истинности» и «Задание свойств для диаграмм Stateflow».

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

См. также

Похожие темы