ток 1
Код програми мовою Borland C/C + +
# include
# include
# include main ()
{* p; str1 [9], str2 [9], str3 [9], str4 [9]; tab = ' t', enter = ' n'; tn = 0, tk = 1000; k1 = 0.51, k2 = 0.028;// Параметри регулятора
float T1 = 20, T2 = 200;// Параметри об'ектаtau = 20;
float step = 0.1, e = 0;// Крок і ошібкаrk1, rk2, rk3, rk4;
float ys = 0, f = 1;// Завдання і возмущеніеep = 0;// Попереднє значення помилки по заданіюde = 0;// Похідна помилки по заданіюy_reg1 = 0, y_reg2 = 0, y_reg = 0;// Вихід регулятораy_f = 0;// Вихід регулятора з возмущеніемy = 0, y_tau = 0;// Вихід сістемиdy1 = 0, dy2 = 0;// Похідні 1 і 2 порядку на виході об'єкта
float Z [200], n;// Масив запаздиваніяi = 0, print = 0; = fopen ("Lika.xls", "wt"); (p == NULL)
{("File not open"); 1;
} = tau/step; (i = 0; i
{= ys - y_tau;// Значення помилки = (e - ep)/step;// Похідна помилки = e;// Запам'ятовуємо предидущее_reg1 = e * k1;
y_reg2 = y_reg2 + k2 * e * step; _reg = y_reg1 + y_reg2;// Вихід регулятора_f = y_reg + f; = (y_f - y - dy1 * T1)/T2; = dy2; = dy2 + rk1/2; = dy2 + rk2/2; = dy2 + rk3/2; = dy1 + step * (rk1 + 2 * rk2 + 2 * rk3 + rk4)/6; = dy1; = dy1 + rk1/2 ; = dy1 + rk2/2; = dy1 + rk3/2; = y + step * (rk1 + 2 * rk2 + 2 * rk3 + rk4)/6;// Вихід об'екта_tau = Z [i];// Запізнення [ i] = y; + +; (i == n) = 0; + +; (print% 100 == 0)
} = tn + step;
} (p);
return 0;
}
Додаток 2
Результати роботи програми на С + + Builder 6
). Графічний результат для ys = 0 & f = 1
Перехідна характеристика
В
Фазовий портрет
В
2). Графічний результат для ys = +1 & f = 0
Перехідна характеристика
В
Фазовий портрет
В
Додаток 3
Результати, отримані за допомогою пакету ІМОДС до оптимізації системи
). Графічний результат для ys = 0 & f = 1
Перехідна характеристика
В
Фазовий портрет
В
). Графічний результат для ys = 1 & f = 0
Перехідна характеристика
В
Фазовий портрет
В
Додаток 4