Перейти к содержанию

Пожалуйста, помогите разобраться в работе.


Рекомендуемые сообщения

Опубликовано

Функция MATLAB ziegler() существует для разработки регуляторов PI и PID с использованием формулы Циглера – Никольса. Применение данной функции можно увидеть в программе. Не работает функция ziegler. Вы дает ошибку

 function[Gc,Kp,Ti,Td,H]=ziegler(key,vars)
 ↑
Error: Function definitions are not permitted in this context.

 

function[Gc,Kp,Ti,Td,H]=ziegler(key,vars)

Ti=[]; Td=[]; H=1;

if length(vars)==4,

K=vars(1); L=vars(2); T=vars(3); N=vars(4); a=K*L/T;

if key==1, Kp=1/a;

elseif key==2, Kp=0.9/a; Ti=3.33*L;

elseif key==3 | key==4, Kp=1.2/a; Ti=2*L; Td=L/2; end

elseif length(vars)==3,

K=vars(1); Tc=vars(2); N=vars(3);

if key==1, Kp=0.5*K;

elseif key==2, Kp=0.4*K; Ti=0.8*Tc;

elseif key==3 | key==4, Kp=0.6*K; Ti=0.5*Tc; Td=0.12*Tc; end

elseif length(vars)==5,

K=vars(1); Tc=vars(2); rb=vars(3); N=vars(5);

pb=pi*vars(4)/180; Kp=K*rb*cos(pb);

if key==2, Ti=-Tc/(2*pi*tan(pb));

elseif key==3|key==4, Ti=Tc*(1+sin(pb))/(pi*cos(pb)); Td=Ti/4; end

end

[Gc,H]=writepid(Kp,Ti,Td,N,key);

Опубликовано (изменено)

@Анастасия_1996 пример надо внимательно переписывать. И в синтаксисе немного разобраться :)

Сравните с вашим определением функции:

Цитата

function [Gc,Kp,Ti,Td,H]=ziegler(key,vars)

https://books.google.ru/books?id=C_2mg9xAUJcC&pg=PA187&lpg=PA187&dq=MATLAB+function[Gc,Kp,Ti,Td,H]%3Dziegler(key,vars)&source=bl&ots=eQHEmCXjMD&sig=ACfU3U1v2Q1DkUWTyF4RqvcBb8H2GiGhjA&hl=ru&sa=X&ved=2ahUKEwiwgIH-243qAhWCtYsKHYTWAXEQ6AEwAHoECAoQAQ#v=onepage&q=MATLAB function[Gc%2CKp%2CTi%2CTd%2CH]%3Dziegler(key%2Cvars)&f=false

Изменено пользователем andrew75
  • Улыбнуло 1

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...