Từ các kết quả đạt được trong suốt quá trình xây dựng hệt thống thí nghiệm với hệ thống mạch lực và vi điều khiển TMS320F2812 cho thấy trong cả hai trường hợp khảo sát NLNZ làm việc độc lập ( stand alone ) và nối lưới ( grid connected ), cho thấy điện áp trên tụ (C1&C2) tăng và ổn định theo giá trị đặt ngay cả khi điện áp sơ cấp đặt vào NLNZ không đủ lớn, điều này đảm bảo cho yêu cầu nối lưới và cung cấp điện áp ra tải có biên độ ổn định theo giá trị đặt.
Kết luận
KẾT LUẬN
Trong khuôn khổ luận văn, sau khi tìm hiểu và phân tính vai trò của các thiết bị điện tử công suất trong các hệ nguồn phân tán, đặc biệt là hệ nguồn phát dùng sức gió, phân tích ra những yêu cầu, và tính cấp bách cần có một bộ nguồn phát nhỏ gọn, chất lượng tốt cho các hệ nguồn phát dùng năng lượng tái tạo. Luận văn đã đưa ra được cấu hình nghịch lưu nguồn Z ứng dụng cho nguồn phát dùng năng lượng gió.
Những đóng góp chính của luận văn:
Đưa ra được giải pháp điều chế vector không gian ứng dụng cho bộ nghịch lưu nguồn Z 3 pha.
Mô hình hóa nghịch lưu nguồn Z với nguồn sơ cấp đầu vào là nguồn áp. Thiết kế bộ điều chỉnh ổn định điện áp trên tụ (C1&C2) bằng hằng số. Đối với ứng dụng bộ biến đổi dùng nguồn đầu vào là máy phát đồng bộ nam châm vĩnh cửu, xây dựng được mạch vòng phía xoay chiều để đảm bảo ổn định điện áp xoay chiều trên tải trong chế độ làm việc độc lập và điều khiển được quá trình trao đổi công suất trong chế độ làm việc nối lưới. Mô phỏng hệ thống trên Matlab – Simulink.
Xây dựng mô hình thực nghiệm bộ nghịch lưu nguồn Z trong phòng thí nghiệm. Thuật toán điều khiển được cài đặt trên vi điều khiển TMS320F2812 của Texas Instruments để đánh giá khả năng làm việc độc lập và nối lưới.
Đề xuất các hướng nghiên cứu tiếp theo:
Nghiên cứu tính ổn định của hệ thống điều khiển NLNZ khi tải thay đổi bất thường, mất cân bằng hay khi lưới điện xuất hiện trạng thái không bình thường với NLNZ nối lưới.
Tài liệu tham khảo
TÀI LIỆU THAM KHẢO
[1]Ali Keyhani, Mohammad N.Marwali, Min Dai (2010), Intergration of Green and Renewable energy in electric power systems, John Wiley & Sons, Inc., Hoboken, New Jersey.
[2]BinWu (2006), High – power Converter and ac Drives, The intitute of Electrical and Electronic Engineers. Inc.
[3]Fang Zheng Peng (2003) “Z-source inverter”, IEEE Transactions on Industry
Applications, pp. 504-510, vol.39, no.2, March/April, 2003.
[4]Gokhan Sen (2008),Voltage and Current progammed mode in control of the Z- source Inverter, The graduate Falcuty of the University of Akron, In partial Fulfillment of the requirements for the Degree Master of Science.
[5]Jingbo Liu, Jiangang Hu and longya Xu (2007) , “Dynamic modeling and Analysis of Z Source Converter – Derivation of AC Small Signal model and Design – Oriented Analysis”, IEEE Transactions on power electronics , vol.22 ,No.5 , September 2007.
[6]Trần Trọng Minh (2008), Giáo trình điện tử công suất dung cho các trường cao
đẳng, trung cấp chuyên nghiệp –dạy nghề, Nhà xuất bản giáo dục .
[7]Moritz von Zimmermann, Martin Lechler, Bernhard Piepenbreier (2009), “Z- source drive inverter using modified SVPWM for low Output Voltage and regenerating Operation”, European Conference on Power Electronics and Applications, pp.1-10
[8]Omar Ellabban, Student member IEEE ,Joeri Van Mierlo and Philippe Lataire (2009), “Voltage Mode and Current Control for a 30 kHz High- performance Z- source Inverter”, IEEE Electric power & Energy Conference ,978-1-4244-4509 7,September-seventh- 2009.
[9]Nguyễn Phùng Quang (2006) , Truyền động điện thông minh, Nhà xuất bản khoa học và kỹ thuật Hà Nội.
Tài liệu tham khảo
[10] Remus Teodorescu, Marco Liserre, Pedro Rodríıguez (2011), Grid converters for
photovoltaic and wind power systems, 2011 John Wiley & Sons, Ltd.
[11] Robinson F. de Camargo, Humberto Pinheiro (2005), “Comparison of Six Digital Current Control Techniques for Three-Phase Voltage-Fed PWM Converters Connected to the Utility Grid”, Conference on Power Electronics Specialists,
pp.1422 - 1428.
[12] Ryszard Strzelecki, Grzegorz Benysek (2008), Power electronics in Smart
electrical Energy network, Spinger.
[13] Shuitao Yang, Xinping Ding, Fan Zhang, F.Z.Peng and Zhaoming Qian (2008),
“Unifed Control Technique for Z - Source Inverter”, Conference on Power
Electronics Specialists , pp. 3236 – 3242.
[14] S.Thangaprakash and A.Krishnan, “Modifiled Space Vector pulse Width Modulation for Z-Source Inverters”, International Journal of Recent Trends in
Engineering , Vol2, No6, November 2009.
[15] Tae-Won Chun , Quang-Vinh Tran , Jung-Ryol Ahn , Jih-Sheng Lai (2006), “AC Output Voltage Control with Minimization of Voltage Stress Across Devices in the Z-Source Inverter Using Modified SVPWM”, Conference on Power Electronics Specialists , pp.1-5.
[16] Website http://www.eia.gov , truy nhập cuối cùng ngày 06/6/2012. [17] Website http://www.energinet.dk , truy nhập cuối cùng ngày 06/9/2014. [18] Website http://www.tennet.eu, truy nhập cuối cùng ngày 06/9/2014.
Phụ lục
PHỤ LỤC
P1. Chương trình chính viết cho TMS320F2812 bằng CCS 3.3
/*
=================================================================== ===========
System Name: Z SOURCE INVERTER 3 PHASE File Name: VERSION 4
Description: Su dung ngat UF cua GPT1 de tinh toan Originator: Note: Date: 31/10/2011 =================================================================== ============== */ #include "target.h" #if (DSP_TARGET==F2812) #include "DSP281x_Device.h" #endif #include "IQmathLib.h" #include "pmsm3_1.h" #include "parameter.h" #include "build.h" #include <math.h>
interrupt void MainISR(void); // Prototype for MainISR void EnableStartStop(void);
float32 T = 0.001/ISR_FREQUENCY; // T_pwm float32 F_ref = 50; // Tan so dien ap dieu che float32 F_max = 120;
// following Udc =24 V , Dsh = 0.25 , Uc = 36 float32 Ucref= 200;
Phụ lục float32 abs_Uref=172; // 14; float32 Dshref =0.25; // 0;// float32 Umax = 400; float32 Ucmax=360; _iq Udc = 0;
_iq temp = 0; // Gia tri dien ap mot chieu doc duoc Uint16 IsrTicker = 0; Uint16 BackTicker = 0; int16 DlogCh1 = 0; int16 DlogCh2 = 0; int16 DlogCh3 = 0; int16 DlogCh4 = 0; int16 StartStop = 0;
volatile Uint16 EnableFlag = FALSE; // DLOG_4CH_buff1 RMPCNTL rc1 = RMPCNTL_DEFAULTS;
RAMPGEN rg1 = RAMPGEN_DEFAULTS; SVM_1P svm1 = SVM_1P_DEFAULTS;
PWMGEN_DONGBO pwm1 = PWM_DEFAULTS;
VOLTAGE_MEAS meas1 = VOLTAGE_MEAS_DEFAULTS; PID_DSH pid1 = PID_DSH_DEFAULTS;
RAMP ram1 = RAMP_DEFAULTS; FILTER filter1 = FILTER_DEFAULTS; FILTER filter2 = FILTER_DEFAULTS;
DLOG_4CH dlog = DLOG_4CH_DEFAULTS;
//================================================================== =====================
Phụ lục {
#if (DSP_TARGET==F2812)
InitSysCtrl(); // PLL = 10/2 , tat watchdog timer EALLOW;
SysCtrlRegs.HISPCP.all = 0x0000; // HIS = 1 , bo chia tan cho EV bang 1, tan so EV= tan so CPU
EDIS; DINT;
IER = 0x0000; // xoa cho phep ngat IFR = 0x0000; // xoa co ngat
InitPieCtrl();// xoa cac cho phep ngat va co ngat cua 14 kenh ngat
InitPieVectTable(); // khai bao bang vector ngat va ten cac ham phuc vu ngat EvaRegs.GPTCONA.all = 0; // genaral timer EVA control
EvbRegs.GPTCONB.all = 0; EALLOW;
GpioMuxRegs.GPBDIR.bit.GPIOB6 = 0; // set as input GpioMuxRegs.GPBDIR.bit.GPIOB7 = 0; // set as input EDIS;
while (EnableFlag==FALSE) // ct se dung o day neu chua co co cho phep chay {
BackTicker++; }
EvaRegs.EVAIMRA.bit.T1UFINT = 1; // Enable interrup Timer1 Underflow EvaRegs.EVAIFRA.bit.T1UFINT = 1; // Flag of Timer1 Underflow is set
EALLOW;
PieVectTable.T1UFINT = &MainISR; // Gan ham main phuc vu ngat vao vi tri Timer1 underflow cua bang vector
Phụ lục
PieCtrlRegs.PIEIER2.all = M_INT6;
IER |= M_INT2; // cho phep ngat underflow #endif pwm1.PeriodMax = SYSTEM_FREQUENCY*1000000*T/2; pwm1.init_pwm(&pwm1); dlog.iptr1 = &DlogCh1; dlog.iptr2 = &DlogCh2; dlog.iptr3 = &DlogCh3; dlog.iptr4 = &DlogCh4; dlog.trig_value = 0x1; dlog.size = 0x400; dlog.prescalar = 1; dlog.init(&dlog); rg1.StepAngleMax = _IQ(F_max*T); meas1.init(&meas1); // 0.02874 z^2 - 0.0546 z + 0.02593 // z^2 - 0.1435 z - 0.8565 ********************************** // 0.2194 z^2 - 0.4167 z + 0.1976 z^2 - 0.5965 z - 0.4035 // 0.008054 z^2 - 0.01516 z + 0.00713 // z^2 - 0.4596 z - 0.5404 pid1.c1 = _IQ(0.008054*Ucmax); pid1.c2 = _IQ(-0.01516*Ucmax); pid1.c3 = _IQ(0.00713*Ucmax); pid1.c4 = _IQ(-0.4596); pid1.c5 = _IQ(-0.5404);
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM for(;;) BackTicker++;
Phụ lục }
//================================================================== ============
// Chuong trinh ngat MainISR xay ra khi co ngat Timer1 UF // Thuc hien update PWM
//================================================================== ============
interrupt void MainISR(void) {
IsrTicker++;
// LEVEL1 completed open loop , #if (BUILDLEVEL==LEVEL1) EnableStartStop(); rg1.Freq = _IQ(F_ref/F_max); rg1.calc(&rg1); svm1.D =_IQ(Dshref); svm1.absUref= _IQ(abs_Uref/Umax); svm1.Ui= _IQdiv(_IQ(Ucref/Ucmax),(_IQ(1.0)-_IQ(Dshref))); svm1.a = _IQ(Umax/Ucmax); svm1.theta= rg1.Out; svm1.calc(&svm1); pwm1.MfuncC1 = (int16)_IQtoIQ15(svm1.T1); pwm1.MfuncC2 = (int16)_IQtoIQ15(svm1.T2); pwm1.MfuncC3 = (int16)_IQtoIQ15(svm1.T3); pwm1.MfuncC4 = (int16)_IQtoIQ15(svm1.T4); pwm1.update_pwm(&pwm1);
Phụ lục DlogCh1 = (int16)_IQtoIQ15(svm1.T1); DlogCh2 = (int16)_IQtoIQ15(svm1.T2); DlogCh3 = (int16)_IQtoIQ15(svm1.T3); DlogCh4 = (int16)_IQtoIQ15(svm1.T4); dlog.update(&dlog); #endif // (Ket thuc LEVEL1)
//===================================== // LEVEL2 So do tuong duong 1 pha
#if (BUILDLEVEL==LEVEL2) // Doc gia tri Uc
meas1.read(&meas1);
Udc = _IQ15toIQ((int32)meas1.VdcMeas); Udc -= _IQ(0.05);
// Loc gia tri Uc filter1.x = Udc;
filter1.calc(filter1); // Tinh toan bo dieu chinh PID
pid1.Uc_ref = _IQ(Uc/Ucmax); pid1.Uc_fb = filter1.y;
pid1.calc(&pid1); /*
// Loc gia tri Dsh
filter2.Tc = _IQ(0.00015); filter2.x = pid1.Out; filter2.calc(&filter2); */
// Convert to ranged (-1,1)
Phụ lục pwm1.MfuncC1 = (int16)_IQtoIQ15(temp); pwm1.update_pwm(&pwm1); DlogCh1 = (int16)_IQtoIQ15(filter1.y); // Uc DlogCh2 = (int16)_IQtoIQ15(pid1.Out); // Dsd dlog.update(&dlog);
#endif // ( Ket thuc LEVEL2)
//======================================= // LEVEL3 closed loop
#if (BUILDLEVEL==LEVEL3) EnableStartStop(); // Ramgen rg1.Freq = _IQ(F_ref/F_max); rg1.calc(&rg1);
// Doc gia tri Uc
meas1.read(&meas1);
Udc = _IQ15toIQ((int32)meas1.VdcMeas); Udc -=_IQ(0.025); // 0.03 - 140
// Loc gia tri Uc
filter1.Tc = _IQ(0.0008); filter1.x = Udc;
filter1.calc(filter1); // gioi han Uc
if(filter1.y >=_IQ(Ucmax)) filter1.y=_IQ(Ucmax); // Bo dieu chinh PID tinh toan ra Dsh
pid1.Uc_ref = _IQ(Ucref/Ucmax); pid1.Uc_fb = filter1.y; // Udc;
Phụ lục
pid1.calc(&pid1); // Loc gia tri Dsh
filter2.Tc = _IQ(0.0005); filter2.x = pid1.Out; filter2.calc(&filter2); // Dieu che vecto pwm2 svm1.D = filter2.y ;
svm1.Ui = _IQdiv( _IQ(Ucref/Ucmax),(_IQ(1.0)- filter2.y)); // Ui= Uc/(1- Dsh),_IQmpy(filter1.y,_IQ(Ucmax/Uimax)),_IQ(Uc/Uimax)
//svm1.Ui = _IQdiv(Udc,(_IQ(1.0)- filter2.y)); svm1.theta = rg1.Out; svm1.absUref = _IQ(abs_Uref/Umax); svm1.a=_IQ(Umax/Ucmax); svm1.calc(&svm1); pwm1.MfuncC1 = (int16)_IQtoIQ15(svm1.T1); pwm1.MfuncC2 = (int16)_IQtoIQ15(svm1.T2); pwm1.MfuncC3 = (int16)_IQtoIQ15(svm1.T3); pwm1.MfuncC4 = (int16)_IQtoIQ15(svm1.T4); pwm1.update_pwm(&pwm1);
// Hien thi len Grap
DlogCh1 = (int16)_IQtoIQ15(Udc); // hien thi dien ap mot chieu do vao DlogCh2 = (int16)_IQtoIQ15(filter2.y); // hien thi Dsh sau loc
DlogCh3 = (int16)_IQtoIQ15(svm1.T1); // DlogCh4 = (int16)_IQtoIQ15(svm1.T2); //
dlog.update(&dlog); #endif // (Ket thuc LEVEL3) dlog.update(&dlog);
Phụ lục #if (DSP_TARGET==F2812) EvaRegs.EVAIMRA.bit.T1UFINT = 1; EvaRegs.EVAIFRA.all = BIT9; PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; #endif } void EnableStartStop(void) {
if ( GpioDataRegs.GPBDAT.bit.GPIOB6 == 0 && GpioDataRegs.GPBDAT.bit.GPIOB7 == 1)StartStop = 1; // Run
if ( GpioDataRegs.GPBDAT.bit.GPIOB7 == 0 )StartStop = 0; // Stop if ( StartStop == 0 ) // Stop
{
EALLOW;
GpioMuxRegs.GPAMUX.all = 0; // Setting PWM1-6 as I/O pins GpioMuxRegs.GPBMUX.all = 0; // Setting PWM7-12 as I/O pins GpioMuxRegs.GPADIR.all = 0x003F; // Output GpioMuxRegs.GPBDIR.all = 0x003F; // Output GpioDataRegs.GPADAT.all = 0; GpioDataRegs.GPBDAT.all = 0; GpioDataRegs.GPBDAT.bit.GPIOB4=1; GpioDataRegs.GPBDAT.bit.GPIOB5=0; EDIS; } if ( StartStop == 1 ) // Run { EALLOW;
GpioMuxRegs.GPAMUX.all |= 0x003F; // Setting PWM1-6 as primary output pins GpioMuxRegs.GPBMUX.all |= 0x000F; // Setting PWM7-10 as primary output pins
GpioDataRegs.GPBDAT.bit.GPIOB4=0;
GpioDataRegs.GPBDAT.bit.GPIOB5=1; EDIS;
Phụ lục } }
//=========================== END==================================
Chương trình điều chế vector không gian
File header Target: TMS320F281x family =================================================================== ================== */ #ifndef __F281XPWM_DONGBO_H__ #define __F281XPWM_DONGBO_H__ #include "f281xbmsk.h" /*---
Initialization constant for the F281X Timer TxCON for PWM Generation. Sets up the timer to run free upon emulation suspend, continuous up-down mode prescaler 1, timer enabled.
---*/ #define PWM_INIT_STATE (FREE_RUN_FLAG + \ TIMER_CONT_UPDN + \
TIMER_CLK_PRESCALE_X_1 + \ TIMER_ENABLE_BY_OWN + \ TIMER_ENABLE)
/*---
Initialization constant for the F281X ACTRx register for PWM Generation. Sets up PWM polarities.
Phụ lục
#define ACTR_INIT_STATE ( COMPARE1_AH + \ COMPARE2_AL + \ COMPARE3_AL + \ COMPARE4_AH + \ COMPARE5_AH + \ COMPARE6_AL ) /*--- Define the structure of the PWM Driver Object
---*/ typedef struct {
Uint16 PeriodMax; // Parameter: PeriodMax is PWM Half-Period in CPU clock cycles (Q0)
int16 MfuncPeriod; // Input:MfuncPeriod is Period scaler (Q15) int16 MfuncC1; // Input: PWM 1&2 Duty cycle ratio (Q15) int16 MfuncC2; // Input: PWM 3&4 Duty cycle ratio (Q15) int16 MfuncC3; // Input: PWM 5&6 Duty cycle ratio (Q15)
int16 MfuncC4; // Input: PWM 7&8 Duty cycle ratio (Q15) //int16 MfuncC5; // Input: PWM 9&10 Duty cycle ratio (Q15) //int16 MfuncC6; // Input: PWM 11&12 Duty cycle ratio (Q15)
void (*init_pwm)(); // Pointer to the init function void (*update_pwm)(); // Pointer to the update function } PWMGEN_DONGBO ;
/*--- Define a PWMGEN_handle
---*/ typedef PWMGEN_DONGBO *handle;
/*--- Default Initializers for the F281X PWMGEN Object
---*/ #define F281X_PWM_GEN_DONGBO {1000, \
0x7FFF, \ 0x4000, \
Phụ lục 0x4000, \ 0x4000, \ 0x4000, \ (void (*)(Uint32))F281X_EV_PWM_Init, \ (void (*)(Uint32))F281X_EV_PWM_Update \ }
#define PWM_DEFAULTS F281X_PWM_GEN_DONGBO /*---