Bài toán điều khiển tự động được quyết một cách trọn vẹn bằng nhiều phương pháp khác nhau một khi hàm số truyền của đối tượng được xác định. Bài báo này giới thiệu một phương pháp xác định hàm số truyền bằng phương pháp đáp ứng bước, ý tưởng của phương pháp là dùng Matlab để xấp xỉ hàm đường cong đáp ứng bước, từ hàm đáp ứng bước dùng biến đổi Laplace ngược suy ra được hàm số truyền. Bằng phương pháp đáp ứng bước này tác giả đã xác định được hàm số truyền của 7 dạng khác nhau.
Tạp chí Khoa học Đại học Thủ Dầu Một Số 2(41)-2019 XÁC ĐỊNH HÀM SỐ TRUYỀN TỪ PHƢƠNG PHÁP ĐÁP ỨNG BƢỚC Nguyễn Văn Sơn(1) (1) Trường Đại học Thủ Dầu Một Ngày nhận bài: 20/12/2018 ; Ngày gửi phản biện 15/1/2019; Chấp nhận đăng 25/2/2019 Email: Email: sonnv@tdmu.edu.vn Tóm tắt Bài toán điều khiển tự động cách trọn vẹn nhiều phương pháp khác hàm số truyền đối tượng xác định Bài báo giới thiệu phương pháp xác định hàm số truyền phương pháp đáp ứng bước, ý tưởng phương pháp dùng Matlab để xấp xỉ hàm đường cong đáp ứng bước, từ hàm đáp ứng bước dùng biến đổi Laplace ngược suy hàm số truyền Bằng phương pháp đáp ứng bước tác giả xác định hàm số truyền dạng khác Từ khóa: đáp ứng bước, hàm số truyền Abstract DEFINING THE TRANSFER FUNCTION BY THE STEP RESPONSE METHOD Automated control problems are fully resolved by various methods once the transfer function of the object is determined This article introduces a method of defining the transfer function by the step response method The idea of this method is to use Matlab to approximate function of the step response curve, from the step response function using the inverted Laplace transform in order to determine the transfer function By this method, the author has determined the transfer function of different types Giới thiệu Bài toán điều khiển tự động giải biết mơ hình tốn đối tượng, mơ hình tốn thường dùng hàm số truyền hệ phương trình biến trạng thái Hàm số truyền hệ phương trình biến trạng thái biến đổi lẫn nhau, nghĩa biết hàm số truyền suy hệ phương trình biến trạng thái ngược lại Biết hàm số truyền gốc để giải tốn điều khiển, xác định hàm số truyền đối tượng có ý nghĩa thực tiễn Nội dung báo trình bày phương pháp xác định hàm số truyền đáp ứng bước Một đối tượng có hàm số truyền, có đáp ứng bước, biết hàm số truyền biết đáp ứng bước nhờ hàm step Matlab Do đó, xác định hàm số truyền từ đáp ứng bước toán ngược hàm step Trong báo tác giả xác định hàm số truyền dạng Nội dung Các bước phương pháp xác định hàm số truyền đáp ứng bước: - Thu thập liệu đáp ứng bước đối tượng 93 Nguyễn Văn Sơn - Xác định hàm số truyền Xác định trực quan dạng hàm số truyền từ đồ thị đáp ứng bước Dùng Matlab xấp xỉ hàm đáp ứng bước Từ hàm xấp xỉ đáp ứng bước xác định hàm số truyền Thu thập liệu đáp ứng bước đối tượng: Để thu thập liệu đáp ứng bước ta sử dụng thiết bị oscilloscope có nhớ (storage oscilloscope) để thu thập liệu, thiết bị mua Việt Nam thiết bị hãng Tektronic, Hantek…, thiết bị tự chế tạo Các bước lại làm sáng tỏ qua khảo sát 2.1 Hàm truyền bậc G(S) có dạng: G(S) k Sa (1) Hình Đáp ứng bước hàm truyền bậc Dùng Matlab để xấp xỉ đáp ứng bước dạng biểu thức (2): vo (t) A BeC.t Lấy biến đổi Laplace (2), ta được: Vo (S) (2) A B S SC Tín hiệu lối vào hàm bước: vi (t) V.1(t) V S V (S) S(A B) AC G(S) o VI (S) V(S C) (3) (4) Biến đổi Laplace (4), ta được: VI (S) (5) Hàm truyền H(S): (6) Đồng (1) (6) ta được: A B k AC / V (7) a C Biết hệ số A, B, C ta biết hàm truyền G(S) Vo (S) AC VI (S) V(S C) File script sau tất khảo sát báo gồm đoạn code: đoạn code bên giả lặp để tạo số liệu đáp ứng bước, đoạn code bên sử dụng số liệu giả lặp để xác định hàm số truyền num=15;% gia lap so lieu dap ung buoc den=[1 5]; step(num,den) sys=tf(num,den); [Y,T,X]=step(sys); 94 Tạp chí Khoa học Đại học Thủ Dầu Một Số 2(41)-2019 Y=Y'; T=T'; hold on pause p0=[1 -1 -1]'; % xap xi ham va ham so truyen options = optimset('Largescale','off'); fun=@(p)(p(1)+p(2)*exp(p(3)*T)-Y); p = lsqnonlin(fun,p0,[],[],options) YY=p(1)+p(2)*exp(p(3)*T); plot(T,YY,'r+') numtf=-p(1)*p(3); dentf=[1 p(3)]; sys=tf(numtf,dentf) hold off Code Matlab xác định hàm số truyền bậc G(S) k Sa Step Response Transfer function: 2.5 15 Amplitude s–5 1.5 0.5 0 0.2 0.4 0.6 0.8 1.2 Time (sec) (a) (b) Hình (a) Đồ thị đáp ứng bước, (liền nét): Đáp ứng bước đối tượng giả lặp, (+): Đáp ứng bước Matlab xấp xỉ hàm; (b) Hàm số truyền xác định Kết MatLab hình 2a) cho thấy đáp ứng bước Matlab xấp xỉ hàm hoàn toàn trùng khớp với đáp ứng bước đối tượng giả lặp ban đầu Hình 2b) cho thấy biểu thức hàm truyền xác định hoàn toàn trùng khớp với hàm truyền giả định ban đầu 2.2 Hàm số truyền bậc hai dạng: G( S ) Hình Đáp ứng bước hàm truyền bậc hai, đường cong có điểm uốn gần vị trí xuất phát 95 k ( S a )( S b) Nguyễn Văn Sơn Xác định hàm số truyền Hình Đáp ứng bước hàm truyền bậc hai tổng hợp hai đường e mũ G( S ) k ( S a )( S b) (8) Dùng Matlab để xấp xỉ đáp ứng bước dạng biểu thức (9): vo (t) A BeC.t DeE.t A B D Lấy biến đổi Laplace (9), ta được: Vo (S) S SC SE Tín hiệu lối vào hàm bước: vi (t) V.1(t) V Biến đổi Laplace (11), ta được: VI (S) S (9) (10) (11) (12) Hàm truyền H(S): G(S) Vo (S) S2 (A B D) S(AE AC BE DC) ACE VI (S) V(S C)(S E) Đồng (8) (13) ta được: (13) k ACE / V a C b E Biết hệ số A, B, C, D, E ta biết hàm truyền bậc hai num=10; % gia lap so lieu dap ung buoc den=conv([1 5],[1 12]); step(num,den) sys=tf(num,den); [Y,T,X]=step(sys); Y=Y'; T=T'; hold on pause p0=[1 -30 -40]'; % xap xi ham va ham so truyen options = optimset('Largescale','off'); fun=@(p)(p(1)+p(2)*exp(p(3)*T)+p(4)*exp(p(5)*T)-Y); p = lsqnonlin(fun,p0,[],[],options) YY=p(1)+p(2)*exp(p(3)*T)+p(4)*exp(p(5)*T); plot(T,YY,'r+') numtf=p(1)*p(3)*p(5); dentf=conv([1 -p(3)],[1 -p(5)]); sys=tf(numtf,dentf) hold off 96 (14) Tạp chí Khoa học Đại học Thủ Dầu Một Số 2(41)-2019 Code Matlab xác định hàm số truyền bậc hai G( S ) k ( S a )( S b) Step Response 0.18 0.16 Transfer function: 0.14 10 Amplitude 0.12 - 0.1 s^2 + 17 s + 60 0.08 0.06 0.04 0.02 0 0.2 0.4 0.6 0.8 1.2 Time (sec) a) b) Hình Kết Matlab hàm truyền bậc hai 2.3 Hàm số truyền dạng: G ( s ) V0 ( s) G( s)VI ( s) vo (t ) ke at p1e p2t ks sa ks VI ( s) ( s a) k (s a) ps G( s) s p2 V0 ( s ) k p1 , a p2 num=10*[1 0]; % gia lap so lieu dap ung buoc den=[1 5]; step(num,den) sys=tf(num,den); [Y,T,X]=step(sys); Y=Y'; T=T'; hold on pause p0=[1 -1]'; % xap xi ham va ham so truyen options = optimset('Largescale','off'); fun=@(p)(p(1)*exp(p(2)*T)-Y); p = lsqnonlin(fun,p0,[],[],options) YY=p(1)*exp(-p(2)*T); plot(T,YY,'r+') numtf=p(1)*[1 0]; dentf=[1 -p(2)]; sys=tf(numtf,dentf) hold off 97 Nguyễn Văn Sơn Xác định hàm số truyền Code Matlab xác định hàm số truyền dạng G ( s ) ks sa Step Response 10 Transfer function: 10 s Amplitude - s+5 0 0.2 0.4 0.6 0.8 1.2 Time (sec) Hình Kết Matlab hàm truyền G ( s ) 2.4 Hàm số truyền dạng: G ( s ) V0 ( s) G( s)VI ( s) ks sa ks ( s a )( s b) ks VI ( s) ( s a )( s b) Với hàm lối vào hàm bước đơn vị, ta có: V0 ( s) k k k 1 e at ebt p1 (e p2t e p3t ) ; vo (t ) ba ( s a )( s b) b a s a s b a p2 , b p3 , k p1 ( p2 p3 ) Vậy hàm số truyền có biểu thức là: G( s) p1 ( p2 p3 ) ( s p2 )( s p3 ) num=23*[1 0]; % gia lap so lieu dap ung buoc den=conv([1 2],[1 4]); step(num,den) sys=tf(num,den); [Y,T,X]=step(sys); Y=Y'; T=T'; hold on pause p0=[1 1]'; % xap xi ham va ham so truyen options = optimset('Largescale','off'); fun=@(p)(p(1)*(exp(-p(2)*T)- exp(-p(3)*T))-Y); p = lsqnonlin(fun,p0,[],[],options) YY=p(1)*(exp(-p(2)*T)- exp(-p(3)*T)); plot(T,YY,'r+') numtf=p(1)*(p(2)-p(3))*[1 0]; 98 Tạp chí Khoa học Đại học Thủ Dầu Một Số 2(41)-2019 dentf=conv([1 -p(2)],[1 -p(3)]); sys=tf(numtf,dentf) hold off Code Matlab xác định hàm số truyền dạng G( s ) ks ( s a )( s b) Step Response 2.5 Transfer function: 23 s Amplitude - 1.5 s^2 + s + 0.5 0 0.5 1.5 2.5 3.5 Time (sec) ks ( s a )( s b) ks a 2.5 Hàm số truyền dạng (mẫu bậc hai, tử bậc một): G ( s ) ( s b)( s c) ks a V0 ( s) G( s)VI ( s) ( s b)( s c) s a k p1 p3 p b , p a ck p a Đặt V0 ( s ) ; Với: p1 bc c ( c b) cb ( s p2 ) ( s p4 ) s Hình Kết Matlab hàm truyền G ( s ) v0 (t ) p1e p2t p3e p4t p5 ; k p5 p4 p5 p2 p1 p4 p3 p2 , a p2 p4 p5 G( s) s p5 p4 p5 p2 p1 p4 p3 p2 p2 p4 p5 ( s p2 )( s p4 ) num=[5 2];% gia lap so lieu dap ung buoc den=conv([1 3],[1 4]); step(num,den) sys=tf(num,den); [Y,T,X]=step(sys); Y=Y'; T=T'; hold on pause p0=[1 1 1]'; % xap xi ham va ham so truyen options = optimset('Largescale','off'); fun=@(p)(p(1)*exp(-p(2)*T)+ p(3)*exp(-p(4)*T) +p(5)-Y); p = lsqnonlin(fun,p0,[],[],options); YY=p(1)*exp(-p(2)*T)+ p(3)*exp(-p(4)*T)+p(5); plot(T,YY,'r+') numtf=[p(5)*p(4)+p(5)*p(2)+p(1)*p(4)+p(3)*p(2) p(5)*p(2)*p(4)]; 99 Nguyễn Văn Sơn Xác định hàm số truyền dentf=conv([1 p(2)],[1 p(4)]); sys=tf(numtf,dentf) hold off Code Matlab xác định hàm số truyền dạng G( s ) ks a ( s b)( s c) Step Response 0.7 0.6 Transfer function: 5s+2 Amplitude 0.5 0.4 0.3 s^2 + s + 12 0.2 0.1 0 0.5 1.5 2.5 3.5 Time (sec) Hình Kết Matlab hàm truyền G ( s ) 2.6 Hàm số truyền bậc với cực phức G ( s ) ks a ( s b)( s c) n s 2n s n n tần số dao động tự nhiên, hệ số đệm t Đáp ứng bước đơn vị: v0 (t ) e n sin(n t ) , với p2t Đặt v0 (t ) p1e sin( p3t p4 ) , hệ số p1 , p2 , p3 , p4 dùng Matlab để xác định n p1 p3 , n p2 , n p3 Vậy hàm số truyền là: p1 p3 G( s) 2 s sp2 p1 p3 den=[1 100];% gia lap so lieu dap ung buoc step(num,den) sys=tf(num,den); [Y,T,X]=step(sys); Y=Y'; T=T'; hold on pause p0=[-1 1 1]'; % xap xi ham va ham so truyen options = optimset('Largescale','off'); fun=@(p)(1+p(1)*exp(-p(2)*T).*sin(p(3)*T+p(4))-Y); p = lsqnonlin(fun,p0,[],[],options); YY=1+p(1)*exp(-p(2)*T).*sin(p(3)*T+p(4)); plot(T,YY,'r+') numtf=(p(1)*p(3))^2; 100 Tạp chí Khoa học Đại học Thủ Dầu Một Số 2(41)-2019 dentf=[1 2*p(2) (p(1)*p(3))^2]; sys=tf(numtf,dentf) hold off Code Matlab xác định hàm số truyền dạng G ( s ) n s 2n s n Step Response 1.4 1.2 Transfer function: Amplitude 100 0.8 - 0.6 s^2 + s + 100 0.4 0.2 0 0.5 1.5 Time (sec) Hình Kết Matlab hàm truyền bậc hai cực phức 2.7 Hàm số truyền dạng: G( s ) A có hai cực phức s Bs C Ta đồng dạng: G( s) an2 t , đáp ứng bước đơn vị: v0 (t ) a e n sin(n t ) 2 s 2n s n Ta dùng Matlab xấp xỉ v0 (t ) dạng: v0 (t ) p1 p2e p3t sin( p4t p5 ) Do hàm số tuyền là: p2 p4 / p1 G( s) 2 s p3 p2 p4 / p1 num=80;% gia lap so lieu dap ung buoc den=[1 100]; step(num,den) sys=tf(num,den); [Y,T,X]=step(sys); Y=Y'; T=T'; hold on pause p0=[1 -1 1 1]'; % xap xi ham va ham so truyen options = optimset('Largescale','off'); fun=@(p)(p(1)+p(2)*exp(-p(3)*T).*sin(p(4)*T+p(5))-Y); p = lsqnonlin(fun,p0,[],[],options); 101 Nguyễn Văn Sơn Xác định hàm số truyền YY=p(1)+p(2)*exp(-p(3)*T).*sin(p(4)*T+p(5)); plot(T,YY,'r+') numtf=((p(2)*p(4))^2)/p(1); dentf=[1 2*p(3) (p(2)*p(4)/p(1))^2]; sys=tf(numtf,dentf) hold off Code Matlab xác định hàm số truyền dạng G( s ) A s Bs C Step Response 1.4 1.2 Amplitude Transfer function: 0.8 80 0.6 0.4 s^2 + s + 100 0.2 0 0.5 1.5 Time (sec) Hình 10 Kết Matlab hàm truyền G( s ) A s Bs C 2.8 Một khảo sát thực tế: Sau ví dụ xác định hàm số truyền máy phát điện chạy không tải, vận tốc quay máy phát cố định tương ứng với tần số 50Hz, điện áp bước cấp vào cuộn dây kích từ máy phát, số liệu đáp ứng bước thu thập thiết bị tự chế tạo, có giao diện điều khiển hình dạng đáp ứng bước hình 11 Hình 11 Đáp ứng bước máy phát điện thu thập liệu thiết bị tự chế tạo Từ đồ thị đáp ứng bước, ta xác định hàm số truyền có dạng bậc hai có điểm uốn gần gốc tọa độ Số liệu đáp ứng bước lưu thành file data.m thư mục MatLab Chạy file script bên Matlab cho kết hình 12 102 Tạp chí Khoa học Đại học Thủ Dầu Một Số 2(41)-2019 data; T=Time*0.001; p0=[1 -30 -40]'; options = optimset('Largescale','off'); fun=@(p)(p(1)+p(2)*exp(p(3)*T)+p(4)*exp(p(5)*T)-Response); p = lsqnonlin(fun,p0,[],[],options) YY=p(1)+p(2)*exp(p(3)*T)+p(4)*exp(p(5)*T); plot(Time,Response,'+r',T,YY,'b') numtf=p(1)*p(3)*p(5); dentf=conv([1 -p(3)],[1 -p(5)]); sys=tf(numtf,dentf) hold off Code Matlab xác định hàm số truyền khảo sát thực tế 3.5 Transfer function: 2.5 65.82 1.5 - s^2 + 8.696 s + 18.72 0.5 -0.5 0.5 1.5 (12a) (12b) Hình 12 a) (đường +): Đáp ứng bước từ số liệu thu thập, (đường liền nét): Đồ thị hàm Matlab xấp xỉ số liệu b) Kết MatLab xác định hàm số truyền 3.Kết luận Qua khảo sát với số liệu giả lặp ta xác định hàm số truyền hồn tồn xác với hàm số truyền giả định ban đầu, sai số xác định hàm số truyền phương pháp đáp ứng bước có là: Sai số thu thập liệu đáp ứng bước nhận định trực quan khơng xác dạng hàm số truyền, xác định hàm số truyền cơng việc người có chun mơn sâu TÀI LIỆU THAM KHẢO [1] Andrei, Neculai (2005) Modern Control Theory – A historical Perspective [2] Goodwin, Graham (2001) Control System Design, Prentice Hall, ISBN 0-13-958653-9 [3] http:// www.factstaff.bucknell.edu/mastascu/econtrolhtml/Ident/Ident1.html [4] https://www.mathworks.com/help/signal/ref/tfestimate.html [5] Robert F Stengel (1994) Optimal Control and Estimation, Dover Publication, ISBN 0-48668200-5, ISBN 978-0-486-68200-6 103 ... - Xác định hàm số truyền Xác định trực quan dạng hàm số truyền từ đồ thị đáp ứng bước Dùng Matlab xấp xỉ hàm đáp ứng bước Từ hàm xấp xỉ đáp ứng bước xác định hàm số truyền Thu thập liệu đáp ứng. .. hàm Matlab xấp xỉ số liệu b) Kết MatLab xác định hàm số truyền 3.Kết luận Qua khảo sát với số liệu giả lặp ta xác định hàm số truyền hoàn toàn xác với hàm số truyền giả định ban đầu, sai số xác. .. ban đầu, sai số xác định hàm số truyền phương pháp đáp ứng bước có là: Sai số thu thập liệu đáp ứng bước nhận định trực quan khơng xác dạng hàm số truyền, xác định hàm số truyền cơng việc người