Luận án Nghiên cứu tổng hợpđiều khiểnhệ thống truyền động bám cho các đối tượng chuyển động chậm
Hệ thống truyền động bám công nghiệp và khí tài quân sự được sử dụng
trong các hệ thống kỹ thuật cao như: hệ thống bánh lái tàu thuỷ, hệ thống
pháo tàu, hệ thống điều khiển khí cụ bay, hệ truyền động của máy đo xa Laze,
tay máy công nghiệp và máy cắt gọt kim loại CNC. Hệ thống truyền động
bám thường sử dụng động cơ có đặc tính mô men tốt như động cơ BLDC,
động cơ PMSM với hai dạng (surface-mounted PMSM là SPMSM) và
(interior PMSM là IPMSM). Động cơ này đang có ưu thế nổi bật về tính linh
hoạt, khả năng điều khiển mô men, tốc độ với độ chính xác cao, hiệu suất tốt,
giảm chi phí vận hành, đáp ứng được yêu cầu về mô men điều khiển, điện áp,
tốc độ, hiệu suất, độ chính xác, độ ổn định và độ cứng đặc tính cơ cho HTB
điện cơ [13], [40], [41], [45]
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu tổng hợpđiều khiểnhệ thống truyền động bám cho các đối tượng chuyển động chậm
BỘ GIÁO DỤC ĐÀO TẠO BỘ QUỐC PHÒNG HỌC VIỆN KỸ THUẬT QUÂN SỰ TRẦN ĐỨC CHUYỂN NGHIÊN CỨU TỔNG HỢP ĐIỀU KHIỂN HỆ THỐNG TRUYỀN ĐỘNG BÁM CHO CÁC ĐỐI TƯỢNG CHUYỂN ĐỘNG CHẬM LUẬN ÁN TIẾN SỸ KỸ THUẬT HÀ NỘI - NĂM 2016 BỘ GIÁO DỤC ĐÀO TẠO BỘ QUỐC PHÒNG HỌC VIỆN KỸ THUẬT QUÂN SỰ TRẦN ĐỨC CHUYỂN NGHIÊN CỨU TỔNG HỢP ĐIỀU KHIỂN HỆ THỐNG TRUYỀN ĐỘNG BÁM CHO CÁC ĐỐI TƯỢNG CHUYỂN ĐỘNG CHẬM Chuyên ngành: Kỹ thuật Điều khiển và Tự động hóa Mã số: 62.52.02.16 LUẬN ÁN TIẾN SỸ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC: 1. PGS. TS ĐÀO HOA VIỆT 2. TS NGUYỄN THANH TIÊN HÀ NỘI - NĂM 2016 i LỜI CAM ĐOAN Tôi cam đoan đây là công trình nghiên cứu của tôi dưới sự hướng dẫn của PGS. TS Đào Hoa Việt và TS. Nguyễn Thanh Tiên. Các số liệu, kết quả nêu trong luận án là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào. Tác giả Trần Đức Chuyển ii LỜI CẢM ƠN Trước hết, tôi xin bày tỏ lòng biết ơn chân thành đến thầy giáo hướng dẫn khoa học, PGS.TS Đào Hoa Việt và TS Nguyễn Thanh Tiên, đã hướng dẫn, vạch ra những nội dung cần giải quyết, sau đó kiểm tra kết quả nghiên cứu, giúp đỡ và khuyến khích tôi hoàn thành luận án này. Tôi cũng xin chân thành cảm ơn các nhà khoa học và tập thể cán bộ giáo viên Bộ môn Kỹ thuật điện / Khoa Kỹ thuật điều khiển đã quan tâm đóng góp ý kiến giúp tôi hoàn thiện nội dung nghiên cứu. Tôi chân thành cảm ơn các đồng nghiệp trong Khoa Điện / Trường ĐH Kinh tế Kỹ thuật Công nghiệp / Bộ Công Thương, đã tạo điều kiện giúp đỡ về mặt khối lượng công việc để tôi có thời gian tập trung thực hiện luận án. Cuối cùng, tôi xin chân thành cảm ơn gia đình, bạn bè và đồng nghiệp đã luôn thông cảm, động viên, khuyến khích giúp tôi có thêm nghị lực để hoàn thành nội dung luận án. iii MỤC LỤC Trang LỜI CAM ĐOAN ........................................................................................... i LỜI CẢM ƠN ................................................................................................ ii MỤC LỤC .................................................................................................... iii DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU..................................... vi DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ ........................................................ xi MỞ ĐẦU ....................................................................................................... 1 Chương 1. TỔNG QUAN VỀ HỆ THỐNG TRUYỀN ĐỘNG BÁM LÀM VIỆC Ở CHẾ ĐỘ CHẬM .............................................................................. 5 1.1. Khái quát về một số hệ thống truyền động bám cho các đối tượng có chế độ chuyển động chậm..................................................................................... 5 1.1.1. Khái quát chung về hệ truyền động bám ......................................... 5 1.1.2. Chế độ chậm trong một số hệ thống truyền động bám phức tạp ..... 6 1.2. Xây dựng mô hình hệ truyền động bám làm việc ở chế độ chậm ............. 9 1.2.1. Xây dựng mô hình phần cơ hệ thống truyền động........................... 9 1.2.2. Mô hình động học đối tượng điều khiển phi tuyến với động cơ chấp hành xoay chiều đồng bộ kích từ nam châm vĩnh cửu .................................. 19 1.3. Mô hình hệ truyền động bám làm việc ở chế độ chậm và những yếu tố ảnh hưởng .................................................................................................... 21 1.4. Những nghiên cứu trong nước và ngoài nước ........................................ 27 1.5. Đặt vấn đề nghiên cứu ........................................................................... 30 1.6. Kết luận chương ................................................................................... 32 Chương 2. CƠ SỞ TỔNG HỢP ĐIỀU KHIỂN BACKSTEPPING TRƯỢT THÍCH NGHI CHO HỆ THỐNG TRUYỀN ĐỘNG BÁM PHI TUYẾN.. .. 34 2.1. Xây dựng phương pháp tổng hợp bộ quan sát trượt mô men cản ........... 34 2.1.1. Phương pháp Backstepping trượt (Backstepping - Sliding mode) .... 34 iv 2.1.2. Tổng hợp bộ quan sát trượt ............................................................ 38 2.1.3. Bộ quan sát trạng thái trong chế độ trượt đánh giá thành phần không xác định........................................................................................................ 43 2.2. Phương pháp Backstepping trượt thích nghi cho hệ thống bám phi tuyến.. 45 2.3. Kết luận chương ................................................................................... 61 Chương 3. NGHIÊN CỨU TỔNG HỢP BỘ ĐIỀU KHIỂN HỆ THỐNG BÁM PHI TUYẾN ĐỘNG CƠ IPMSM LÀM VIỆC Ở CHẾ ĐỘ CHẬM ... 63 3.1. Tổng hợp vòng điều khiển tốc độ backstepping trượt thích nghi cho hệ truyền động bám làm việc ở chế độ chậm sử dụng động cơ IPMSM ............ 63 3.1.1. Xây dựng thuật toán tổng hợp điều khiển backstepping trượt thích nghi cho vòng điều khiển tốc độ................................................................... 64 3.1.2. Thiết kế bộ quan sát mô men cản.................................................. 71 3.2. Xây dựng hệ kín cho hệ thống bám theo vòng vị trí sử dụng động cơ IPMSM trên cơ sở bộ điều khiển backstepping trượt thích nghi ................... 73 3.3. Kết luận chương ................................................................................... 78 Chương 4. MÔ PHỎNG VÀ THỰC NGHIỆM ĐÁNH GIÁ CHẤT LƯỢNG ĐIỀU KHIỂN BACKSTEPPING TRƯỢT THÍCH NGHI HỆ THỐNG TRUYỀN ĐỘNG BÁM LÀM VIỆC Ở CHẾ ĐỘ CHẬM............................ 79 4.1. Mô phỏng hệ thống truyền động bám phi tuyến với BĐK tốc độ trên cơ sở phương pháp backstepping trượt thích nghi sử dụng động cơ IPMSM .... 80 4.2. Mô phỏng hệ thống truyền động bám phi tuyến với BĐK vị trí trên cơ sở phương pháp backstepping trượt thích nghi sử dụng động cơ IPMSM ......... 90 4.2.1. Nghiên cứu mô phỏng hệ thống truyền động bám vị trí trên cơ sở phương pháp backstepping trượt thích nghi với bộ điều khiển PI ................. 90 4.2.2. Nghiên cứu mô phỏng hệ thống truyền động bám vị trí trên cơ sở phương pháp backstepping trượt thích nghi với bộ điều khiển PID ........... 100 4.3. Khảo xát đánh giá trên mô hình thực nghiệm với động cơ IPMSM ..... 104 v 4.3.1. Xây dựng mô hình thực nghiệm.................................................. 104 4.3.2. Các kết quả thực nghiệm............................................................. 106 4.4. Kết luận chương ................................................................................. 110 KẾT LUẬN CHUNG................................................................................. 111 DANH MỤC CÔNG TRÌNH CỦA TÁC GIẢ .......................................... 114 TÀI LIỆU THAM KHẢO .......................................................................... 116 PHỤ LỤC .................................................................................................. 127 Phụ lục 1: Nghiên cứu mô phỏng, phân tích ảnh hưởng yếu tố phi tuyến và thông số biến thiên đến sự làm việc của HTB ở chế độ chậm với bộ điều khiển kinh điển PID.................................................................................... 127 Phụ lục 2: Các sơ đồ mô phỏng trong Matlab - Simulink ........................... 130 Phụ lục 3: Các tham số mô phỏng và code chương trình lập trình trong Matlab Simulink cho BĐK backstepping trượt thích nghi ...................................... 135 Phụ lục 4: Code chương trình lập trình cho DSP TMS320F28069.............. 137 vi DANH MỤC CÁC CHỮ VIẾT TẮT VÀ CÁC KÝ HIỆU 1. Chữ viết tắt Ý Nghĩa TĐĐ Truyền động điện HTB Hệ thống truyền động bám CNC Computer Numerical Control: Máy gia công CNC BLDC Brusless DC motor: động cơ một chiều không chổi than IPMSM Interior Permanent Magnet Synchronous Motor: Động cơ đồng bộ kích từ nam châm vĩnh cửu (có Ld khác Lq) HTĐK Hệ thống điều khiển LabVIEW Laboratory Virtual Instrusment Engineering Workbench DAQ Data Acqusition: phần cứng thu thập dữ liệu và điều khiển NI National Instrument VSC Variable Structure Control: bộ điều khiển có cấu trúc biến đổi SVM Space vector modulation: mô hình không gian véc tơ DSP digital signal processing: bộ xử lý tín hiệu số DLL Dynamic Link Library: Thư viện liên kết động P Bộ điểu khiển tỷ lệ PI Bộ điểu khiển tỷ lệ, tích phân PD Bộ điểu khiển tỷ lệ, đạo hàm PID Bộ điểu khiển tỷ lệ, tích phân và đạo hàm DI đạo hàm và tích phân PWM Bộ điều chế độ rộng xung PC Personal computer: máy tính cá nhân PLD Programmable Logic Devices: Vi mạch logic lập trình được ASIC Application Specific Intergrated Circuits: các mạch tích hợp ứng dụng riêng vii Osc Oscilloscope: máy hiện sóng KĐCS Khuếch đại công suất QTQĐ Quá trình quá độ LF Hàm Lyapunov (Lyapunov Function) CLF Hàm điều khiển Lyapunov (Control Lyapunov Function) ĐTTSLG Đặc tính tần số logarit BĐK Bộ điều khiển 2. Ký hiệu Ý nghĩa ; ; ; L dh dc c M M M M Mô men tải, mô men đàn hồi, mô men động cơ, mô men cản [Nm] ( )BM t Mô men nhiễu [Nm] 1 W ( )s Hàm truyền đạt của khối lượng thứ nhất 2 W ( )s Hàm truyền đạt của khối lượng thứ hai 1 ( )A Đặc tính biên độ tần số pha J1 Mô men quán tính của truyền động chấp hành [kgm2] J2 Mô men quán tính còn lại của đối tượng bộ truyền cơ và tải [kgm2] J Mô men quán tính tổng cộng [kgm2] C Hệ số đàn hồi [Nm/rad] hdF Lực đàn hồi [N] n Tốc độ (vòng/phút) 1 và 2 Vận tốc góc của động cơ và vận tốc góc trên tải [rad/s] ' 1 ;... ' ';n j Véc tơ hồi quy ;d r Góc [rad] sgn; sign Hàm dấu q Biến dạng góc viii S Biến dạng dài i Hàm phi tuyến ,s rL L Điện cảm stato và rô to [H] ,d qL L Điện kháng trục-d, điện kháng trục-q của động cơ điện [H] ,s rR R Điện trở stato và rô to động cơ điện [ ] ,sd sqi i Dòng điện tọa độ trục d, dòng điện trục q [A] ,sd squ u Các thành phần của véc tơ điện áp stato trên hệ trục tọa độ dq m Từ thông liên kết , Các độ khuếch đại thích nghi i Tỷ số truyền hộp đổi tốc Tham số hằng chưa biết BL Góc độ rộng khe hở [rad], (backlash angle). F Thành phần ước tính xấp xỉ bằng luật thích nghi i Sai số đánh giá ry Tín hiệu tham số chuẩn [rad] ,i j Hàm hiệu chỉnh iz Sai số hiệu chỉnh X Véc tơ trạng thái của hệ thống Y Véc tơ đầu ra của hệ thống A Ma trận hệ thống B Ma trận đầu vào V Hàm Lyapunov iV Hàm Lyapunov thứ i ix Trạng thái thứ i của hệ thống điều khiển , ,ic Các hằng số dương ix i Điều khiển ảo i Đại lượng hiệu chỉnh bộ quan sát i Sai số bộ quan sát Ma trận có kích cỡ thích hợp Q Ma trận đối xứng R Tập các số thực R+ Tập các số thực dương C Tập các số phức T Hằng số thời gian của một khâu T Hằng số thời gian của cả vòng điều chỉnh tốc độ 3. Chỉ số trên Ý nghĩa 0 Độ 1T Chuyển vị Đánh giá 4. Chỉ số dưới Ý nghĩa i Số nguyên dh Đàn hồi xn Xoắn dc Động cơ max Cực đại min Cực tiểu Tổng ,d dat Đặt trước ms; masat Ma sát sd;sq tọa độ trục d, tọa độ trục q x DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ STT Tên hình vẽ, đồ thị Trang 1 Hình 1.1. Sơ đồ khối HTB pháo AK230 trên tàu hải quân 7 2 Hình 1.2. Mô hình động học pháo tàu với mục tiêu di động (máy bay) 8 3 Hình 1.3. Sơ đồ động học thể hiện mối quan hệ các phần tử trong phần cơ 9 4 Hình 1.4. Mô hình hai khối lượng có liên hệ đàn hồi 10 5 Hinh 1.5. Sơ đồ cấu trúc hệ thống hai khối lượng có liên hệ đàn hồi 11 6 Hình 1.6 a, b. Biến đổi sơ đồ cấu trúc từ hình 1.5 11 7 Hình 1.7. Sơ đồ cấu trúc phần cơ hệ truyền động 13 8 Hình 1.8 a), b). Kết quả khảo sát mô phỏng ĐTTSLG của hệ thống 2 khối lượng có liên hệ đàn hồi trên Matlab - Simulink 14 9 Hình 1.9. Mô hình mô men ma sát phụ thuộc vào tốc độ 18 10 Hình 1.10. Mô hình điều khiển động cơ IPMSM 19 11 Hình 1.11. Sơ đồ khối hệ thống truyền động bám vị trí 21 12 Hình 1.12. a), b) Đặc tính mô men cản của HTB làm việc ở chế độ chậm 22 13 Hình 2.1. Sơ đồ cấu trúc bộ quan sát trên cơ sở các bước quan sát 41 14 Hình 2.2. Sơ đồ bộ quan sát trên cơ sở phương pháp phân chia chuyển động 42 15 Hình 2.3. Sơ đồ khối hệ thống Backstepping trượt thích nghi 45 16 Hình 2.4. Hệ thống có dạng phản hồi thuần túy 46 17 Hình 3.1. Hệ thống tính toán bộ điều khiển backstepping trượt 70 xi thích nghi 18 Hình 3.2. Sơ đồ khối bộ quan sát mô men tải 71 19 Hình 3.3. Sơ đồ khối cấu trúc hệ thống bám 72 20 Hình 3.4. Sơ đồ khối hệ thống truyền động bám điện cơ làm việc ở chế độ chậm sử dụng động cơ IPMSM 73 21 Hình 3.5. a), b) Biến đổi sơ đồ cấu trúc bộ điều khiển vị trí 75 22 Hình 4.1. Sơ đồ mô phỏng sự phụ thuộc của mô men ma sát vào tốc độ 79 23 Hình 4.2. Đặc tính mô men ma sát theo tốc độ 80 24 Hình 4.3. Mô hình mô phỏng bộ điều khiển backstepping trượt thích nghi hệ truyền động phi tuyến có kể đến phần cơ của cơ cấu công tác 81 25 Hình 4.4. Mô hình mô phỏng bộ điều khiển backstepping trượt thích nghi hệ truyền động phi tuyến trên Matlab- Simulink 81 26 Hình 4.5. a) Tốc độ đặt d và tốc độ thực của động cơ, b) tốc độ đặt d và tốc độ thực của cơ cấu công tác trường hợp 1 82 27 Hình 4.6. a) sai số bám sát theo tốc độ và b) ˆ;L LM M ở trường hợp 1 82 28 Hình 4.7. Đáp ứng dòng điện: a) isq, b) isd ở trường hợp 1 83 29 Hình 4.8. a) Tốc độ đặt d và tốc độ thực của động cơ, b) mô men đặt LM và mô men ước lượng ˆ LM trường hợp 2 83 30 Hình 4.9. Sai số bám sát theo tốc độ trường hợp 2 84 31 Hình 4.10. Đáp ứng dòng điện: a) isq, b) isd trường hợp 2 84 32 Hình 4.11. a) Tốc độ đặt d và tốc độ thực của động cơ, b) 85 xii mô men đặt LM và mô men ước lượng ˆ LM trường hợp 3 33 Hình 4.12. Sai số bám sát theo tốc độ trường hợp 3 85 34 Hình 4.13. Đáp ứng dòng điện: a) isq, b) isd trường hợp 3 86 35 Hình 4.14. a) Tốc độ đặt d và tốc độ thực của động cơ, b) mô men đặt LM và mô men ước lượng ˆ LM trường hợp 4 86 36 Hình 4.15. Sai số bám sát theo tốc độ trường hợp 4 86 37 Hình 4.16. Đáp ứng dòng điện: a) isq, b) isd trường hợp 4 87 38 Hình 4.17. a) Tốc độ đặt d và tốc độ thực của động cơ, b) mô men đặt LM và mô men ước lượng ˆ LM trường hợp 5 87 39 Hình 4.18. Sai số bám sát theo tốc độ trường hợp 5 88 40 Hình 4.19. Đáp ứng dòng điện: a) isq, b) isd trường hợp 5 88 41 Hình 4.20. Sơ đồ mô phỏng hệ truyền động bám phi tuyến với BĐK vị trí có tính đến yếu tố phi tuyến mô men ma sát và đàn hồi sử dụng khâu PI 89 42 Hình 4.21. Sơ đồ mô phỏng thực nghiệm nhận dạng khâu bậc hai 90 43 Hình 4.22. Xây dựng đặc tính vào ra theo tốc độ 90 44 Hình 4.23. Đáp ứng vào ra BĐK vị trí: a) theo góc, b) bộ quan sát mô men tải ˆ;L LM M trường hợp 1 92 45 Hình 4.24. Sai số bám sát theo góc trường hợp 1 93 46 Hình 4.25. Thành phần dòng điện BĐK vị trí: a) isd, b) isq trong trường hợp 1 93 47 Hình 4.26. Đáp ứng vào ra BĐK vị trí: a) theo góc, b) bộ quan sát mô men tải ˆ;L LM M trường hợp 2 94 48 Hình 4.27. Sai số bám sát theo gó ... }}'); legend('\it\color{black} d_1','\it\color{red} d_1','Location',[.80 .45 0.07 0.02],'Orientation','Vertical'); set(legend, 'Box', 'off'); subplot(125); plot(t,iqs-0.1,'LineWidth',2.5); grid on; set(gca,'Fontname','Arial','Fontsize',20,'LineWidth',3,'FontWeight','bold '); axis([0.4 0.8 -2 3]); xlabel('Time(sec)'); ylabel('{i_{qs}}(A)'); %ylabel('{i_{a}}(A)'); subplot(126); plot(t,idsd,'k:',t,ids,'r','lineWidth',2.5); grid on; %plot(t,ids,'r-',t,iqs,'k:','lineWidth',2.5); set(gca,'Fontname','Arial','Fontsize',20,'LineWidth',3,'FontWeight','bold '); {i_{d}}','Color','r','FontWeight','bold','Fontsize',20); % text(0.5,-5, 'Dashed : {i_{dsd}}','Color','b','FontWeight','bold','Fontsize',20); axis([0.4 0.8 -3 3]); %axis([0 1 -20 3]); xlabel('Time(sec)'); ylabel('i_{ds}(A)'); legend('\it\color{black} i_{dsd}','\it\color{red} i_{ds}','Location',[.80 .25 0.07 0.02],'Orientation','Vertical'); set(legend, 'Box', 'off'); 3.3. Chương trình lập trình code trên S_funtion: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [sys,x0,str,ts] = sch_chuongtrinh(t,x,u,flag) switch flag case 0, [sys,x0,str,ts] = mdlInitializeSizes; case 3, sys = mdlOutputs(t,x,u); case {1,2,4,9} sys = []; otherwise error(['unhandled flag = ',num2str(flag)]); end sizes.NumInputs = 2;% vsq,vsd 137 sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = [];% Khoi tao bien trang thai str = []; ts = [-1 0]; function sys = mdlOutputs(t,x,u) Vdc = 110; va = 2*Vdc/3; vb = va; ts = 1/5e3; a = abs(u(1))+abs(u(2))/sqrt(3); b = abs(u(1))-abs(u(2))/sqrt(3); c = 2*abs(u(2))/sqrt(3); % for case us_alpha <0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if u(2) <0 if u(1)<0 if b <0 s = 5; vr = a; vl = -b; : s = 4; vr = b; vl = c; end else if b < 0 s = 5; vr = -b; vl = a; else s = 6; vr = c; vl = b; end end else if u(1) <0 if b<0 s = 2; vr = -b; vl = a; else s = 3; vr = c; vl = b; end else if b<0 s = 2; vr = a; vl = -b; else s = 1; vr = b; vl = c; end end 138 end ta = vr*ts/va; tb = vl*ts/vb; t0 = ts-ta-tb; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if t0 <0 ta = ta*ts/(tb+ta); tb = tb*ts/(tb+ta); t0 = 0; end y = [ta;tb;t0;s]; sys = y; end end end Phụ lục 4: Code chương trình lập trình cho DSP TMS320F28069 4.1. Chương trình code phần PWM ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////* PwmSv.cc *//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include "Inc.h" #define DC_VOLT 310 #define DC_EFF DC_VOLT * 0.606 * 0.7 #define PHASE_0 0 #define PHASE_120 2.094 #define PHASE_240 4.189 #define BASE_FREQ 2 #define PI 3.141592 #define STEP_ANGLE (BASE_FREQ * 2 * PI) / (PWM_FREQ * xx00) Float fSinA,fSinB,fSinC; Float fTmpData, fTmp; Float fStepAngle; 139 _iq qStepAngle; _iq qThetaA; _iq qThetaB; _iq qThetaC; _iq qVan; _iq qVbn; _iq qVcn; Float fVan,fVbn,fVcn; Float fTa,fTb,fTc; Float fFreq,fVdc; pwmSvInfoType pwmSvInfo; void pwmSvInit(void) { pwmSvInfo.fVm = DC_VOLT; pwmSvInfo.fVdcEff = DC_EFF; pwmSvInfo.fThetaA = PHASE_0; pwmSvInfo.fThetaB = PHASE_120; pwmSvInfo.fThetaC = PHASE_240; qThetaA = _IQ(PHASE_0); qThetaB = _IQ(PHASE_120); qThetaC = _IQ(PHASE_240); } void pwmSvUpdate(pwmSvInfoType *p) 140 { fFreq = _IQtoF(p->Freq); fVdc = _IQtoF(p->Vdc); qStepAngle = _IQmpy(_IQ(STEP_ANGLE),p->Freq); if(qThetaA >= _IQ(2*PI)) qThetaA = 0; else qThetaA += qStepAngle; if(qThetaB >= _IQ(2*PI)) qThetaB = 0; else qThetaB += qStepAngle; if(qThetaC >= _IQ(2*PI)) qThetaC = 0; else qThetaC += qStepAngle; fSinA = _IQtoF(_IQsin(qThetaA)); fSinB = _IQtoF(_IQsin(qThetaB)); fSinC = _IQtoF(_IQsin(qThetaC)); p->fVan = (_IQtoF(p->Vdc) * p->fVm) * _IQtoF(_IQsin(qThetaA)); p->fVbn = (_IQtoF(p->Vdc) * p->fVm) * _IQtoF(_IQsin(qThetaB)); p->fVcn = (_IQtoF(p->Vdc) * p->fVm) * _IQtoF(_IQsin(qThetaC)); qVan = _IQmpy(_IQmpy(p->Vdc,_IQ(p->fVm)),_IQsin(qThetaA)); qVbn = _IQmpy(_IQmpy(p->Vdc,_IQ(p->fVm)),_IQsin(qThetaB)); 141 qVcn = _IQmpy(_IQmpy(p->Vdc,_IQ(p->fVm)),_IQsin(qThetaC)); fVan = _IQtoF(qVan); fVbn = _IQtoF(qVbn); fVcn = _IQtoF(qVcn); if(p->fVan >= p->fVbn) { p->fVmax = p->fVan; p->fVmin = p->fVbn; } else { p->fVmax = p->fVbn; p->fVmin = p->fVan; } if(p->fVcn > p->fVmax) p->fVmax = p->fVcn; else if(p->fVcn fVmin) p->fVmin = p->fVcn; #if SET fTmpData = p->fVmax - p->fVmin; if(fTmpData > p->fVdcEff) { fTmp = p->fVdcEff / fTmpData; p->fVmax = p->fVmax * fTmp; p->fVmin = p->fVmin * fTmp; p->fVan = p->fVan * fTmp; p->fVbn = p->fVbn * fTmp; p->fVcn = p->fVcn * fTmp; } 142 p->fVsn = -((p->fVmax + p->fVmin) * 0.5); p->fVan_ref = p->fVan + p->fVsn; p->fVbn_ref = p->fVbn + p->fVsn; p->fVcn_ref = p->fVcn + p->fVsn; p->fTa = 0.5 - (p->fVan_ref / p->fVm); p->fTb = 0.5 - (p->fVbn_ref / p->fVm); p->fTc = 0.5 - (p->fVcn_ref / p->fVm); fTa = 0.5 - (p->fVan_ref / p->fVm); fTb = 0.5 - (p->fVbn_ref / p->fVm); fTc = 0.5 - (p->fVcn_ref / p->fVm); } End of PwmSv.c .. 4.2. Chương trình code phần chuyển đổi tọa độ alpha beta sang dq =============================================================== File name: C.Cs (IQ version) Originator: Digital Control Systems Group Alphascription: chuyen Transformation =============================================================== History: ------------------------------------------------------------------------------------- 04-15-2014 Version 3.20 ------------------------------------------------------------------------------------- #include "IQmathLib.h" Include header for IQmath library Don't forget to set a proper GLOBAL_Q in "IQmathLib.h" file #include "park.h" void park_calc(PARK *v) { 143 _iq Cosine,Sine; Using look-up IQ sine table Sine = _IQsinPU(v->Angle); Cosine = _IQcosPU(v->Angle); v->Qs = _IQmpy(v->Alpha,Cosine) + _IQmpy(v->Beta,Sine); v->Ds = _IQmpy(v->Alpha,Sine) - _IQmpy(v->Beta,Cosine); if (v->Ds > _IQ(0.5)) v->Ds = _IQmpy(v->Ds,_IQ(0.01)); if (v->Ds Ds = _IQmpy(v->Ds,_IQ(-0.01)); } ....... 4.3. Code chương trình tính toán đầu ra /******************************************************************** * Outputs calculation * ********************************************************************* ********************************************************************/ //Constant gamma1 = 0.067; gamma2 = 0.01; gamma3 = 0.01; muyd = 268 ; //muyd > 0 muyq = 126; etad = 0.01; etaq = 0.01; kq = 30; //Main calculation F1Estimated = F1Estimated + (- gamma1*(sq*M1 + sd))*Tsamp; F2Estimated = F2Estimated + (- gamma2*sq*M2)*Tsamp; F3Estimated = F3Estimated + - gamma3*(k1 - M3)*sq; idd_k = -lam_mo/(2*(Ldo - Lqo)) - sqrt(lam_mo^2/(4*(Ldo - Lqo)^2) + iq^2) idd_dev = (idd_k - idd_kminus1)/Tsamp; Omegad_devdev = (Omegad_k - 2*Omegad_kminus1 + Omegad_kminus2)/Tsamp^2; Omegad_dev = (Omegad_k - Omegad_kminus1)/Tsamp; vd = Ldo*(idd_dev - f1o - F1Estimated + Ksd*e2_k + etad*sd/(Absolute(sd) + muyd)); 144 vq = (Lqo/M2)*(k1*Omegad_dev - k1*(f3o + F3) + Omegad_devdev - M1*(f1o + vd/Ldo0) - M2*f2o + M3*f3o - M1*F1Estimated -M2*F2Estimated + M3*F3Estimated - k1*F3Estimated + kq*sq + etaq*sq/(Absolute(sq)+muyq)) //trang 78 - delta unknown .. //For next Loop idd_kminus1 = idd_k; Omegad_kminus1 = Omegad_k; Omegad_kminus2 = Omegad_kminus1; /////////////////////////////////////////////////////// // Additional Functions // // double Sign(double inVar){ double outVar; if (inVar > 0) outVar = 1; if (inVar < 0) outVar = -1; if (inVar == 0) outVar = 0; return outVar; } double Absolute(double inVar){ double outVar; if (inVar > 0) outVar = inVar; if (inVar < 0) outVar = -inVar; if (inVar == 0) outVar = 0; return outVar; } ........ 4.4. Chuong trình lập trình tính toán tốc độ phản hồi từ cảm biến góc TI File $Revision: /main/9 $ Chuyn $Date: April 21, 2014 15:42:23 $ ######################################################################## FILE: DSP_posspeed.c TITLE: Pos/speed measurement using EQEP peripheral DESCRIPTION: This file includes the EQEP initialization and position and speed caculation functions called by DSP_28xxxEqep_posspeed.c. The position and speed calculation steps performed by POSSPEED_Calc() at SYSCLKOUT = 150 MHz and 100 MHz are described in detail below: 145 For 150 MHz Operation: --------------------------------------------------------------------------------------------------- 1. This program calculates: **theta_mech** theta_mech = QPOSCNT/mech_Scaler = QPOSCNT/xx00, where xx00 is the number of counts in 1 revolution.(xx00/4 = xx00 line/rev. quadrature encoder) 2. This program calculates: **theta_elec** theta_elec = (# pole pairs) * theta_mech = 2*QPOSCNT/xx00 for this example 3. This program calculates: **SpeedRpm_fr** SpeedRpm_fr = [(x2-x1)/xx00]/T - Equation 1 Note (x2-x1) = difference in number of QPOSCNT counts. Dividing (x2-x1) by 100 gives position relative to Index in one revolution. If base RPM = xx00 rpm: xx00 rpm = [(x2-x1)/xx00]/10ms - Equation 2 = [(x2-x1)/xx00]/(.01s*1 min/60 sec) = [(x2-x1)/xx00]/(1/xx00) min max (x2-x1) = xx00 counts, or 1 revolution in 10 ms If both sides of Equation 2 are divided by xx00 rpm, then: 1 = [(x2-x1)/xx00] rev./[(1/xx00) min * xx00rpm] Because (x2-x1) must be <xx00 (max) for QPOSCNT increment, (x2-x1)/xx00 < 1 for CW rotation And because (x2-x1) must be >-xx00 for QPOSCNT decrement, (x2-x1)/xx00>-1 for CCW rotation speed_fr = [(x2-x1)/xx00]/[(1/xx00) min * xx00rpm] = (x2-x1)/xx00 - Equation 3 146 To convert speed_fr to RPM, multiply Equation 3 by xx00 rpm SpeedRpm_fr = xx00rpm *(x2-x1)/xx00 - Final Equation : . 4. **min rpm ** = selected at 10 rpm based on CCPS prescaler options available (128 is greatest) 5. **SpeedRpm_pr** SpeedRpm_pr = X/(t2-t1) - Equation 4 where X = QCAPCTL [UPPS]/xx00 rev. (position relative to Index in 1 revolution) If max/base speed = xx00 rpm: xx00 = (32/xx00)/[(t2-t1)/(150MHz/128)] where 32 = QCAPCTL [UPPS] (Unit timeout - once every 32 edges) 32/xx00 = position in 1 revolution (position as a fraction of 1 revolution) t2-t1/(150MHz/128), t2-t1= # of QCAPCLK cycles, and 1 QCAPCLK cycle = 1/(150MHz/128) = QCPRDLAT So: xx00 rpm = [32(150MHz/128)*60s/min]/[xx00(t2-t1)] t2-t1 = [32(150MHz/128)*60 s/min]/(xx00*xx00rpm) - Equation 5 = 94 CAPCLK cycles = maximum (t2-t1) = SpeedScaler Divide both sides by (t2-t1), and: 1 = 94/(t2-t1) = [32(150MHz/128)*60 s/min]/(xx00*xx00rpm)]/(t2-t1) Because (t2-t1) must be < 94 for QPOSCNT increment: 94/(t2-t1) < 1 for CW rotation And because (t2-t1) must be >-94 for QPOSCNT decrement: 94/(t2-t1)> -1 for CCW rotation speed_pr = 94/(t2-t1) or [32(150MHz/128)*60 s/min]/(xx00*xx00rpm)]/(t2-t1) - Equation 6 147 To convert speed_pr to RPM: Multiply Equation 6 by xx00rpm: SpeedRpm_fr = xx00rpm * [32(150MHz/128)*60 s/min]/[xx00*xx00rpm*(t2-t1)] = [32(150MHz/128)*60 s/min]/[xx00*(t2-t1)] or [(32/xx00)rev * 60 s/min]/[(t2-t1)(QCPRDLAT)]- Final Equation For 100 MHz Operation: ---------------------- The same calculations as above are performed, but with 100 MHz instead of 150MHz when calculating SpeedRpm_pr. The value for freqScaler_pr becomes: [32*(100MHz/128)*60s/min]/(xx00*xx00rpm) = 63 More detailed calculation results can be found in the Example_freqcal.xls spreadsheet included in the example folder. This file contains source for the posspeed module ######################################################################## Original Author: SDchuye $TI Release: DSP320F28xxx/DSP320F28xxx C/C++ . $Release Date: August 4, 2014 $ ######################################################################## #include "DSP28x_Project.h" Device Headerfile and Examples Include File #include "Example_posspeed.h" Example specific Include file void POSSPEED_Init(void) { #if (CPU_FRQ_150MHZ) EQep2Regs.QUPRD=1500xxx; Unit Timer for 100Hz at 150 MHz SYSCLKOUT #endif #if (CPU_FRQ_100MHZ) EQep2Regs.QUPRD=1000xxx; Unit Timer for 100Hz at 100 MHz SYSCLKOUT #endif EQep2Regs.QDECCTL.bit.QSRC=00; QEP quadrature count mode EQep2Regs.QEPCTL.bit.FREE_SOFT=2; EQep2Regs.QEPCTL.bit.PCRM=00; PCRM=00 mode - QPOSCNT reset on index 148 event EQep2Regs.QEPCTL.bit.UTE=1; Unit Timeout Enable EQep2Regs.QEPCTL.bit.QCLM=1; Latch on unit time out EQep2Regs.QPOSMAX=0x2710; EQep2Regs.QEPCTL.bit.QPEN=1; QEP enable EQep2Regs.QCAPCTL.bit.UPPS=7; 1/4 for unit position EQep2Regs.QCAPCTL.bit.CCPS=5; 1/16 for CAP clock EQep2Regs.QCAPCTL.bit.CEN=1; QEP Capture Enable } void POSSPEED_Calc(POSSPEED *p) { long tmp; unsigned int pos16bval; ,temp1; _iq Tmp1,newp,oldp; **** Position calculation - mechanical and electrical motor angle **** p->DirectionQep = EQep2Regs.QEPSTS.bit.QDF; Motor direction: 0=CCW/reverse, 1=CW/forward pos16bval=(unsigned int)EQep2Regs.QPOSCNT; capture position once per QA/QB period p->theta_raw = pos16bval+ p->cal_angle; raw theta = current pos. + ang. offset from QA The following lines calculate p->theta_mech ~= QPOSCNT/mech_scaler [current cnt/(total cnt in 1 rev.)] where mech_scaler = 4000 cnts/revolution tmp = (long)((long)p->theta_raw*(long)p->mech_scaler); Q0*Q26 = Q26 tmp &= 0x03FFF000; p->theta_mech = (int)(tmp>>11); Q26 -> Q15 p->theta_mech &= 0x7FFF; The following lines calculate p->elec_mech p->theta_elec = p->pole_pairs*p->theta_mech; // Q0*Q15 = Q15 p->theta_elec &= 0x7FFF; Check an index occurrence if (EQep2Regs.QFLG.bit.IEL == 1) { p->index_sync_flag = 0x00F0; EQep2Regs.QCLR.bit.IEL=1; // Clear interrupt flag : . ..
File đính kèm:
- luan_an_nghien_cuu_tong_hopdieu_khienhe_thong_truyen_dong_ba.pdf