exponenta event banner

Программировать таблицу истинности

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

Таблицы истинности поддерживаются только в моделях Simulink ®. Дополнительные сведения см. в разделе Использование таблиц истинности для моделирования комбинаторной логики.

Открытие таблицы истинности для редактирования

После создания и маркировки таблицы истинности в диаграмме или модели Simulink необходимо указать ее логическое поведение. Эти спецификации применяются как к блоку таблицы истинности в модели Simulink, так и к функции таблицы истинности в диаграмме Stateflow ®. В этом примере задается поведение функции таблицы истинности.

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

По умолчанию таблица истинности содержит таблицу условий и таблицу действий, каждая из которых содержит одну строку. Таблица условий содержит один столбец решения, D1 и одну строку действия.

Выбор языка действий

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

  1. Откройте инспектор свойств. На вкладке «Моделирование» в группе «Данные проекта» выберите «Инспектор свойств».

  2. В разделе Свойства выберите C или MATLAB в качестве языка действий.

Таблицы истинности внутри диаграммы Stateflow, которая использует C в качестве языка действий, также должны использовать C в качестве языка действий.

Ввод условий таблицы истинности

Условия являются отправной точкой для задания логического поведения в таблице истинности. Откройте свой новый стол правды, ttable, для редактирования. Вы начинаете программировать поведение ttable путем задания условий.

Условия вводятся в столбце Условие таблицы условий. Для каждого введенного условия можно ввести необязательное описание в столбце «Описание». Ввод условий для таблицы истинности ttable:

  1. Щелкните строку в таблице условий, которую требуется добавить.

  2. Дважды нажмите кнопку «Добавить строку» на боковой панели.

    Таблица истинности добавляет две строки в нижнюю часть таблицы условий.

  3. Щелкните и перетащите панель, разделяющую панели «Таблица условий» и «Таблица операций», вниз, чтобы увеличить панель «Таблица условий».

  4. В таблице условий щелкните верхнюю ячейку столбца Описание (Description).

    В ячейке появляется мигающий текстовый курсор, который выделяется цветом.

  5. Введите следующий текст:

    x is equal to 1

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

  6. Щелкните следующую ячейку справа в столбце «Условие»..

  7. В первой ячейке столбца «Условие» введите:

    XEQ1:

    Этот текст является необязательной меткой, которую можно включить в условие. Каждая метка должна начинаться с алфавитного символа ([a-z][A-Z]), за которым следует любое количество буквенно-цифровых символов ([a-z][A-Z][0-9]) или подчеркивание (_).

  8. Нажмите Enter и введите следующий текст:

    x == 1

    Этот текст является фактическим условием. Каждое введенное условие должно равняться нулю (false) или ненулевому значению (true). В условии можно использовать дополнительные скобки (например, [x == 1]).

    В условиях таблицы истинности можно использовать данные, которые передаются функции таблицы истинности через ее аргументы. Предыдущее условие проверяет, является ли аргумент x равно 1. Можно также использовать данные, определенные для родительских объектов таблицы истинности, включая диаграмму.

  9. Повторите предыдущие шаги для ввода двух других условий.

Ввод решений таблицы истинности

Каждый столбец решения (D1, D2 и так далее) связывает группу результатов условия вместе с отношением И в решение. Возможные значения результатов условия в решении: T Правда, F (false), и - Правда или ложь. В поле Enter Truth Table Conditions (Ввод условий таблицы истинности) вводятся условия для таблицы истинности. ttable. Введите значения в столбцах решения:

  1. Щелкните по столбцу решения таблицы условий, которую требуется добавить.

  2. Трижды нажмите кнопку «Добавить столбец» на боковой панели.

  3. Щелкните верхнюю ячейку в столбце принятия решения D1.

  4. Нажимайте пробел до значения T появляется.

    Нажатие на пробел переключает возможные значения F, T, и -. Эти символы также можно вводить непосредственно. При нажатии клавиши 1 устанавливается значение T, в то время как нажатие 0 устанавливает значение F. Нажим x устанавливает значение, равное -.

  5. Введите оставшиеся значения для столбцов решения:

Во время выполнения таблицы истинности тестирование принятия решения происходит в порядке слева направо. Порядок тестирования результатов отдельных состояний в рамках решения не определен. В таблицах истинности оцениваются условия для каждого решения в порядке сверху вниз (первое условие 1, затем условие 2 и т.д.). Поскольку эта реализация может быть изменена в будущем, не полагайтесь на конкретный порядок оценки.

Столбец решения по умолчанию

Последний столбец решения в ttable, D4, является решением по умолчанию для этой таблицы истинности. Решение по умолчанию охватывает любые решения, не проверенные в предыдущих столбцах решения. Создайте решение по умолчанию путем ввода - в каждую ячейку самого дальнего правого столбца решения. Эта запись представляет любой результат для условия, T или F. Столбец решения по умолчанию должен быть последним столбцом справа в таблице условий.

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

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

В поле Ввести решения таблицы истинности (Enter Truth Table Decisions) решения вводятся в таблицу истинности. Следующим шагом является ввод действий, которые необходимо выполнить для каждого решения в таблице действий. Позже эти действия присваиваются их решениям в строке Действия (Actions) таблицы условий.

Настройка таблицы действий

  1. Щелкните строку Таблица действий, которую необходимо добавить.

  2. Трижды нажмите кнопку «Добавить строку» на боковой панели.

  3. Запрограммируйте действия для таблицы истинности.

Действия программы таблицы истинности

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

  • Постоянные переменные

  • if ... else ... end управляющие потоки

  • for петля

Выполните следующие действия.

  1. Щелкните верхнюю ячейку в столбце Описание (Description) таблицы действий.

    В ячейке появляется мигающий текстовый курсор, который выделяется цветом.

  2. Введите следующее описание:

    Maintain a counter and a circular 
    vector of values of length 6.
    Every time this action is called, 
    output r takes the next value of 
    the vector.
    

    Описания действий необязательны, но отображаются в виде комментариев в созданном коде для таблицы истинности.

  3. Нажмите клавишу со стрелкой вправо, чтобы выбрать следующую ячейку справа в столбце «Действие».

  4. Введите следующий текст:

    A1:
    

    Действие начинается с необязательной метки, за которой следует двоеточие (:). Позже эти метки вводятся в строку Действия (Actions) таблицы условий, чтобы указать действие для каждого столбца решения. Как и метки условий, метки действий должны начинаться с алфавитного символа ([a-z][A-Z]), за которым следует любое количество буквенно-цифровых символов ([a-z][A-Z][0-9]) или подчеркивание (_).

  5. Нажмите Enter и введите следующий текст:

    persistent values counter;
    cycle = 6;
    
    coder.extrinsic('plot');
    
    if isempty(counter)
       % Initialize counter to be zero
       counter = 0;
    else
       % Otherwise, increment counter
       counter = counter + 1;
    end
    
    if isempty(values)
       % Values is a vector of 1 to cycle
       values = zeros(1, cycle);
       for i = 1:cycle
          values(i) = i;
       end
    
       % For debugging purposes, call the MATLAB
       % function "plot" to show values
       plot(values);
    end
    
    % Output r takes the next value in values vector
    r = values( mod(counter, cycle) + 1);
    

    В действиях таблицы истинности можно использовать данные, которые передаются функции таблицы истинности через ее аргументы и возвращаемое значение. Предыдущее действие задает возвращаемое значение r равно следующему значению вектора values. Можно также указать действия с данными, определенными для родительского объекта таблицы истинности, включая диаграмму. Действия таблицы истинности могут также транслировать или отправлять события, определенные для таблицы истинности или для родительского объекта, например, для самой диаграммы.

  6. Введите остальные действия в таблицу действий, как показано на рисунке:

    Если действие A1 выполняется во время моделирования, график values появится вектор:

Теперь вы готовы назначить действия для принятия решения.

Назначение действий таблицы истинности решениям

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

Правила назначения действий решениям

При назначении действий решениям в таблице истинности применяются следующие правила.

  • Действия для решений определяются путем ввода номера строки или метки в ячейке строки Действия столбца решения.

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

  • Необходимо указать хотя бы одно действие для каждого решения.

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

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

    Например, для столбца D1 решения можно указать A1,A2,A3 или 1;2;3 для выполнения первых трех действий, когда решение D1 является верным.

  • Можно смешивать номера строк и спецификаторы действий меток взаимозаменяемо в любом порядке.

    В следующем примере используются спецификаторы действий строк и меток.

  • Можно указать одно и то же действие для нескольких решений, как показано на рисунке:

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

Назначение действий решениям

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

  1. Щелкните нижнюю ячейку столбца D1 принятия решения, первую ячейку строки Действия таблицы условий.

  2. Введите спецификатор действия A1 для столбца принятия решения D1.

    Когда D1 истинно, действие A1 в таблице действий выполняется.

  3. Введите спецификаторы действий для остальных столбцов решения:

Теперь вы готовы выполнить последний шаг в программировании таблицы истинности.

Добавление начальных и окончательных действий

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

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

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

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

  2. На вкладке Моделирование (Modeling) выберите Добавить строку (Append Row).

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

  3. Щелкните и перетащите нижнюю границу таблицы истинности, чтобы показать все шесть строк таблицы действий:

  4. Добавить исходное действие в строку 1 следующим образом:

    ОписаниеДействие

    Начальное действие:

    Выводить сообщение

    INIT:

    coder.extrinsic('disp');

    disp('truth table ttable entered');

  5. Добавить конечное действие в строку 6 следующим образом:

    ОписаниеДействие

    Окончательное действие:

    Выводить сообщение

    FINAL:

    coder.extrinsic('disp');

    disp('truth table ttable exited');

Хотя начальные и окончательные действия для предыдущего примера таблицы истинности отображаются в первой и последней строках таблицы действий, эти действия можно ввести в любую строку. Можно также назначить начальные и окончательные действия решениям с помощью спецификатора действий. INIT или FINAL в строке Действия таблицы условий.

Создание содержимого для таблиц истинности

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

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