Выполнение диаграммы управления при помощи временной логики

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

Правила для Использования временных логических операторов

  • Временные логические операторы могут появиться в только:

    • Акты государственной власти

    • Переходы, которые происходят из состояний

    • Сегменты перехода, которые происходят из соединений, когда весь путь к переходу соединяет два состояния

    Примечание

    Это ограничение означает, что вы не можете использовать временные логические операторы в переходах по умолчанию или переходах блок-схемы.

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

  • Используйте обозначение события, чтобы выразить основанную на событии временную логику в актах государственной власти. Смотрите Обозначение для Основанной на событии Временной Логики.

  • Можно использовать любое явное или неявное событие в качестве основного события для темпорального оператора. Основное событие является повторяющимся событием, с которым работает темпоральный оператор.

  • Для графика без входных событий можно использовать tick событие, чтобы обозначить неявное событие графика пробуждение.

  • Используйте одно из ключевых слов sec , msec, или usec задать время симуляции в секундах, миллисекундах, или микросекунды, которые протекли начиная с активации состояния. Эти ключевые слова допустимы только в актах государственной власти и в переходах, которые происходят из состояний.

    Используйте абсолютно-разовую временную логику вместо неявного tick событие по этим причинам:

    • Задержите выражения, что абсолютно-разовая временная логика использования независима от шага расчета модели. Однако tick событие зависит от шага расчета.

    • Абсолютно-разовая временная логика работает в графиках, которые имеют входные события вызова функции. tick событие не работает в графиках с входными параметрами вызова функции.

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

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

ОператорСинтаксисОписание
after

after(n,E)

E основное событие для after оператор и n также:

  • Положительное целое число

  • Выражение, которое оценивает к положительному целочисленному значению

Возвращает true если основное событие E произошел, по крайней мере, n времена начиная с активации ассоциированной страны. В противном случае оператор возвращает false.

В графике без входных событий, after(n,tick) возвращает true если график разбудил n времена или больше начиная с активации ассоциированной страны.

Сбрасывает счетчик для E к 0 каждым разам ассоциированная страна повторно активирует.

в

at(n,E)

E основное событие для at оператор и n также:

  • Положительное целое число.

  • Выражение, которое оценивает к положительному целочисленному значению.

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

В графике без входных событий, at(n,tick) возвращает true если график проснулся для nвремя th начиная с активации ассоциированной страны.

Сбрасывает счетчик для E к 0 каждым разам ассоциированная страна повторно активирует.

прежде

before(n,E)

E основное событие для before оператор и n также:

  • Положительное целое число.

  • Выражение, которое оценивает к положительному целочисленному значению.

Возвращает true если основное событие E произошел меньше, чем n времена начиная с активации ассоциированной страны. В противном случае оператор возвращает false.

В графике без входных событий, before(n,tick) возвращает true если график разбудил меньше, чем n времена начиная с активации ассоциированной страны.

Сбрасывает счетчик для E к 0 каждым разам ассоциированная страна повторно активирует.

каждый

every(n,E)

E основное событие для every оператор и n также:

  • Положительное целое число.

  • Выражение, которое оценивает к положительному целочисленному значению.

Возвращает true в каждом nвхождение th основного события E начиная с активации ассоциированной страны. В противном случае оператор возвращает false.

В графике без входных событий, every(n,tick) возвращает true если график разбудил целочисленное кратное n времена начиная с активации ассоциированной страны.

Сбрасывает счетчик для E к 0 каждым разам ассоциированная страна повторно активирует.

temporalCount

temporalCount(E)

E основное событие для temporalCount оператор.

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

В графике без входных событий, temporalCount(tick) возвращает число раз, которое график разбудил начиная с активации ассоциированной страны.

Сбрасывает счетчик для E к 0 каждым разам ассоциированная страна повторно активирует.

Можно использовать кавычки, чтобы заключить ключевое слово 'tick'. Например, after(5,'tick') эквивалентно after(5,tick).

Примечание

Временные логические операторы сравнивают порог n к внутреннему счетчику целочисленного типа. Если n номер фиксированной точки, заданный или при помощи наклона, который не является целочисленной степенью двойки или ненулевым смещением, затем сравнение может дать к неожиданным результатам из-за округления. Для получения дополнительной информации смотрите Реляционные операции для Данных Фиксированной точки.

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

Эти примеры иллюстрируют использование основанной на событии временной логики в актах государственной власти и переходах.

ОператорИспользованиеПримерОписание

after

Акт государственной власти (on after)

on after(5,CLK): status('on');

Сообщение о состоянии появляется во время каждого CLK цикл, запуская 5 тактов после активации состояния.

after

Переход

ROTATE[after(10,CLK)]

Переход из ассоциированной страны происходит только на широковещательной передаче ROTATE событие, но только, чем 10 CLK циклы после активации состояния.

before

Акт государственной власти (on before)

on before(MAX,CLK): temp++;

temp переменная постепенно увеличивается однажды на CLK цикл до состояния достигает MAX предел.

before

Переход

ROTATE[before(10,CLK)]

Переход из ассоциированной страны происходит только на широковещательной передаче ROTATE событие, но не позднее, чем 10 CLK циклы после активации состояния.

at

Акт государственной власти (on at)

on at(10,CLK): status('on');

Сообщение о состоянии появляется точно в 10 CLK циклы после активации состояния.

at

Переход

ROTATE[at(10,CLK)]

Переход из ассоциированной страны происходит только на широковещательной передаче ROTATE событие, точно в 10 CLK циклы после активации состояния.

every

Акт государственной власти (on every)

on every(5,CLK): status('on');

Сообщение о состоянии появляется каждые 5 CLK циклы после активации состояния.

temporalCount

Акт государственной власти (during)

du: y = mm[temporalCount(tick)];

Это действие считает и возвращает целое число меток деления, которые протекли начиная с активации состояния. Затем действие присваивает переменной y значение mm массив, индекс которого является значением что temporalCount оператор возвращается.

Обозначение для основанной на событии временной логики

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

Обозначение события

Используйте обозначение события, чтобы задать акт государственной власти или условие перехода, которое зависит только от основного события.

Обозначение события следует за этим синтаксисом:

tlo(n,E)[C]

где

  • tlo булев временный логический оператор (after, before, at, или every)

  • n количество вхождения оператора

  • E основное событие оператора

  • C дополнительное выражение условия

Условное обозначение

Используйте условное обозначение, чтобы задать условие перехода, которое зависит от основных и неосновных событий.

Условное обозначение следует за этим синтаксисом:

E1[tlo(n,E2) && C]

где

  • E1 любое неосновное событие

  • tlo булев временный логический оператор (after, before, at, или every)

  • n количество вхождения оператора

  • E2 основное событие оператора

  • C дополнительное выражение условия

Примеры события и условного обозначения

ОбозначениеИспользованиеПримерОписание

Событие

Акт государственной власти (on after)

on after(5,CLK): temp = WARM;

temp переменная становится WARM 5 CLK циклы после активации состояния.

Событие

Переход

after(10,CLK)[temp == COLD]

Переход из ассоциированной страны происходит если temp переменной является COLD, но только, чем 10 CLK циклы после активации состояния.

Условное выражение

Переход

ON[after(5,CLK) && temp == COLD]

Переход из ассоциированной страны происходит только на широковещательной передаче ON событие, но только, чем 5 CLK циклы после активации состояния и только если temp переменной является COLD.

Примечание

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

Операторы для абсолютно-разовой временной логики

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

ОператорСинтаксисОписание
after

after(n,sec)

after(n,msec)

after(n,usec)

n любое положительное число или выражение. sec, msec, и usec ключевые слова, которые обозначают, что время симуляции протекло начиная с активации ассоциированной страны.

Возвращает true если n модули времени симуляции протекли начиная с активации ассоциированной страны. В противном случае оператор возвращает false. Задайте время симуляции в секундах (sec), миллисекунды (msec), или микросекунды (usec).

Сбрасывает счетчик для sec, msec, и usec к 0 каждым разам ассоциированная страна повторно активирует.

прежде

before(n,sec)

before(n,msec)

before(n,usec)

n любое положительное число или выражение. sec, msec, и usec ключевые слова, которые обозначают, что время симуляции протекло начиная с активации ассоциированной страны.

Возвращает true если меньше, чем n модули времени симуляции протекли начиная с активации ассоциированной страны. В противном случае оператор возвращает false. Задайте время симуляции в секундах (sec), миллисекунды (msec), или микросекунды (usec).

Сбрасывает счетчик для sec, msec, и usec к 0 каждым разам ассоциированная страна повторно активирует.

каждый

every(n,sec)

every(n,msec)

every(n,usec)

n любое положительное число или выражение. sec, msec, и usec ключевые слова, которые обозначают, что время симуляции протекло начиная с активации ассоциированной страны.

Возвращает true каждый n модули времени симуляции начиная с активации ассоциированной страны. В противном случае оператор возвращает false. Задайте время симуляции в секундах (sec), миллисекунды (msec), или микросекунды (usec).

Сбрасывает счетчик для sec, msec, и usec к 0 каждым разам ассоциированная страна повторно активирует.

Использование every когда абсолютно-разовый временный логический оператор поддерживается только в автономных графиках для выполнения, когда MATLAB® возражает.

temporalCount

temporalCount(sec)

temporalCount(msec)

temporalCount(usec)

sec, msec, и usec ключевые слова, которые обозначают, что время симуляции протекло начиная с активации ассоциированной страны.

Количества и возвращают номер заданных секунд (sec), миллисекунды (msec), или микросекунды (usec) из времени симуляции, которые протекли начиная с активации ассоциированной страны.

Сбрасывает счетчик для sec, msec и usec к 0 каждым разам ассоциированная страна повторно активирует.

прошедший

elapsed(sec)

Эквивалентный temporalCount(sec). Возвращает время симуляции в секундах (sec) это протекло начиная с активации ассоциированной страны.

Сбрасывает счетчик для sec к 0 каждым разам ассоциированная страна повторно активирует.

количество

count(C)

Возвращает количество меток деления после условного выражения, C, становится true. count оператор сбрасывается, если условное выражение становится false. Если count оператор используется в состоянии, он сбрасывается, когда состояние, которое содержит его, вводится. Если count оператор используется на переходе, он сбрасывается, когда исходное состояние для того перехода вводится.

В модели Simulink®, значении для count зависит от размера шага. Изменение решателя или размера шага для вашей модели влияет на результат для графиков Stateflow®, которые включают count оператор.

длительность

duration(C)

Возвращает номер секунд после условного выражения, C, становится true. duration оператор сбрасывается, если условное выражение становится false. Если duration оператор используется в состоянии, он сбрасывается, когда состояние, которое содержит его, вводится. Если duration оператор используется на переходе, он сбрасывается, когда исходное состояние для того перехода вводится.

Можно использовать кавычки, чтобы заключить ключевые слова 'sec', 'msec', и 'usec'. Например, after(5,'sec') эквивалентно after(5,sec).

Примечание

Временные логические операторы сравнивают порог n к внутреннему счетчику целочисленного типа. Если n номер фиксированной точки, заданный или при помощи наклона, который не является целочисленной степенью двойки или ненулевым смещением, затем сравнение может дать к неожиданным результатам из-за округления. Для получения дополнительной информации смотрите Реляционные операции для Данных Фиксированной точки.

Примеры абсолютно-разовой временной логики

Эти примеры иллюстрируют абсолютно-разовую временную логику в актах государственной власти и переходах.

ОператорИспользованиеПримерОписание

after

Акт государственной власти (on after)

on after(12.3,sec): temp = LOW;

После 12,3 секунд времени симуляции начиная с активации состояния, temp переменная становится LOW .

after

Переход

after(8,msec)

После того, как 8 миллисекунд времени симуляции передали начиная с активации состояния происходит переход из ассоциированной страны.

after

Переход

after(5,usec)

После того, как 5 микросекунд времени симуляции передали начиная с активации состояния происходит переход из ассоциированной страны.

before

Переход

[temp > 75 && before(12.34,sec)]

Если переменная temp превышает 75 и меньше чем 12,34 секунд, протекли начиная с активации состояния происходит переход из ассоциированной страны.

temporalCount

Акт государственной власти (exit)

exit: y = temporalCount(sec);

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

Пример определения задержек

Этот график непрерывного времени задает две абсолютных задержки переходов.

Стройте диаграмму выполнение состоит из этих шагов:

  • Когда график просыпается, Input состояния активируется сначала.

  • После 5,33 миллисекунд времени симуляции, перехода от Input к Output происходит.

  • Input состояния деактивируется, и затем Output состояния активируется.

  • После 10,5 секунд времени симуляции, перехода от Output к Input происходит.

  • Output состояния деактивируется, и затем Input состояния активируется.

  • Шаги 2 - 5 повторяются, пока симуляция не заканчивается.

Если график имеет дискретный шаг расчета, любое действие в графике происходит в целочисленных множителях этого шага расчета. Например, предположите, что вы изменяете параметры конфигурации так, чтобы решатель Simulink® использовал фиксированный шаг размера 0,1 секунды. Затем первый переход от Input состояния утверждать Output происходит в t = 0,1 секунды. Это поведение применяется, потому что решатель не будит график в точно t = 5,33 миллисекунд. Вместо этого решатель будит график в целочисленных множителях 0,1 секунд, таких как t = 0,0 и 0,1 секунды.

Пример обнаружения прошедшего времени

В этой модели блок Step предоставляет модульный вход шага графику.

График определяет когда вход u равняется 1:

  • Если вход равняется 1 прежде t = 2 секунды, переход происходит от Start к Fast.

  • Если вход равняется 1 между t = 2 и t = 5 секунд, переход происходит от Start к Good.

  • Если вход равняется 1 после t = 5 секунд, переход происходит от Start к Slow.

Пример абсолютно-разовой временной логики в Enabled подсистеме

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

Эта модель имеет активированную подсистему со Штатами при включении набора параметра к held.

Подсистема содержит график, который использует after оператор.

Блок Signal Builder предоставляет входному сигналу эти характеристики:

  • Сигнал включает подсистему в t = 0.

  • Сигнал отключает подсистему в t = 2.

  • Сигнал повторно включает подсистему в t = 6.

Этот график показывает, что общее время протекло в активированном состоянии (любой A или B).

Когда входной сигнал включает подсистему во время t = 0, A состояния становится активным, или включил. В то время как состояние активно, время протекло увеличения. Однако, когда подсистема отключена в t = 2, график засыпает и A состояния становится неактивным.

Для 2 <t <6, время, истекшее в активированном состоянии, остается замороженным в 2 секунды, потому что никакое состояние не активно. Когда график просыпается в t = 6, A состояния становится активным снова, и истекшее время начинает увеличиваться. Переход от A состояния утверждать B зависит от времени, истекшего в то время как A состояния включен, не на времени симуляции. Поэтому A состояния остается активен до t = 9, так, чтобы время протекло в тот общие количества состояния 5 секунд.

Когда переход от A к B происходит в t = 9, выходное значение y изменения от 0 до 1.

Это поведение модели применяется только к подсистемам, где вы устанавливаете Разрешать состояния параметров блоков при включении к held. Если вы устанавливаете параметр на reset, график повторно инициализирует полностью, когда подсистема повторно включена. Другими словами, переходы по умолчанию выполняются и любой временный логический сброс счетчиков к 0.

Они семантика также применяются к before оператор.

Лучшые практики для абсолютно-разовой временной логики

Используйте after Оператор, чтобы заменить at Оператор

Если вы используете at оператор с абсолютно-разовой временной логикой, сообщение об ошибке появляется, когда вы пытаетесь симулировать свою модель. Используйте after оператор вместо этого.

Предположим, что вы хотите задать задержку с помощью перехода at(5.33, sec).

Измените переход к after(5.33, sec), как показано в этом графике.

Используйте внешний переход самоцикла с after Оператор, чтобы заменить every Оператор

В модели Stateflow, если вы используете every оператор с абсолютно-разовой временной логикой, сообщение об ошибке появляется, когда вы пытаетесь симулировать свою модель. Используйте внешний переход самоцикла с after оператор вместо этого.

Предположим, что вы хотите распечатать сообщение о состоянии для активного состояния каждые 2.5 секунды во время выполнения графика, как показано в акте государственной власти Check_status.

Замените акт государственной власти на внешний переход самоцикла, как показано в этом графике.

Также добавьте соединение истории в состоянии так, чтобы график помнил настройки состояния до каждого перехода самоцикла. Смотрите Действие состояния Записи при помощи Соединений Истории.

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

Код сгенерировал для дискретных графиков, которые не являются в целочисленных счетчиках использования инициированной или активированной подсистемы, чтобы отследить время вместо Simulink, обеспеченного время. Это допускает более эффективную генерацию кода в терминах издержек и памяти, а также разрешающий этот код для использования в программном обеспечении в цикле (SIL) и процессоре в цикле (PIL) режимы симуляции. Для получения дополнительной информации см. SIL и PIL симуляции (Embedded Coder).

Смотрите также

| | | | | | |

Похожие темы