Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 102 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
102
Dung lượng
2,13 MB
Nội dung
LỜI CAM ĐOAN Tôi xin cam đoan đồ luận văn tốt nghiệp:“Điều khiển trực tiếp mômen động không đồng biến tần kiểu ma trận” tự thực hướng dẫn thầy giáo TS Trần Trọng Minh Để hoàn thành đồ á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 tơi xin hồn toàn chịu trách nhiệm Hà Nội, ngày 30 tháng 03 năm 2011 Học viên thực Nguyễn Mạnh Linh MỤC LỤC Nội dung Trang Trang phụ bìa Lời cam đoan Mục lục Danh mục bảng Danh mục hình vẽ, đồ thị DANH MỤC CÁC HÌNH VẼ , ĐỒ THỊ LỜI NÓI ĐẦU CHƯƠNG TỔNG QUAN VỀ BIẾN TẦN MA TRẬN 11 1.1 Khái quát biến tần 11 1.2 Biến tần ma trận (Matrix Converter) 13 1.2.1 Bộ lọc đầu vào (input filter) 14 1.2.2 Mạch bảo vệ áp 17 1.2.3 Ma trận van bán dẫn hai chiều 20 1.3 Phương hướng nghiên cứu đề tài 22 CHƯƠNG MƠ HÌNH TỐN HỌC VÀ VẤN ĐỀ CHUYỂN MẠCH CỦA BIẾN TẦN MA TRẬN 24 2.1 Mơ hình tốn học biến tần ma trận 24 2.2 Các vector điện áp Biến tần ma trận 26 2.3 Vấn đề chuyển mạch biến tần 30 2.4 Tình hình nghiên cứu phát triển biến tần ma trận 36 CHƯƠNG BIẾN TẦN MA TRẬN VÀ HỆ TRUYỀN ĐỘNG ĐIỀU KHIỂN TRỰC TIẾP MÔ MEN 38 3.1 Cơ sở lý thuyết phương pháp DTC 38 3.1.1 Điều khiển từ thông stator 38 3.1.2 Điều khiển mômen 40 3.2 Biến tần ma trận hệ truyền động điều khiển trực tiếp mômen 43 3.3 Ước lượng từ thông stator 47 3.3.1 Hiện tượng trơi tích phân hướng giải 47 3.3.2 Ước lượng từ thông Stator 51 3.4 Tổng hợp mạch vòng tốc độ 60 3.5 Rời rạc hóa hàm truyền liên tục 61 3.5.1 Rời rạc hóa lọc thơng thấp 62 3.5.2 Rời rạc hóa PI 63 CHƯƠNG MÔ PHỎNG VÀ ĐÁNH GIÁ HỆ MC-DTC 69 4.1 Mơ hình khâu tổng hợp dịng điện vào – điện áp 69 4.2 Mơ hình khâu ước lượng từ thơng – mơmen 70 Các khối so sánh từ thông – mômen – sinφ 71 4.3.1 Ước lượng điều khiển giá trị trung bình sinφ 71 4.4 Khối chọn vector điện áp tối ưu 73 4.5 Ma trận van bán dẫn hai chiều 74 4.6 Sơ đồ mô tổng thể hệ thống MC – DTC 75 4.7 Các kết mô 77 4.7.1 Trường hợp 1: Động làm việc góc phần tư thứ 77 4.7.2 Trường hợp xảy trình đảo chiều 81 4.7.3 Động làm việc chế độ hãm tái sinh 81 4.7.4 Mơ mạch vịng tốc độ 82 KẾT LUẬN 84 TÀI LIỆU THAM KHẢO 86 DANH MỤC CÁC BẢNG Bảng 2.1 Các tổ hợp van, vector dòng điện vào điện áp tương ứng 28 Bảng 2.2 Các trường hợp chuyển mạch pha A B 33 Bảng 3.1 Bảng lựa chọn vector điện áp theo luật DTC 43 Bảng 3.2 Bảng chọn tổ hợp van cho hệ MC-DTC 45 DANH MỤC CÁC HÌNH VẼ , ĐỒ THỊ Hình 1.1 Biến tần gián tiếp với điện trở hãm dập động 11 Hình 1.2 Biến tần gián tiếp với cầu Thyristor hãm tái sinh 12 Hình 1.3 Biến tần 4Q sử dụng chỉnh lưu tích cực đầu vào 13 Hình 1.4 Cấu hình MC 14 Hình 1.5 Một số cấu hình mạch lọc LC đầu vào 15 Hình 1.6 Sơ đồ pha lọc LC 15 Hình 1.7 Đặc tính tần số mạch lọc 17 Hình 1.8 Mạch hạn chế dòng nạp tụ Cf 17 Hình 1.9 Mạch bảo vệ áp dùng cầu diode kẹp 18 Hình 1.10 Đặc tính V-A Varistor 19 Hình 1.11 Bảo vệ áp Varistor 20 Hình 1.12 Sơ đồ cấu trúc mạch van Biến tần ma trận 20 Hình 1.13 Cấu tạo số loại van bán dẫn hai chiều 21 Hình 1.14 Các van hai chiều dùng IGBT: (a) C chung, (b) E chung 21 Hình 1.15 Ma trận van bán dẫn hai chiều tích hợp sẵn 21 Hình 1.16 Cấu trúc bên ma trận van BDS tích hợp 22 Hình 2.1 Sơ đồ nối dây mạch van 24 Hình 2.2 Sơ đồ nối dây tổ hợp van biến tần ma trận 28 Hình 2.3 (a): Vector không gian điện áp 30 (b): Vector khơng gian dịng điện đầu vào 30 Hình 2.4 (a): Ngắn mạch phía lưới 31 (b): Hở mạch phía tải……………… ………… …………………………………38 Hình 2.5 Sơ đồ mơ tả q trình chuyển mạch 31 Hình 2.6 Đồ thị tín hiệu điều khiển chuyển mạch 32 Hình 2.7 Logic chuyển mạch bước từ pha A sang B 33 Hình 2.8 Mơ hình mơ khối chuyển mạch bước 34 Hình 2.9 Kết mơ khối chuyển mạch bước 36 Hình 3.1 Sự biến thiên vector từ thông stator 39 Hình 3.2 Quỹ đạo vector từ thơng stator 39 Hình 3.3 Điều khiển từ thơng stato khâu so sánh vị trí 40 Hình 3.4 Phương pháp điều khiển trực tiếp mơmen quay 41 Hình 3.5 Bộ điều khiển mơmen vị trí 41 Hình 3.6 Cấu trúc tổng quát hệ truyền động DTC 42 Hình 3.7 Phân bố điện áp sector 44 Hình 3.8 Bộ so sánh giá trị trung bình sin߮ 44 Hình 3.9 Đồ thị vector dịng đầu vào 45 Hình 3.10 Cấu trúc tổng quan hệ truyền động MC-DTC 46 Hình 3.11 Phép tích phân khơng có thành phần chiều 48 Hình 3.12 Phép tích phân có thành phần chiều 48 Hình 3.13 Sơ đồ khối khâu tích phân cải tiến 49 Hình 3.14 Sơ đồ khối tích phân với khâu phản hồi có hạn chế biên độ 49 Hình 3.15 Sơ đồ mơ khối tích phân 50 Hình 3.16 So sánh kết tích phân tín hiệu có thành phần chiều 51 Hình 3.17 Mơ hình khối ước lượng từ thông stator 52 Hình 3.18 Mơ hình động với khâu ước lượng từ thông stator 53 Hình 3.19 Khâu ước lượng từ thông với lượng Offset = 53 Hình 3.20 Kết mơ với Offset = 54 Hình 3.21 Kết mơ với Offset = 54 Hình 3.22 Khi giá trị hạn chế bị sai lệch 55 Hình 3.23 Mơ hình ước lượng từ thơng stator với khâu bù thích nghi 56 Hình 3.24 Đồ thị vector mô tả mối quan hệ từ thơng stator 57 Hình 3.25 Mơ hình ước lượng từ thơng với khâu bù thích nghi 57 Hình 3.26 Khâu ước lượng từ thông sử dụng cho động cấp nguồn sin pha 58 Hình 3.27 Ước lượng từ thơng stator với mơ hình động cấp nguồn sin pha 58 Hình 3.28 Ước lượng từ thông với động cấp nguồn từ biến tần SVM 59 Hình 3.29 Ước lượng từ thông động cấp nguồn biến tần SVM 59 Hình 3.30 Mơ hình hệ DTC với mạch vòng điều khiển tốc độ 60 Hình 3.31 Tính xấp xỉ thành phần vi phân bậc 63 Hình 3.32 Xấp xỉ thành phần tích phân theo phương pháp hình chữ nhật 65 Hình 3.33 Xấp xỉ thành phần tích phân theo phương pháp hình thang 66 Hình 3.34 Bộ PI với khâu hạn chế biên độ chống bão hịa tích phân 67 Hình 4.1 Mơ hình khâu tổng hợp dòng vào-điện áp 69 Hình 4.2 Ước lượng từ thơng stator 70 Hình 4.3 Ước lượng mơmen điện từ 70 Hình 4.4 Ước lượng vị trí biên độ từ thơng stator 71 Hình 4.5 Ước lượng góc pha dịng đầu vào 71 Hình 4.6 Ước lượng góc pha điện áp vào 71 Hình 4.7 Ước lượng giá trị trung bình sinφ 72 Hình 4.9 Khâu so sánh mơmen vị trí 72 Hình 4.10 Khối lựa chọn tổ hợp van tối ưu 73 Hình 4.11 Ma trận van BDS cấu trúc tổ hợp BDS 74 Hình 4.12 Sơ đồ mô tổng thể hệ MC – DTC 75 Hình 4.13 Sơ đồ tổng thể khối điều khiển bao gồm mạch vịng tốc độ 76 Hình 4.14 Đáp ứng mômen 77 Hình 4.15 Đáp ứng từ thơng 78 Hình 4.16 Quỹ đạo từ thơng stator 78 Hình 4.17 Dịng điện pha động 79 Hình 4.18 Dịng điện điện áp pha A phía lưới 79 Hình 4.19 Biên độ vector không gian điện áp pha đặt lên động 80 Hình 4.20 Đáp ứng mơmen, dịng điện tốc độ động đảo chiều 81 Hình 4.21 Đáp ứng dịng điện điện áp pha A phía lưới 82 Hình 4.22 Đáp ứng tốc độ mômen động tải thay đổi 82 Hình 4.23 Đáp ứng dòng điện pha động tải thay đổi 83 LỜI NÓI ĐẦU Các biến tần công nghiệp chủ yếu có cấu trúc AC – DC – AC, có khâu trung gian chiều với tụ điện lớn làm kho tích trữ lượng Các biến tần có nhược điểm dịng đầu vào khơng sin, hệ số cơng suất khơng điều chỉnh dó cơng suất lắp đặt bị hạn chế, ngồi biến tần thơng thường lại khơng có khả trao đổi công suất với lưới Để khắc phục nhược điểm biến tần truyền thống, nhiều cấu hình nghiên cứu, biến đổi dạng ma trận trường hợp cụ thể Với cấu trúc đặc biệt gồm tổ hợp van bán dẫn hai chiều, biến đổi dạng ma trận ứng dụng làm biến tần trực tiếp AC – AC mà không cần khâu trung gian chiều, tra39o đổi cơng suất với lưới, dịng đầu vào sin, hệ số cơng suất điều chỉnh Chính ưu điểm mà biến tần ma trận thu hút quan tâm nhà nghiên cứu, gọi biến tần thể kỷ 21 Với cấu trúc tương đối phức tạp, việc kết hợp biến đổi ma trận với phương pháp điều khiển động có cấu trúc thuật toán tương đối đơn giản điều khiển trực tiếp mơmen giúp giảm khối lượng tính tốn tồn hệ thống, phát huy mạnh áp đặt mơmen nhanh thuật tốn DTC tính linh hoạt biến đổi ma trận Đề tài: “Điều khiển trực tiếp mômen động không đồng biến tần kiểu ma trận” có nội dung sau: Chương : Tổng quan biến tần ma trận Chương : Mơ hình tốn học vấn đề chuyển mạch Chương : Biến tần ma trận hệ truyền động điều khiển trực tiếp mômen Chương 4: Mơ đánh giá Trong q trình thực luận văn, gặp nhiều khó khăn vấn đề chuyên môn, nhờ tận tình bảo hướng dẫn thầy giáo TS.Trần Trọng Minh, tơi hồn thành luận văn với kết mong muốn Tôi xin gửi lời cảm ơn chân thành tới thầy giáo TS Trần Trọng Minh tập thể thầy cô giáo môn Tự Động Hóa Xí Nghiệp Cơng Nghiệp, trường ĐH Bách Khoa HN Hà Nội, ngày tháng năm 2011 Học viên Nguyễn Mạnh Linh 10 { real_T *lasty = ssGetRWork(S); real_T *y = ssGetOutputPortRealSignal(S,0); *y=1; *lasty=*y; } #endif #define MDL_START #if defined(MDL_START) static void mdlStart(SimStruct *S) { } #endif static void mdlOutputs(SimStruct *S, int_T tid) { const real_T *u = (const real_T*) ssGetInputPortSignal(S,0); real_T *y = ssGetOutputPortSignal(S,0); real_T *lasty = ssGetRWork(S); if (C_Torque==-1&&Flux_Sector==1&&C_Flux==-1) Voltage_Vector=2; else if (C_Torque==-1&&Flux_Sector==2&&C_Flux==-1) Voltage_Vector=3; else if (C_Torque==-1&&Flux_Sector==3&&C_Flux==-1) Voltage_Vector=4; else if (C_Torque==-1&&Flux_Sector==4&&C_Flux==-1) Voltage_Vector=5; else if (C_Torque==-1&&Flux_Sector==5&&C_Flux==-1) Voltage_Vector=6; else if (C_Torque==-1&&Flux_Sector==6&&C_Flux==-1) Voltage_Vector=1; /****************************************************/ else if (C_Torque==0&&Flux_Sector==1&&C_Flux==-1) Voltage_Vector=7; else if (C_Torque==0&&Flux_Sector==2&&C_Flux==-1) Voltage_Vector=0; else if (C_Torque==0&&Flux_Sector==3&&C_Flux==-1) Voltage_Vector=7; else if (C_Torque==0&&Flux_Sector==4&&C_Flux==-1) Voltage_Vector=0; else if (C_Torque==0&&Flux_Sector==5&&C_Flux==-1) Voltage_Vector=7; else if (C_Torque==0&&Flux_Sector==6&&C_Flux==-1) Voltage_Vector=0; /****************************************************/ else if (C_Torque==1&&Flux_Sector==1&&C_Flux==-1) Voltage_Vector=6; else if (C_Torque==1&&Flux_Sector==2&&C_Flux==-1) Voltage_Vector=1; 88 else if (C_Torque==1&&Flux_Sector==3&&C_Flux==-1) Voltage_Vector=2; else if (C_Torque==1&&Flux_Sector==4&&C_Flux==-1) Voltage_Vector=3; else if (C_Torque==1&&Flux_Sector==5&&C_Flux==-1) Voltage_Vector=4; else if (C_Torque==1&&Flux_Sector==6&&C_Flux==-1) Voltage_Vector=5; /****************************************************/ else if (C_Torque==-1&&Flux_Sector==1&&C_Flux==1) Voltage_Vector=3; else if (C_Torque==-1&&Flux_Sector==2&&C_Flux==1) Voltage_Vector=4; else if (C_Torque==-1&&Flux_Sector==3&&C_Flux==1) Voltage_Vector=5; else if (C_Torque==-1&&Flux_Sector==4&&C_Flux==1) Voltage_Vector=6; else if (C_Torque==-1&&Flux_Sector==5&&C_Flux==1) Voltage_Vector=1; else if (C_Torque==-1&&Flux_Sector==6&&C_Flux==1) Voltage_Vector=2; /****************************************************/ else if (C_Torque==0&&Flux_Sector==1&&C_Flux==1) Voltage_Vector=0; else if (C_Torque==0&&Flux_Sector==2&&C_Flux==1) Voltage_Vector=7; else if (C_Torque==0&&Flux_Sector==3&&C_Flux==1) Voltage_Vector=0; else if (C_Torque==0&&Flux_Sector==4&&C_Flux==1) Voltage_Vector=7; else if (C_Torque==0&&Flux_Sector==5&&C_Flux==1) Voltage_Vector=0; else if (C_Torque==0&&Flux_Sector==6&&C_Flux==1) Voltage_Vector=7; /****************************************************/ else if (C_Torque==1&&Flux_Sector==1&&C_Flux==1) Voltage_Vector=5; else if (C_Torque==1&&Flux_Sector==2&&C_Flux==1) Voltage_Vector=6; else if (C_Torque==1&&Flux_Sector==3&&C_Flux==1) Voltage_Vector=1; else if (C_Torque==1&&Flux_Sector==4&&C_Flux==1) Voltage_Vector=2; else if (C_Torque==1&&Flux_Sector==5&&C_Flux==1) Voltage_Vector=3; else if (C_Torque==1&&Flux_Sector==6&&C_Flux==1) Voltage_Vector=4; else Voltage_Vector=*lasty; } #define MDL_UPDATE 89 #if defined(MDL_UPDATE) static void mdlUpdate(SimStruct *S, int_T tid) { real_T *y = ssGetOutputPortSignal(S,0); real_T *lasty = ssGetRWork(S); *lasty=*y; } #endif #define MDL_DERIVATIVES #if defined(MDL_DERIVATIVES) static void mdlDerivatives(SimStruct *S) { } #endif static void mdlTerminate(SimStruct *S) { } #ifdef MATLAB_MEX_FILE #include "simulink.c" #else #include "cg_sfun.h" #endif P2 Đoạn chương trình S-function Advanced_DTC #define S_FUNCTION_NAME Advance_DTC #define S_FUNCTION_LEVEL /*Input Define*/ #define Voltage_Vector u[0] #define C_Sin_Phis u[1] #define Input_PhaseVoltage_Sector u[2] #include "simstruc.h" static void mdlInitializeSizes(SimStruct *S) { ssSetNumSFcnParams(S, 0); /* Number of expected parameters */ if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) { /* Return if number of expected != number of actual parameters */ return; } ssSetNumContStates(S, 0); ssSetNumDiscStates(S, 0); if (!ssSetNumInputPorts(S, 1)) return; ssSetInputPortWidth(S, 0, 3); 90 ssSetInputPortRequiredContiguous(S, 0, true); /*direct input signal access*/ ssSetInputPortDirectFeedThrough(S, 0, 1); if (!ssSetNumOutputPorts(S, 1)) return; ssSetOutputPortWidth(S, 0, 1); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S, 9); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); ssSetSimStateCompliance(S, USE_DEFAULT_SIM_STATE); ssSetOptions(S, 0); } static void mdlInitializeSampleTimes(SimStruct *S) { ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME); ssSetOffsetTime(S, 0, 0.0); } #define MDL_INITIALIZE_CONDITIONS #if defined(MDL_INITIALIZE_CONDITIONS) static void mdlInitializeConditions(SimStruct *S) { real_T *lasty = ssGetRWork(S); real_T *y = ssGetOutputPortRealSignal(S,0); *y=22; *lasty=*y; } #endif #define MDL_START #if defined(MDL_START) static void mdlStart(SimStruct *S) { real_T *lasty = ssGetRWork(S); real_T *y = ssGetOutputPortRealSignal(S,0); *y=22; *lasty=*y; } #endif static void mdlOutputs(SimStruct *S, int_T tid) { const real_T *u = (const real_T*) ssGetInputPortSignal(S,0); real_T *y = ssGetOutputPortSignal(S,0); real_T *lasty = ssGetRWork(S); /***********************************************************************/ if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==1) { 91 *y=6; //-3 [1 0 0 0 1] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=17; //+9 [1 0 0 0 1] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=12; //-6 [0 1 0 0 1] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=5; //+3 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=18; //-9 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=11; //+6 [1 0 0 1 0] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=1; //+1 [1 0 0 0] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=14; //-7 [1 0 0 0] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=7; //+4 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=2; //-1 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==5) { 92 *y=13; //+7 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==1&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=8; //-4 [1 0 1 0] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=3; //+2 [0 0 0 1] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=16; //-8 [0 0 0 1] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=9; //+5 [0 1 0 1] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=4; //-2 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=15; //+8 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=10; //-5 [0 0 1 0] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=6; //-3 [1 0 0 0 1] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=17; //+9 [1 0 0 0 1] } 93 else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=12; //-6 [0 1 0 0 1] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=5; //+3 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=18; //-9 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==2&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=11; //+6 [1 0 0 1 0] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=2; //-1 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=13; //+7 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=8; //-4 [1 0 1 0] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=1; //+1 [1 0 0 0] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=14; //-7 [1 0 0 0] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=7; //+4 [1 0 1 0] 94 } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=3; //+2 [0 0 0 1] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=16; //-8 [0 0 0 1] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=9; //+5 [0 1 0 1] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=4; //-2 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=15; //+8 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==3&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=10; //-5 [0 0 1 0] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=5; //+3 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=18;//-9 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=11; //+6 [1 0 0 1 0] } 95 else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=6; //-3 [1 0 0 0 1] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=17; //+9 [1 0 0 0 1] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=12; //-6 [0 1 0 0 1] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=2; //-1 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=13; //+7 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=8; //-4 [1 0 1 0] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=1; //+1 [1 0 0 0] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=14; //-7 [1 0 0 0] } else if (Input_PhaseVoltage_Sector==4&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=7; //+4 [0 1 0 0] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==1) 96 { *y=4; //-2 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=15;//+8 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=10; //-5 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=3; //+2 [0 0 0 1] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=16; //-8 [0 0 0 1] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=9; //+5 [0 1 0 1] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=5; //+3 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=18; //-9 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=11; //+6 [1 0 0 1 0] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=6; //-3 [1 0 0 0 1] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==5) 97 { *y=17; //+9 [1 0 0 0 1] } else if (Input_PhaseVoltage_Sector==5&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=12; //-6 [0 1 0 0 1] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=1; //+1 [1 0 0 0] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=14;//-7 [1 0 0 0] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=7; //+4 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=2; //-1 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=13; //+7 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=8; //-4 [1 0 1 0] } /***********************************************************************/ else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==1) { *y=4; //-2 [0 1 0 0] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==2) { *y=15; //+8 [0 0 1 0] 98 } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==3) { *y=10; //-5 [0 0 1 0] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==4) { *y=3; //+2 [0 0 0 1] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==5) { *y=16; //-8 [0 0 0 1] } else if (Input_PhaseVoltage_Sector==6&&C_Sin_Phis==1&&Voltage_Vector==6) { *y=9; //+5 [0 1 0 1] } else *y=*lasty; } #define MDL_UPDATE #if defined(MDL_UPDATE) static void mdlUpdate(SimStruct *S, int_T tid) { real_T *lasty = ssGetRWork(S); real_T *y = ssGetOutputPortRealSignal(S,0); *lasty=*y; } #endif #define MDL_DERIVATIVES #if defined(MDL_DERIVATIVES) static void mdlDerivatives(SimStruct *S) { } #endif static void mdlTerminate(SimStruct *S) { } #ifdef MATLAB_MEX_FILE #include "simulink.c" #else #include "cg_sfun.h" 99 #endif P3 Đoạn chương trình thực S-function tổng hợp dịng điện vào điện áp ra: #define S_FUNCTION_NAME TongHopDongDien_DienAp #define S_FUNCTION_LEVEL /*Input #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define Define*/ M_Aa u[0] M_Ba u[1] M_Ca u[2] M_Ab u[3] M_Bb u[4] M_Cb u[5] M_Ac u[6] M_Bc u[7] M_Cc u[8] I_a u[9] I_b u[10] I_c u[11] U_AB u[12] U_BC u[13] U_CA u[14] /*Output define*/ #define I_A y[0] #define I_B y[1] #define I_C y[2] #define U_ab y[3] #define U_bc y[4] #define U_ca y[5] #include "simstruc.h" static void mdlInitializeSizes(SimStruct *S) { ssSetNumSFcnParams(S, 0); /* Number of expected parameters */ if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) { return; } ssSetNumContStates(S, 0); ssSetNumDiscStates(S, 0); if (!ssSetNumInputPorts(S, 1)) return; ssSetInputPortWidth(S, 0, 15); ssSetInputPortRequiredContiguous(S, 0, true); ssSetInputPortDirectFeedThrough(S, 0, 1); 100 if (!ssSetNumOutputPorts(S, 1)) return; ssSetOutputPortWidth(S, 0, 6); ssSetNumSampleTimes(S, 1); ssSetNumRWork(S, 0); ssSetNumIWork(S, 0); ssSetNumPWork(S, 0); ssSetNumModes(S, 0); ssSetNumNonsampledZCs(S, 0); ssSetSimStateCompliance(S, USE_DEFAULT_SIM_STATE); ssSetOptions(S, 0); } static void mdlInitializeSampleTimes(SimStruct *S) { ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME); ssSetOffsetTime(S, 0, 0.0); } #define MDL_INITIALIZE_CONDITIONS #if defined(MDL_INITIALIZE_CONDITIONS) static void mdlInitializeConditions(SimStruct *S) { } #endif #define MDL_START #if defined(MDL_START) static void mdlStart(SimStruct *S) { } #endif static void mdlOutputs(SimStruct *S, int_T tid) { const real_T *u = (const real_T*) ssGetInputPortSignal(S,0); real_T *y = ssGetOutputPortSignal(S,0); double m_Aa, m_Ab, m_Ac, m_Ba, m_Bb, m_Bc, m_Ca, m_Cb, m_Cc; m_Ab=(M_Aa-M_Ab)/3-(M_Ba-M_Bb)/3; m_Bb=(M_Ba-M_Bb)/3-(M_Ca-M_Cb)/3; m_Cb=(M_Ca-M_Cb)/3-(M_Aa-M_Ab)/3; m_Ac=(M_Ab-M_Ac)/3-(M_Bb-M_Bc)/3; m_Bc=(M_Bb-M_Bc)/3-(M_Cb-M_Cc)/3; 101 m_Cc=(M_Cb-M_Cc)/3-(M_Ab-M_Ac)/3; m_Aa=(M_Ac-M_Aa)/3-(M_Bc-M_Ba)/3; m_Ba=(M_Bc-M_Ba)/3-(M_Cc-M_Ca)/3; m_Ca=(M_Cc-M_Ca)/3-(M_Ac-M_Aa)/3; //tong hop dong dau vao I_A=M_Aa*I_a+M_Ab*I_b+M_Ac*I_c; I_B=M_Ba*I_a+M_Bb*I_b+M_Bc*I_c; I_C=M_Ca*I_a+M_Cb*I_b+M_Cc*I_c; //tong hop dien ap day dau U_ab=m_Ab*U_AB+m_Bb*U_BC+m_Cb*U_CA; U_bc=m_Ac*U_AB+m_Bc*U_BC+m_Cc*U_CA; U_ca=m_Aa*U_AB+m_Ba*U_BC+m_Ca*U_CA; } #define MDL_UPDATE #if defined(MDL_UPDATE) static void mdlUpdate(SimStruct *S, int_T tid) { } #endif /* MDL_UPDATE */ #define MDL_DERIVATIVES #if defined(MDL_DERIVATIVES) static void mdlDerivatives(SimStruct *S) { } #endif static void mdlTerminate(SimStruct *S) { } #ifdef MATLAB_MEX_FILE #include "simulink.c" #else #include "cg_sfun.h" #endif 102 ... CHƯƠNG BIẾN TẦN MA TRẬN VÀ HỆ TRUYỀN ĐỘNG ĐIỀU KHIỂN TRỰC TIẾP MÔ MEN Trong chương này, tác giả sâu phân tích việc ứng dụng Biến tần ma trận vào hệ truyền động điều khiển trực tiếp mô men động không. .. đặt m? ?men nhanh thuật tốn DTC tính linh hoạt biến đổi ma trận Đề tài: ? ?Điều khiển trực tiếp m? ?men động không đồng biến tần kiểu ma trận? ?? có nội dung sau: Chương : Tổng quan biến tần ma trận Chương... BIẾN TẦN MA TRẬN VÀ HỆ TRUYỀN ĐỘNG ĐIỀU KHIỂN TRỰC TIẾP MÔ MEN 38 3.1 Cơ sở lý thuyết phương pháp DTC 38 3.1.1 Điều khiển từ thông stator 38 3.1.2 Điều khiển mômen