Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 164 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
164
Dung lượng
2,05 MB
Nội dung
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 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: PGS TS ĐÀO HOA VIỆT TS NGUYỄN THANH TIÊN HÀ NỘI - NĂM 2016 i LỜI CAM ĐOAN Tôi cam đoan công trình nghiên cứu hướng dẫn PGS TS Đào Hoa Việt TS Nguyễn Thanh Tiên Các số liệu, kết nêu luận án trung thực chưa công bố công trình Tác giả Trần Đức Chuyển ii LỜI CẢM ƠN Trước hết, 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 TS Nguyễn Thanh Tiên, hướng dẫn, vạch nội dung cần giải quyết, sau kiểm tra kết nghiên cứu, giúp đỡ khuyến khích hoàn thành luận án Tôi xin chân thành cảm ơn nhà khoa học tập thể cán 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 hoàn thiện nội dung nghiên cứu Tôi chân thành cảm ơn đồng nghiệp 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 đỡ mặt khối lượng công việc để có thời gian tập trung thực luận án Cuối cùng, xin chân thành cảm ơn gia đình, bạn bè đồng nghiệp thông cảm, động viên, khuyến khích giúp 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 Chương TỔNG QUAN VỀ HỆ THỐNG TRUYỀN ĐỘNG BÁM LÀM VIỆC Ở CHẾ ĐỘ CHẬM 1.1 Khái quát số hệ thống truyền động bám cho đối tượng có chế độ chuyển động chậm 1.1.1 Khái quát chung hệ truyền động bám 1.1.2 Chế độ chậm số hệ thống truyền động bám phức tạp 1.2 Xây dựng mô hình hệ truyền động bám làm việc chế độ chậm 1.2.1 Xây dựng mô hình phần hệ thống truyền động 1.2.2 Mô hình động học đối tượng điều khiển phi tuyến với động chấp hành xoay chiều đồng 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 yếu tố ảnh hưởng 21 1.4 Những nghiên cứu nước nước 27 1.5 Đặt vấn đề nghiên cứu 30 1.6 Kết luận chương 32 Chương 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 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 quan sát trượt 38 2.1.3 Bộ quan sát trạng thái 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 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 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ế 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 IPMSM sở điều khiển backstepping trượt thích nghi 73 3.3 Kết luận chương 78 Chương 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ô hệ thống truyền động bám phi tuyến với BĐK tốc độ sở phương pháp backstepping trượt thích nghi sử dụng động IPMSM 80 4.2 Mô hệ thống truyền động bám phi tuyến với BĐK vị trí sở phương pháp backstepping trượt thích nghi sử dụng động IPMSM 90 4.2.1 Nghiên cứu mô hệ thống truyền động bám vị trí sở phương pháp backstepping trượt thích nghi với điều khiển PI 90 4.2.2 Nghiên cứu mô hệ thống truyền động bám vị trí sở phương pháp backstepping trượt thích nghi với điều khiển PID 100 4.3 Khảo xát đánh giá mô hình thực nghiệm với động 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 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 thông số biến thiên đến làm việc HTB chế độ chậm với điều khiển kinh điển PID 127 Phụ lục 2: Các sơ đồ mô Matlab - Simulink 130 Phụ lục 3: Các tham số mô code chương trình lập trình 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 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 chiều không chổi than IPMSM Interior Permanent Magnet Synchronous Motor: Động đồng 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 liệu điều khiển NI National Instrument VSC Variable Structure Control: đ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: 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 đạo hàm DI đạo hàm 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 ASIC Application Specific Intergrated Circuits: mạch tích hợp ứng dụng riêng vii Osc Oscilloscope: máy sóng KĐCS Khuếch đại công suất QTQĐ Quá trình độ 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 Ký hiệu Ý nghĩa M L ; M dh ; Mô men tải, mô men đàn hồi, mô men động cơ, mô men cản [Nm] M dc ; M c M B (t ) Mô men nhiễu [Nm] W1 ( s ) Hàm truyền đạt khối lượng thứ W2 ( s) Hàm truyền đạt khối lượng thứ hai A1 () Đặc tính biên độ tần số pha J1 Mô men quán tính truyền động chấp hành [kgm2] J2 Mô men quán tính lại đối tượng truyền tải [kgm2] J Mô men quán tính tổng cộng [kgm2] C Hệ số đàn hồi [Nm/rad] Fhd Lực đàn hồi [N] n Tốc độ (vòng/phút) 1 Vận tốc góc động vận tốc góc 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 Ls , Lr Điện cảm stato rô to [H] Ld , Lq Điện kháng trục-d, điện kháng trục-q động điện [H] Rs , Rr Điện trở stato rô to động điện [ ] isd , isq Dòng điện tọa độ trục d, dòng điện trục q [A] usd , usq Các thành phần véc tơ điện áp stato 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ố 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ỉ luật thích nghi i Sai số đánh giá yr Tín hiệu tham số chuẩn [rad] i, j Hàm hiệu chỉnh zi Sai số hiệu chỉnh X Véc tơ trạng thái hệ thống Y Véc tơ đầu hệ thống A Ma trận hệ thống B Ma trận đầu vào V Hàm Lyapunov Vi Hàm Lyapunov thứ i xi Trạng thái thứ i hệ thống điều khiển ci , , Các số dương 134 Ma sat Out1 In1 Step mo men ma sat s 1/100 t1 Clock 1/i1 In1Out1 -K- den(s) he so cung Integrator1 cua dong co Gain5 1/Jp2 toc subsystem -Kmo me1 In1 Out1 Gain3 Step1 speed BDK toc Saturation In2 Out2 n T ransfer Fcn QS mo men To Workspace1 BDK toc 60 n2 s T o Workspace3 Integrator Gain Gain4 s -K- Goc 20 Gain1 Ramp1 -KManual Switch n1 Si ne Wave Gain2 -K- Derivative T o Workspace2 n3 du/dt T o Workspace4 0.1 Dat goc (rad ) sai so Hình PL 2.9 Sơ đồ mô 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 đàn hồi sử dụng khâu PID Phụ lục 3: Các tham số mô code chương trình lập trình Matlab - Simulink cho BĐK backstepping trượt thích nghi: 3.1 Tham số mô điều khiển %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% P=4;r = 2.5; Ls = 94e-3; Lq = 114 91e-3;Ld = 75e-3; J_PMSM = 1.5e-4; J_Brake = 2.07e-4; J = J_PMSM + J_Brake; B_motor = 0.0001; B_Brake = 0.00; % B_Tai=J_Tai/time constant = 2.7e-4/0.06 = 0.0045 B = B_motor + B_Brake; lamd = 0.193; [Vsec/rad] Vdc = 310;fz = 5e3; Tz = 1/fz;Vmax = 2/3*Vdc; Vmin = -Vmax; %kt = (3*P*Lambdam)/4; % Torque constant (Te = kt*iq) RPM = 100;% Toc RPM, Tstop = 1.01; Tload = 0.5 ; % Load torque [N.m], Rated torque = 3.874 [N.m] % cac tham so cua k kk1=3*P*P/2/J/4*lamd;…k5=lamd/Ls;k6=1/Lq;k7 = r/Ld;k8 = 1/Ld; k11 = 3*P*P*(Ld-Lq)/8/J;k12 = 4/3/P/lamd;k13 = 2*k12*J/P;… %Controller %k1 = 1450; k1 = 1250;kd = 50;ksd = 1e4;nuyd = 270;ald = 0.01; kq = 30; nuyq = 130;alq = 0.01; gm1 = 0.067;gm2 = 0.01;gm3 = 0.01;gm1 = 0;gm2 = 0;gm3 = 0; % Observer 135 K1=3*P*P/2/J/4*lamd;…… k2=B/J;k11 = 3*P*P*(Ld-Lq)/8/J; %z0=1; l2=200;l1=(k2+l2)*(k2+l2)/4/k3/z0/z0; L1=-10e3;%-9.5 cho toc cao, -10 cho toc thap L2 = 51e2; epsa=0.01; epsb=epsa; epsw=epsa;eps0=0.01; 3.2 Chương trình lập trình mô trường Matlab- Simulink Trên M-file %========================================================== % M-file for plotting the simulation results of IPMSM %========================================================== %========================================================== figure(1) subplot(121); plot(t,wd,'k:',t,w,'r-','LineWidth',2.5); set(gca,'Fontname','Arial','Fontsize',20,'LineWidth',3,'FontWeight','bold '); % text(0.65,-60, 'Dotted: {\omega_d}','Color','k','FontWeight','bold','Fontsize',20); % text(0.65,-30, 'Solid : {\omega}','Color','r','FontWeight','bold','Fontsize',20); %axis([0.4 0.8 -400 400]); axis([0.4 0.8 350]); %axis([0 -60 60]); ylabel('{\omega }(rad/sec)'); %ylabel('{Speed}(RPM)'); legend('\it\color{black}\omega_d{ }','\it\color{red}\omega','Location',[.380 78 0.07 0.02],'Orientation','Vertical'); set(legend, 'Box', 'off'); subplot(122); plot(t,we-4,'LineWidth',2.5); grid on; set(gca,'Fontname','Arial','Fontsize',20,'LineWidth',3,'FontWeight','bold '); axis([0.4 0.8 -30 10]); ylabel('{\omega_e }(rad/sec)'); subplot(123); plot(t,tl,'LineWidth',2.5); grid on; set(gca,'Fontname','Arial','Fontsize',20,'LineWidth',3,'FontWeight','bold '); axis([0.4 0.8 -0.2 1.7]); ylabel('{T_{L}}(Nm)'); subplot(124); plot(t,d1+0.05,'k:',t,hd1+0.05,'r','lineWidth',2.5); set(gca,'Fontname','Arial','Fontsize',20,'FontWeight','bold','LineWidth', 3); 136 % text(0.63, 0.6, 'Dotted: {d_{1}}','Color','k','FontWeight','bold','Fontsize',20); % text(0.63, 0.3,'Solid : {d_{1}}','Color','r','FontWeight','bold','Fontsize',20); axis([0.4 0.8 -0.2 2]); %xlabel('Time(sec)'); ylabel('{d_{1}}'); 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 -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 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 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 < p->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 < _IQ(-0.5)) v->Ds = _IQmpy(v->Ds,_IQ(-0.01)); } 4.3 Code chương trình tính toán đầu /******************************************************************** * Outputs calculation * ********************************************************************* ********************************************************************/ //Constant gamma1 = 0.067; gamma2 = 0.01; gamma3 = 0.01; muyd = 268 ; //muyd > 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: This program calculates: **theta_mech** theta_mech = QPOSCNT/mech_Scaler = QPOSCNT/xx00, where xx00 is the number of counts in revolution.(xx00/4 = xx00 line/rev quadrature encoder) This program calculates: **theta_elec** theta_elec = (# pole pairs) * theta_mech = 2*QPOSCNT/xx00 for this example This program calculates: **SpeedRpm_fr** SpeedRpm_fr = [(x2-x1)/xx00]/T - Equation 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 = [(x2-x1)/xx00]/(.01s*1 min/60 sec) = [(x2-x1)/xx00]/(1/xx00) max (x2-x1) = xx00 counts, or revolution in 10 ms If both sides of Equation are divided by xx00 rpm, then: = [(x2-x1)/xx00] rev./[(1/xx00) * xx00rpm] Because (x2-x1) must be -xx00 for QPOSCNT decrement, (x2-x1)/xx00>-1 for CCW rotation speed_fr = [(x2-x1)/xx00]/[(1/xx00) * xx00rpm] = (x2-x1)/xx00 - Equation 146 To convert speed_fr to RPM, multiply Equation by xx00 rpm SpeedRpm_fr = xx00rpm *(x2-x1)/xx00 - Final Equation : **min rpm ** = selected at 10 rpm based on CCPS prescaler options available (128 is greatest) **SpeedRpm_pr** SpeedRpm_pr = X/(t2-t1) - Equation where X = QCAPCTL [UPPS]/xx00 rev (position relative to Index in 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 revolution (position as a fraction of revolution) t2-t1/(150MHz/128), t2-t1= # of QCAPCLK cycles, and 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 = 94 CAPCLK cycles = maximum (t2-t1) = SpeedScaler Divide both sides by (t2-t1), and: = 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) < 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 147 To convert speed_pr to RPM: Multiply Equation 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 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 : …………… [...]... trượt thích nghi cho hệ truyền động bám phi tuyến được nghiên cứu một cách trình tự Nghiên cứu cơ sở lý thuyết điều khiển về thích nghi cho hệ thống có cấu trúc biến đổi, điều khiển backstepping trượt, điều khiển backstepping trượt thích nghi cho hệ thống truyền động bám làm việc ở chế độ chậm, có tính đến bộ quan sát trượt 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... cứu tổng hợp thuật toán điều khiển HTB có yếu tố phi tuyến là vấn đề hết sức cần thiết và mang tính thời sự được nhiều người quan tâm Vấn đề này luôn có ý nghĩa khoa học và giá trị thực tiễn cao Với tính cấp thiết như vậy, đề tài nghiên cứu của luận án được lựa chọn là: 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 2 * Mục tiêu nghiên cứu: Nghiên cứu tổng. .. tổng hợp hệ thống truyền động bám cho các đối tượng chuyển động chậm thực hiện trên cơ sở ứng dụng lý thuyết điều khiển mới như: điều khiển trượt; điều khiển backstepping trượt thích nghi có tính đến bộ quan sát, bộ lọc để tổng hợp bộ điều khiển Nghiên cứu đánh giá khả năng nâng cao chất lượng ổn định HTB làm việc ở chế độ chậm, nhằm thay thế HTB đã và đang sử dụng động cơ một chiều bằng HTB sử dụng động. .. quan tâm nghiên cứu đến hệ thống truyền động điện nói chung, hệ thống bám nói riêng Chúng rất đa dạng phong phú và ngày càng phát triển mạnh mẽ Hệ thống truyền động bám là hệ thống kín, trong đó lượng vào thay đổi theo thời gian một cách ngẫu nhiên, lượng ra của hệ thống được điều khiển bám (lặp lại) theo lượng vào với độ chính xác cho trước Hơn nữa hệ thống bám là hệ thống mà, các chỉ tiêu chất lượng... cơ 108 1 MỞ ĐẦU 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... tuyến của đối tượng điều khiển HTB làm việc ở chế độ chậm Nghiên cứu ảnh hưởng yếu tố phi tuyến, thông số biến thiên đến chất lượng làm việc của hệ thống - Nghiên cứu ứng dụng phương pháp điều khiển mới như: điều khiển trượt, điều khiển backstepping thich nghi, điều khiển backstepping trượt thích nghi có tính đến bộ quan sát, v.v Ứng dụng chúng vào trong hệ thống truyền động bám sử dụng động cơ IPMSM... mô men động cơ và mô men cản ta có thể chia các chế độ làm viêc của HTB thành 2 loại là chế độ làm viêc HTB với đối tượng điều khiển chuyển động nhanh và chế độ làm viêc HTB với đối tượng điều khiển chuyển động chậm Trong HTB điện cơ làm việc ở chế độ chậm đòi hỏi sai số bám sát nhỏ thì tính chất chuyển động của hệ cần được quan tâm trong quá trình thiết kế bộ điều chỉnh Với hệ thống chuyển động nhanh... động cơ chấp hành, [13, 23, 40] Thống kê trong thực tế hệ thống truyền động vũ khí đang sử dụng trong nước và trên thế giới cho thấy hầu hết đều sử dụng ở dạng hệ điện cơ, [40] Ví dụ hệ thống truyền động sử dụng điều khiển các loại vũ khí pháo tàu như: AK 230, AK 176 (hệ thống máy phát động cơ), hệ thống truyền động thuỷ lực dùng điều khiển một số loại pháo tàu như: AK 630, AK 726 Sau đây ta xét hệ. .. 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 Để minh chứng kết quả nghiên cứu tổng hợp BĐK ở chương 3, chương 4 tiến hành khảo sát mô phỏng đánh giá hệ thống truyền động bám làm việc ở chế độ chậm trên Matlab-Simulink với BĐK tốc độ và bộ điều khiển vị trí với nhiều trường hợp khác nhau Nghiên cứu thực nghiệm với BĐK tốc độ đã được xây dựng tổng hợp ở chương... ma sát, dao động đàn hồi, đặc điểm động học HTB, tình hình nghiên cứu trong nước và ngoài nước; từ đó lựa chọn phương pháp điều khiển mới, xác định phương pháp nghiên cứu trong luận án và đặt vấn đề nghiên cứu 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 Trong chương hai trình bày cơ sở lý thuyết chung nhất của việc tổng hợp điều khiển backstepping