phương phỏp N-R trong MatLab
Chương trỡnh Newton-Raphson chuẩn được xõy dựng trờn mụi trương Matlab để tớnh toỏn chế độ xỏc lập của lưới điện. Chương trỡnh được tạo nờn từ cỏc khối con (bao gồm 11 hàm), mỗi hàm cú một chức năng riờng và được ghộp nối với nhau tạo nờn một chương trỡnh hoàn chỉnh.
• Hàm MainNewtonRaphson: Chương trỡnh chớnh.
• Hàm PowerFlowsData: Đọc dữ liệu đầu vào cho chương trỡnh.
• Hàm YBus: Thành lập ma trận tổng dẫn của lưới.
• Hàm NewtonRaphson: Thực hiện vũng lặp tớnh toỏn.
• Hàm NetPowers: Tớnh cụng suất cho trước của cỏc nỳt trong lưới điện.
• Hàm CalculatedPowers: Tớnh cụng suất cỏc nỳt theo điện ỏp cỏc nỳt.
• Hàm GeneratorLimits: Kiểm tra điều kiện duy trỡ cỏc nỳt PV.
• Hàm PowerMismatches: Tớnh sai số cụng suất cỏc nỳt.
• Hàm NewtonRaphsonJacobian: Thành lập ma trận đạo hàm riờng cụng suất.
• Hàm StateVariablesUpdate: Tớnh lại cỏc điện ỏp nỳt.
• Hàm PQflows: Tớnh toỏn cỏc thụng số cụng suất (cỏc dũng cụng suất truyền tải trờn cỏc đường dõy, cỏc tổn thất cụng suất...)
• Để sử dụng chương trỡnh, người sử dụng chỉ cần gọi hàm MainNewtonRaphson từ mụi trường làm việc của Matlab, trong hàm này đó tớch hợp cỏc chức năng mà người sử dụng cú thể lựa chọn.
Đầu vào của chương trỡnh được thực hiện trong hàm PowerFlowsData, gụmg cỏc thụng số của lưới điện cũng như cỏc giỏ trị xấp xỉ ban đầu của mụdun và gúc pha điện ỏp cỏc nỳt.
Đầu ra của chương trỡnh là mụđun điện ỏp cỏc nỳt (VM), gúc pha điện ỏp cỏc nỳt (VA), cỏc thụng số cụng suất của nỳt.
1. Hàm MainNewtonRaphson. (chương trỡnh chớnh)
chuẩn. Người sử dụng chỉ cần gọi hàm này là cú thể thực hiện được chương trỡnh. Trong hàm MainNewtonRaphson sẽ gọi toàn bộ những hàm cần thiết để phục vụ tớnh toỏn cũng như thực hiện những chức năng mà người lập trỡnh cài đặt. Hàm MainNewtonRaphson là phần tổ chức, xắp xếp cỏc hàm nhiệm vụ theo một trỡnh tự, do đú tạo thành chương trỡnh hoàn thiện. Sau đõy là sơđồ khối mụ tả cấu tạo của hàm MaiNewtonRaphson.
Hỡnh 2.2: Sơđồ khối hàm MaiNewto-Raphson
Để thực hiện cỏc khối chức năng, MainNewtonRaphson sẽ gọi những hàm tương ứng hoặc thực hiện một số cõu lệnh qui đổi dơn giản (xem phần code hàm ở phụ lục ). Sau khi thực hiện một khối chức năng con nào đú, chương trỡnh sẽ dừng lại để người sử dụng quan sỏt, kiểm tra kết quả mà khối chức năng vừa
Nhập dữ liệu cho chương trỡnh (gọi hàm PowerFlowsData) Thành lập ma trận tổng dẫn Y (gọi hàm YBus) Thực hiện vũng lặp để tỡm điện ỏp nỳt (gọi hàm NewtonRaphson) Tớnh toỏn cụng suất và thụng số chếđộ (gọi hàmPQflows) Cho ra kết quả cuối cựng của chương trỡnh Thoỏt khỏi chương trỡnh Tớnh cụng suất cho trước tại cỏc nỳt (gọi hàm NetPowers) Tớnh cụngsuất cỏc nỳt theo điện ỏp cỏc nỳt (gọi hàm CaculatedPowers) Kiểm tra cỏc nỳt PV (gọi hàm GeneratorsLimits) Tớnh sai số cụng suất (Gọi hàm PowerMismatches) Thành lập ma trận JAC (Gọi hàm NewtonRaphsonJacpbian) Giải hệ phương trỡnh tuyến tớnh Tớnh lại điện ỏp nỳt (gọi hàm StateVariablesUpdates) Thực hiện
thực hiện và chờ lệnh thực hiện khối chức năng tiếp theo. Để thay đổi cấu trỳc chương trỡnh, người lập trỡnh phải thao tỏc trờn khối này.
2. Hàm PowerFlowsData. (đọc dữ liệu đầu vào cho chương trỡnh)
Trong chương trỡnh chớnh, hàm này sẽ được gọi ra trước tiờn. Việc thay đổi thụng số cũng như dữ liệu đầu vào phải được thao tỏc trờn hàm này.
Hàm này cú chức năng nhập dữ liệu đầu vào cho chương trỡnh. Cỏc dữ liệu cần thiết cho chương trỡnh và cỏch nhập dữ liệu vào hàm PowerFlowsData được thực hiện như sau:
Dữ liệu đầu vào cho hàm - PowerFlowsData
+ Số liệu về nỳt.
nbb: tổng số nỳt của lưới điện.
nmax=2*nbb: kớch thước của ma trận Jacobian.
bustype: dạng nỳt, là ma trận cỡ (1xnbb), cần khai bỏo cho toàn bộ nbb nỳt.
bustype(k) = 1: nỳt cõn băng cụng suất. bustype(k) = 2: nỳt PV. bustype(k) = 3: nỳt PQ. VM: mụđun điện ỏp nỳt, là ma trận cỡ (1xnbb), bao gồm mụđun điện ỏp đặt ở cỏc nỳt PV, nỳt cõn bằng cụng suất và giỏ trị xấp xỉ đầu của mụđun điện ỏp cỏc nỳt PQ. Đơn vị của VM đầu vào là kV.
VA: gúc pha điện ỏp nỳt, là ma trận cỡ (1xnbb), bao gồm gúc pha điện ỏp đặt
của nỳt cõn bằng cụng suất và giỏ trị xấp xỉ đầu của gúc pha điện ỏp cỏc nỳt trong lưới. Đợn vị của VA đầu vào là Radian.
ngn: tổng số nỳt cú nhà mỏy điện (nỳt PV) trong lưới.
genbus: mó nỳt cú nhà mỏy điện (nỳt PV), là ma trận cỡ (1xngn). Vớ dụ:
genbus(k) = 5 cú nghĩa là nỳt 5 là nỳt nhà mỏy điện, k là giỏ trị tuỳ ý do người lập trỡnh đặt.
PGEN: cụng suất tỏc dụng phỏt vào lưới của cỏc nỳt PV, là ma trận cỡ (1xngn),
cỏc phần tử của PGEN phải được xắp xếp tương ứng với genbus. Vớ dụ: PGEN(k) = 500 (tương ứng với genbus(k) = 5), cú nghĩa là nỳt 5 phỏt vào lưới một lượng cụng suất tỏc dụng 500MW. Đơn vịđầu vào của PGEN là MW.
QGEN: Cụng suất phản khỏng phỏt vào lưới của nỳt PV, là ma trận cỡ (1xngn), cỏc phần tử của QGEN phải được xắp xếp tương ứng với genbus. Vớ dụ: QGEN(k) = 200 (tương ứng với genbus(k) = 5), cú nghĩa là nỳt 5 phỏt vào lưới một lượng cụng suất phản khỏng 200MVAr. Đơn vị đầu vào của QGEN là MVAr.
QMAX: giới hạn cụng suất phản khỏng cú thể phỏt vào lưới của cỏc nỳt PV, là
ma trận cỡ (1xngn), cỏc phần tử của QMAX phải được xắp xếp tương ứng với genbus. Vớ dụ: QMAX(k) = 3000 (tương ứng với genbus(k) = 5), cú nghĩa là giới hạn phỏt cụng suất phản khỏng của nỳt 5 là 3000MVAr. Đơn vị đầu vào của QMAX là MVAr.
QMIN: giới hạn nhận cụng suất phản khỏng từ lưới của cỏc nỳt PV, là ma trận
cỡ (1xngn), cỏc phần tử của QMIN phải được xắp xếp tương ứng với genbus. Vớ dụ: QMIN(k) = -3000 (tương ứng với genbus(k) = 5), cú nghĩa là nỳt 5 cú thể nhận tối đa 3000MVAr từ lưới. Đơn vịđầu vào của QMIN là MVAr.
nld: tổng số nỳt phụ tải trong lưới.
loadbus: mó nỳt của nỳt cú phụ tải, là ma trận cỡ (1xnld). Vớ dụ: loadbus(k) = 4
cú nghĩa nỳt 4 là nỳt cú phụ tải tiờu thụ, k là giỏ trị tuỳ ý do người lập trỡnh đặt.
PLOAD: Cụng suất tỏc dụng của phụ tải, là ma trận cỡ (1xnld), cỏc phần tử của
PLOAD phải được xắp xếp tương ứng với loadbus. Vớ dụ: PLOAD(k) = 100 (tương ứng với loadbus(k) = 4), cú nghĩa là tại nỳt 4 cú tải tiệu thụ cụng suất tỏc dụng 100MW. Đơn vịđầu vào của PLOAD là MW.
QLOAD: Cụng suất phản khỏng của phụ tải, là ma trận cỡ (1xnld), cỏc phần tử
của QLOAD phải được xắp xếp tương ứng với loadbus. Vớ dụ: QLOAD(k) = 50 (tương ứng với loadbus(k) = 4), cú nghĩa là tại nỳt 4 cú tải tiệu thụ cụng suất tỏc dụng 50MVAr. Đơn vịđầu vào của QLOAD là MVAr.
nsh: tổng số nỳt shunt trong lưới.
shbus: mó nỳt shunt, là ma trận cỡ (1xnsh). Vớ dụ: shbus(k) = 6 cú nghĩa là tại
nỳt 8 cú shunt, k là giỏ trị tuỳ ý do người lập trỡnh đặt.
shresis: điện trở của nhỏnh shunt. là ma trận cỡ (1xnsh), cỏc phần tử của shresis
shbus = 6), cú nghĩa là tại nỳt 6 cú nhỏnh shunt với điện trở bằng 8. Đơn vịđầu vào của shresis là đơn vị tương đối.
shreac: điện khỏng của nhỏnh shunt. là ma trận cỡ (1xnsh), cỏc phần tử của
shreac phải được xắp xếp tương ứng với shbus. Vớ dụ: shreac(k) = 7 (tương ứng với shbus = 6), cú nghĩa là tại nỳt 6 cú nhỏnh shunt với điện khỏng bằng 7. Đơn vịđầu vào của shreac là đơn vị tương đối.
+ Số liệu về nhỏnh.
ntl: tổng số nhỏnh trong lưới. Cỏc nhỏnh được đỏnh số một cỏch tuỳ ý theo qui
định của người lập trỡnh.
tlsend, tlrec, tlresis, tlcond, tlsuscep: thụng số về nỳt gửi cụng suất, nỳt nhận
cụng suất, điện trở, điện khỏng, điện dẫn ngang, dung dẫn ngang trờn một nhỏnh đường dõy, tất cảđều nhập ở dạng đơn vị tương đối và đều là ma trận cỡ (1xntl). + Cỏc đại lượng cơ bản.
Scb: cụng suất cơ bản (MVA).
Ucb: Điện ỏp cơ bản (kV).
+ Tớnh toỏn quy đổi sang hệđơn vị tương đối.
Qui đổi cụng suất và điện ỏp đầu vào: • PGEN = PGEN/Scb • QGEN = QGEN/Scb • QMAX = QMAX/Scb • QMIN = QMIN/Scb • PLOAD = PLOAD/Scb • QLOAD = QLOAD/Scb • VM =VM/Ucb
Nếu cỏc thụng sốđầu vào của đường dõy và shunt nhập ở dạng đơn vị cú tờn, người lập trỡnh cú thể tạo thờm một số vũng lặp để quy dổi sang hệ đơn vị tương đối, việc tạo thờm một số cõu lệnh quy đổi đơn giản sẽ giảm bớt khõu xử lý dữ liệu khi tớnh toỏn dữ liệu từ hệ đợn vị cú tờn sang hệ đơn vị tương đối. Vớ dụ vũng lặp sau:
for ii=1:ntl tlresis(ii)=resis(ii)*long(ii)/(solo(ii)*Zcb); tlreac(ii)=reac(ii)*long(ii)/(solo(ii)*Zcb); tlsuscep(ii)=suscep(ii)*1e-6*long(ii)*solo(ii)*Zcb; trong đú: • Zcb: tổng trở cơ bản được tớnh Zcb = (Ucb)2/Scb(Ω) • resis(ii): điện trở nhỏnh ii trong hệ đợn vị cú tờn (Ω)
• long(ii): chiều dài nhỏnh ii (km)
• solo(ii): số lộđường dõy của nhỏnh ii
• reac(ii): điện khỏng của nhỏnh ii trong hệđơn vị cú tờn (Ω)
• suscep(ii): dung dẫn ngang của nhỏnh ii trong hệđơn vị cú tờn (106S) Thụng thường cỏc đường dõy truyền tải cao ỏp cú điện dẫn ngang G xấp xỉ bằng khụng.
+ Thụng số về số bước lặp tối đa và độ chớnh xỏc của bài toỏn.
itmax: số bước lặp tối đa của vũnh lặp. Nếu chưa đạt được độ chớnh xỏc mong muốn vũng lặp sẽ dừng lại ở bước lặp itmax, trỏnh tỡnh trạng vũng lặp vụ tận. tol: độ chớnh xỏc của bài toỏn giải tớch. Vũng lặp sẽ dừng lại khi tất cả cỏc sai số cụng suất đều nhỏ hơn tol. Vớ dụ tol = 1e-12.
3. Hàm YBus. (thành lập ma trận tổng dẫn nỳt của lưới)
Chức năng của hàm YBus là thành lập ma trận tổng dẫn nỳt Y, phục cho tớnh toỏn lưới điện. Chương trỡnh tỏch ma trận tổng dẫn Y ra hai ma trận: YR và YI. Trong đú YR là chứa phần thực G của tổng dẫn, cũn YI là ma trận chứa phần ảo B của tổng dẫn. Kớch thước của hai ma trận YR và YI là bằng nhau.
2 2 2 2 1 R X G jB j R jX R X R X + = = − + + +
Để thành lập hai ma trận YR và YI, hàm YBus dựng hai vũng lặp (sử dụng lệnh for), ở mỗi bước của vũng lặp sẽ cập nhập cỏc phần tử của cả hai ma trận YR và YI:
+ Vũng lặp thứ nhất: quột toàn bộ cỏc đường dõy của lưới, bắt đầu từ
dõy, việc tớnh G và B được thực hiện như cụng thức ở trờn.
Hỡnh 2.3: Sơđồ thuật toỏn tớnh ma trận tổng dẫn
+ Vũng lặp thứ hai: quột tất cả cỏc nỳt cú Shunt, bắt đầu từ vị trớ thứ nhất
trong Shbus cho đến vị trớ cuối cựng, ở mỗi nhỏnh Shunt vũng lặp sẽ tớnh tổng dẫn nhỏnh Shunt và cập nhập vào hai ma trận YR và YI.
Hỡnh 2.4: Sơđồ thuật toỏn bổ xung nỳt cú Shunt vào ma trận tổng dẫn
Sau hai vong lặp “for” ta sẽ lập được hai ma tận YR và YI để phản ỏnh cấu trỳc lưới và dựng tớnh cho cỏc bước tiếp theo.
4. Hàm NewtonRaphson. (thực hiện vũng lặp tỡm điện ỏp nỳt)
Chức năng của NewtonRaphson là tạo ra vũng lặp tỡm điện ỏp nỳt. Cụ thể là trong mỗi vũng lặp hàm NewtonRaphson sẽ gọi cỏc hàm khỏc để tớnh toỏn, thành lập hệ phương trỡnh tuyến tớnh (2.14), sau đú sẽ giải hệ phương trỡnh tuyến tớnh tỡm sai số gúc pha và mođun điện ỏp nỳt, cuối cựng điện ỏp cỏc nỳt sẽđược
Đường dõy thứ nhất
i j
Tớnh tổng dẫn riờng nỳt i, nỳt j và tổng dẫn tương hỗ nhỏnh ij Cập nhập vào ma trận YR và YI
Đường dõy tiếp theo
Nỳt Shunt thứ nhất
Tớnh tổng dẫn nhỏnh Shunt Cập nhập vào ma trận YR và YI
tớnh lại phục vụ cho bước lặp tiếp theo. Vũng lặp sẽ dừng lại khi sai số cụng suất đạt độ chớnh xỏc cần thiết hoặc số bước lặp đó đạt được số bước lặp cực đại (do người lập trỡnh đặt – trỏnh tỡnh trạng lặp vụ tận).
Để giải hệ phương trỡnh tuyến tớnh (2.14) chuương trỡnh dựng toỏn tử chia ngược:
D =JAC\DPQ’
trong đú:
• D: vectơ sai số gúc pha và mụđun điện ỏp.
• JAC: ma trận Jacobian.
• DPQ: vectơ sai số cụng suất nỳt (DPQ’ là ma trận chuyển vị của na trận DPQ).
Việc sử dụng toỏn tử chia ngược là thể hiện sức mạch tớnh toỏn của chương trỡnh Matlab khi giải hệ phương trỡnh tuyến tớnh (chỉ với một phộp chia). Với lưới điện cỡ 100 nỳt việc thực hiện toỏn tử D = JAC\DPQ’ là cực kỳ nhanh. Đầu ra của hàm này là điện ỏp cỏc nỳt (bao gồm cả mụđun VM và gúc pha điện ỏp VA) và số bước lặp đó thực hiện.
5. Hàm NetPowers. (tớnh cụng suất cho trước tại cỏc nỳt)
Chức năng của hàm NetPowers là tớnh cụng suất cho trước của cỏc nỳt. Việc tớnh cụng suất cho trước tại cỏc nỳt rất đơn giản, chỉ với hai vũng lặp “for”, cụng suất cho trước của một nỳt sẽ được tớnh bằng cụng suất phỏt tại nỳt (nếu là nỳt nhà mỏy điện) trừđi cụng suất tiờu thụ cũng tại nỳt đú (nếu cú phụ tải). Hàm sẽ thành lập hai vectơ cụng suất cho trước của nỳt là PNET và QNET (tương ứng với cụng suất tỏc dụng và cụng suất phản khỏng).
Cụng suất cho trước của nỳt PQ (nỳt tải) sẽ được giữ nguyờn trong toàn bộ chương trỡnh.
6. Hàm CaculatedPowers. (tớnh cụng suất theo cỏc điện ỏp nỳt)
Trong mỗi bước lặp của chương trỡnh Newton-Raphson tỡm điện ỏp nỳt thỡ cụng suất nỳt cần phải được tớnh lại để kiểm tra sai số cụng suất mới. Cụng suất nỳt là hàm của gúc pha và mụđun điện ỏp cỏc nỳt. Để tớnh cụng suất nỳt pk, q ta sử dụng cụng thức đó dược dẫn ra (ở mục 2.2.2):
k k m(G coskm km kmsin km) k2 kk m k p U U θ B θ U G ≠ = ∑ + + k k m(G sinkm km- km os km) k2 kk m k q U U θ B c θ U B ≠ = ∑ −
Hàm CaculatedPowers sẽ thành lập ra hai vectơ cụng suất nỳt PCAL và QCAL dựa trờn hai cụng thức trờn. Hai vectơ PCAL và QCAL sẽđược dựng để tớnh sai số cụng suất và chỳng sẽ thay đổi ở bước lặp sau.
7. Hàm GeneratorsLimits. (kiểm tra giới hạn cụng suất phản khỏng của nỳt
PV)
Để duy trỡ mụđun điện ỏp (giữđiện ỏp) thỡ cỏc nỳt PV phải đảm bảo được lượng cụng suất phản khỏng cần thiết. Nếu lượng cụng suất phản khỏng yờu cầu vượt quỏ giới hạn của nỳt PV thỡ nỳt PV đú khụng cũn khả năng giữđiện ỏp, khi đú nú bị chuyển thành nỳt PQ (bustype = 3). Giỏ trị cụng suất phản khỏng cho trước của nú được lấy đỳng bằng giỏ trị cụng suất phản khỏng giới hạn mà nú vừa vi phạm.
Tuy nhiện cũng phải chỳ ý rằng, trong những bước lặp đầu tiờn sự dao động là rất lớn, kết quả tỡm được là chưa chớnh xỏc, do vậy sẽ rất dễ chuyển nhầm một số nỳt PV thành nỳt PQ trong khi nú vẫn cũn khả năng giữ điện ỏp nỳt.
Để khắc phục nhược điểm này và như ta đó biết phương phỏp Newton- Raphson cú tốc độ hội rất cao (số bước lặp yờu cầu thường chỉ là 3-5 bước), nờn hàm chỉ được đưa vào kiểm tra từ bước lặp thứ 3 trở đi, khi mà cỏc giỏ trị điện ỏp tỡm được đó tương đối ổn định. Hỡnh 2.5 là sơđồ thuật toỏn kiểm tra giới hạn phỏt cụng suất phản khỏng của nỳt PV
Hỡnh 2.5: Sơđồ thuật toỏn kiểm tra giới hạn phỏt cụng suất
phản khỏng của nỳt PV
8. Hàm PowerMismatches. (Tớnh sai số cụng suất và kiểm tra độ chớnh xỏc)
Chức năng hàm PowerMismatches là tớnh vectơ sai số cụng suất. Sau khi cú vectơ sai số cụng suất, tiến hành kiểm tra độ chớnh xỏc làm điều kiện dừng vũng lặp. Nỳt PV thứ i i = 1 Chuyển nỳt i thành nỳt PQ QNET(i) = QMAX(i) Thoỏt khỏi vũng lặp
QNET(i) = QNET(i) - QLOAD(i)
i = i+1 Đỳng Sai QCAL(i)> QMAX(i) QCAL(i)< QMIN(i) QNET(i) = QMIN(i) Chuyển nỳt i thành nỳt PQ Nỳt i cú tải i <=ngn Đỳng Sai Đỳng Sai Sai Đỳng
Vectơ sai số cụng suất được tớnh rất đơn giản như sau:
• Sai số cụng suất tỏc dụng: DP = PNET – PCAL
• Sai số cụng suất phản khỏng: DQ = QNET – QCAL
Sau khi tớnh DP và DQ ta loại sai số của nỳt cõn bằng cụng suất và cỏc nỳt PV. Cụ thể là:
• Với nỳt cõn bằng cụng suất: DP = DQ = 0
• Với nỳt PV: DQ = 0
Vectơ sai số cụng suất tổng hợp DPQ được thành lập bằng cỏch chuyển cỏc giỏ trị của DP và DQ vào DPQ một cỏch tuần tự.
Nếu tất cả cỏc phần tử của DPQ đều nhỏ hơn độ chớnh xỏc “tol” thỡ sẽ dừng vũng lặp chương trỡnh.
9. Hàm NewtonRaphsonJacobian . (Thành lập ma trận Jacobian)
Hàm NewtonRaphsonJacobian sẽ thành lập ma trận JAC gồm 4 khối con J1, J2, J3, J4 theo cụng thức (1.15)
Sau khi cú ma trận JAC, hàm sẽ loại bỏ những phần tử của ma trận tương ứng với đạo hàm cụng suất của nỳt cõn bằng cụng suất và nỳt PV, cụ thể là: