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

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

Вывод от гидравлического привода совпадает с исходными результатами.
Сконфигурируйте решатели.
Чтобы сконфигурировать глобальный решатель, откройте образцовые параметры конфигурации, и в панели Solver:
Установите решатель Type на Fixed-step.
Установите Solver на discrete (no continuous states).
Задайте ts для параметра Fixed-step size (fundamental sample time).
Нажмите OK.
Чтобы сконфигурировать локальный решатель, откройте Гидравлическую подсистему Привода и обновите эти параметры для Блока Configuration Решателя:
Выберите опцию к Use local solver.
Задайте ts для Sample time.
Выберите опцию к Use fixed-cost runtime consistency iterations.
Нажмите OK.
Разделите модель в две подсистемы:
Создайте подсистему, которая содержит эти блоки:
Сигнал команды
Ссылка
Нулевой порядок содержит
Сумма
Дискретная передача Fcn
Единичная задержка
Маркируйте подсистему Controller Subsystem.
Откройте подсистему контроллера.
Переименуйте
блок Out1 Outport как u.
Переименуйте
блок In1 Inport как y.
Перейдите топ-модели.
Создайте вторую подсистему, которая содержит эти блоки:
Гидравлический привод
Нулевой порядок Hold1
Загрузите положение
Маркируйте подсистему Plant Subsystem.
Откройте подсистему объекта.
Переименуйте
блок Out1 Outport как u_plant.
Переименуйте
блок In1 Inport как y_plant.
Чтобы видеть разделенные подсистемы, перейдите топ-модели.

Эта модель разделена для параллельного выполнения. Чтобы изучить, как добавить задачи и сопоставить отдельные задачи с разделами, смотрите Раздел Ваша Модель Используя Явное Разделение (Simulink).
Дискретная передача Fcn | Единичная задержка | Нулевой порядок содержит