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

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

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

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

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

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

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

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

  2. Под разделом Properties выберите C или MATLAB как Язык Действия.

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

Условиями является начальная точка для определения логического поведения в таблице истинности. Вы открываете таблицу истинности 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. Нажмите клавишу курсора "вниз", чтобы перейти к следующей ячейке вниз в столбце D1.

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

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

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

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

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

В предыдущем примере столбец решения по умолчанию, D4, задает эти решения:

Условие

Решение 4

Решение 5

Решение 6

Решение 7

Решение 8

x = = 1

F

T

F

T

T

y = = 1

F

F

T

T

T

z = = 1

F

T

T

F

T

Совет

Столбец решения по умолчанию должен быть последним столбцом справа в Condition Table.

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

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

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

В этом разделе описывается программировать действия таблицы истинности с этими темами:

Настройте таблицу действия

  1. Кликните по строке Action Table, который вы хотите добавить.

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

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

Действия программы Используя выражения C

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

  1. Кликните по главной ячейке в Столбце описания Action Table.

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

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

    set r to 1
    

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

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

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

    A1:
    

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

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

    r=1;
    

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

    Совет

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

  6. Начните остающиеся действия в Action Table, как показано:

Теперь вы готовы присвоить действия решениям, как описано в Действиях Таблицы истинности Присвоения к Решениям.

Действия программы Используя выражения MATLAB

Если вы выбрали 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. Можно также задать действия с данными, заданными для родительского объекта таблицы истинности, включая график. Действия таблицы истинности могут также широковещательно передать или отправить события, которые заданы для таблицы истинности, или для родительского элемента, такого как сам график.

    Примечание

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

  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 можно следующим образом:

    Тип таблицы истинностиОписаниеДействие
    C

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

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

    INIT:

    ml.disp('truth table ttable entered');

    MATLAB

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

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

    INIT:

    coder.extrinsic('disp');

    disp('truth table ttable entered');

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

    Тип таблицы истинностиОписаниеДействие
    C

    Окончательное решение:

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

    FINAL:

    ml.disp('truth table ttable exited');

    MATLAB

    Окончательное решение:

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

    FINAL:

    coder.extrinsic('disp');

    disp('truth table ttable exited');

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