Сделайте цикл с условием продолжения

Этот пример показывает, как реализовать построение цикла do while при помощи блоков Simulink и диаграмм Stateflow.

C построение

num_iter = 1;
do {
   flag = func();
   num_iter++;
   }
while (flag && num_iter <= 100)

Моделирование Шаблона для Делает Цикл с условием продолжения: В то время как блок Subsystem Итератора

Один метод для создания цикла do while должен использовать некоторое время блок Subsystem Итератора от библиотеки Simulink> Ports и Subsystems.

1. Открытая модель ex_do_while_loop_SL в качестве примера.

Модель содержит некоторое время блок Subsystem Итератора, который повторяет выполнение содержимого подсистемы во время шага времени симуляции.

Наблюдайте следующие настройки в В то время как Подсистема Итератора:

  • Блок подсистемы func имеет вывод flag 0 или 1 в зависимости от результата алгоритма в func( ). func() является Имя функции в подсистеме func.

  • Для, В то время как блок Iterator, Максимальным количеством итераций является 100.

  • Для, В то время как блок Iterator, типом Цикла с условием продолжения является do-while.

2. Чтобы создать модель и сгенерировать код, нажмите Ctrl+B.

Код, реализующий цикл do while, находится в функции ex_do_while_loop_SL_step в ex_do_while_loop_SL.c:

/* Model step function */
void ex_do_while_loop_SL_step(void)
{
  int32_T s1_iter;

  /* Outputs for Iterator SubSystem: '<Root>/While Iterator Subsystem' incorporates:
   *  WhileIterator: '<S1>/While Iterator'
   */
  s1_iter = 1;

  /* SystemReset for Atomic SubSystem: '<S1>/func' */
  func_Reset();

  /* End of SystemReset for SubSystem: '<S1>/func' */
  /* End of Outputs for SubSystem: '<Root>/While Iterator Subsystem' */
  do {
    func();
    s1_iter++;
  } while (flag && (s1_iter <= 100));
}

Моделирование шаблона для делает цикл с условием продолжения: диаграмма Stateflow

1. Открытая модель ex_do_while_loop_SF в качестве примера.

В модели ex_do_while_loop_SF/Chart выполняет цикл do while.

График содержит шаблон решения цикла While, который вы добавляете путем выбора Chart> Add Pattern in Chart> Loop> While.

2. Чтобы создать модель и сгенерировать код, нажмите Ctrl+B.

Код, реализующий цикл do while, находится в функции ex_do_while_loop_SF_step в ex_do_while_loop_SF.c:

/* Model step function */
void ex_do_while_loop_SF_step(void)
{
  int32_T num_iter;

  /* Chart: '<Root>/Chart' */
  num_iter = 1;
  do {
    func();
    num_iter++;
  } while (flag && (num_iter <= 100));
}

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

Похожие темы