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

Программное обеспечение Stateflow генерирует графическую функцию для предыдущей таблицы истинности. Верхняя половина блок-схемы выглядит следующим образом:

Верхняя половина блок-схемы выполняется следующим образом:
Выполняет начальные действия
Оценивает условия и сохраняет результаты во временных переменных данных
Временные данные для хранения условий основаны на метках, вводимых для условий. Если метки не указаны, появляются временные переменные данных.
Нижняя половина блок-схемы выглядит следующим образом:

В нижней половине блок-схемы сохраненные значения условий определяют, какое решение является верным и какое действие необходимо выполнить. Каждое решение появляется как вилка от соединительного соединения с одним из двух возможных путей:
Переходный сегмент с решением, за которым следует сегмент с последующим действием
Действие появляется как действие условия, которое приводит к FINAL действие и завершение блок-схемы.
Переходный сегмент, который переходит к следующей развилке для оценки следующего решения
Этот сегмент перехода не имеет условий или действий.
Эта реализация продолжается от первого решения до остальных решений в порядке слева направо. Когда происходит совпадение решений, действие для этого решения выполняется как действие условия его сегмента перехода. После выполнения действия блок-схема выполняет окончательное действие для таблицы истинности и завершается. Поэтому только одно действие является результатом вызова графической функции таблицы истинности. Это также означает, что зависимости данных между различными решениями невозможны.
Программа Stateflow генерирует содержимое таблиц истинности MATLAB в виде кода MATLAB, который представляет каждое действие как вложенную функцию в основной функции таблицы истинности.
Вложенные функции обладают следующими преимуществами:
Вложенные функции независимы друг от друга. Переменные являются локальными для каждой функции и не подвержены конфликтам именования.
Вложенные функции могут получать доступ ко всем данным из основной функции таблицы истинности.
Созданное содержимое появляется в редакторе функций, который предоставляет инструменты для моделирования и отладки.
Ниже приведено сгенерированное содержимое для таблицы истинности MATLAB, описанной в разделе Действия программы таблицы истинности:
Функция основной таблицы истинности
function r = ttable(x,y,z)
% Initialize condition vars to logical scalar
XEQ1 = false;
YEQ1 = false;
ZEQ1 = false;
% Condition #1, "XEQ1"
% x is equal to 1
XEQ1 = logical(x == 1);
% Condition #2, "YEQ1"
% y is equal to 1
YEQ1 = logical(y == 1);
% Condition #3, "ZEQ1"
% z is equal to 1
ZEQ1 = logical(z == 1);
if (XEQ1 && ~YEQ1 && ~ZEQ1) % D1
A1();
elseif (~XEQ1 && YEQ1 && ~ZEQ1) % D2
A2();
elseif (~XEQ1 && ~YEQ1 && ZEQ1) % D3
A3();
else % Default
A4();
endДействие A1
function A1()
% Action #1, "A1"
% Maintain a counter and a circular vector of length 6.
% Every time this action is called,
% output t takes the next value of the vector.
persistent values counter;
cycle = 6;
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);Действия A2, A3, и A4
function A2() % Action #2, "A2" % set r to 2 r=2; %================================== function A3() % Action #3, "A3" % set r to 3 r=3; %================================== function A4() % Action #4, "A4" % set r to 4 r=4;