Идентификация системы 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, если у вас есть подозрения в отношении привода двигателя).