Thầy đã giúp chúng em có thêm nhiều kiến thức bổ ích để có thể hoàn thành đề tài “ĐIỀU KHIỂN DỰ BÁO MẠCH VÒNG CHO CÔNG SUẤT CHO BỘ CHỈNH LƯU SỬ DỤNG NGÔN NGỮ C” Tóm tắt nội dung đồ án
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
ĐỒ ÁN 1 ĐIỀU KHIỂN DỰ BÁO MẠCH VÒNG CHO CÔNG SUẤT CHO BỘ
CHỈNH LƯU SỬ DỤNG NGÔN NGỮ C
CAO MINH DƯƠNG
Duong.CM212735@sis.hust.edu.vn
Ngành Kỹ thuật Điều khiển & Tự dộng hóa
HÀ NỘI, 6/2024
Chữ ký của GVHD
Trang 2Lời cảm ơn
Lời đầu tiên chúng em xin gửi lời cảm ơn chân thành tới thầy Nguyễn Duy Long Trong quá trình học tập và tìm hiểu môn Đồ án I, chúng em đã nhận được rất nhiều sự quan tâm, giúp đỡ hướng dẫn tâm huyết và tận tình của thầy Thầy đã giúp chúng em có thêm nhiều kiến thức bổ ích để có thể hoàn thành đề tài
“ĐIỀU KHIỂN DỰ BÁO MẠCH VÒNG CHO CÔNG SUẤT CHO BỘ
CHỈNH LƯU SỬ DỤNG NGÔN NGỮ C”
Tóm tắt nội dung đồ án
Trong lĩnh vực điện tử công suất , việc phát triển các bộ chuyển đổi nguồn với chất lượng điện áp cao và kích thước nhỏ gọn cho các thiết bị sử dụng điện là rất quan trọng Bộ biến đổi AC - DC ( Rectifier ) thường được sử dụng trong mạch một chiều trung gian của các thiết bị biến đổi điện năng có công suất vừa Ưu điểm chính của phương pháp này là không cần bộ điều khiển dòng tuyến
tính, phép biến đổi tọa độ hoặc bộ điều biến Mặc dù cấu trúc của mạch chỉnh lưu không quá phức tạp , nhưng việc điều khiển mạch để đạt hiệu suất chuyển đổi cao, đảm bảo ổn định luôn và tối ưu hoá chi phí là mục tiêu quan trọng của các nghiên cứu
Qua đồ án này , em đã có cơ hội áp dụng những kiến thức đã học vào việc thiết
kế một mạch điện tử công suất thực tế , đồng thời biết cách mô phỏng mạch để kiểm tra khả năng đáp ứng của mạch với các yêu cầu kỹ thuật Tuy nhiên , bên cạnh những kết quả đã đạt được , em cũng nhận thấy còn nhiều thiếu sót cần được khắc phục như chưa thuần thục với phần mềm mô phỏng , chưa biết cách lựa chọn thiết bị phù hợp và việc chưa sử dụng thuần thục ngôn ngữ lập trình C
Em rất mong nhận được sự đánh giá và góp ý từ thầy để có thể hoàn thiện đồ án một cách tốt nhất
Trang 3MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU CHUNG 1
1.1 Bộ chỉnh lưu tích cực 3 pha 1
1.2 Phương pháp điều khiển công suất dự báo trực tiếp 2
CHƯƠNG 2 PHƯƠNG PHÁP THỰC HIỆN 3
2.1 Mô hình vector không gian 3
2.2 Mô hình thời gian rời rạc 3
2.3 Xác định hàm chi phí 4
CHƯƠNG 3 MÔ PHỎNG VÀ KẾT QUẢ 7
3.1 Chương trình điều khiển 7
3.2 Sơ đồ mạch lực 11
3.3 Kết quả mô phỏng 12
CHƯƠNG 4 KẾT LUẬN 13
TÀI LIỆU THAM KHẢO 14
Trang 4DANH MỤC HÌNH VẼ
Hình 1 Bộ chỉnh lưu tích cực AFE 1
Hình 2 Chiến lược điều khiển cho bộ chỉnh lưu 2
Hình 3 Khối C/C++ 7
Hình 4 Sơ đồ mạch lực 11
Hình 5 Khối hiển thị giá trị 11
Hình 6 Kết quả mô phỏng 12
Trang 51
CHƯƠNG 1 GIỚI THIỆU CHUNG 1.1 Bộ chỉnh lưu tích cực 3 pha
Active front-end rectifiers (AFE rectifiers) là các thiết bị dùng để chuyển đổi dòng điện xoay chiều (AC) thành dòng điện một chiều (DC) một cách hiệu quả với khả năng điều chỉnh điện áp đầu ra Chúng khác với các bộ chỉnh lưu thụ động truyền thống ở chỗ sử dụng các bộ chuyển đổi điện tử công suất (như transistor IGBT hoặc MOSFET) và các bộ điều khiển để cải thiện hiệu suất và giảm thiểu các nhiễu sóng hài
Dưới đây là một phương pháp điều khiển công suất trực tiếp dự đoán (predictive direct power control) được trình bày sử dụng bộ chỉnh lưu đầu vào tích cực (AFE) Trong phương pháp điều khiển được đề xuất, một số lượng hữu hạn các trạng thái chuyển mạch của bộ biến đổi được cân nhắc, đánh giá ảnh hưởng của mỗi trạng thái tác động lên dòng taiar và công suất đầu vào
Hình 1 Bộ chỉnh lưu tích cực AFE
Hình 1.1 mô tả bộ chỉnh lưu tích cực gồm nguồn xoay chiều ba pha, cuộn kháng lọc RL, mạch chỉnh lưu cầu ba pha với 6 IGBT, tụ điện C và tải một chiều Với 6 van IGBT, 𝑆𝑥 và 𝑠̅ thay phiên nhau đóng mở, tạo ra 3 cụm điều 𝑥 khiển S1, S2 và S3 có lần lượt 2 trường hợp, tổng ta sẽ có được 8 trường hợp khác nhau:
𝑆1 = {1, nếu S1 on và S̅ off 1
0, nếu S1 off và S̅ on1 𝑆2 = {1, nếu S2 on và S̅ off 2
0, nếu S2 off và S̅ on2 𝑆3 = {1, nếu S3 on và S̅ off 3
0, nếu S3 off và S̅ on3
Trang 62
Từ đó với một thông số đầu vào, ta sẽ có được 8 trường hợp cho công suất
đầu ra và từ đó có thể chọn được trường hợp có được công suất tốt nhất theo giá
trị đặt
1.2 Phương pháp điều khiển công suất dự báo trực tiếp
Các phương pháp điều khiển bộ chỉnh lưu có thể được phân loại như: Điều
khiển hướng điện áp(VOC), điều khiển công suất trực tiếp(DPC) Phương pháp
điều khiển dự báo công suất trực tiếp được trình bày trong bản báo cáo này để
điều khiển bộ chỉnh lưu [1]
Hình 2 Chiến lược điều khiển cho bộ chỉnh lưu
Hình trên thể hiện bộ điều khiển được lập trình để điều khiển các trạng
thái đóng cắt từng van của bộ chỉnh lưu AFE, từ đó tính ra được 8 trường hợp
như đã nêu ở trên
Cũng theo hình trên, trong số lượng hữu hạn các trạng thái đóng cắt của các van,
ta xem xét đánh giá ảnh hưởng của từng trạng thái đối với dòng điện qua tải và
công suất đầu vào, trạng thái nào phù hợp với yêu cầu bài toán đặt ra sẽ được lựa
chọn và tiến hành đóng cắt cho trạng thái chuyển mạch tiếp theo
Trang 73
CHƯƠNG 2 PHƯƠNG PHÁP THỰC HIỆN 2.1 Mô hình vector không gian
Áp dụng định luật Kirchhoff 2 vào sơ đồ hình 1, ta xác định được phương trình vector dòng điện đầu vào
𝐿𝑠𝑑𝒊𝑠
𝑑𝑡 = 𝒗𝑠− 𝒗𝑎𝑓𝑒− 𝑅𝑠𝒊𝑠 (2.1)
với is là vector dòng điện đầu vào, vs là vector điện áp nguồn, và vafe là vector điện áp được tạo ra bởi bộ chuyển đổi
Vector dòng điện đầu vào tính theo dòng điện pha bởi phương trình
𝒊𝑠=2
3(𝑖𝑠𝑎+ 𝒂𝑖𝑠𝑏 + 𝒂2𝑖𝑠𝑐) (2.2)
với a=ej(2 π/3 ) , ta tính được vector điện áp nguồn
𝒗𝑠 =2
3(𝑣𝑠𝑎 + 𝒂𝑣𝑠𝑏+ 𝒂2𝑣𝑠𝑐) (2.3)
Vafe được xác định bởi trạng thái chuyển mạch của bộ chuyển đổi và điện áp liên kết DC, và có thể được biểu thị bằng phương trình
𝒗𝑎𝑓𝑒 = 𝑺𝑎𝑓𝑒𝑉𝑑𝑐 (2.4)
Vdc là điện áp một chiều và Safe là trạng thái đóng cắt của bộ chỉnh lưu được xác định
𝑺𝑎𝑓𝑒 =2
3(𝑆1+ 𝒂𝑆2+ 𝒂2𝑆3) (2.5) trong đó S1,S2,S3 là trạng thái chuyển mạch của mỗi bộ chỉnh lưu, được mô tả trong hình 1,nhận giá trị 0 nếu Sx tắt, bằng 1 nếu Sx bật (x=1,2,3)
2.2 Mô hình thời gian rời rạc
Dòng điện dự đoán được tính toán bằng cách sử dụng thời gian rời rạc có
𝒊𝑠(𝑘 + 1) = (1 −𝑅𝑆 𝑇𝑆
𝐿𝑆 ) 𝒊𝑠(𝑘) +𝑇𝑆
𝐿𝑆[𝒗𝑠(𝑘) − 𝒗𝑎𝑓𝑒(𝑘)] (2.6) thu được dạng rời rạc hóa (2.1) trong thời gian lấy mẫu Ts
Việc rời rạc hóa được thực hiện bằng cách lấy đạo hàm gần đúng như sự chênh lệch trong một khoảng thời gian lấy mẫu Ts
𝑑𝒊𝑠
𝑑𝑡 ≈ 𝒊𝑠(𝑘+1)−𝒊𝑠(𝑘)
𝑇𝑠 (2.7)
Trang 84
Phương pháp rời rạc hóa này được chọn vì tính đơn giản Tuy nhiên, có thể sử dụng một phương pháp khác chính xác hơn, nhưng đối với tần số lấy mẫu nhanh,
hệ số của các mô hình thời gian rời rạc gần như giống nhau
Xem xét các vectơ điện áp đầu vào và dòng điện theo tọa độ trực giao, đầu vào tức thời được dự đoán là hoạt động và công suất phản kháng có thể được biểu thị bằng phương trình
𝑃𝑖𝑛(𝑘 + 1) = 𝑅𝑒{𝒗𝑠(𝑘 + 1)𝒊𝑠(𝑘 + 1)} (2.8)
= 𝑣𝑠𝛼𝑖𝑠𝛼+ 𝑣𝑠𝛽𝑖𝑠𝛽
𝑄𝑖𝑛(𝑘 + 1) = 𝐼𝑚{𝒗𝑠(𝑘 + 1)𝒊𝑠(𝑘 + 1)} (2.9)
= 𝑣𝑠𝛽𝑖𝑠𝛼− 𝑣𝑠𝛼𝑖𝑠𝛽 Đối với thời gian lấy mẫu nhỏ, có thể giả định
𝒗𝑠(𝑘 + 1) = 𝒗𝑠(𝑘) (2.10) Tuy nhiên, nếu thời gian lấy mẫu không đủ nhỏ để xem xét hằng số điện áp lưới giữa hai khoảng thời gian lấy mẫu,𝒗𝑠(𝑘 + 1) có thể được tính bằng cách bù góc của vectơ điện áp trong một thời gian lấy mẫu
𝒗𝑠(𝑘 + 1) = 𝒗𝑠(𝑘)ejΔθ (2.11) (với Δθ=ωTs ) là góc dịch của vector điện áp lưới trong khoảng lấy mẫu và ω là
tốc độ góc của điện áp lưới
Để điều chỉnh điện áp liên kết DC, một bộ điều khiển PI được sử dụng Các đầu ra của PI tương ứng với công suất cần thiết để bù lỗi điện áp liên kết dc Biến này đã được chỉ định là tham chiếu công suất hoạt động Pin
2.3 Xác định hàm chi phí
[2]Khi triển khai bộ điều khiển dự đoán trong hệ thống thực, cần phải xem xét một số vấn đề liên quan đến thời gian tính toán Như đã trình bày ở (2.6),
Trang 95
is(k+1) được tính bằng giá trị của dòng điện đo được is(k) và điện áp is(k+1) Bây giờ giả sử rằng điện áp đã chọn sẽ được áp dụng ngay lập tức (k+1), cần phải dự đoán hành vi của dòng điện cho đến thời điểm (k+2) Bằng cách dịch biểu thức (2.6) them 1 chu kì sẽ thu được biểu thức
𝒊𝑠(𝑘 + 2) = (1 −𝑅𝑆 𝑇𝑆
𝐿𝑆 ) 𝒊𝑠(𝑘 + 1) +𝑇𝑆
𝐿𝑆[𝒗𝑠(𝑘 + 1) − 𝒗𝑎𝑓𝑒(𝑘 + 1)] (2.12)
𝒗𝑠(𝑘 + 2) = 𝒗𝑠(𝑘 + 1)ejΔθ (2.13)
𝑃𝑖𝑛(𝑘 + 2) = 𝑅𝑒{𝒗𝑠(𝑘 + 2)𝒊𝑠(𝑘 + 2)} (2.14)
= 𝑣𝑠𝛼𝑖𝑠𝛼+ 𝑣𝑠𝛽𝑖𝑠𝛽
𝑄𝑖𝑛(𝑘 + 2) = 𝐼𝑚{𝒗𝑠(𝑘 + 2)𝒊𝑠(𝑘 + 2)} (2.15)
= 𝑣𝑠𝛽𝑖𝑠𝛼+ 𝑣𝑠𝛼𝑖𝑠𝛽
𝒊𝑠(𝑘 + 2) sẽ thay đổi phụ thuộc vào việc thay đổi giá trị 𝒗𝑎𝑓𝑒(𝑘 + 1) vì giá trị của các tham số còn lại đã được cố định Việc điều khiển giá trị của 𝒗𝑎𝑓𝑒(𝑘 + 1)
sẽ trực tiếp điều khiển được giá trị của dòng điện cũng như giá trị của công suất theo giá trị mong muốn
Đối với bộ chỉnh lưu, công suất đầu vào tác dụng và phản kháng được điều khiển, do đó hàm chi phí đánh giá sai số trong công suất đầu vào
Dòng điện đầu vào 𝒊𝑠(𝑘) được đo và dòng điện tương lai 𝒊𝑠(𝑘 + 1) được tính toán bằng cách sử dụng điện áp chuyển đổi được áp dụng 𝒗𝑎𝑓𝑒(𝑘) Dự đoán
về dòng điện trong tương lai 𝒊𝑠(𝑘 + 2) được tạo ra cho mỗi 1 trong 7 vector điện
áp có thể do AFE tạo ra Những dự đoán này được sử dụng để tính toán công suất tác dụng và phản kháng đầu vào trong tương lai, 𝑃𝑖𝑛(𝑘 + 2) và 𝑄𝑖𝑛(𝑘 + 2) , sử dụng (2.8) và (2.9) đã đi trước một bước về thời gian
Mỗi dự đoán và được đánh giá bởi hàm chi phí 𝑔𝑎𝑓𝑒
Hàm chi phí 𝑔𝑎𝑓𝑒 tóm tắt hành vi mong muốn của chỉnh lưu: giảm thiểu công suất phản kháng 𝑄𝑖𝑛 và kiểm soát hoạt động công suất 𝑃𝑖𝑛 bằng giá trị tham chiếu
Pin*
𝑔𝑎𝑓𝑒 = |𝑄𝑖𝑛(𝑘 + 2)| + |𝑃𝑖𝑛∗ − 𝑃𝑖𝑛(𝑘 + 2)| (2.16)
Trang 106
Bộ điều khiển công suất tích cực có mục đích là đạt được công suất đầu ra gần nhất với giá trị tham chiếu và ta có thể thay đổi điện áp liên kết một chiều Đối với mỗi vectơ điện áp 𝒗𝑎𝑓𝑒(𝑘 + 1) khác nhau ta sẽ thu được giá trị khác nhau của hàm chi phí 𝑔𝐴𝐹𝐸 Với vecto điện áp cho ra kết quả nhỏ nhất của hàm chi phí, giảm thiểu được những sai nhiễu của công suất đầu vào sẽ được chọn cho thời gian lấy mẫu tiếp theo
Trang 117
CHƯƠNG 3 MÔ PHỎNG VÀ KẾT QUẢ 3.1 Chương trình điều khiển
Ta sử dụng khối S-Function Builder để nạp code C vào bộ điều khiển các van của AFE [3]
Hình 3 Khối C/C++
Với ngôn ngữ lập trình C, ta nạp code sau vào mô hình:
#include <Stdlib.h>
#include <String.h>
#include <math.h>
#define Ts 30.0e-6
Trang 128
#define pi 3.14159265359
#define f0 50.0
float theta;
int vector_opt =0;
int S1_OP=0,S2_OP=0,S3_OP=0,S4_OP=0,S5_OP=0,S6_OP=0;
float IA=0.0, IB=0.0, IC=0.0;
int k =1;
float I_AL[4] = 0,0,0,0, I_BE[4] = 0,0,0,0;
float V_AFE_AL[3] = 0,0,0, V_AFE_BE[3] = 0,0,0;
float VS_AL[3] = 0,0,0, VS_BE[3] = 0,0,0;
float S_AL=0.0, S_BE=0.0;
float EA=0.0, EB=0.0, EC = 0.0;
float Jmin=0.0, Jc=0.0;
int j=0;
float time=0.0;
float Preal =0.0, Qreal =0.0;
float P_next2 =0.0, Q_next2 =0.0;
float P_REF =900, Q_REF=0.0;
float L = 10e-2, R =0.1;
float Vdc = 0.0;
float Ipeak = 5.0;
float Vdcref = 400;
nt INV[8][3] =
{
{0,0,0},
{1,0,0},
{1,1,0},
{0,1,0},
{0,1,1},
{0,0,1},
{1,0,1},
{1,1,1}
};
void VECTOR_APPLY(int x)
Trang 139
{
S1_OP=INV[x][0];
S3_OP=INV[x][1];
S5_OP=INV[x][2];
S2_OP=1-S1_OP;
S4_OP=1-S3_OP;
S6_OP=1-S5_OP;
}
void ABC2ALBE(float *x_al, float *x_be, float xa, float xb, float xc)
{
*x_al = 2.0/3.0*(xa - 0.5 * xb - 0.5* xc );
*x_be = 1/(sqrt(3.0)) * (xb - xc);
}
float costfunction(float P_next2, float Q_next2, float P_ref, float Q_ref)
{
float sum=0;
sum = (P_next2-P_ref)*(P_next2-P_ref) + (Q_next2-Q_ref)*(Q_next2-Q_ref); return sum;
}
float PI_V_outlast1 = 0.0; float PI_V_elast1 = 0.0;
float Kpvp = 3, Kivp = 300;
float PI(float error, float *PI_elast1, float *PI_outlast1, float Kp, float Ki, float T) {
float PI_out;
PI_out = *PI_outlast1 + (Kp+Ki*T*0.5)*error + (Ki*T*0.5-Kp) * *PI_elast1;
*PI_elast1 = error;
*PI_outlast1 = PI_out;
return PI_out;
}
VECTOR_APPLY(vector_opt);
IA = Ia[0];
IB = Ib[0];
IC = Ic[0];
EA = Ea[0];
Trang 1410
EB = Eb[0];
EC = Ec[0];
Vdc = vdc[0];
ABC2ALBE(&I_AL[k], &I_BE[k], IA, IB, IC);
ABC2ALBE(&VS_AL[k], &VS_BE[k], EA, EB, EC);
P_REF = PI(Vdcref - Vdc , &PI_V_elast1, &PI_V_outlast1, Kpvp, Kivp, Ts); ABC2ALBE(&S_AL, &S_BE, INV[vector_opt][0], INV[vector_opt][1], INV[vector_opt][2]);
V_AFE_AL[k] = S_AL *Vdc;
V_AFE_BE[k] = S_BE *Vdc;
I_AL[k+1] = (1-R*Ts/L)* I_AL[k] + Ts/L*(VS_AL[k] - V_AFE_AL[k]);
I_BE[k+1] = (1-R*Ts/L)* I_BE[k] + Ts/L*(VS_BE[k] - V_AFE_BE[k]);
Preal = VS_AL[k] * I_AL[k] + VS_BE[k] * I_BE[k];
Qreal = VS_BE[k] * I_AL[k] - VS_AL[k] * I_BE[k];
Jmin = 1e30;
for(j=0; j<7; j++)
{
ABC2ALBE(&S_AL, &S_BE, INV[j][0], INV[j][1], INV[j][2]);
V_AFE_AL[k+1] = S_AL * Vdc;
V_AFE_BE[k+1] = S_BE * Vdc;
I_AL[k+2] =(1-R*Ts/L)* I_AL[k+1] + Ts/L*(VS_AL[k] -V_AFE_AL[k+1]); I_BE[k+2] =(1-R*Ts/L)* I_BE[k+1] + Ts/L*(VS_BE[k] -V_AFE_BE[k+1]); P_next2 = VS_AL[k] * I_AL[k+2] + VS_BE[k] * I_BE[k+2];
Q_next2 = VS_BE[k] * I_AL[k+2] - VS_AL[k] * I_BE[k+2];
Jc = costfunction(P_next2, Q_next2, P_REF, Q_REF);
if(Jc < Jmin)
{
Jmin = Jc;
vector_opt = j;
}
}
time = time + Ts;
if(time>0.4) Vdcref=300;
if(time>0.7) Vdcref=700;
Trang 1511
Với các tham số được chọn khi thiết lập chương trình là: R = 0.1Ω, L = 10−2𝐻,
C = 470µF Vs = 150V/50Hz, Ts = 30µs và các thông số của bộ điều khiển PI tương ứng K pvp = 3, Kivp = 300
3.2 Sơ đồ mạch lực
Hình 4 Sơ đồ mạch lực
Các thông số như P đặt và Q đặt được so sánh với giá trị mô phỏng sẽ được biểu diễn qua màn hình scope bằng cách đưa các giá trị vào như sau
Hình 5 Khối hiển thị giá trị
Trang 1612
3.3 Kết quả mô phỏng
Hình 6 Kết quả mô phỏng
Hình trên là kết quả khi mô phỏng bằng Matlab simulink trong thời gian 1 giây với các giá trị Vdc vào thay đổi tại 0,4s và 0,7s Ta thấy thuật toán điều khiển cho thấy sự thay đổi nhanh chóng của P và Q khi thay đổi Vdc, và sự chênh lệch giữa giá trị mô phỏng và giá trị đặt là không đáng kể Sự sai khác nhỏ xảy ra do việc xấp xỉ và miền thời gian rời rạc theo từng chu kì lấy mẫu
Trang 1713
CHƯƠNG 4 KẾT LUẬN
Điều khiển dự báo công suất cho bộ chỉnh lưu sử dụng ngôn ngữ lập trình C
vô cùng đơn giản, dễ thực hiện nhưng là một kỹ thuật quan trọng trong các hệ thống điện tử công suất, đặc biệt là trong các ứng dụng đòi hỏi hiệu suất cao và khả năng đáp ứng nhanh Đồ án này đã chứng minh tính khả thi của việc áp dụng
kỹ thuật điều khiển dự báo công suất cho bộ chỉnh lưu bằng ngôn ngữ lập trình C
từ đó tiếp tục cải tiến và mở rộng ứng dụng của kĩ thuật này nói riêng và ứng dụng của cả lĩnh vực điện tử công suất nói chung vào các hệ thống điện trong công nghiệp cũng như trong cuộc sống hằng ngày
Trang 18
14
TÀI LIỆU THAM KHẢO
[1] M Malinowski, M P Kazmierkowski, and A M Trzynadlowski, "A comparative study of control techniques for pwm rectifiers in ac adjustable drives", IEEE Transactions on power electronics, 2003
[2] G Sybille and H Le-Huy, ""Digital simulation of power systems and power
electronics using the matlab/simulink power system blockset"," 2000 IEEE Power Engineering Society Winter Meeting Conference Proceedings, vol 4,
pp 2973-2981, 2000
[3] B W Kernighan and D M Ritchie, "The c programming language", 2002