В этом примере показано, как создать компьютер с жестким диском для чтения/записи контроллера положения головки с помощью классических методов системы управления.
Используя законы Ньютона, смоделируйте голову чтения/записи с помощью следующего дифференциального уравнения:
Вот,
- инерция сборки головки.
- вязкий коэффициент демпфирования подшипников.
является возврат коэффициента упругости.
- крутящий момент двигателя, константа.
- угловое положение головы.
- вход ток.
Принимая преобразование Лапласа, передаточная функция от до является
Задайте физические константы модели, такие что:
J = 0.01; C = 0.004; K = 10; Ki = 0.05;
Определите передаточную функцию с помощью этих констант.
num = Ki; den = [J C K]; H = tf(num,den)
H = 0.05 ----------------------- 0.01 s^2 + 0.004 s + 10 Continuous-time transfer function.
Чтобы спроектировать цифровой контроллер, который обеспечивает точное позиционирование головки чтения/записи, сначала дискретизируйте объект в непрерывном времени.
Задайте шаг расчета.
Ts = 0.005;
Дискретизируйте модель. Поскольку контроллер будет иметь цифроаналоговый преобразователь (с удержанием нулевого порядка), подключенный к его входу, используйте c2d
команда со 'zoh'
способ дискретизации.
Hd = c2d(H,Ts,'zoh')
Hd = 6.233e-05 z + 6.229e-05 ----------------------- z^2 - 1.973 z + 0.998 Sample time: 0.005 seconds Discrete-time transfer function.
Сравните Диаграммы Боде моделей непрерывного времени и дискретного времени.
bodeplot(H,'-',Hd,'--') legend('Continuous-time','Discrete-time')
Чтобы проанализировать дискретизированную систему, постройте график ее переходной характеристики.
stepplot(Hd)
У переходной характеристики значительные колебания, что, скорее всего, связано со световым демпфированием. Проверьте демпфирование на наличие разомкнутого контура полюсов системы.
damp(Hd)
Pole Magnitude Damping Frequency Time Constant (rad/seconds) (seconds) 9.87e-01 + 1.57e-01i 9.99e-01 6.32e-03 3.16e+01 5.00e+00 9.87e-01 - 1.57e-01i 9.99e-01 6.32e-03 3.16e+01 5.00e+00
Как и ожидалось, полюса имеют световое эквивалентное демпфирование и находятся рядом с модулем кругом. Поэтому необходимо спроектировать компенсатор, который увеличивает демпфирование в системе.
Самый простой компенсатор является коэффициентом усиления без полюсов или нулей. Попробуйте выбрать соответствующий коэффициент усиления обратной связи с помощью метода корневой годограф. Корневой годограф строит графики траекторий полюса с обратной связью как функцию усиления обратной связи.
rlocus(Hd)
Шесты быстро покидают модуль круг и остаются нестабильными. Поэтому необходимо ввести в систему какой-то свинец.
Задайте опережающий компенсатор с нулем на и полюсом на.
D = zpk(0.85,0,1,Ts);
Соответствующей моделью разомкнутого контура является последовательное соединение компенсатора и объекта.
oloop = Hd*D
oloop = 6.2328e-05 (z+0.9993) (z-0.85) ------------------------------ z (z^2 - 1.973z + 0.998) Sample time: 0.005 seconds Discrete-time zero/pole/gain model.
Чтобы увидеть, как компенсатор вывода влияет на частотную характеристику разомкнутого контура, сравните Диаграммы Боде Hd
и oloop
.
bodeplot(Hd,'--',oloop,'-') legend('Plant','Plant plus lead compensator')
Компенсатор добавляет в систему вывод, который смещает фазовый отклик вверх в частотной области значений.
Исследуйте поведение полюсов системы с обратной связью с помощью корневого годографа графика. Установите пределы обоих x
-ось и y
-ось от -1
на 1
.
rlocus(oloop) zgrid xlim([-1 1]) ylim([-1 1])
Теперь полюса с обратной связью остаются в пределах модуля круга в течение некоторого времени.
Чтобы создать маркер данных для графика, щелкните корневым годографом кривую. Найдите точку на кривой, где демпфирование является наибольшим, перетащив маркер. Максимальное демпфирование 0,782 соответствует усилению обратной связи 4.07e+03
.
Чтобы проанализировать этот проект, сначала задайте систему с обратной связью, которая состоит из системы с разомкнутым контуром с коэффициентом усиления обратной связи 4.07e+03
.
k = 4.07e+03; cloop = feedback(oloop,k);
Постройте график переходной характеристики с обратной связью.
stepplot(cloop)
Этот ответ зависит от уставки замкнутого контура. Показанное здесь является относительно быстрым и оседает примерно за 0,06 с. Поэтому время поиска в системе дисковода с обратной связью составляет 0,06 секунды. Хотя это время поиска относительно медленно по современным стандартам, вы также начали с слегка демпфированной системы.
Это хорошая практика, чтобы изучить робастность вашего проекта. Для этого вычислите запасы по усилению и фазе для вашей системы. Во-первых, сформируйте систему разомкнутого контура обратной связи единства путем соединения компенсатора, объекта и коэффициента усиления обратной связи последовательно.
olk = k*oloop;
Затем вычислите поля для этой модели без разомкнутого контура.
[Gm,Pm,Wcg,Wcp] = margin(olk)
Gm = 3.8360 Pm = 43.3068 Wcg = 296.7978 Wcp = 105.4680
Эта команда возвращает запас по амплитуде, Gm
, запас по фазе Pm
, и их соответствующие частоты среза, Wcg
и Wcp
.
Преобразуйте запас по амплитуде в дБ.
20*log10(Gm)
ans = 11.6775
Поля также можно отобразить графически.
margin(olk)
Этот проект является устойчивой и может терпеть увеличение усиления 11-dB или 40-градусную задержку фазы в системе с разомкнутым контуром, не становясь нестабильной. Продолжая этот процесс проекта, вы можете найти компенсатор, который стабилизирует систему без разомкнутого контура и сокращает время поиска дальше.