Модель, основанная на скорости, является моделью с явно запланированными подсистемами. Можно запланировать подсистему с периодической частотой выполнения, задав параметр Sample time для блока Inport, соединенного с блоком Subsystem, блоком Subsystem или блоком внутри блока Subsystem, где Шаг расчета можно задать (для примера, блок Delay).
Чтобы открыть завершенную модель, основанную на скорости, см. ex_rate_based_model.
Примечание
Использование Непрерывных временных блоков, таких как блоки Интегратора, не разрешено. Вместо этого используйте блоки, эквивалентные дискретному времени
Рассмотрим следующую модель с двумя атомарными блоками Subsystem. Subsystem1 умножает свой вход на 2, а Subsystem2 умножает его вход на 4.

Откройте диалоговое окно Inport 1. На вкладке Signal Attributes установите Sample time равным 0.2.
Откройте диалоговое окно Inport 2. На вкладке Signal Attributes установите Sample time равным 0.4.
Если модель, основанная на скорости, имеет несколько скоростей, одна задача не разрешена. Установите флажок для параметр конфигурации <reservedrangesplaceholder0>.
Выбор однозадачного и многозадачного и односкоростного и многоскоростного управляет точками входа в сгенерированном коде.
| Параметр конфигурации | Явно запланированные тарифы | Сгенерированные коды |
|---|---|---|
Однозадачность
| Односкоростной Subsystem1
Subsystem2
| Одна функция точки входа вызывается периодически каждые 0,2 секунды void model_component_step(void)
{
model_component_Y.Out1 = 2.0 * model_component_U.In1;
model_component_Y.Out2 = 4.0 * model_component_U.In2;
}
|
Однозадачность
| Мультискоростной Subsystem1
Subsystem2
| Одна функция точки входа вызывается периодически каждые 0,2 секунды, счетчик расписания в функции определяет, какие скорости выполняются в какие шаги расчета. void model_component_step(void)
{
model_component_Y.Out1 = 2.0 * model_component_U.In1;
if (model_component_M->Timing.TaskCounters.TID[1] == 0) {
model_component_Y.Out2 = 4.0 * model_component_U.In2;
}
rate_scheduler();
}
|
Многозадачность
| Односкоростной Subsystem1
Subsystem2
| Одна функция точки входа, тот же код, что и однозадачная с одной скоростью. Не пример использования, но код генерируется без ошибки |
Многозадачность
| Мультискоростной Subsystem1
Subsystem2
| Две функции точки входа одна вызывается периодически каждые 0,2 секунды, а другая - периодически каждые 0,4 секунды. Скорости выполняются с использованием приоритетную схему упреждающей многозадачности. Более быстрые скорости присваиваются более высоким приоритетам и, таким образом, выполняются первыми. void model_component_step0(void)
{
model_component_Y.Out1 = 2.0 * model_component_U.In1;
}
void model_component_step1(void)
{
model_component_Y.Out2 = 4.0 * model_component_U.In2;
}
|