Временная логика управляет выполнением графика с точки зрения времени. В актах государственной власти и переходах, можно использовать два типа временной логики: основанный на событии и абсолютно-разовый. Основанная на событии временная логика отслеживает повторяющееся событие. Абсолютно-разовая временная логика задает периоды времени на основе времени симуляции вашего графика. Чтобы работать с этими повторяющимися событиями или временем симуляции, вы используете названные временные логические операторы встроенных функций.
Временные логические операторы могут появиться в только:
Акты государственной власти
Переходы, которые происходят из состояний
Сегменты перехода, которые происходят из соединений, когда весь путь к переходу соединяет два состояния
Это ограничение означает, что вы не можете использовать временные логические операторы в переходах по умолчанию или переходах блок-схемы.
Каждый временный логический оператор имеет ассоциированную страну, которая является состоянием, в котором появляется действие или из которого происходит переход.
Используйте обозначение события, чтобы выразить основанную на событии временную логику в актах государственной власти. Смотрите Обозначение для Основанной на событии Временной Логики.
Можно использовать любое явное или неявное событие в качестве основного события для темпорального оператора. Основное событие является повторяющимся событием, с которым работает темпоральный оператор.
Для графика без входных событий можно использовать событие tick
или wakeup
, чтобы обозначить неявное событие графика пробуждение.
Используйте одно из ключевых слов sec
, msec
или usec
, чтобы задать время симуляции в секундах, миллисекундах, или микросекунды, которые протекли начиная с активации состояния. Эти ключевые слова допустимы только в актах государственной власти и в переходах, которые происходят из состояний.
Используйте абсолютно-разовую временную логику вместо неявного события tick
по этим причинам:
Задержите выражения, что абсолютно-разовая временная логика использования независима от шага расчета модели. Однако событие tick
зависит от шага расчета.
Абсолютно-разовая временная логика работает в графиках, которые имеют входные события вызова функции. Событие tick
не работает в графиках с входными параметрами вызова функции.
Для основанной на событии временной логики используйте операторы, описанные в этой таблице.
Оператор | Синтаксис | Описание |
---|---|---|
after |
| Возвращает В графике без входных событий, Сбрасывает счетчик для |
в |
| Возвращает В графике без входных событий, Сбрасывает счетчик для |
прежде |
| Возвращает В графике без входных событий, Сбрасывает счетчик для |
каждый |
| Возвращает В графике без входных событий, Сбрасывает счетчик для |
temporalCount |
| Шаг 1 и возвращает положительное целочисленное значение для каждого вхождения основного события В графике без входных событий, Сбрасывает счетчик для |
Можно использовать кавычки, чтобы заключить ключевые слова 'tick'
и 'wakeup'
. Например, after(5,'tick')
эквивалентен after(5,tick)
.
Временные логические операторы сравнивают порог n
с внутренним счетчиком целочисленного типа. Если n
является номером фиксированной точки, заданным или при помощи наклона, который не является целочисленной степенью двойки или ненулевым смещением, то сравнение может привести к неожиданным результатам из-за округления. Для получения дополнительной информации смотрите Реляционные операции для Данных Фиксированной точки.
Эти примеры иллюстрируют использование основанной на событии временной логики в актах государственной власти и переходах.
Оператор | Использование | Пример | Описание |
---|---|---|---|
| Акт государственной власти ( |
| Сообщение о состоянии появляется во время каждого цикла |
| Переход |
| Переход из ассоциированной страны происходит только на широковещательной передаче события |
| Акт государственной власти ( |
| Шаг переменной |
| Переход |
| Переход из ассоциированной страны происходит только на широковещательной передаче события |
| Акт государственной власти ( |
| Сообщение о состоянии появляется точно в 10 циклах |
| Переход |
| Переход из ассоциированной страны происходит только на широковещательной передаче события |
| Акт государственной власти ( |
| Сообщение о состоянии появляется каждые 5 циклов |
| Акт государственной власти ( |
| Это действие считает и возвращает целое число меток деления, которые протекли начиная с активации состояния. Затем действие присваивает переменной |
Можно использовать одно из двух обозначений, чтобы выразить основанную на событии временную логику.
Используйте обозначение события, чтобы задать акт государственной власти или условие перехода, которое зависит только от основного события.
Обозначение события следует за этим синтаксисом:
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
является дополнительным выражением условия
Обозначение | Использование | Пример | Описание |
---|---|---|---|
Событие | Акт государственной власти ( |
| Переменная |
Событие | Переход |
| Переход из ассоциированной страны происходит, если переменной |
Условное выражение | Переход |
| Переход из ассоциированной страны происходит только на широковещательной передаче события |
Необходимо использовать обозначение события в актах государственной власти, потому что синтаксис актов государственной власти не поддерживает условное обозначение.
Для абсолютно-разовой временной логики используйте операторы, описанные в этой таблице.
Оператор | Синтаксис | Описание |
---|---|---|
after |
| Возвращает Сбрасывает счетчик для |
прежде |
| Возвращает Сбрасывает счетчик для |
каждый |
| Возвращает Сбрасывает счетчик для Использование |
temporalCount |
| Количества и возвращают номер заданных секунд ( Сбрасывает счетчик для |
прошедший |
| Эквивалентный Сбрасывает счетчик для |
количество |
| Возвращает количество меток деления после того, как условное выражение, В модели Simulink® значение для |
длительность |
| Возвращает номер секунд после того, как условное выражение, |
Можно использовать кавычки, чтобы заключить ключевые слова 'sec'
, 'msec'
и 'usec'
. Например, after(5,'sec')
эквивалентен after(5,sec)
.
Временные логические операторы сравнивают порог n
с внутренним счетчиком целочисленного типа. Если n
является номером фиксированной точки, заданным или при помощи наклона, который не является целочисленной степенью двойки или ненулевым смещением, то сравнение может привести к неожиданным результатам из-за округления. Для получения дополнительной информации смотрите Реляционные операции для Данных Фиксированной точки.
Эти примеры иллюстрируют абсолютно-разовую временную логику в актах государственной власти и переходах.
Оператор | Использование | Пример | Описание |
---|---|---|---|
| Акт государственной власти ( |
| После 12,3 секунд времени симуляции начиная с активации состояния переменная |
| Переход |
| После того, как 8 миллисекунд времени симуляции передали начиная с активации состояния происходит переход из ассоциированной страны. |
| Переход |
| После того, как 5 микросекунд времени симуляции передали начиная с активации состояния происходит переход из ассоциированной страны. |
| Переход |
| Если переменная |
| Акт государственной власти ( |
| Это действие считает и возвращает номер секунд времени симуляции, которые передают между активацией и деактивацией состояния. |
Этот непрерывно-разовый график задает две абсолютных задержки переходов.
Стройте диаграмму выполнение состоит из этих шагов:
Когда график просыпается, 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
.
Можно использовать абсолютно-разовую временную логику в графике, который находится в условно выполняемой подсистеме. Когда подсистема отключена, график становится неактивным, и временный логический оператор делает паузу, в то время как график спит. Оператор не продолжает считать время симуляции, пока подсистема не повторно включена, и график бодрствует.
Эта модель имеет активированную подсистему со Штатами при включении набора параметра к 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).
после | в | прежде | количество | длительность | прошедший | каждый | temporalCount