Вы можете сделать модель доступной в реальном времени, разделив вычислительные затраты на моделирование между несколькими процессорами с помощью секционирования модели. Вычислительная стоимость - это мера количества и сложности задач, которые центральный процессор (CPU) выполняет за шаг времени во время моделирования. Высокая вычислительная стоимость может замедлить скорость выполнения моделирования и вызвать перерасход при моделировании в реальном времени на одном процессоре.
Как правило, можно снизить вычислительные затраты, достаточные для моделирования в реальном времени на одном процессоре, путем корректировки точности модели и настроек решателя с помощью методов, описанных в разделе Рабочий процесс подготовки модели в реальном времени. Однако возможно, что отсутствует сочетание сложности модели и настроек решателя, которые могут сделать модель способной работать в реальном времени на одном ЦП на целевой машине. Если моделирование в реальном времени с использованием одного ЦП не завершается или если результаты моделирования неприемлемы, разделите модель. Можно запустить секционированную модель, используя одну, многоядерную целевую машину или несколько одноядерных целевых машин.
В этом примере показано, как разделить модель на две дискретные подсистемы: одну, содержащую завод, и одну, содержащую контроллер, для параллельной обработки на отдельных процессорах реального времени.
Откройте модель. В командной строке MATLAB ® введите
model = 'ssc_hydraulic_actuator_digital_control';
open_system(model)
В дополнение к блокам маршрутизации и контроля сигналов модель содержит следующие блоки:
Командный сигнал - блок построителя сигналов, который генерирует входной опорный сигнал, r.
Сумма - блок, который сравнивает опорный сигнал r из блока командного сигнала с выходным сигналом y от гидравлического привода для генерации ошибки x, то есть r - y = x.
Контроллер - блок непрерывной передачи Fcn. Коэффициенты числителя и коэффициенты знаменателя для этого блока определяются переменными num и den.
Транспортная задержка - блок, имитирующий временную задержку для непрерывного входного сигнала.
Примечание
По умолчанию Simulink ® Editor скрывает имена автоматических блоков в схемах модели. Для отображения имен скрытых блоков в учебных целях снимите флажок «Скрыть имена автоматических блоков». Дополнительные сведения см. в разделе Управление именами блоков и портами.
Линеаризация ввода-вывода - подсистема линеаризации модели относительно рабочей точки.
Гидравлический привод - подсистема, содержащая модель установки Simscape™.
Изучите переменные в рабочей области, щелкнув каждую переменную поочередно.
Переменная для времени выборки, ts = 0.001.
Параметр Числитель коэффициентов, число = -0.5.
Параметр коэффициентов знаменателя, den = [0.001 1].
Переменная Loop = 1.
Смоделировать модель и открыть область «Положение нагрузки» (Load Position), чтобы проверить результаты.
sim(model)
open_system([model, '/Load Position'])
Выход гидравлического привода соответствует командному сигналу.
Исключение элементов, которые увеличивают вычислительные затраты, но не влияют на результаты моделирования в реальном времени. В примерной модели, поскольку коэффициент усиления по замкнутому контуру равен 1, такие элементы включают в себя точки ввода/вывода линеаризации, блоки In1 и блоки In2. Удалите три блока и соединяющие их линии.
Настройте модель для визуализации.
Удалите блок Mux.
Удалите блоки Goto и From с именем Cmd.
Подключите блок «Load Position Scope» к выходному сигналу от гидравлического привода.
Добавьте второй блок области.
Подключите новый блок области к неподключенной соединительной линии из командного сигнала.
Изменение имени нового блока области на Reference.
Замените блок «Задержка передачи» блоком «Задержка установки».
Удалите блок «Transport Delay» и открытую соединительную линию, соединенную с внешним портом блока.
Добавьте блок задержки блока из библиотеки дискретных данных Simulink и подключите его к входному порту подсистемы гидравлического привода.
Для параметра Sample time (-1 для унаследованного) блока Unit Delay укажите значение ts.
Замените блок Controller блоком Discrete Transfer Fcn из библиотеки Simulink Discrete.
Удалите блок контроллера.
Щелкните в окне модели и введите discrete transfer fcn. При появлении раскрывающегося меню, содержащего блок, щелкните Discrete Transfer Fcn.
Подключите новый блок к открытой соединительной линии из блока «Сумма».
Подключите выходной порт нового блока к входному порту блока задержки установки.
Задайте параметры для дискретного контроллера с помощью преобразования Тустина исходной функции непрерывной передачи.
В командной строке MATLAB сохраните новые переменные на основе исходных коэффициентов:
k = num; alpha = den(1,1);
Для параметра Числитель блока дискретной передачи Fcn укажите [k*ts k*ts].
Для параметра «Знаменатель» укажите [2*alpha+ts ts-2*alpha].
Для параметра Sample time (Образец времени) (-1 для наследуемого) укажите ts.
Обеспечивает цифровую выборку для непрерывных измерений времени с использованием блоков удержания нулевого порядка.
Добавьте блоки удержания нулевого порядка к обоим сигналам, входящим в блок суммы.
Для параметра Sample time (-1 для унаследованных) обоих блоков удержания нулевого порядка укажите ts.
Подключите блоки, как показано на рисунке.

Смоделировать модель и открыть область «Положение нагрузки», чтобы увидеть, как изменения влияют на результаты.
sim(model)
open_system([model, '/Load Position'])

Выходные данные гидравлического привода соответствуют исходным результатам.
Настройте решатели.
Чтобы настроить глобальный решатель, откройте параметры конфигурации модели и на панели Решатель (Solver) выполните следующие действия.
Задайте для параметра Тип решателя значение Fixed-step.
Задайте для решателя значение discrete (no continuous states).
Определить ts для параметра Фиксированный размер шага (время основной выборки).
Нажмите кнопку ОК.
Чтобы настроить локальный решатель, откройте подсистему гидравлического привода и обновите следующие параметры для блока конфигурации решателя:
Выберите опцию Использовать локальный решатель.
Определить ts для времени Sample.
Выберите параметр Использовать итерации непротиворечивости среды выполнения с фиксированной стоимостью.
Нажмите кнопку ОК.
Разбейте модель на две подсистемы:
Создайте подсистему, содержащую следующие блоки:
Командный сигнал
Ссылка
Удержание нулевого заказа
Сумма
Дискретный перенос Fcn
Единичная задержка
Маркировать подсистему Controller Subsystem.
Откройте подсистему контроллера.
Переименование
блока Out1 Outport в u.
Переименуйте
блок In1 Inport как y.
Перейдите к верхней модели.
Создайте вторую подсистему, содержащую следующие блоки:
Гидравлический привод
Hold1 нулевого порядка
Положение нагрузки
Маркировать подсистему Plant Subsystem.
Откройте подсистему установки.
Переименование
блока Out1 Outport в u_plant.
Переименуйте
блок In1 Inport как y_plant.
Для просмотра секционированных подсистем перейдите к верхней модели.

Эта модель разделена для параллельного выполнения. Сведения о том, как добавлять задачи и сопоставлять отдельные задачи с секциями, см. в разделе Секционирование модели с помощью явного секционирования.
Дискретный перенос Fcn | Единичная задержка | Удержание нулевого заказа