exponenta event banner

Разбиение модели

Вы можете сделать модель доступной в реальном времени, разделив вычислительные затраты на моделирование между несколькими процессорами с помощью секционирования модели. Вычислительная стоимость - это мера количества и сложности задач, которые центральный процессор (CPU) выполняет за шаг времени во время моделирования. Высокая вычислительная стоимость может замедлить скорость выполнения моделирования и вызвать перерасход при моделировании в реальном времени на одном процессоре.

Как правило, можно снизить вычислительные затраты, достаточные для моделирования в реальном времени на одном процессоре, путем корректировки точности модели и настроек решателя с помощью методов, описанных в разделе Рабочий процесс подготовки модели в реальном времени. Однако возможно, что отсутствует сочетание сложности модели и настроек решателя, которые могут сделать модель способной работать в реальном времени на одном ЦП на целевой машине. Если моделирование в реальном времени с использованием одного ЦП не завершается или если результаты моделирования неприемлемы, разделите модель. Можно запустить секционированную модель, используя одну, многоядерную целевую машину или несколько одноядерных целевых машин.

В этом примере показано, как разделить модель на две дискретные подсистемы: одну, содержащую завод, и одну, содержащую контроллер, для параллельной обработки на отдельных процессорах реального времени.

  1. Откройте модель. В командной строке MATLAB ® введите

    model = 'ssc_hydraulic_actuator_digital_control';
    open_system(model)

    В дополнение к блокам маршрутизации и контроля сигналов модель содержит следующие блоки:

    • Командный сигнал - блок построителя сигналов, который генерирует входной опорный сигнал, r.

    • Сумма - блок, который сравнивает опорный сигнал r из блока командного сигнала с выходным сигналом y от гидравлического привода для генерации ошибки x, то есть r - y = x.

    • Контроллер - блок непрерывной передачи Fcn. Коэффициенты числителя и коэффициенты знаменателя для этого блока определяются переменными num и den.

    • Транспортная задержка - блок, имитирующий временную задержку для непрерывного входного сигнала.

      Примечание

      По умолчанию Simulink ® Editor скрывает имена автоматических блоков в схемах модели. Для отображения имен скрытых блоков в учебных целях снимите флажок «Скрыть имена автоматических блоков». Дополнительные сведения см. в разделе Управление именами блоков и портами.

    • Линеаризация ввода-вывода - подсистема линеаризации модели относительно рабочей точки.

    • Гидравлический привод - подсистема, содержащая модель установки Simscape™.

  2. Изучите переменные в рабочей области, щелкнув каждую переменную поочередно.

    • Переменная для времени выборки, ts = 0.001.

    • Параметр Числитель коэффициентов, число = -0.5.

    • Параметр коэффициентов знаменателя, den = [0.001 1].

    • Переменная Loop = 1.

  3. Смоделировать модель и открыть область «Положение нагрузки» (Load Position), чтобы проверить результаты.

    sim(model)
    open_system([model, '/Load Position'])

    Выход гидравлического привода соответствует командному сигналу.

  4. Исключение элементов, которые увеличивают вычислительные затраты, но не влияют на результаты моделирования в реальном времени. В примерной модели, поскольку коэффициент усиления по замкнутому контуру равен 1, такие элементы включают в себя точки ввода/вывода линеаризации, блоки In1 и блоки In2. Удалите три блока и соединяющие их линии.

  5. Настройте модель для визуализации.

    1. Удалите блок Mux.

    2. Удалите блоки Goto и From с именем Cmd.

    3. Подключите блок «Load Position Scope» к выходному сигналу от гидравлического привода.

    4. Добавьте второй блок области.

    5. Подключите новый блок области к неподключенной соединительной линии из командного сигнала.

    6. Изменение имени нового блока области на Reference.

  6. Замените блок «Задержка передачи» блоком «Задержка установки».

    1. Удалите блок «Transport Delay» и открытую соединительную линию, соединенную с внешним портом блока.

    2. Добавьте блок задержки блока из библиотеки дискретных данных Simulink и подключите его к входному порту подсистемы гидравлического привода.

    3. Для параметра Sample time (-1 для унаследованного) блока Unit Delay укажите значение ts.

  7. Замените блок Controller блоком Discrete Transfer Fcn из библиотеки Simulink Discrete.

    1. Удалите блок контроллера.

    2. Щелкните в окне модели и введите discrete transfer fcn. При появлении раскрывающегося меню, содержащего блок, щелкните Discrete Transfer Fcn.

    3. Подключите новый блок к открытой соединительной линии из блока «Сумма».

    4. Подключите выходной порт нового блока к входному порту блока задержки установки.

    5. Задайте параметры для дискретного контроллера с помощью преобразования Тустина исходной функции непрерывной передачи.

      1. В командной строке MATLAB сохраните новые переменные на основе исходных коэффициентов:

        k = num;
        alpha = den(1,1);

      2. Для параметра Числитель блока дискретной передачи Fcn укажите [k*ts k*ts].

      3. Для параметра «Знаменатель» укажите [2*alpha+ts ts-2*alpha].

      4. Для параметра Sample time (Образец времени) (-1 для наследуемого) укажите ts.

  8. Обеспечивает цифровую выборку для непрерывных измерений времени с использованием блоков удержания нулевого порядка.

    1. Добавьте блоки удержания нулевого порядка к обоим сигналам, входящим в блок суммы.

    2. Для параметра Sample time (-1 для унаследованных) обоих блоков удержания нулевого порядка укажите ts.

  9. Подключите блоки, как показано на рисунке.

  10. Смоделировать модель и открыть область «Положение нагрузки», чтобы увидеть, как изменения влияют на результаты.

    sim(model)
    open_system([model, '/Load Position'])

    Выходные данные гидравлического привода соответствуют исходным результатам.

  11. Настройте решатели.

    1. Чтобы настроить глобальный решатель, откройте параметры конфигурации модели и на панели Решатель (Solver) выполните следующие действия.

      • Задайте для параметра Тип решателя значение Fixed-step.

      • Задайте для решателя значение discrete (no continuous states).

      • Определить ts для параметра Фиксированный размер шага (время основной выборки).

      • Нажмите кнопку ОК.

    2. Чтобы настроить локальный решатель, откройте подсистему гидравлического привода и обновите следующие параметры для блока конфигурации решателя:

      • Выберите опцию Использовать локальный решатель.

      • Определить ts для времени Sample.

      • Выберите параметр Использовать итерации непротиворечивости среды выполнения с фиксированной стоимостью.

      • Нажмите кнопку ОК.

  12. Разбейте модель на две подсистемы:

    1. Создайте подсистему, содержащую следующие блоки:

      • Командный сигнал

      • Ссылка

      • Удержание нулевого заказа

      • Сумма

      • Дискретный перенос Fcn

      • Единичная задержка

    2. Маркировать подсистему Controller Subsystem.

    3. Откройте подсистему контроллера.

    4. Переименование блока Out1 Outport в u.

    5. Переименуйте блок In1 Inport как y.

    6. Перейдите к верхней модели.

    7. Создайте вторую подсистему, содержащую следующие блоки:

      • Гидравлический привод

      • Hold1 нулевого порядка

      • Положение нагрузки

    8. Маркировать подсистему Plant Subsystem.

    9. Откройте подсистему установки.

    10. Переименование блока Out1 Outport в u_plant.

    11. Переименуйте блок In1 Inport как y_plant.

    12. Для просмотра секционированных подсистем перейдите к верхней модели.

    Эта модель разделена для параллельного выполнения. Сведения о том, как добавлять задачи и сопоставлять отдельные задачи с секциями, см. в разделе Секционирование модели с помощью явного секционирования.

См. также

| |

Связанные примеры

Подробнее

Внешние веб-сайты