exponenta event banner

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

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

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

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

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

Можно добавить блок таблицы истинности непосредственно в модель Simulink или определить функцию таблицы истинности в диаграмме, состоянии или подхеме Stateflow ®. Блоки таблицы истинности в модели Simulink выполняются как блок Simulink, а функции таблицы истинности в диаграмме 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

Каждое из условий, введенных в столбце Условие, должно иметь значение true (ненулевое значение) или false (нулевое значение). Результаты для каждого условия определяются как T (истина), F (ложь) или - (истина или ложь). Каждый из столбцов решения объединяет результат для каждого условия с логическим И в составное условие, которое называется решением.

Вы оцениваете таблицу истинности по одному решению, начиная с решения 1. Решение 4 охватывает все возможные оставшиеся решения. Если одно из решений верно, таблица выполняет связанное действие, а затем выполнение таблицы истинности завершено.

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

Псевдокодекс

Описание

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

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

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

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

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

Если решение 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)
    При экспорте этой функции в код C y1 и y2 передаются по ссылке (в качестве указателей), и u передается значением. Передача входных данных по ссылке уменьшает количество раз, когда сгенерированный код копирует промежуточные данные, что приводит к более оптимальному коду.

    Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

    Совет

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

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

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

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

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

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

Свойства функции таблицы истинности можно задать в обозревателе моделей или в диалоговом окне Свойства таблицы истинности (Truth Table properties).

  • Чтобы использовать Обозреватель моделей (Model Explorer):

    1. Чтобы открыть Обозреватель моделей (Model Explorer), на вкладке Моделирование (Modeling) выберите Обозреватель моделей (Model Explorer).

    2. На панели Иерархия модели (Model Hierarchy) выберите функцию таблицы истинности.

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

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

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

    2. Выберите Свойства.

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

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

Имя

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

Встроенная функция

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

  • Auto - определяет необходимость встраивания функции на основе внутреннего расчета.

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

  • Function - Не выполняет свою функцию.

Этикетка

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

Underspecification

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

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

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

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

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

Описание

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

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

Ссылка на онлайн-документацию для функции. Можно ввести URL-адрес веб-сайта или команду MATLAB, которая отображает документацию в соответствующем интерактивном формате, например HTML-файл или текст в окне команд MATLAB. Если щелкнуть гиперссылку «Документ» (Document), на экране появится файл Stateflow.

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

Чтобы открыть диалоговое окно Свойства таблицы истинности (Truth Table properties), на вкладке Моделирование (Modeling) щелкните Свойства таблицы (Table Properties).

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

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

См. также

Связанные темы