Производительность Simulink с S-функцией - PullRequest
2 голосов
/ 29 февраля 2012

Я пытаюсь запустить файл simulink, к которому подключен контроллер pid к блоку s-function.

Когда я устанавливаю три значения параметров pid, которые являются пропорциональными, целочисленными и производными, это занимает слишком много времени для запуска всего процесса. Почему это случилось?

В диалоговом окне моей пид-диаграммы, для значения порции, оно равно значению, которое соответствует постоянной амплитуде колебаний.

Тогда для интеграла оно равно Kcu / Ti. Ti - предельный период (Pu) / 2 и

и, наконец, для производных, его равное tu Kcu * Td и Td равно Pu / 8. Это относится к методу Циглера Николса. и снова мой вопрос: почему запуск этого файла занимает слишком много времени?

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

MATLAB S-функции работают медленно, потому что они выполняются в интерпретаторе MATLAB.Рассмотрите возможность его реализации с использованием блоков Simulink или блока «Встроенная функция MATLAB» (до R2011a) или «Функция MATLAB» (R2011a +).

Чтение Гай и Сет мысли о симуляции производительности.

1 голос
/ 29 февраля 2012

@ Nzbuu прав насчет S-функций Matlab.

Но я думаю, что проблема здесь может быть где-то еще: @Syarina вы говорите, что симуляция Simulink становится медленнее после выустановить коэффициент пропорциональности для контроллера?Если вы моделируете установку в одиночку, в этом случае S-функцию, заметите ли вы значительную разницу в скорости выполнения?Если это действительно так, я полагаю, что ПИД-регулятор делает систему ODE жесткой .Это означает, что разные состояния системы ODE имеют действительно разную динамику - некоторые очень быстрые, некоторые очень медленные.Используя оду-решатель, который не подходит для жестких уравнений, вы обнаружите, что симуляция будет намного медленнее (на самом деле вам повезет, если она вообще сходится).

Мое предложение - попытаться изменить решатель - например ode15s .

...