Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
И.В.Черных. Simulink.doc
Скачиваний:
314
Добавлен:
03.12.2018
Размер:
3.88 Mб
Скачать

9.9.9. Управляемая подсистема For Iterator Subsystem

Управляемая подсистема For Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений должно быть известно заранее и может задаваться внешним источником сигнала или с помощью параметра блока. Основные свойства подсистемы задает итерационный блок For Iterator. Блок является аналогом оператора цикла For языка программирования C.

Блока For может находиться в любом месте подсистемы. Его параметры перечислены ниже.

Параметры:

States when starting – Состояние подсистемы при следующем запуске. Значение параметра выбирается из списка:

held – Использовать предыдущее состояние (последнее состояние когда система была активна).

reset – Использовать начальное (исходное) состояние.

Source of number of iterations (флажок)Источник задающий количество итераций.

internal – Внутренний.

external – Внешний.

Number of iterations – Количество итераций. Параметр доступен, если выбран внутренний источник числа итераций.

Show iteration number port – Отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации.

Output data type – Тип данных выходного сигнала порта. Значение параметра выбирается из списка: int32, int16, int8 и double.

На рис. 9.9.9 показан пример использования For Iterator Subsystem. В примере выполняется накопление суммы значений с шагом равным 10. Количество итераций задается внешним источником и равно 20.

С-код, соответствующий алгоритму работы For Iterator Subsystem в приведенном примере выглядит следующим образом:

sum = 0; iterations = 20; sum_increment = 10; for (i = 0; i < iterations; i + +) { sum = sum + sum_increment; }

Рис. 9.9.9 Применение For Iterator Subsystem

Скачать пример (EX_For_Iterator_Subsystem_1.zip)

[Скачать пример]

9.9.10. Управляемая подсистема While Iterator Subsystem

Управляемая подсистема While Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений заранее не известно. Цикл прекращается, если значение логического сигнала на управляющем входе подсистемы станет равно FALSE. Основные свойства подсистемы задает итерационный блок While Iterator. Блок является аналогом оператора цикла while (do-while) языка программирования C.

Свойства While Iterator Subsystem определяются параметрами блока While Iterator. Его параметры перечислены ниже.

Параметры:

Maximum number of iterations – Максимальное количество итераций. Если значение параметра равно -1 (минус один), то количество итераций не ограничивается.

While loop type (флажок)Тип цикла. Выбирается из списка:

while – Цикл while.

do-while – Цикл do-while.

States when starting – Состояние подсистемы системы при следующем запуске. Значение параметра выбирается из списка:

held – Использовать предыдущее состояние (последнее состояние когда система была активна).

reset – Использовать начальное (исходное) состояние.

Show iteration number port – Отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации.

Output data type – Тип данных выходного сигнала порта. Значение параметра выбирается из списка: int32, int16, int8 и double.

Входной порт IC позволяет задать начальное значение сигнала прекращающего выполнение цикла while. При использовании цикла do-while подсистема будет выполнена хотя бы один раз (поскольку проверка условия в этом случае производится в конце цикла).

На рис. 9.9.10 показан пример использования While Iterator Subsystem. В примере выполняется накопление суммы значений с шагом равным 10. Выполнение цикла прекращается, когда величина суммы достигнет значения 100.

С-код, соответствующий алгоритму работы While Iterator Subsystem в приведенном примере выглядит следующим образом:

sum = 0; IC = 1; iteration_number = 0; cond = IC; while (cond != 0) { iteration_number = iteration_number + 1; sum = sum + sum_increment; if (sum > 100 OR iterations > max_iterations) cond = 0; }

Рис. 9.9.10 Применение While Iterator Subsystem

[Скачать пример]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]