Идентификация системы SISO

У меня есть таблица данных (около 100 образцов), где для реальной системы SISO (двигатель постоянного тока) я знаю вход и выход. С tfest Команда, я могу сформировать функцию передачи первого порядка в n-й порядок, используя те же данные (загружается с iddata функция) для системы.

Но в реальной жизни система может быть либо 1-го порядка, либо n-го порядка.

Как в MATLAB, используя тот же iddat (содержит примеры значений), я могу генерировать следующие передаточные функции:

sys1 = tfest(iddat, 1, 1, 0.5); %number of zero=1, pole=1, 1st order system

sys1 =

  From input "u1" to output "y1":
       exp(-0.5*s) * (2.932 s - 0.1862) / (s + 1.082)

sys = tfest(iddat, 3, 2, 0.5);%number of zero=3, pole=2, 2nd order system 

sys =

  From input "u1" to output "y1":
       exp(-0.5*s) * (0.1936 s^2 - 0.02193 s + 0.0006905) / ( s^3 + 0.07175 s^2 + 0.05526 s + 1.772e-13)

Может кто-нибудь объяснить сценарий?

1 ответ

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

Здесь у вас есть двигатель постоянного тока, который, вероятно, не имеет нулей и коэффициента усиления постоянного тока, но вы заставляете matlab соответствовать правильной передаточной функции третьего порядка, и она дает вам самую близкую (не обязательно правильную).

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

tfest(iddat,1);

было бы достаточно (или попробуйте с 3, если у вас есть подозрения в отношении привода двигателя).

Другие вопросы по тегам