Mọi người đều biết cho 1 hệ kín, ta sẽ vẽ được đường đặc tính h(t), và cũng không lạ gì khi xác định các chỉ tiêu chuất lượng: Overshoot (độ quá điều chỉnh cực đại (ymax - yxáclap)/yxaclap), td (thời gian giữ chậm = time khi dat 50% yxaclap), ts (thời gian quá độ= time từ đầu đến khi vao vung +-5% yxaclap hay chinh là vùng 95% - 105%), tr (thời gian tăng = time tu 10% đến 90% yxaclap), sai lệc tĩnh..........
Em đã tham khảo ở sách giáo trình Phân Tích và Tổng hợp các hệ thống điều khiển bằng máy tính, và đã có được Code của chương trình tính các chỉ tiêu này bằng MATLAB.
Khi đã biết hàm truyền hệ kín, Wk=N(s)/D(s), ta chỉ cần thực hiện;
>> n = [ 1 2 1]
>> d = conv(conv(conv([1 0],[1 8]),[1 20]),[1 3.25 3.56]);
>> sys=tf(n,d)
>> step(sys)
Với lệnh [y,t]=step(sys), ta sẽ có được ma trận giá trị ban đầu y ứng với mỗi một t tương ứng trên đường h(t). giá trị y,t này chính là đầu vào cho hàm bên dưới.
Nhưng ở đây em không hiểu một số điểm sau:
1> yss, pr là gì, và đầu vào của nó lấy từ đâu, hay đây là các giá trị mình nhập vào, và nếu nhập vào thì nhập trên nguyên tắc nào?
2> lệnh linterp dùng ở trong chương trình bên dưới bị matlab báo lỗi: quá nhiều biến đầu vào, em đã gõ help linterp trong matlab thì thấy chỉ có 3 biến, em không hiểu cách dùng lắm mong mọi người giúp đỡ.
3> y=y/yss có tác dụng gì
4> em muốn tính thêm sai lẹch tĩnh deltas thì phải viết bổ xung thêm code nào?
Mong mọi người giúp đỡ.
Em mới nghiên cứu matlab được ít bữa, nên trình độ còn rất kém, xin được giúp đỡ.
============================
fucntion specs=step_par(y,t,yss,pr)
if nargin<4,pr=0;end
if nargin==2,yss=1.0;end
if yss=0,error('Gia tri xac lap phai khac khong');end
y=y/yss;
n=length(y);
i=find(y>=0.5)
if isempty(i),i=n,else,i=i(1);end
td=linterp(y(i-1),y(i),t(i+1),t(i),0.5);
i=find(abs(y-1)>=0.05);
if isempty(i),i=n,else,i=i(lenght(i)); end
ts=t(i);
[os,i]=max(y)
os=round(1000*max(0.0,os-1))/10
tm=t(i);specs=[td tr os tm];
s=['Delay time '
' Time '
' Settling time '
' MAx% overshoot '
' Time at MAx '];
displist(s,specs);pause
==================================
Em đã tham khảo ở sách giáo trình Phân Tích và Tổng hợp các hệ thống điều khiển bằng máy tính, và đã có được Code của chương trình tính các chỉ tiêu này bằng MATLAB.
Khi đã biết hàm truyền hệ kín, Wk=N(s)/D(s), ta chỉ cần thực hiện;
>> n = [ 1 2 1]
>> d = conv(conv(conv([1 0],[1 8]),[1 20]),[1 3.25 3.56]);
>> sys=tf(n,d)
>> step(sys)
Với lệnh [y,t]=step(sys), ta sẽ có được ma trận giá trị ban đầu y ứng với mỗi một t tương ứng trên đường h(t). giá trị y,t này chính là đầu vào cho hàm bên dưới.
Nhưng ở đây em không hiểu một số điểm sau:
1> yss, pr là gì, và đầu vào của nó lấy từ đâu, hay đây là các giá trị mình nhập vào, và nếu nhập vào thì nhập trên nguyên tắc nào?
2> lệnh linterp dùng ở trong chương trình bên dưới bị matlab báo lỗi: quá nhiều biến đầu vào, em đã gõ help linterp trong matlab thì thấy chỉ có 3 biến, em không hiểu cách dùng lắm mong mọi người giúp đỡ.
3> y=y/yss có tác dụng gì
4> em muốn tính thêm sai lẹch tĩnh deltas thì phải viết bổ xung thêm code nào?
Mong mọi người giúp đỡ.
Em mới nghiên cứu matlab được ít bữa, nên trình độ còn rất kém, xin được giúp đỡ.
============================
fucntion specs=step_par(y,t,yss,pr)
if nargin<4,pr=0;end
if nargin==2,yss=1.0;end
if yss=0,error('Gia tri xac lap phai khac khong');end
y=y/yss;
n=length(y);
i=find(y>=0.5)
if isempty(i),i=n,else,i=i(1);end
td=linterp(y(i-1),y(i),t(i+1),t(i),0.5);
i=find(abs(y-1)>=0.05);
if isempty(i),i=n,else,i=i(lenght(i)); end
ts=t(i);
[os,i]=max(y)
os=round(1000*max(0.0,os-1))/10
tm=t(i);specs=[td tr os tm];
s=['Delay time '
' Time '
' Settling time '
' MAx% overshoot '
' Time at MAx '];
displist(s,specs);pause
==================================
Comment