exponenta event banner

Определение поведения диаграммы с помощью действий

Действия состояния и перехода - это инструкции, которые записываются в состоянии или рядом с переходом, чтобы определить поведение диаграммы Stateflow ® во время моделирования. Дополнительные сведения см. в разделе модели конечных автоматов.

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

Действия на этой диаграмме определяют конечный автомат, который эмпирически проверяет один экземпляр гипотезы Коллатца. Для заданного числового ввода $u$диаграмма вычисляет последовательность града$n_0 = u,$... $n_1,$$n_2,$$n_3,$путем итерации этого правила:

  • Если$n_i$ даже, то.$n_{i+1} = n_i / 2$

  • Если$n_i$ странно, то.$n_{i+1} = 3n_i+1$

Гипотеза Коллаца утверждает, что каждое положительное целое число имеет последовательность градов, которая в конечном итоге достигает единицы.

Диаграмма состоит из трёх состояний. В начале моделирования Init состояние инициализирует данные диаграммы:

  • Локальные данные n устанавливается на значение входа u.

  • Локальные данные n2 устанавливается на остаток, когда n делится на два.

  • Выходные данные y имеет значение false.

В зависимости от четности входного сигнала диаграмма переходит к одному из следующих значений: Even или Odd состояние. По мере смещения активности государства между Even и Odd состояние, диаграмма вычисляет числа в последовательности градов. Когда последовательность достигает значения единицы, выходные данные y становится true и запускает блок Stop Simulation (Simulink) в модели Simulink ®.

Типы действий состояния

Действия состояния определяют, что делает диаграмма Stateflow при активном состоянии. Наиболее распространенными типами действий состояния являются entry, during, и exit действия.

Тип действия состоянияСокращениеОписание
entryenДействие происходит на временном шаге, когда состояние становится активным.
duringduДействие происходит на временном шаге, когда состояние уже активно и диаграмма не переходит из состояния.
exitexДействие происходит на временном шаге, когда диаграмма выходит из состояния.

Тип действия состояния можно указать по его полному ключевому слову (entry, during, exit) или по его аббревиатуре (en, du, ex). Можно также комбинировать типы действий состояния с помощью запятых. Например, действие с комбинированным типом entry,during происходит на временном шаге, когда состояние становится активным, и на каждом последующем временном шаге, в то время как состояние остается активным.

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

ГосударствоДействиеРезультат
Init

entry:
 n2 = rem(n,2);
 y = false;

Когда Init становится активным в начале моделирования, определяет четность n и наборы y кому false.

exit:
 y = isequal(n,1);

При переходе из Init после одного временного шага определяет, n равно единице.
Even

entry,during:
 n = n/2;
 n2 = rem(n,2);

Вычисляет следующий номер последовательности градов (n / 2) и обновляет его четность на:

  • Временной шаг, когда Even сначала становится активным.

  • Каждый последующий шаг времени, который Even активен.

Odd

entry,during:
 n = 3*(n-y)+1;
 n2 = rem(n,2);

Вычисляет следующий номер последовательности градов (3n+ 1) и обновляет его четность на:

  • Временной шаг, когда Odd сначала становится активным.

  • Каждый последующий шаг времени, который Odd активен.

На протяжении большей части моделирования, y равно нулю. На последнем шаге времени, когда n = 1, y значение равно единице, поэтому это действие не изменяется n или n2 перед остановкой моделирования.

Типы действий перехода

Действия перехода определяют, что делает диаграмма Stateflow, когда переход приводит к выходу из активного состояния. Наиболее распространенными типами действий перехода являются условия и условные действия. Чтобы указать действия перехода, используйте метку со следующим синтаксисом:

[condition]{conditional_action}

condition - логическое выражение, определяющее, происходит ли переход. Если условие не указано, предполагается, что подразумеваемое условие имеет значение true.

conditional_action - это команда, которая выполняется, когда условие защиты перехода истинно. Условное действие происходит после условия, но до любого exit или entry действия государства.

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

ПереходДействиеТип действияРезультат
Переход по умолчанию в Init

n = u

Условное действиеВ начале моделирования присваивает входное значение u к локальным данным n.
Переход от Init кому Even

n2 == 0

СостояниеКогда n является четным, переход происходит. Число 1 в источнике этого перехода указывает, что он оценивается перед переходом в Odd.
Переход от Init кому Odd НичегоКогда n нечетно, происходит переход. Число 2 в источнике этого перехода указывает, что он оценивается после перехода в Even.
Переход от Odd кому Even

n2 == 0

СостояниеКогда n является четным, переход происходит.
Переход от Even кому Odd

n2 ~= 0

СостояниеКогда n нечетно, происходит переход.

y = isequal(n,1)

Условное действиеКогда происходит переход, определяет, n равно единице.

Проверка поведения диаграммы

Предположим, что требуется вычислить последовательность градов, начиная со значения 9.

  1. В диалоговом окне Параметры конфигурации модели (Model Configuration Parameters) в разделе Решатель (Solver) выберите следующие опции.

    • Время начала: 0.0

    • Время остановки: inf

    • Тип: Fixed-step

    • Фиксированный размер шага: 1

  2. На панели «Символы» выберите локальные данные n. В инспекторе свойств в разделе «Ведение журнала» выберите «Регистрировать данные сигнала».

  3. В блоке «Константа» введите значение u = 9.

  4. На вкладке Моделирование (Simulation) щелкните Выполнить (Run).

    Диаграмма отвечает следующими действиями:

    • В момент времени t = 0 переход по умолчанию в Init происходит.

      • Действие перехода устанавливает значение n на 9.

      • Init состояние становится активным.

      • entry действия в Init набор n2 в 1 и y кому false.

    • В момент времени t = 1 условие n2 == 0 имеет значение false, поэтому диаграмма готовится к переходу к Odd.

      • exit действие в Init наборы y кому false.

      • Init состояние становится неактивным.

      • Odd состояние становится активным.

      • entry действия в Odd набор n до 28 и n2 в 0.

    • В момент времени t = 2 условие n2 == 0 true, поэтому диаграмма готовится к переходу к Even.

      • Odd состояние становится неактивным.

      • Even состояние становится активным.

      • entry действия в Even набор n до 14 и n2 в 0.

    • В момент времени t = 3 условие n2 ~= 0 имеет значение false, поэтому диаграмма не принимает переход.

      • Even состояние остается активным.

      • during действия в Even набор n до 7 и n2 на 1.

    • В момент времени t = 4 условие n2 ~= 0 true, поэтому диаграмма готовится к переходу к Odd.

      • Наборы действий перехода y кому false.

      • Even состояние становится неактивным.

      • Odd состояние становится активным.

      • entry действия в Odd набор n до 22 и n2 в 0.

    • Диаграмма продолжает вычислять последовательность градов до тех пор, пока она не достигнет значения n = 1 в момент времени t = 19.

    • В момент времени t = 20 диаграмма готовится к переходу от Even кому Odd.

      • До Even состояние становится неактивным, набор действий перехода y кому true.

      • Odd состояние становится активным.

      • entry действия в Odd не изменять n или n2.

      • Блок моделирования останова, подключенный к выходному сигналу y останавливает моделирование.

  5. На вкладке Моделирование (Simulation) в разделе Результаты проверки (Review Results) щелкните Инспектор данных (Data Inspector).

  6. Для просмотра значений последовательности градов в инспекторе данных моделирования выберите зарегистрированный сигнал. n.

Simulation Data Inspector showing the output of the chart.

См. также

(Simulink)

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