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

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

Таблицы истинности поддерживаются только в моделях 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), и - (TRUE или FALSE). Во Вводят Условия Таблицы истинности, вы ввели условия для таблицы истинности ttable. Продолжите путем ввода значений в столбцы решения:

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

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

  3. Кликните по главной ячейке в столбце решения D1.

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

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

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

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

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

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

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

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

Во Вводят Решения Таблицы истинности, вы ввели решения в таблицу истинности. Следующий шаг должен начать действия, вы хотите произойти для каждого решения в 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 вектор появляется:

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

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

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

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

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

  • Вы задаете действия для решений путем ввода номера строки или метки в ячейке строки 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 генерирует содержимое для вашей таблицы истинности. Чтобы видеть сгенерированное содержимое, нажмите кнопку View Generated Content. Для таблиц истинности, которые используют C в качестве языка действия, содержимое сгенерировано как графическая функция. Для таблиц истинности, которые используют MATLAB в качестве языка действия, содержимое сгенерировано как код MATLAB. Для получения дополнительной информации, вид на море Сгенерированное Содержимое для Таблиц истинности Stateflow.

Похожие темы