BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Hoàng Xuân Hùng TÍNH TOÁN ƢỚC LƢỢNG THÔNG SỐ TRẠNG THÁI MỘT HỆ THỐNG ĐIỆN VỚI DỮ LIỆU ĐẦU VÀO CHO BỞI ĐỊNH DẠNG CDF Chuyên ngành: KỸ THUẬT ĐIỆN LUẬN VĂN THẠC SĨ KỸ THUẬT KỸ THUẬT ĐIỆN NGƢỜI HƢỚNG DẪN KHOA HỌC TS NGUYỄN NGA VIỆT Hà Nội – Năm 2014 LỜI CAM ĐOAN Tôi tên Hoàng Xuân Hùng, số học viên: CB110596, học viên cao học lớp Kỹ thuật Điện khóa 2011B Ngƣời hƣớng dẫn TS Nguyễn Nga Việt Tôi xin cam đoan toàn nội dung đƣợc trình bày luận văn: “TÍNH TOÁN ƢỚC LƢỢNG THÔNG SỐ TRẠNG THÁI MỘT HỆ THỐNG ĐIỆN VỚI DỮ LIỆU ĐẦU VÀO CHO BỞI ĐỊNH DẠNG CDF” kết trình tìm hiểu nghiên cứu Các liệu đƣợc viết luận văn trung thực Tôi xin hoàn toàn chịu trách nhiệm với nội dung đƣợc viết luận văn Hà Nội, ngày tháng 04 năm 2014 Học viên Hoàng Xuân Hùng Trang MỤC LỤC DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT DANH MỤC CÁC THUẬT NGỮ KHOA HỌC SỬ DỤNG DANH MỤC CÁC BẢNG BIỂU DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ CHƢƠNG MÔ HÌNH TOÁN HỆ THỐNG 13 1.1 Phƣơng pháp tính toán ƣớc lƣợng trạng thái hệ thống điện WLS 13 1.2 Mô hình toán hệ thống điện 14 1.2.1 Tính ma trận tổng dẫn Y hệ thống điện 14 1.2.2 Ma trận biểu diễn quan hệ giá trị đo đƣợc vectơ trạng thái 17 1.2.3 Hàm đặc trƣng sai số nhỏ phép đo 20 CHƢƠNG PHÂN TÍCH TỆP “CDF” DỮ LIỆU HỆ THỐNG ĐIỆN 22 2.1 Giới thiệu Tệp liệu cdf sử dụng nghiên cứu 22 2.1.2 Tệp liệu cdf hệ thống điện IEEE 22 2.1.2 Tệp liệu cdf hệ thống điện miền bắc 32 2.2 Matlab ứng dụng cho Luận văn 34 2.3 Chuyển đổi liệu từ tệp “.cdf” thành “.m” để sử dụng Matlab 35 CHƢƠNG THỰC HIỆN GIẢI BÀI TOÁN ƢỚC LƢỢNG THÔNG SỐ HỆ THỐNG ĐIỆN TRÊN MATLAB 45 3.1 Sơ đồ thuật toán 45 3.2 Lập trình giải toán 47 3.4 Mô chƣơng trình 48 Trang 3.4.1 Kết thực chƣơng trình với lần thử nghiệm 49 3.4.2 Kết thực chƣơng trình với 500 lần thử nghiệm 52 3.5 Đánh giá sai số 61 KẾT LUẬN 64 TÀI LIỆU THAM KHẢO 65 PHỤ LỤC 66 Trang DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT Kí hiệu, từ viết tắt CDF Viết đầy đủ Nghĩa Common Data Format Định dạng liệu chung (chuẩn IEEE) CT Current Transformer Bộ biến dòng EMS Energy Management System Hệ thống quản lý lƣợng IED Intelligent Electronic Device Thiết bị điện tử thông minh IEEE SCADA WLS Institute of Electrical and Electronics Engineers Supervisory Control And Data Acquisistion Viện Kỹ nghệ Điện – Điện tử Điều khiển giám sát Thu thập liệu Bình phƣơng cực tiểu có trọng số Weighted Least Square Trang DANH MỤC CÁC THUẬT NGỮ KHOA HỌC SỬ DỤNG Thuật ngữ Nghĩa tiếng Việt Blackout Sự cố điện diện rộng Bus Thanh Power System Hệ thống điện State Estimator Công cụ ƣớc lƣợng thông số trạng thái Switchgear Bộ chuyển mạch Trang DANH MỤC CÁC BẢNG BIỂU Bảng Dữ liệu cái, tệp cdf - Phần 1/3 24 Bảng Dữ liệu cái, tệp cdf - phần 2/3 25 Bảng Dữ liệu cái, tệp cdf - phần 3/3 26 Bảng Dữ liệu nhánh, tệp cdf - phần 1/5 27 Bảng Dữ liệu nhánh, tệp cdf - phần 2/5 28 Bảng Dữ liệu nhánh, tệp cdf - phần 3/5 29 Bảng Dữ liệu nhánh, tệp cdf - phần 4/5 30 Bảng Dữ liệu nhánh, tệp cdf - phần 5/5 31 Trang DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình Sơ đồ hệ thống SCADA/EMS 10 Hình Sơ đồ hệ thống điện mẫu IEEE 118 bus 23 Hình Mô hệ thống điện miền bắc Powerwworld Simulator 33 Hình Sơ đồ khối thực chƣơng trình 45 Hình Sơ đồ thuật toán chƣơng trình tính toán ƣớc lƣợng 46 Hình Kết giá trị ƣớc lƣợng lần thử nghiệm 50 Hình Kết mô lần thử nghiệm với hệ thống điện miền bắc 51 Hình Biểu đồ giá trị modul điện áp 52 Hình Biểu đồ phân bố giá trị modul điện áp 53 Hình 10 Biểu đồ giá trị modul điện áp hệ thống điện miền bắc 54 Hình 11 Biểu đồ phân bố giá trị modul điện áp hệ thống điện miền bắc 54 Hình 12 Biểu đồ giá trị góc pha điện áp 55 Hình 13 Biểu đồ phân bố giá trị góc pha điện áp 55 Hình 14 Biểu đồ giá trị góc pha điện áp hệ thống điện miền bắc 56 Hình 15 Biểu đồ phân bố giá trị góc pha điện áp hệ thống điện miền bắc 56 Hình 16 Biểu đồ sai số modul điện áp 57 Hình 17 Biểu đồ phân bố sai số modul điện áp 57 Hình 18 Biểu đồ sai số modul điện áp hệ thống điện miền bắc 58 Hình 19 Biểu đồ phân bố sai số modul điện áp hệ thống điện miền bắc 58 Hình 20 Biểu đồ sai số giá trị đo điện áp 59 Hình 21 Biển đồ phân bố sai số giá trị đo điện áp 59 Hình 22 Biểu đồ sai số giá trị đo điện áp hệ thống điện miền bắc 60 Hình 23 Biểu đồ phân bố sai số giá trị đo điện áp hệ thống điện miền bắc 60 Hình 24 Biểu đồ giá trị đo điện áp bus với nhiễu lớn 62 Hình 25 Biểu đồ modul điện áp bus với nhiễu lớn 62 Trang MỞ ĐẦU Lí chọn đề tài Với nhiệm vụ quan trọng cung cấp lƣợng điện cho hoạt động kinh tế - xã hội đất nƣớc, năm vừa qua, hệ thống điện Việt Nam có bƣớc phát triển lớn công suất, quy mô lƣới, Những năm gần đây, tốc độ tăng trƣởng phụ tải cao, lƣới điện chƣa đảm bảo dự phòng nên xảy tình trạng tải đƣờng dây trạm biến áp Theo thống kê có 45 đƣờng dây (ĐD) 59 Máy biến áp (MBA) 500/220 phải vận hành tải, tổng số lần tải MBA 573 lần, tổng số lần tải ĐD 592 lần, chất lƣợng điện áp số điểm nằm giới hạn cho phép ảnh hƣởng đến chất lƣợng điện nhƣ vận hành hệ thống Đã xảy cố ảnh hƣởng tới cung cấp điện diện rộng, điển hình 26/4/2012 nhảy máy cắt 572, 574 Trạm 500kV Quảng Ngãi bảo vệ so lệch đoạn dẫn F87S tác động, phải ngừng vận hành MBA AT2 nhiều giờ; 18/11/2012 cố ĐD mạch kép 500kV Hà Tĩnh-Nho Quan Hà Tĩnh-Đà Nẵng nổ T1582 Trạm 500kV Hà Tĩnh, gây liên kết hệ thống 500kV [5] Trong suốt nhiều năm qua, hệ thống điện toàn giới gặp nhiều cố điện diện rộng (blackout) Ngày 14/01/2012, trạm truyền tải điện 380 kV bị hỏng tổ hợp nhà máy điện khí tự nhiên kết hợp Bursa Thổ Nhĩ Kỳ gây hƣ hỏng mạng điện kết nối với gây điện thành phố nằm khu vực Marmara, với số dân 20 triệu ngƣời bị ảnh hƣởng [6] Cũng nhƣ cố xảy vào tháng 8/2003 từ Midwest gây điện tới khu vực lớn Đông Bắc Mỹ Nam Canada, để lại hậu nghiêm trọng Các báo cáo, điều tra từ quan chức cho thấy nguyên nhân công cụ ƣớc lƣợng trạng thái hệ thống điện không hoạt động thời điểm [3], [4] Ngày nay, hầu hết hệ thống điện đại dựa hệ thống tích hợp SCADA/EMS để sử dụng công nghệ thông tin truyền thông cho việc tối ƣu Trang truyền dẫn, phân phối điện nhà sản xuất hộ tiêu thụ, hợp sở hạ tầng điện với sở hạ tầng thông tin liên lạc Energy Management System State Estimation Supervisory Control Switchgear Hình Data Acquisition CT IED IED Sơ đồ hệ thống SCADA/EMS Hệ thống SCADA đƣợc sử dụng để thu thập liệu điều khiển giám sát hệ thống từ xa [7] Theo liệu đƣợc thu nhận tự động xử lý, hiển thị hình, bảng sơ đồ tất tín hiệu thời gian thực phần tử hệ thống điện nhƣ: tần số, điện áp điểm nút, thông số vận hành thiết bị, trạng thái làm việc tất thiết bị đóng cắt Hệ thống EMS hệ thống công cụ hỗ trợ máy tính đƣợc sử dụng để theo dõi, kiểm soát tối ƣu hóa hiệu suất việc phát và/hoặc hệ thống truyền tải [8] EMS có tính quan trọng tính toán ƣớc lƣợng thông số trạng thái hệ thống điện (power system state estimation) Để hệ thống điện đƣợc giám sát liên tục nhằm trì điều kiện vận hành an toàn hiệu quả, công cụ tính toán ƣớc lƣợng hoạt động nhƣ lọc thông số đo lƣờng nhận đƣợc từ hệ thống SCADA ứng dụng cần sở liệu tin cậy thông số trạng thái hệ thống [3] Ngoài yếu tố khách quan kiểm soát đƣợc, cố điện diện rộng nhƣ nói không xảy tức Khi đƣợc giám sát thông số trạng thái hệ Trang 10 PL2.2 ]; branch = [ 9 3 18 23 4 12 13 21 21 22 10 44 13 12 12 14 13 19 15 14 15 17 17 18 19 20 27 20 22 23 24 22 31 22 29 23 37 23 25 26 27 25 26 28 27 28 27 31 31 27 29 31 31 32 39 31 40 31 45 31 32 33 32 34 32 35 35 34 36 35 36 37 38 36 44 37 42 39 41 40 45 40 0.05214 9900 0 0.00315 0.03045 0.29862 553 0.0063 0.03361 0.05052 692 0.00534 0.036215 0.2256 362 0.00956 0.06478 0.10084 362 0.00089 0.0093 0.8578 1299 0.00218 0.02237 2.13035 866 0 0.05187 9900 0 0.00301 0.03117 3.00261 866 0.001365 0.01446 5.55428 866 0.00083 0.00845 0.79614 1299 0.01678 0.06278 0.10253 263 0.01275 0.0477 0.07785 296 0.004575 0.017095 0.11116 0.00919 0.03435 0.05604 263 0.00214 0.01451 0.02255 362 0.00968 0.03618 0.05903 263 0.00112 0.00603 0.03686 296 0 0.052135 9900 0.00498 0.05336 5.41062 1299 0.01296 0.04849 0.07885 263 0.00666 0.04908 0.12839 393 0.00218 0.021 0.05139 553 0.00694 0.05113 0.13376 393 0.006715 0.02512 0.16402 263 0.10427 9900 0 0.00145 0.00981 0.061 362 0.00336 0.02277 0.14168 362 0 0.05214 9900 0 0.00232 0.0125 0.0191 9900 0.01389 0.0749 0.1147 296 0.00741 0.0387 0.05945 692 0.001335 0.01408 0.3048 866 0.00066 0.00448 0.05302 318 0.00115 0.007775 0.04836 362 0.00086 0.00585 0.06924 318 0.000975 0.00579 0.0358 343 0.00658 0.04461 0.06938 362 0.00658 0.04461 0.06938 362 0.00383 0.03276 0.05345 526 0.0017 0.011665 0.13538 526 0.00379 0.02242 0.0376 362 0.00251 0.01487 0.02493 362 0.00763 0.04516 0.07577 362 0.001905 0.00712 0.04644 263 0.00429 0.03668 0.05985 526 0.00416 0.03562 0.05812 526 0.00326 0.02786 0.04544 526 0.00095 0.00698 0.073 393 0 0.052295 9900 0.00145 0.01067 0.11152 393 0.00498 0.05338 5.41067 1299 0.07 0.415 3.00E-05 343 0.00504 0.03412 0.05305 362 0.00611 0.03612 0.06058 362 0 0 0 0 0 514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1; 0 0 0 1; 0 0 0 0 0 0 0 0 1; 0 1; 0 0 0 0 0 0 0 0 0 0 0 0 0 1; 1; 1; 1; 1; 0 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 0 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; PL2.3 41 41 43 42 43 45 42 45 42 45 45 44 0.00574 0.03403 0.05266 343 0.00061 0.003615 0.02308 0.02081 0.11246 0.17268 393 0.00538 0.02863 0.0443 296 0.01786 0.1538 0.25324 526 0.05214 9900 ]; areas = ]; gencost 2 2 2 2 ]; return; [ 1; = [ 0 0 0 0 0 0 0 0 3 3 3 3 0.00548546 0.00540541 0.0166667 0.0114155 0.0259067 0.0487805 0.0166667 0.0877193 20 20 20 20 20 20 20 20 0; 0; 0; 0; 0; 0; 0; 0; 526 0 0 0 0 0 0 0 0 0 1; 1; 1; 1; 1; 1; PL3.1 PHỤ LỤC 3: Chương trình tính toán dòng công suất function [baseMVA, buslf, genlf, branchlf, ABusID, ARefID, NArefID, i2e] = LFmodule(casename, mpopt, DecTable); [PQ, PV, REF, NONE, BUS_I, BUS_TYPE, PD, QD, GS, BS, BUS_AREA, VM, VA, BASE_KV, ZONE, VMAX, VMIN, LAM_P, LAM_Q, MU_VMAX, MU_VMIN] = idx_bus; [F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch; [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen; [baseMVA, bus, gen, branch] = loadcase(casename); na = size(DecTable,2); ABusID = cell(na,1); ARefID = zeros(na,1); NArefID = cell(na,1); for i=1:na ABusID{i} = find(bus(:,BUS_I)*DecTable(:,i)); ARefID(i) = find(DecTable(:,i) == 2); NArefID{i} = find(DecTable(:,i) == 1); end [i2e, bus, gen, branch] = ext2int(bus, gen, branch); [ref, pv, pq] = bustypes(bus, gen); on = find(gen(:, GEN_STATUS) > 0); gbus = gen(on, GEN_BUS); V0 = bus(:, VM) * exp(sqrt(-1) * pi/180 * bus(:, VA)); V0(gbus) = gen(on, VG) / abs(V0(gbus)).* V0(gbus); [Ybus, Yf, Yt] = makeYbus(baseMVA, bus, branch); Sbus = makeSbus(baseMVA, bus, gen); alg = mpopt(1); if alg == [V, success, iterations] = newtonpf(Ybus, Sbus, V0, ref, pv, pq, mpopt); elseif alg == | alg == [Bp, Bpp] = makeB(baseMVA, bus, branch, alg); [V, success, iterations] = fdpf(Ybus, Sbus, V0, Bp, Bpp, ref, pv, pq, mpopt); elseif alg == [V, success, iterations] = gausspf(Ybus, Sbus, V0, ref, pv, pq, mpopt); else error('Only Newton''s method, fast-decoupled, and Gauss-Seidel power flow algorithms currently implemented.'); end PL3.2 [buslf, genlf, branchlf] = pfsoln(baseMVA, bus, gen, branch, Ybus, Yf, Yt, V, ref, pv, pq); printpf(baseMVA, buslf, genlf, branchlf, [], 1, 0); PL4.1 PHỤ LỤC 4: Chương trình mô nhiễu giá trị đo lường [PQ, PV, REF, NONE, BUS_I, BUS_TYPE, PD, QD, GS, BS, BUS_AREA, VM, VA, BASE_KV, ZONE, VMAX, VMIN, LAM_P, LAM_Q, MU_VMAX, MU_VMIN] = idx_bus; [F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch; [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen; nb = size(buslf,1); nbr = size(branchlf,1); ng = size(genlf,1); VamR VmmR PdmR QdmR PfmR QfmR PtmR QtmR PgmR QgmR CVamR CVmmR CPdmR CQdmR CPfmR CQfmR CPtmR CQtmR CPgmR CQgmR = = = = = = = = = = speye(nb,nb); speye(nb,nb); speye(nb,nb); speye(nb,nb); speye(nbr,nbr); speye(nbr,nbr); speye(nbr,nbr); speye(nbr,nbr); speye(ng,ng); speye(ng,ng); = = = = = = = = = = speye(nb,nb); speye(nb,nb); speye(nb,nb); speye(nb,nb); speye(nbr,nbr); speye(nbr,nbr); speye(nbr,nbr); speye(nbr,nbr); speye(ng,ng); speye(ng,ng); CVamEsR = speye(nb,nb); CVmmEsR = speye(nb,nb); CCrandR = speye(4*nb + 4*nbr + 2*ng +2*nb, 4*nb + 4*nbr + 2*ng +2*nb); corrMatrix = blkdiag(VamR, VmmR, PdmR, QdmR, PfmR, QfmR, PtmR, QtmR, PgmR, QgmR, CVamR, CVmmR, CPdmR, CQdmR, CPfmR, CQfmR, CPtmR, CQtmR, CPgmR, CQgmR, CVamEsR, CVmmEsR, CCrandR); PL4.2 randTable = (copularnd('Gaussian',corrMatrix,Mloop))'; Vam Vmm Pdm Qdm Pfm Qfm Ptm Qtm Pgm Qgm = = = = = = = = = = randTable(1:nb,:); randTable(nb + (1:nb),:); randTable(2*nb + (1:nb),:); randTable(3*nb + (1:nb),:); randTable(4*nb + (1:nbr),:); randTable(4*nb + nbr + (1:nbr),:); randTable(4*nb + 2*nbr + (1:nbr),:); randTable(4*nb + 3*nbr + (1:nbr),:); randTable(4*nb + 4*nbr + (1:ng),:); randTable(4*nb + 4*nbr + ng + (1:ng),:); nlocal = 4*nb + 4*nbr + % Commnication noise CVam = randTable(nlocal CVmm = randTable(nlocal CPdm = randTable(nlocal CQdm = randTable(nlocal CPfm = randTable(nlocal CQfm = randTable(nlocal CPtm = randTable(nlocal CQtm = randTable(nlocal CPgm = randTable(nlocal CQgm = randTable(nlocal 2*ng; + + + + + + + + + + (1:nb),:); nb + (1:nb),:); 2*nb + (1:nb),:); 3*nb + (1:nb),:); 4*nb + (1:nbr),:); 4*nb + nbr + (1:nbr),:); 4*nb + 2*nbr + (1:nbr),:); 4*nb + 3*nbr + (1:nbr),:); 4*nb + 4*nbr + (1:ng),:); 4*nb + 4*nbr + ng + (1:ng),:); CVamEs = randTable(2*nlocal + (1:nb),:); CVmmEs = randTable(2*nlocal + nb + (1:nb),:); CVamEsC = CVamEs; CVmmEsC = CVmmEs; nNoise = 2*nlocal + 2*nb; CVamRa = CVmmRa = CPdmRa = CQdmRa = CPfmRa = CQfmRa = CPtmRa = CQtmRa = CPgmRa = CQgmRa = CVamEsRa CVmmEsRa randTable(nNoise + randTable(nNoise + randTable(nNoise + randTable(nNoise + randTable(nNoise + randTable(nNoise + randTable(nNoise + randTable(nNoise + randTable(nNoise + randTable(nNoise + = randTable(nNoise = randTable(nNoise (1:nb),:); nb + (1:nb),:); 2*nb + (1:nb),:); 3*nb + (1:nb),:); 4*nb + (1:nbr),:); 4*nb + nbr + (1:nbr),:); 4*nb + 2*nbr + (1:nbr),:); 4*nb + 3*nbr + (1:nbr),:); 4*nb + 4*nbr + (1:ng),:); 4*nb + 4*nbr + ng + (1:ng),:); + nlocal + (1:nb),:); + nlocal + nb + (1:nb),:); j = sqrt(-1); Valf = buslf(:,VA)*pi/180; %rad Vmlf = buslf(:,VM); %p.u Pdlf = buslf(:,PD)/baseMVA; Qdlf = buslf(:,QD)/baseMVA; Pflf = branchlf(:,PF)/baseMVA; PL4.3 Qflf Ptlf Qtlf Pglf Qglf = = = = = branchlf(:,QF)/baseMVA; branchlf(:,PT)/baseMVA; branchlf(:,QT)/baseMVA; genlf(:,PG)/baseMVA; genlf(:,QG)/baseMVA; Sdlf Sflf Stlf Sglf = = = = Pdlf Pflf Ptlf Pglf + + + + j*Qdlf; j*Qflf; j*Qtlf; j*Qglf; fullscale = 1; measFac = 0.01; VamSig VmmSig PdmSig QdmSig PfmSig QfmSig PtmSig QtmSig PgmSig QgmSig CVamSig CVmmSig CPdmSig CQdmSig CPfmSig CQfmSig CPtmSig CQtmSig CPgmSig CQgmSig = = = = = = = = = = 0.0001 * ones(nb,1); 0.004 * ones(nb,1); 0.01 * ones(nb,1); 0.01 * ones(nb,1); 0.008 * ones(nbr,1); 0.008 * ones(nbr,1); 0.008 * ones(nbr,1); 0.008 * ones(nbr,1); 0.01 * ones(ng,1); 0.01 * ones(ng,1); = = = = = = = = = = cnoiseFac cnoiseFac cnoiseFac cnoiseFac cnoiseFac cnoiseFac cnoiseFac cnoiseFac cnoiseFac cnoiseFac * * * * * * * * * * 0.0001/cnoiseFac * ones(nb,1); 0.01/cnoiseFac * ones(nb,1); 0.01 * ones(nb,1); 0.01 * ones(nb,1); 0.01 * ones(nbr,1); 0.01 * ones(nbr,1); 0.01 * ones(nbr,1); 0.01 * ones(nbr,1); 0.01 * ones(ng,1); 0.01 * ones(ng,1); CVamEsSig = cnoiseFacEs * 0.001 * ones(nb,1); CVmmEsSig = cnoiseFacEs * 0.001 * ones(nb,1); for i=1:Mloop Vam(:,i) = Vmm(:,i) = Pdm(:,i) = Qdm(:,i) = Pfm(:,i) = Qfm(:,i) = Ptm(:,i) = Qtm(:,i) = Pgm(:,i) = Qgm(:,i) = norminv(Vam(:,i), norminv(Vmm(:,i), norminv(Pdm(:,i), norminv(Qdm(:,i), norminv(Pfm(:,i), norminv(Qfm(:,i), norminv(Ptm(:,i), norminv(Qtm(:,i), norminv(Pgm(:,i), norminv(Qgm(:,i), Valf, Vmlf, Pdlf, Qdlf, Pflf, Qflf, Ptlf, Qtlf, Pglf, Qglf, VamSig); VmmSig); PdmSig); QdmSig); PfmSig); QfmSig); PtmSig); QtmSig); PgmSig); QgmSig); CVam(:,i) = norminv(CVam(:,i), 0, CVamSig); CVmm(:,i) = norminv(CVmm(:,i), 0, CVmmSig); PL4.4 CPdm(:,i) CQdm(:,i) CPfm(:,i) CQfm(:,i) CPtm(:,i) CQtm(:,i) CPgm(:,i) CQgm(:,i) = = = = = = = = norminv(CPdm(:,i), norminv(CQdm(:,i), norminv(CPfm(:,i), norminv(CQfm(:,i), norminv(CPtm(:,i), norminv(CQtm(:,i), norminv(CPgm(:,i), norminv(CQgm(:,i), 0, 0, 0, 0, 0, 0, 0, 0, CPdmSig); CQdmSig); CPfmSig); CQfmSig); CPtmSig); CQtmSig); CPgmSig); CQgmSig); CVamEs(:,i) = norminv(CVamEs(:,i), 0, CVamEsSig); CVmmEs(:,i) = norminv(CVmmEs(:,i), 0, CVmmEsSig); for j=1:nb CVam(j,i) = contaminate(CVam(j,i), CVamRa(j,i), ep, lambda); CVmm(j,i) = contaminate(CVmm(j,i), CVmmRa(j,i), ep, lambda); CPdm(j,i) = contaminate(CPdm(j,i), CPdmRa(j,i), ep, lambda); CQdm(j,i) = contaminate(CQdm(j,i), CQdmRa(j,i), ep, lambda); CVamEsC(j,i) = contaminate(CVamEs(j,i), CVamEsRa(j,i), epEs, lambdaEs); CVmmEsC(j,i) = contaminate(CVmmEs(j,i), CVmmEsRa(j,i), epEs, lambdaEs); end for j=1:nbr CPfm(j,i) = contaminate(CPfm(j,i), CPfmRa(j,i), ep, lambda); CQfm(j,i) = contaminate(CQfm(j,i), CQfmRa(j,i), ep, lambda); CPtm(j,i) = contaminate(CPtm(j,i), CPtmRa(j,i), ep, lambda); CQtm(j,i) = contaminate(CQtm(j,i), CQtmRa(j,i), ep, lambda); end for j=1:ng CPgm(j,i) = contaminate(CPgm(j,i), CPgmRa(j,i), ep, lambda); CQgm(j,i) = contaminate(CQgm(j,i), CQgmRa(j,i), ep, lambda); end end Vam Pdm Qdm Pfm Qfm Ptm Qtm Pgm Qgm CVam CPdm CQdm CPfm CQfm CPtm CQtm CPgm CQgm = = = = = = = = = Vam*180/pi; Pdm*baseMVA; Qdm*baseMVA; Pfm*baseMVA; Qfm*baseMVA; Ptm*baseMVA; Qtm*baseMVA; Pgm*baseMVA; Qgm*baseMVA; = = = = = = = = = CVam*180/pi; CPdm*baseMVA; CQdm*baseMVA; CPfm*baseMVA; CQfm*baseMVA; CPtm*baseMVA; CQtm*baseMVA; CPgm*baseMVA; CQgm*baseMVA; CVamEs = CVamEs*180/pi; CVamEsC = CVamEsC*180/pi; PL5.1 PHỤ LỤC 5: Chương trình tính toán ma trận phương sai function [busm, genm, branchm] = RMEsystem(buslf, genlf, branchlf, Vam, Vmm, Pdm, Qdm, Pfm, Qfm, Ptm, Qtm, Pgm, Qgm, CVam, CVmm, CPdm, CQdm, CPfm, CQfm, CPtm, CQtm, CPgm, CQgm) [PQ, PV, REF, NONE, BUS_I, BUS_TYPE, PD, QD, GS, BS, BUS_AREA, VM, VA, BASE_KV, ZONE, VMAX, VMIN, LAM_P, LAM_Q, MU_VMAX, MU_VMIN] = idx_bus; [F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch; [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen; busm = buslf; genm = genlf; branchm = branchlf; busm(:,VA) busm(:,VM) busm(:,PD) busm(:,QD) branchm(:,PF) branchm(:,QF) branchm(:,PT) branchm(:,QT) genm(:,PG) genm(:,QG) = = = = = = = = = = Vam Vmm Pdm Qdm Pfm Qfm Ptm Qtm Pgm Qgm + + + + + + + + + + CVam; CVmm; CPdm; CQdm; CPfm; CQfm; CPtm; CQtm; CPgm; CQgm; PL6.1 PHỤ LỤC 6: Chương trình tính toán ước lượng function [bus, gen, branch, CovEs, converged, observable] = SEmodule(mpopt, baseMVA, WInv, buslf, genlf, branchlf, busm, genm, branchm) tol = mpopt(2); verbose = mpopt(31); condestConst = 10^25; bad_threshold = 9; [PQ, PV, REF, NONE, BUS_I, BUS_TYPE, PD, QD, GS, BS, BUS_AREA, VM, VA, BASE_KV, ZONE, VMAX, VMIN, LAM_P, LAM_Q, MU_VMAX, MU_VMIN] = idx_bus; [F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch; [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen; [i2e, buslf, genlf, branchlf] = ext2int(buslf, genlf, branchlf); [i2e, busm, genm, branchm] = ext2int(busm, genm, branchm); [ref, pv, pq] = bustypes(busm, genm); nref = [pv;pq]; lnref = length(nref); [Ybus, Yf, Yt] = makeYbus(baseMVA, busm, branchm); i = 0; converged = 0; observable = 0; nb = size(busm,1); nbr = size(branchm, 1); f = branchm(:, F_BUS); t = branchm(:, T_BUS); busIdx = (1:nb)'; j = sqrt(-1); Vlf = buslf(:,VM).*exp(j*buslf(:,VA)*pi/180); %p.u Vm = busm(:,VM).*exp(j*busm(:,VA)*pi/180); %p.u Pfm = branchm(:,PF); %MW Qfm = branchm(:,QF); %MVar Ptm = branchm(:,PT); %MW Qtm = branchm(:,QT); %MVar Sbusm = SbusBuid(busm, genm)/baseMVA; %p.u Sfm = (Pfm + j*Qfm)/baseMVA; %p.u Stm = (Ptm + j*Qtm)/baseMVA; %p.u z = [ real(Sfm); real(Stm); PL6.2 real(Sbusm); angle(Vm); imag(Sfm); imag(Stm); imag(Sbusm); abs(Vm); ]; Varef = angle(Vlf(ref)); brchnfref = (1:nbr)'; busnref = (1:nb)'; for i = 1:length(ref) brchnfref = intersect(brchnfref,find(f~=ref(i))); brchnfref = intersect(brchnfref,find(t~=ref(i))); busnref = busnref(busnref~=ref(i)); end vv=[brchnfref; nbr + brchnfref; 2*nbr + busnref; 2*nbr + nb + []; 2*nbr + 2*nb + brchnfref; 3*nbr + 2*nb + brchnfref; 4*nbr + 2*nb + busnref; 4*nbr + 3*nb + busnref]; vvp = vv; ww = [nref; nb + [nref;ref] ]; V = ones(nb,1); j = sqrt(-1); V(ref) = exp(j*Varef); Sfe = V(f) * conj(Yf * V); Ste = V(t) * conj(Yt * V); Sbuse = V * conj(Ybus * V); z_est = [ real(Sfe); real(Ste); real(Sbuse); angle(V); imag(Sfe); imag(Ste); imag(Sbuse); abs(V); ]; delz = z - z_est; normF = delz' * WInv * delz; [dSbus_dVm, dSbus_dVa] = dSbus_dV(Ybus, V); [dSf_dVa, dSf_dVm, dSt_dVa, dSt_dVm] = dSbr_dV(branchm, Yf, Yt, V); PL6.3 H = [ real(dSf_dVa) real(dSt_dVa) real(dSbus_dVa) speye(nb) imag(dSf_dVa) imag(dSt_dVa) imag(dSbus_dVa) sparse(nb,nb) ]; real(dSf_dVm); real(dSt_dVm); real(dSbus_dVm); sparse(nb,nb); imag(dSf_dVm); imag(dSt_dVm); imag(dSbus_dVm); speye(nb); HH = H(vv,ww); WWInv = WInv(vv,vv); ddelz = delz(vv); VVa = angle(V(nref)); VVm = abs(V(nref)); F = HH' * WWInv * ddelz; J = HH' * WWInv * HH; if condest(J) < condestConst observable = 1; else observable = 0; end if verbose > fprintf('\n it norm( F ) step size'); fprintf('\n '); fprintf('\n%3d %10.3e %10.3e', i, normF, 0); end if normF < tol converged = 1; if verbose > fprintf('\nConverged!\n'); end end max_it_bad_data = 50; ibd = 1; while (~converged & observable & ibd fprintf('\n%3d %10.3e %10.3e', i, normF, step); end if (step < tol) converged = 1; if verbose fprintf('\nState estimator converged in %d iterations.\n', i); end end [dSbus_dVm, dSbus_dVa] = dSbus_dV(Ybus, V); [dSf_dVa, dSf_dVm, dSt_dVa, dSt_dVm] = dSbr_dV(branchm, Yf, Yt, V); H = [ real(dSf_dVa) real(dSf_dVm); real(dSt_dVa) real(dSt_dVm); real(dSbus_dVa) real(dSbus_dVm); speye(nb) sparse(nb,nb); imag(dSf_dVa) imag(dSf_dVm); imag(dSt_dVa) imag(dSt_dVm); imag(dSbus_dVa) imag(dSbus_dVm); sparse(nb,nb) speye(nb); ]; HH = H(vv,ww); WWInv = WInv(vv,vv); ddelz = delz(vv); VVa = angle(V(nref)); VVm = abs(V(nref)); F = HH' * WWInv * ddelz; J = HH' * WWInv * HH; end if verbose PL6.5 if ~converged fprintf('\nState estimator did not converge in %d iterations.\n', i); end end RR = inv(WWInv) - HH * inv(HH' * WWInv * HH) * HH'; rr = diag(RR); B = ddelz ^ / rr; [maxB,i_maxB] = max(B); if maxB >= bad_threshold rejected = i_maxB; else rejected = []; end if length(rejected) baddata = 1; converged = 0; if verbose fprintf('\nRejecting %d measurement(s) as bad data:\n', length(rejected)); fprintf('\tindex\t B\n'); fprintf('\t -\t -\n'); fprintf('\t%4d\t%10.2f\n', [ vv(rejected), B(rejected) ]' ); end k = find( B < maxB ); vvp = vv; vv = vv(k); nm = length(vv); end if (baddata == 0) converged = 1; if verbose fprintf('\nNo remaining bad data, after discarding data %d time(s).\n', ibd-1); fprintf('Largest value of B = %.2f\n', maxB); end end ibd = ibd + 1; HH = H(vv,ww); WWInv = WInv(vv,vv); ddelz = delz(vv); VVa = angle(V(nref)); VVm = abs(V(nref)); F = HH' * WWInv * ddelz; J = HH' * WWInv * HH; if condest(J) < condestConst PL6.6 observable = 1; else observable = 0; end end ww = sort(ww); if converged && observable HH = H(vv,ww); WWInv = WInv(vv,vv); else HH = H(vvp,ww); WWInv = WInv(vvp,vvp); end CovEs = (HH'*WWInv*HH)^(-1); bus = busm; branch = branchm; gen = genm; Sbus = V * conj(Ybus * V); bus(pq, PD) = -real(Sbus(pq)) * baseMVA; bus(pq, QD) = -imag(Sbus(pq)) * baseMVA; on = find(gen(:, GEN_STATUS) > 0); gbus = gen(on, GEN_BUS); gen(on, PG) = real(Sbus(gbus)) * baseMVA + bus(gbus, PD); [bus, gen, branch] = pfsolnEst(baseMVA, bus, gen, branch, Ybus, Yf, Yt, V, ref, pv, pq); bus(ref,VA) = Varef*180/pi; [bus, gen, branch] = int2ext(i2e, bus, gen, branch); [buslf, genlf, branchlf] = int2ext(i2e, buslf, genlf, branchlf); if verbose > printpf(baseMVA, buslf, genlf, branchlf, [], 1, 0, 1, mpopt); printpf(baseMVA, bus, gen, branch, [], 1, 0, 1, mpopt); end ... nguồn điện, cố xảy nghẽn mạch Từ thực tế đó, em định chọn đề tài: “TÍNH TOÁN ƢỚC LƢỢNG THÔNG SỐ TRẠNG THÁI MỘT HỆ THỐNG ĐIỆN VỚI DỮ LIỆU ĐẦU VÀO CHO BỞI ĐỊNH DẠNG CDF Mục đích nghiên cứu Tính toán. .. lƣợng thông số trạng thái hệ thống điện có liệu cho tệp dạng đuôi cdf , sử dụng phần mềm Matlab để lập trình giải toán mô Đối tƣợng, phạm vi đề tài Tính toán ƣớc lƣợng thông số trạng thái hệ thống. .. MÔ HÌNH TOÁN HỆ THỐNG 13 1.1 Phƣơng pháp tính toán ƣớc lƣợng trạng thái hệ thống điện WLS 13 1.2 Mô hình toán hệ thống điện 14 1.2.1 Tính ma trận tổng dẫn Y hệ thống điện