Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 77 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
77
Dung lượng
12,73 MB
Nội dung
ĐẠI HỌC BÁCH KHOA HÀ NỘI Điều khiển hệ truyền động cho ô tô điện Luận văn Thạc sĩ Khoa học Ngành Điều khiển Tự động hóa Học viên: Nguyễn Bảo Huy Người hướng dẫn khoa học: PGS.TS Tạ Cao Minh Hà Nội, tháng Chín năm 2015 “Science is a way of trying not to fool yourself” Richard Feynman Lời cam đoan Tôi xin cam đoan luận văn thạc sĩ “Điều khiển hệ truyền động cho ô tô điện” công trình thực hướng dẫn PGS.TS Tạ Cao Minh Các số liệu kết hoàn toàn trung thực Để hoàn thành luận văn này, sử dụng tài liệu ghi danh mục “Tài liệu tham khảo” không chép hay sử dụng tài liệu khác Nếu phát có chép xin chịu hoàn toàn trách nhiệm Hà Nội, ngày tháng Học viên i năm 2015 Lời cảm ơn Lòng tri ân sâu sắc xin dành cho thầy Tạ Cao Minh Không người hướng dẫn luận văn này, thầy người dìu dắt suốt từ năm cuối bậc đại học Mọi thứ mà đạt đường học tập nghiên cứu có bảo dạy dỗ thầy Luận văn thực phần công việc Đề tài khoa học cấp Nhà nước “Nghiên cứu thiết kế chế tạo hệ truyền động điều khiển cho ô tô điện”, mã số KC.03.08/11-15, thực Trung tâm Nghiên cứu Ứng dụng Sáng tạo Công nghệ (CTI), ĐH Bách Khoa Hà Nội Xin trân trọng cảm ơn Đề tài Tôi xin cảm ơn anh chị bạn cộng Xin cảm ơn anh Trần Bình Dương anh Nguyễn Văn Đại người thiết kế chế tạo phần cứng cho inverter phận liên quan Xin cảm ơn anh Võ Duy Thành bạn Trần Thị Minh Trang giải mã tín hiệu điều khiển trung tâm xe ô tô điện iMiEV Xin cảm ơn anh Bùi Đăng Quang bạn Đào Triệu Phi Trường với công tác hành chính, hậu cần kỹ thuật, thiết kế gia công khí Đề tài Xin cảm ơn anh Vũ Ngọc Minh trao đổi tư vấn chuyên môn hữu ích Nếu anh bạn, chắn hoàn thành công việc Tôi xin cảm ơn bạn cựu sinh viên làm việc CTI góp sức thực số nhánh công việc Đề tài, qua việc hoàn thành luận văn Cảm ơn bạn Nguyễn Xuân Thưởng, Đỗ Văn Hân, Phạm Ngọc Quang Đặc biệt cảm ơn bạn Nguyễn Dũng hỗ trợ mạnh mẽ bạn Nếu bạn, gặp khó khăn nhiều khó đạt kết Bộ môn Tự động hóa Công nghiệp – Viện Điện Viện Kỹ thuật Điều khiển Tự động hóa (ICEA) thuộc ĐH Bách Khoa Hà Nội hỗ trợ số thiết bị thí nghiệm Xin trân trọng cảm ơn lãnh đạo Bộ môn Tự động hóa ICEA Tôi xin cảm ơn lãnh đạo, cán nhân viên Phòng Thí nghiệm Động Đốt (Viện Cơ khí Động lực, ĐH Bách Khoa Hà Nội) nhiệt tình hỗ trợ công việc thử nghiệm xe ii Mục lục Danh sách hình vẽ Danh sách bảng Danh mục từ viết tắt Mở đầu Điều khiển vector động IPM cho hệ truyền động ô tô điện 1.1 Tổng quan hệ truyền động ô tô điện 1.1.1 Đặc điểm hệ truyền động ô tô điện 1.1.2 Động truyền động cho ô tô điện 1.2 Cấu trúc mô hình hóa động đồng nam châm vĩnh cửu chìm (IPMSM) 1.2.1 Cấu trúc động IPM 1.2.2 Mô hình hóa động IPM 1.3 Điều khiển vector động IPM 1.3.1 Nguyên lý điều khiển vector 1.3.2 Cấu trúc điều khiển vector động IPM cho ô tô điện iMiEV 9 10 12 12 13 15 15 18 Nâng cao chất lượng điều khiển dòng điện động IPM 2.1 Thiết kế điều khiển dòng điện với kỹ thuật hàm chuẩn bậc hai 2.1.1 Thiết kế điều khiển dòng điện 2.1.2 Kết mô 2.2 Nâng cao chất lượng điều khiển dòng điện kỹ thuật quan sát nhiễu (DOB) 2.2.1 Bộ quan sát nhiễu 2.2.2 Cấu trúc điều khiển dòng điện sử dụng quan sát nhiễu 2.2.3 Kết mô 23 25 26 28 Mô hình thống hệ truyền động với phương pháp “biểu vĩ mô lượng” EMR 3.1 Phương pháp “biểu diễn vĩ mô lượng” EMR 3.2 Mô hình hóa hệ truyền động ô tô điện phương pháp EMR 3.2.1 Ắc quy nghịch lưu nguồn áp ba pha 3.2.2 Động IPM 20 20 20 23 diễn 30 30 32 33 34 Mục lục 3.3 Hệ 4.1 4.2 4.3 3.2.3 Mô hình biểu diễn bánh xe truyền thống 3.2.4 Mô hình biểu diễn hệ khung – vỏ xe Đề xuất mô hình EMR tương tác lốp xe – mặt đường 3.3.1 Biểu diễn EMR tương tác lốp xe – mặt đường sử dụng mô hình Pacejka 3.3.2 Kết mô 34 35 36 36 39 thống thực nghiệm với ô tô điện Mitsubishi iMiEV Mô tả hệ thống thực nghiệm Xác định thông số động IPM truyền động cho xe iMiEV Kết thực nghiệm 42 42 42 45 Kết luận 52 Danh mục công bố khoa học 54 Tài liệu tham khảo 55 Phụ lục P.1 Khâu chống bão hòa tích phân anti–windup P.2 Điều biến vector không gian SVPWM P.3 Bổ sung thử nghiệm ô tô điện iMiEV P.4 Thử nghiệm nghịch lưu ba pha nguồn áp điều chế SVPWM vòng hở với tải cặp động – máy phát không đồng 30 kW P.5 Mô C MEX S–function Matlab/Simulink P.6 Một số hình ảnh kỷ niệm 58 58 59 60 61 67 72 Danh sách hình vẽ 1.1 1.2 1.3 1.4 1.5 1.6 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Minh họa khác biệt đặc tính động điện động đốt (ICE) Các loại động sử dụng cho ô tô điện Cấu trúc động IPM với nam châm gắn chìm rotor Mô hình toán học động IPMSM Minh họa phép chuyển hệ tọa độ Clarke (abc → αβ) Park (αβ → dq) Cấu trúc điều khiển vector hệ truyền động IPMSM cho ô tô điện Cấu trúc điều khiển tách kênh dòng điện (mô tả chi tiết khối “Decoupling Current Controller” Hình 1.6) Ảnh hưởng hệ số tắt dần D tới chất lượng đáp ứng (Mô phỏng) Các đáp ứng dòng điện động Hai loại nhiễu hệ điều khiển: disturbance noise Nguyên lý quan sát nhiễu DOB Cấu trúc đề xuất điều khiển dòng điện sử dụng quan sát nhiễu (Mô phỏng) Đáp ứng dòng điện không sử dụng có sử dụng quan sát nhiễu 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 Các phần tử EMR Cấu hình tổng quát hệ truyền động Mô hình ắc quy nghịch lưu Mô hình động IPM giảm tốc Mô hình biểu diễn bánh xe truyền thống Biểu diễn EMR hệ khung – vỏ xe Minh họa mối quan hệ độ trượt lực truyền động cho xe Mô hình thống hệ truyền động ô tô điện sử dụng biểu diễn tương tác lốp xe – mặt đường đề xuất 3.9 Điều kiện mặt đường mô 3.10 (Mô phỏng) Tốc độ bánh xe tốc độ thân xe 3.11 (Mô phỏng) Các đáp ứng mômen, lực, tốc độ, tỷ số trượt hệ truyền động ô tô điện biểu diễn phương pháp EMR 4.1 4.2 10 12 13 15 16 19 21 22 24 25 26 27 29 31 33 33 34 35 35 37 38 40 40 41 Hình ảnh lắp đặt hệ thống thực nghiệm 46 Triển khai thuật toán Matlab/Simulink, chạy điều khiển dSPACE 1103, vận hành giám sát phần mềm ControlDesk 47 Danh sách hình vẽ 4.3 4.4 4.5 4.6 4.7 P.1 P.2 P.3 P.4 P.5 P.6 P.7 P.8 Thí nghiệm đo điện trở điện cảm hai trục d q động (Thực nghiệm) Dạng sóng sức phản điện động (hình sin, màu đỏ) góc θ thu từ resolver động làm thí nghiệm quay vòng bánh xe nhằm xác định số đôi cực động (Thực nghiệm) Dạng sóng sức phản điện động (a) kết xử lý liệu nhằm xác định số điện áp, tức từ thông nam châm vĩnh cửu, động ô tô (b) (Thực nghiệm) Các đáp ứng dòng điện hệ tọa độ d − q động (Thực nghiệm) Dòng điện pha a dòng điện iq Cấu trúc điều khiển PI có khâu chống bão hòa tích phân kiểu back calculation Lắp đặt ô tô điện băng thử tải Thông số đặc tính động truyền động ô tô điện iMiEV (ảnh chụp từ tài liệu nhà sản xuất cung cấp) Sơ đồ vận hành thí nghiệm biến tần Cấu trúc chi tiết tải điện trở cho Hình P.5 Sơ đồ hệ thống tải điện trở Giao diện chương trình giám sát điều khiển (Thực nghiệm) Dạng sóng điện áp pha cuộn dây pha a động phổ Fourier điện áp (Thực nghiệm) Dạng sóng dòng điện pha cuộn dây pha a động phổ Fourier dòng điện 48 48 49 50 51 58 60 60 62 63 64 65 66 Danh sách bảng 3.1 Thông số ô tô điện iMiEV sử dụng cho mô 4.1 39 (Thực nghiệm) Dữ liệu đo sức phản điện động hai cực (điện áp dây line-to-line voltage) động 44 4.2 Thông số động IPM ô tô điện iMiEV 45 P.1 (Thực nghiệm) Kết đo điện áp pha cuộn dây pha a động 66 P.2 (Thực nghiệm) Kết đo dòng điện cuộn dây pha a động 66 Danh mục từ viết tắt Chữ viết tắt Tên tiếng Anh Nghĩa tiếng Việt AC BLDC DC DOB DTC EMF EMR EVs FOC ICE IPM LPF PI PMSM PWM SPM SRM SVPWM SynRM Alternative Current Brushless DC (motor) Direct Current Disturbance Observer Direct Torque Control Electromotive Force Energetic Macroscopic Representation Electric Vehicles Field Oriented Control Internal Combustion Engine Interior Permanent Magnet Low-pass Filter Proporsional – Integral Permanent Magnet Synchronous Motor Pulse Width Modulation Surface Permanent Magnet Switched Reluctance Motor Space Vector PWM Synchronous Reluctance Motor Xoay chiều (Động cơ) chiều không chổi than Một chiều Bộ quan sát nhiễu Điều khiển trực tiếp mômen Sức điện động Biểu diễn vĩ mô lượng Xe (ô tô) điện Điều khiển tựa theo từ thông Động đốt Nam châm vĩnh cửu chìm Bộ lọc thông thấp Tỷ lệ – tích phân Động đồng nam châm vĩnh cửu Điều biến độ rộng xung Nam châm vĩnh cửu (gắn trên) bề mặt Động từ trở chuyển mạch Điều biến vector không gian Động từ trở đồng Phụ lục P.2 Điều biến vector không gian SVPWM Điều biến vector không gian kỹ thuật điều biến độ rộng xung chất lượng cao Hiện nay, sử dụng phổ biến công nghiệp trình bày chi tiết nhiều tài liệu [14, 17] Chúng không viết lại lý thuyết mà đưa chương trình giả mã (pseudo–code) rút gọn cách trình bày thuật toán 10 15 20 25 30 35 40 45 50 55 60 /∗ Calculation of reference voltage vector’s amplitude ∗/ Vref = sqrt ( Valpha * Valpha + Vbeta * Vbeta ) ; /∗ Determination of sectors ∗/ theta = atan2 ( Vbeta , Valpha ) ; if ( theta >= && theta < Pi /3) sector = 1; e l s e i f ( theta >= Pi /3 && theta < 2* Pi /3) sector = 2; e l s e i f ( theta >= 2* Pi /3 && theta < Pi ) sector = 3; e l s e i f ( theta >= - Pi && theta < -2* Pi /3) sector = 4; e l s e i f ( theta >= -2* Pi /3 && theta < - Pi /3) sector = 5; e l s e i f ( theta >= - Pi /3 && theta < 0) sector = 6; /∗ T1 T2 T0 Calculation of voltage vector implementation time interval ∗/ = sqrt (3) *( Vref / Vdc ) * sin ( sector * Pi /3 - theta ) ; = sqrt (3) *( Vref / Vdc ) * sin ( theta - ( sector - 1) * Pi /3) ; = - T1 - T2 ; /∗ Sequence of voltage vectors implementation ∗/ if ( sector == 1) { Ta = T1 + T2 + T0 /2 ; Tb = T2 + T0 /2 ; Tc = T0 /2 ; } e l s e i f ( sector == 2) { Ta = T1 + T0 /2 ; Tb = T1 + T2 + T0 /2 ; Tc = T0 /2 ; } e l s e i f ( sector == 3) { Ta = T0 /2 ; Tb = T1 + T2 + T0 /2 ; Tc = T2 + T0 /2 ; } e l s e i f ( sector == 4) { Ta = + T0 /2 ; Tb = T1 + T0 /2 ; Tc = T1 + T2 + T0 /2 ; } e l s e i f ( sector == 5) { Ta = T2 + T0 /2 ; Tb = T0 /2 ; Tc = T1 + T2 + T0 /2 ; } e l s e i f ( sector == 6) { Ta = T1 + T2 + T0 /2 ; Tb = T0 /2 ; Tc = T1 + T0 /2 ; } } 59 Phụ lục P.3 Bổ sung thử nghiệm ô tô điện iMiEV (a) Bánh trước khóa chặt (b) Bánh sau chạy trụ lăn tạo tải Hình P.2: Lắp đặt ô tô điện băng thử tải (a) Đặc tính mômen – tốc độ động (b) Bảng thông số đặc tính động Hình P.3: Thông số đặc tính động truyền động ô tô điện iMiEV (ảnh chụp từ tài liệu nhà sản xuất cung cấp) 60 Phụ lục P.4 Thử nghiệm nghịch lưu ba pha nguồn áp điều chế SVPWM vòng hở với tải cặp động – máy phát không đồng 30 kW Trước triển khai thuật toán điều khiển hệ truyền động, cần thử nghiệm khả hoạt động nghịch lưu nguồn áp ba pha (biến tần) cách cho vận hành vòng hở động không đồng 30 kW Cấu trúc hệ thống Cấu trúc hệ thống thí nghiệm thử tải cho biến tần trình bày Hình P.4 Hệ thống bao gồm: • Hai máy điện không đồng ba pha rotor dây quấn 30 kW nối cứng trục với Rotor máy điện nối ngắn mạch, máy hoạt động máy điện rotor lồng sóc Máy điện M1 đóng vai trò động cơ, máy điện M2 đóng vai trò máy phát • Ba tụ điện xoay chiều tụ có công suất 10 kVAr nối với cực máy phát M2 để tạo khả phát điện tự kích Máy điện không đồng rotor ngắn mạch không kích từ từ nguồn cấp bên nên cần phải vận hành chế độ tự kích để làm việc chế độ máy phát điện • Bộ tải điện trở gồm dàn bóng đèn kW hai điện trở công suất 10 kW phối hợp với biến áp tự ngẫu BA2 chỉnh lưu diode để tạo tải có công suất tổng cộng 23 kW Sơ đồ đấu nối chi tiết tải cho Hình P.5 • Bộ chỉnh lưu diode tụ chiều dùng để tạo điện áp chiều DC link cấp cho biến tần thay cho ắc quy ô tô • Biến tần hệ thống giám sát điều khiển dSPACE 1103 máy tính PC đối tượng cần thử nghiệm • Biến áp tự ngẫu BA1 aptomat AT1–4 sử dụng để phối hợp vận hành hệ thống Các thao tác vận hành trình bày chi tiết Quy trình thao tác vận hành thí nghiệm Hệ thống vận hành theo quy trình thao tác cụ thể sau: Trạng thái ban đầu: hệ thống không làm việc Kiểm tra: aptomat vị trí OFF, núm xoay biến áp vị trí V AT1 → ON; AT2 → ON; đo điện áp DC link, vặn BA1 tới điện áp đạt 580 VDC Thao tác thực để nạp tụ điện DC link cấp điện cho biến tần Chú ý: Không thể đóng điện trực tiếp từ đầu dòng nạp tụ lớn có di/dt lớn làm cháy van diode chỉnh lưu, nổ tụ, nhảy aptomat tổng 61 Phụ lục Lưới điện pha Tủ động lực tổng AT1 (200A) C1 Biến áp tự ngẫu BA1 AT3 (60A) AT2 (20A) AT4 (50A) C2 Chỉnh lưu Diode Tụ DC link Vdc Tụ xoay chiều Tải điện trở 3x10 kVAr Biến tần C3 DS 1103 PC Hệ thống cần thử nghiệm Khớp nối cứng M M Máy điện không đồng pha 30 kW M1 Đóng vai trò động Máy điện không đồng pha 30 kW M2 Đóng vai trò máy phát Hình P.4: Sơ đồ vận hành thí nghiệm biến tần Cấu trúc chi tiết tải điện trở cho Hình P.5 62 Phụ lục Nối với C3 Dàn bóng đèn 3x1kW Biến áp tự ngẫu BA2 Chỉnh lưu Diode Điện trở công suất 2x10 kW Hình P.5: Sơ đồ hệ thống tải điện trở 63 Phụ lục Hình P.6: Giao diện chương trình giám sát điều khiển AT2 → OFF; AT3 → ON Thao tác cắt biến áp BA1 khỏi mạch (vì nạp đầy tụ) nối trực tiếp hệ chỉnh lưu – tụ DC link – biến tần vào lưới điện Điều khiển biến tần khởi động M1 theo chế độ khởi động mềm V /f hệ thống PC–DS1103 Sau động lên tới tốc độ định mức (tương ứng với 50 Hz), AT4 → ON Thao tác nối stator M2 tụ xoay chiều vào lưới điện với mục đích tạo dòng kích thích ban đầu cho hệ thống phát điện tự kích AT4 → OFF Thao tác cắt hệ máy phát – tải điện trở khỏi lưới, hệ thống làm việc chế độ phát điện tự kích Vặn biến áp BA2 để điều chỉnh tải điện trở Vận hành hệ thống chế độ dài hạn với thử kéo dài 0.5 – tiếng Kết thúc thí nghiệm: AT3 → OFF; AT1 → OFF; chuyển chương trình giám sát điều khiển hệ PC–DS1103 sang chế độ dừng Chú ý: Nếu trường hợp xảy lỗi làm dừng hệ thống sau cắt aptomat phải reset chương trình phát xung điều khiển biến tần để xả hết điện tụ DC link Kết thử nghiệm Giao diện chương trình giám sát điều khiển hệ truyền động biến tần – động xây dựng phần mềm ControlDesk Next Generation dSPACE cho Hình P.6 Chương trình thực chức khởi động, dừng, đặt chế độ làm việc; 64 Phụ lục Hình P.7: (Thực nghiệm) Dạng sóng điện áp pha cuộn dây pha a động phổ Fourier điện áp giám sát cảnh báo lỗi (qua đèn) gồm lỗi toàn hệ thống, lỗi quạt, lỗi động cơ, lỗi nhánh van, lỗi áp, lỗi dòng, lỗi nhiệt độ; thu thập liệu hiển thị online đại lượng cần giám sát gồm dạng sóng điều biến, góc θ vector điện áp điều biến; dòng điện pha, điện áp DC link, dòng điện DC link (trong phiên chưa đo dòng DC link nên giá trị IDC không) Chú ý sử dụng kỹ thuật trích mẫu đồng với tác vụ PWM, giá trị dòng điện pha đo trả điều khiển loại bỏ thành phần sóng hài nhiễu PWM; khác với dạng sóng đo trực tiếp mạch Oscilloscope Hình P.8 Hình P.7 dạng sóng thực nghiệm điện áp pha (cụ thể pha a) đo trực tiếp cuộn dây pha động phổ phân tích Fourier điện áp Các thông số định lượng cho Bảng P.1 Hình P.8 dạng sóng thực nghiệm dòng điện pha cuộn dây pha a động phổ Fourier dòng điện Các thông số định lượng cho Bảng P.2 Hệ số méo hài tổng THD dòng điện 5.61% gần đạt tiêu chuẩn IEEE Std 519-1992 5% 65 Phụ lục Hình P.8: (Thực nghiệm) Dạng sóng dòng điện pha cuộn dây pha a động phổ Fourier dòng điện Bảng P.1: (Thực nghiệm) Kết đo điện áp pha cuộn dây pha a động Tần số (Hz) Giá trị hiệu dụng (V) Điện áp đỉnh (V) DC offset (V) THD 49.5 169 464 −16 28.16% Bảng P.2: (Thực nghiệm) Kết đo dòng điện cuộn dây pha a động Tần số (Hz) Giá trị hiệu dụng (A) Dòng điện đỉnh (A) DC offset (A) THD 49.47 147 207 −15 5.61% 66 Phụ lục P.5 Mô C MEX S–function Matlab/Simulink Việc mô Matlab/Simulink sử dụng C MEX S–function kỹ thuật mạnh giúp tăng tốc độ mô cho phép người dùng làm chủ trình mô tốt [24, 32] Mặt khác, việc viết chạy chương trình ngôn ngữ C giúp cho việc triển khai thuật toán DSP bước trở nên dễ dàng thuận tiện Dưới đây, đưa hai chương trình điển hình công việc Đầu tiên mô hình động IPM đưa đầy đủ toàn chương trình, bao gồm khai báo hệ thống; sau chương trình điều khiển dòng điện rút gọn, chương trình lõi Mô hình động IPM viết ngôn ngữ C môi trường S–function /∗ ∗ Interior Permanent Magnet motor model in d−q synchronous rotating frame ∗ Nguyen Bao−Huy ∗ Center for Technology Innovation ∗ Hanoi University of Science and Technology ∗/ #define S _F UN C TI ON _ NA ME IPM_model #define S _ F U N C T I O N _ L E V E L 10 #include " simstruc h " #include < math h > #define U ( element ) (* uPtrs [ element ]) 15 #define Pi 5 9 /∗ Get from Matlab ∗/ #define Ts 1e -6 /∗ Sampling time ∗/ 20 25 30 35 40 45 50 #define #define #define #define #define #define #define #define R mxGetPr ( ssG etSFcn Param (S ,0) ) /∗ Stator resistance [Ohm] ∗/ Ld mxGetPr ( ss GetSFc nParam (S ,1) ) /∗ d axis inductance [H] ∗/ Lq mxGetPr ( ss GetSFc nParam (S ,2) ) /∗ q axis inductance [H] ∗/ Pn mxGetPr ( ss GetSFc nParam (S ,3) ) /∗ Poles ∗/ Phi mxGetPr ( ss GetSFc nParam (S ,4) ) /∗ Permanent magnet flux [Wb] ∗/ J mxGetPr ( s sGetSF cnPara m (S ,5) ) /∗ Inertia constant [Kg m^2] ∗/ B mxGetPr ( s sGetSF cnPara m (S ,6) ) /∗ Damping coefficient [kg/s] ∗/ Theta0 mxGetPr ( ss GetSFc nParam (S ,7) ) /∗ Initial rotor position [rad] ∗/ s t a t i c void m d l I n i t i a l i z e S i z e s ( SimStruct * S ) { s s S e t N u m S F c n P a r a m s (S , 8) ; i f ( s s G e t N u m S F c n P a r a m s ( S ) != s s G e t S F c n P a r a m s C o u n t ( S ) ) { return ; } s s S e t N u m C o n t S t a t e s (S , 0) ; s s S e t N u m D i s c S t a t e s (S , 9) ; i f (! s s S e t N u m I n p u t P o r t s (S , 4) ) return ; s s S e t I n p u t P o r t W i d t h (S , , 1) ; s s S e t I n p u t P o r t W i d t h (S , , 1) ; s s S e t I n p u t P o r t W i d t h (S , , 1) ; s s S e t I n p u t P o r t W i d t h (S , , 1) ; s s S e t I n p u t P o r t R e q u i r e d C o n t i g u o u s (S , , true ) ; s s S e t I n p u t P o r t R e q u i r e d C o n t i g u o u s (S , , true ) ; s s S e t I n p u t P o r t R e q u i r e d C o n t i g u o u s (S , , true ) ; s s S e t I n p u t P o r t R e q u i r e d C o n t i g u o u s (S , , true ) ; s s S e t I n p u t P o r t D i r e c t F e e d T h r o u g h (S , , 1) ; s s S e t I n p u t P o r t D i r e c t F e e d T h r o u g h (S , , 1) ; s s S e t I n p u t P o r t D i r e c t F e e d T h r o u g h (S , , 1) ; 67 Phụ lục s s S e t I n p u t P o r t D i r e c t F e e d T h r o u g h (S , , 1) ; i f (! s s S e t N u m O u t p u t P o r t s (S , 6) ) return ; s s S e t O u t p u t P o r t W i d t h (S , , 1) ; s s S e t O u t p u t P o r t W i d t h (S , , 1) ; s s S e t O u t p u t P o r t W i d t h (S , , 1) ; s s S e t O u t p u t P o r t W i d t h (S , , 1) ; s s S e t O u t p u t P o r t W i d t h (S , , 1) ; s s S e t O u t p u t P o r t W i d t h (S , , 1) ; 55 60 s s S e t N u m S a m p l e T i m e s (S , 1) ; ssSetNumRWork (S , 0) ; ssSetNumIWork (S , 0) ; ssSetNumPWork (S , 0) ; ssSetNumModes (S , 0) ; s s S e t N u m N o n s a m p l e d Z C s (S , 0) ; 65 s s S e t S i m S t a t e C o m p l i a n c e (S , U S E _ D E F A U L T _ S I M _ S T A T E ) ; ssSetOptions (S , 0) ; 70 } 75 s t a t i c void m d l I n i t i a l i z e S a m p l e T i m e s ( SimStruct * S ) { s sS et S am pl e Ti m e (S , , Ts ) ; s sS et O ff se t Ti m e (S , , 0.0) ; } 80 85 #define M D L _ I N I T I A L I Z E _ C O N D I T I O N S #i f defined ( M D L _ I N I T I A L I Z E _ C O N D I T I O N S ) s t a t i c void m d l I n i t i a l i z e C o n d i t i o n s ( SimStruct * S ) { double * x0 = s sG e tD is c St a te s ( S ) ; * x0 = 0.0; x0 [4] = Theta0 [0]; /∗ Initial rotor position (theta_0) ∗/ } #endif 90 95 100 105 #define MDL_START #i f defined ( MDL_START ) s t a t i c void mdlStart ( SimStruct * S ) { } #endif static { double double double double double double void mdlOutputs ( SimStruct *S , i n t tid ) * y1 * y2 * y3 * y4 * y5 * y6 = = = = = = s s G e t O u t p u t P o r t S i g n a l (S ,0) ; s s G e t O u t p u t P o r t S i g n a l (S ,1) ; s s G e t O u t p u t P o r t S i g n a l (S ,2) ; s s G e t O u t p u t P o r t S i g n a l (S ,3) ; s s G e t O u t p u t P o r t S i g n a l (S ,4) ; s s G e t O u t p u t P o r t S i g n a l (S ,5) ; double * x = s sG et D is cS t at es ( S ) ; 110 y1 [0] = x [6]; y2 [0] = x [7]; y3 [0] = x [8]; y4 [0] = x [2]; y5 [0] = x [5]*30/ Pi ; /∗ Speed, not omega ∗/ y6 [0] = x [4]; 115 } 120 #define MDL_UPDATE 68 Phụ lục #i f defined ( MDL_UPDATE ) 125 130 135 140 s t a t i c void mdlUpdate ( SimStruct *S , i n t tid ) { double * u1 = s s G e t I n p u t P o r t S i g n a l (S ,0) ; double * u2 = s s G e t I n p u t P o r t S i g n a l (S ,1) ; double * u3 = s s G e t I n p u t P o r t S i g n a l (S ,2) ; double * u4 = s s G e t I n p u t P o r t S i g n a l (S ,3) ; double * x = s sG et D is cS t at es ( S ) ; double id , iq , vd , vq , omega , theta , speed , Tload , Tmotor , va , vb , vc , valpha , vbeta , ia , ib , ic ; /∗ Get the inputs ∗/ va = u1 [0]; vb = u2 [0]; vc = u3 [0]; Tload = u4 [0]; /∗ Get the states ∗/ id = x [0] ; iq = x [1] ; Tmotor = x [2] ; omega = x [3] ; theta = x [4] ; speed = x [5] ; 145 /∗ Transformation ∗/ valpha = ( va - ( vb /2) - ( vc /2) ) *2/3; vbeta = ( sqrt (3) *( vb /2) - sqrt (3) *( vc /2) ) *2/3; 150 155 vd = valpha * cos ( theta ) + vbeta * sin ( theta ) ; vq = valpha * ( - sin ( theta ) ) + vbeta * cos ( theta ) ; /∗ States calculation ∗/ id = id + Ts *(( - R [0]/ Ld [0]) * id + (1/ Ld [0]) * vd + ( omega * Lq [0]/ Ld [0]) * iq ) ; iq = iq + Ts *(( - R [0]/ Lq [0]) * iq + (1/ Lq [0]) * vq - ( omega * Ld [0]/ Lq [0]) * id - ( omega * Phi [0]/ Lq [0]) ) ; 160 /∗ Motor torque ∗/ Tmotor = (3/2) *(( Pn [0]/2) * Phi [0]* iq + ( Pn [0]/2) *( Ld [0] - Lq [0]) * id * iq ) ; /∗ Mechanical speed ∗/ speed = speed + Ts *( Tmotor - Tload - B [0]* speed ) / J [0] ; /∗(x > 0) − (x < 0) is the sign function ∗/ 165 /∗ Electrical speed (omega) ∗/ omega = speed *( Pn [0]/2) ; /∗ Electrical angular (theta) ∗/ 170 theta = theta + Ts *( omega ) ; { i f (( theta > 2* Pi ) ||( theta < -2* Pi ) ) theta = theta - (( theta > 0) - ( theta < 0) ) *2* Pi ; the sign function ∗/ } 175 ia = id * cos ( theta ) - iq * sin ( theta ) ; ib = id * cos ( theta - (2* Pi /3) ) - iq * sin ( theta - (2* Pi /3) ) ; ic = id * cos ( theta + (2* Pi /3) ) - iq * sin ( theta + (2* Pi /3) ) ; 180 185 /∗ Assign to state vector x ∗/ x [0] = id ; x [1] = iq ; x [2] = Tmotor ; x [3] = omega ; x [4] = theta ; x [5] = speed ; 69 /∗(x > 0) − (x < 0) is Phụ lục 190 195 200 x [6] = ia ; x [7] = ib ; x [8] = ic ; } #endif #define M DL _D E RI VA T IV E S #i f defined ( MD L_ D ER I VA TI V ES ) s t a t i c void mdlD erivat ives ( SimStruct * S ) { } #endif s t a t i c void mdlTerminate ( SimStruct * S ) { } 205 210 #i f d e f M AT LA B _M EX _ FI L E #include " simulink c " #e l s e #include " cg_sfun h " #endif Mã chương trình điều khiển dòng điện s t a t i c void mdlOutputs ( SimStruct *S , i n t tid ) { double * x = ss Ge t Di sc S ta t es ( S ) ; double * vd_ref = s s G e t O u t p u t P o r t S i g n a l (S ,0) ; double * vq_ref = s s G e t O u t p u t P o r t S i g n a l (S ,1) ; vd_ref [0] = x [4] ; vq_ref [0] = x [5] ; 10 } #define MDL_UPDATE #i f defined ( MDL_UPDATE ) 15 20 25 static { double double double double double void mdlUpdate ( SimStruct *S , i n t tid ) * id_ref * iq_ref * id = * iq = * speed = s s G e t I n p u t P o r t S i g n a l (S ,0) ; = s s G e t I n p u t P o r t S i g n a l (S ,1) ; s s G e t I n p u t P o r t S i g n a l (S ,2) ; s s G e t I n p u t P o r t S i g n a l (S ,3) ; = s s G e t I n p u t P o r t S i g n a l (S ,4) ; double * vd_ref = s s G e t O u t p u t P o r t S i g n a l (S ,0) ; double * vq_ref = s s G e t O u t p u t P o r t S i g n a l (S ,1) ; double * x = s sG et D is cS t at es ( S ) ; double error_id , error_iq , vd_ref_before , vd_ref_after , vq_ref_before , vq_ref_after , vs_ref , Vmax ; 30 error_id = id_ref [0] - id [0] ; error_iq = iq_ref [0] - iq [0] ; vd_ref_after = x [4] ; vq_ref_after = x [5] ; 35 vd_ref_before = x [6] ; vq_ref_before = x [7] ; 40 x [2] = Kp_id [0]* error_id ; x [0] = x [0] + Ts * Ki_id [0]*( error_id - ( vd_ref_before - vd_ref_after ) * Ka_id [0]) ; 70 Phụ lục x [3] = Kp_iq [0]* error_iq ; x [1] = x [1] + Ts * Ki_iq [0]*( error_iq - ( vq_ref_before - vq_ref_after ) * Ka_iq [0]) ; 45 vd_ref_before = x [0] + x [2] - ( speed [0]*( Pn [0]/2) * Pi /30) * Lq [0]* iq [0] ; vq_ref_before = x [1] + x [3] + ( speed [0]*( Pn [0]/2) * Pi /30) * Ld [0]* id [0] + speed [0]*( Pn [0]/2) * Pi /30* Phi [0]; vs_ref = sqrt ( vd_ref_before * vd_ref_before + vq_ref_before * vq_ref_before ) ; Vmax = Vdc [0]*0.577 ; 50 55 60 i f ( vs_ref