Программируйте таблицу истинности

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

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

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

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

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

По умолчанию таблица истинности содержит Condition Table и Action Table с одной строкой. Этот Condition Table содержит один столбец, D1 и одну строку действий.

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

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

  1. Откройте Property Inspector. На вкладке Modeling, под Design Data, выберите Property Inspector.

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

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

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

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

Условия вводятся в Condition столбце Condition Table. Для каждого введенного условия можно ввести необязательное описание в столбце Description. Чтобы ввести условия для таблицы истинности ttable:

  1. Щелкните строку на Condition Table, которую вы хотите добавить.

  2. Дважды нажмите кнопку Append Row на боковой панели.

    Таблица истинности добавляет две строки к нижней части Condition Table.

  3. Щелкните и перетащите панель, разделяющую Condition Table и Action Table панели вниз, чтобы увеличить область Condition Table.

  4. В Condition Table щелкните верхнюю камеру столбца Description.

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

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

    x is equal to 1

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

  6. Щелкните следующую камеру справа, в Condition столбце..

  7. В первой камере столбца Condition введите:

    XEQ1:

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

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

    x == 1

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

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

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

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

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

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

  2. Нажмите кнопку Append Column на боковой панели три раза.

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

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

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

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

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

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

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

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

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

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

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

  1. Щелкните строку Action Table, которую вы хотите добавить.

  2. Нажмите кнопку Append Row на боковой панели три раза.

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

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

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

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

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

  • for цикл

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

  1. Щелкните верхнюю камеру в Description столбце Action Table.

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

  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. Нажмите клавишу со стрелой вправо, чтобы выбрать следующую камеру справа в Action столбце.

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

    A1:
    

    Вы начинаете действие с необязательной метки, за которой следует двоеточие (:). Позже эти метки вводятся в Actions строку Condition Table, чтобы задать действие для каждого столбца решения. Как и метки условий, метки действий должны начинаться с буквенного символа ([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. Введите оставшиеся действия в Action Table, как показано на рисунке:

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

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

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

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

Правила присвоения действий решениям

Следующие правила применяются при присвоении действий решениям в таблице истинности:

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

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

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

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

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

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

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

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

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

  • Спецификаторы действий по номеру строк в Actions строке Condition Table автоматически корректируются с учетом изменений в порядке строк Action Table.

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

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

  1. Щелкните нижнюю камеру в столбце D1 принятия решений, первой камере Actions строки Condition Table.

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

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

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

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

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

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

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

  1. В таблице истинности щелкните правой кнопкой мыши по строке 1 Action Table и выберите Insert Row.

    В верхней части Action Table появится пустая строка.

  2. На вкладке Modeling выберите Append Row.

    В нижней части Action Table появится пустая строка.

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

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

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

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

    Отобразить сообщение

    INIT:

    coder.extrinsic('disp');

    disp('truth table ttable entered');

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

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

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

    Отобразить сообщение

    FINAL:

    coder.extrinsic('disp');

    disp('truth table ttable exited');

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

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

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

Похожие темы