Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Simulink Matlab.doc
Скачиваний:
197
Добавлен:
09.05.2015
Размер:
2.39 Mб
Скачать

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

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

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

Параметры:

  1. 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. Его параметры перечислены ниже.

    Параметры:

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

    2. 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

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