Таблицы истинности реализуют комбинаторный логический проект в кратком, табличном формате. Типичные приложения для таблиц истинности включают принятие решений для:
Обнаружение и управление отказом
Переключение режимов
Таблицы истинности поддерживаются только в 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 = 1 | r = 2 | r = 3 | r = 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 верно, задайте |
elseif (!(x == 1) & (y == 1) & !(z == 1)) r = 2; | Если Decision 2 верно, задайте |
elseif (!(x == 1) & !(y == 1) & (z == 1)) r = 3; | Если Decision 3 верно, задайте |
else r = 4; endif | Если все другие решения являются ложными, то решение по умолчанию является true. Задайте |
Чтобы задать функцию таблицы истинности:
В палитре объектов щелкните значок функции таблицы истинности. Переместите указатель на место для новой функции таблицы истинности на графике.
Введите метку подписи для функции.
Метка подписи функции задает имя вашей функции и формальные имена для ее аргументов и возвращаемых значений. Метка подписи имеет следующий синтаксис:
[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)
приводит к ошибке времени выполнения.
Чтобы запрограммировать функцию, откройте редактор таблицы истинности, дважды кликнув по полю функции.
В редакторе таблиц истинности добавьте условия, решения и действия. Для получения дополнительной информации смотрите Программу таблицы истинности.
В Model Explorer разверните объект графика и выберите функцию таблицы истинности. Аргументы и возвращаемые значения сигнатуры функции появляются как элементы данных, которые относятся к вашей функции. Аргументы имеют возможности Input
. Возвращаемые значения имеют возможности Output
.
В диалоговом окне Data properties для каждого аргумента и возвращаемого значения задайте свойства данных, как описано в Set Data Properties.
Создайте все дополнительные элементы данных, необходимые для вашей функции. Для получения дополнительной информации см. Раздел «Добавление данных через Model Explorer».
Ваша функция может получить доступ к собственным данным или данным, принадлежащим родительским состояниям или графику. Элементы данных в функции могут иметь одну из следующих возможностей:
Constant
- Постоянные данные сохраняют свое начальное значение через все вызовы функции.
Parameter
- Данные параметра сохраняют свое начальное значение через все вызовы функции.
Local
- Локальные данные сохраняются от одного вызова функции до следующего вызова функции. Действителен только для таблиц истинности, которые используют C в качестве языка действий.
Temporary
- Временные данные инициализируются в начале каждого вызова функции. Действителен только для таблиц истинности, которые используют C в качестве языка действий.
В функциях таблицы истинности, которые используют C в качестве языка действий, задайте локальные данные, когда хотите, чтобы значения данных сохранялись между вызовами функций в течение симуляции. Задайте временные данные, когда вы хотите инициализировать значения данных в начале каждого вызова функции. Для примера можно задать счетчик с Local
возможности, если необходимо отследить количество вызовов функции. Напротив, можно обозначить счетчик цикла, который имеет Temporary
Возможности, если вам не нужно, чтобы значение счетчика сохранялось после завершения функции.
В функциях таблицы истинности, которые используют MATLAB® как язык действий, вам не нужно задавать локальные или временные данные функции. Если вы используете неопределенную переменную, Stateflow создает временную переменную, которая доступна для остальной части функции. Чтобы хранить значения, которые сохраняются между вызовами функций, ваша функция может получить доступ к локальным данным на уровне графика.
Совет
Можно инициализировать локальные и временные данные в функции из рабочего пространства MATLAB. Для получения дополнительной информации см. раздел «Инициализация данных из базового рабочего пространства MATLAB».
Можно вызвать функции таблицы истинности из действий любого состояния или перехода. Можно также вызвать функции таблицы истинности из других функций. Если вы экспортируете функцию таблицы истинности, можно вызвать ее из любого графика в модели. Дополнительные сведения об экспорте функций см. в разделе Экспорт функций Stateflow для повторного использования.
Синтаксис вызова функции таблицы истинности аналогичен сигнатуре функции с фактическими аргументами, заменяющими формальные таковые, заданное в сигнатуре. Если типы данных фактического и формального аргументов различаются, функция приводит фактический аргумент к типу формального аргумента.
Чтобы вызвать функцию таблицы истинности, используйте сигнатуру функции и включите фактическое значение аргумента для каждого формального аргумента в сигнатуру функции. Если типы данных фактических и формальных аргументов различаются, функция приводит фактический аргумент к типу формального аргумента.
Можно задать свойства функции таблицы истинности в Model Explorer или в диалоговом окне Свойства таблицы истинности.
Чтобы использовать браузер Model Explorer:
Чтобы открыть Model Explorer, на вкладке Modeling, выберите Model Explorer.
На панели Model Hierarchy выберите функцию таблицы истинности.
На панели Truth Table измените свойства функции таблицы истинности.
Чтобы использовать диалоговое окно Свойства таблицы истинности:
В редакторе Stateflow щелкните правой кнопкой мыши функцию таблицы истинности.
Выберите Properties.
Отредактируйте свойства функции таблицы истинности.
Можно также программно задать свойства функции таблицы истинности при помощи Stateflow.TruthTable
объекты. Для получения дополнительной информации о программном интерфейсе Stateflow смотрите Обзор API Stateflow.
Имя функции. Щелкните ссылку на имя функции, чтобы перенести функцию на передний план в собственном графике.
Управляет встраиванием вашей функции в сгенерированный код:
Auto
- Определяет, вводить ли функцию в строку на основе внутреннего вычисления.
Inline
- Строит строку вашей функции, если вы не экспортируете ее в другие графики и она не является частью рекурсии. (Рекурсия существует, если ваша функция вызывает себя прямо или косвенно через другой вызов функции.)
Function
- Не встраивает вашу функцию.
Подпись метки для вашей функции. Метка подписи функции задает имя вашей функции и формальные имена для ее аргументов и возвращаемых значений.
Управляет уровнем диагностики для недоопределения в функции таблицы истинности. Для получения дополнительной информации см. «Исправление переопределенных и недоопределенных таблиц истинности».
Управляет уровнем диагностики для сверхспецификации в функции таблицы истинности. Для получения дополнительной информации см. «Исправление переопределенных и недоопределенных таблиц истинности».
Управляет языком действий для функции таблицы истинности 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.