Luận án Nghiên cứu giám sát ổn định hệ thống điện trong thời gian thực

Trong bối cảnh hiện nay để đáp ứng nhu cầu tăng trưởng của phụ tải điện

và an ninh năng lượng để ổn định phát triển kinh tế, nhiều loại hình nhà máy

điện đã và đang được xây dựng và đấu nối vào làm việc trong hệ thống điện

(HTĐ). Bên cạnh đó cấu trúc của hệ thống điện ngày càng phức tạp: số nút tăng

lên, vận hành mạch vòng kín, Trong quá trình vận hành, trào lưu công suất

trên các đường dây truyền tải thường xuyên thay đổi theo sự thay đổi của phụ

tải tiêu thụ và công suất phát của các nhà máy điện. Khi công suất truyền tải

vượt quá giới hạn cho phép sẽ dẫn đến sụp đổ điện áp và nặng nề hơn sẽ gây

mất ổn định và tan rã HTĐ. Trên thế giới có rất nhiều nước đã xảy ra sự cố tan

rã HTĐ liên quan đến ổn định của hệ thống, ví dụ gần đây về vấn đề ổn định

điện áp đã xảy ra các sự cố được đánh giá rất nghiêm trọng vào năm 2003 tại

Mỹ - Canada và Ý. Sự cố mất điện tại Mỹ - Canada ảnh hưởng đến một khu

vực khoảng 50 triệu khách hàng với sản lượng công suất bị cắt khoảng 61,8

MW trong gần hai ngày. Ước tính tổng thiệt hại khoảng từ 4 đến 10 tỷ đô la

Mỹ. Tại Canada là một khoản lỗ ròng với khoảng 18,9 triệu giờ làm việc, và

các lô hàng sản xuất tại Ontario đã giảm 2,3 tỷ đô la Canada [1]. Ở Việt Nam,

theo thống kê trong thời gian qua trên HTĐ 500kV Việt Nam đã có nhiều sự cố

mất điện lớn, diện rộng có liên quan hiện tượng dao động công suất lớn, mất

ổn định điện áp hoặc sụp đổ điện áp xảy ra vào các ngày 17/05/2005,

27/12/2006, 04/09/2007, 29/03/2009, 18/06/2009, 25/07/2009, 08/07/2010 và

22/5/2013 [2], [3]. Như vậy các sự cố sụp đổ HTĐ đều gây ra các vấn đề xã hội

và tổn thất kinh tế nghiêm trọng, chi phí rất lớn.

pdf 233 trang dienloan 2860
Bạn đang xem 20 trang mẫu của tài liệu "Luận án Nghiên cứu giám sát ổn định hệ thống điện trong thời gian thực", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Luận án Nghiên cứu giám sát ổn định hệ thống điện trong thời gian thực

Luận án Nghiên cứu giám sát ổn định hệ thống điện trong thời gian thực
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
ĐẠI HỌC ĐÀ NẴNG 
PHẠM VĂN KIÊN 
NGHIÊN CỨU GIÁM SÁT ỔN ĐỊNH 
HỆ THỐNG ĐIỆN TRONG THỜI GIAN THỰC 
LUẬN ÁN TIẾN SĨ KỸ THUẬT 
Đà Nẵng - 2018 
 BỘ GIÁO DỤC VÀ ĐÀO TẠO 
ĐẠI HỌC ĐÀ NẴNG 
PHẠM VĂN KIÊN 
NGHIÊN CỨU GIÁM SÁT ỔN ĐỊNH 
HỆ THỐNG ĐIỆN TRONG THỜI GIAN THỰC 
CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN 
MÃ SỐ: 62.52.02.02 
LUẬN ÁN TIẾN SĨ KỸ THUẬT 
 Người hướng dẫn khoa học: 
1. PGS.TS. Ngô Văn Dưỡng 
2. GS. TS Lê Kim Hùng 
Đà Nẵng - 2018 
i 
LỜI CAM ĐOAN 
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Những số 
liệu, kết quả nêu trong luận án là trung thực và chưa được ai công bố trong bất 
kỳ công trình nào khác. 
Tác giả luận án 
 Phạm Văn Kiên 
ii 
MỤC LỤC 
LỜI CAM ĐOAN........................................................................................................i 
MỤC LỤC ................................................................................................................. ii 
DANH MỤC CÁC CHỮ VIẾT TẮT ......................................................................vi 
DANH MỤC CÁC HÌNH ....................................................................................... vii 
DANH MỤC CÁC BẢNG ......................................................................................... x 
TRANG THÔNG TIN VỀ LUẬN ÁN.....................................................................xi 
DISSERTATION INFORMATION .................................................................... xiii 
MỞ ĐẦU ..................................................................................................................... 1 
1. Tính cấp thiết của đề tài nghiên cứu ....................................................................... 1 
2. Mục đích nghiên cứu ............................................................................................... 2 
3. Đối tượng và phạm vi nghiên cứu ........................................................................... 3 
4. Cách tiếp cận và phương pháp nghiên cứu ............................................................. 4 
5. Nội dung nghiên cứu ............................................................................................... 8 
6. Ý nghĩa khoa học và thực tiễn của luận án ............................................................. 8 
CHƯƠNG 1 10 
TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP TÍNH TOÁN, PHÂN TÍCH VÀ 
ĐÁNH GIÁ ỔN ĐỊNH CỦA HTĐ ........................................................................... 10 
1.1. Mở đầu ............................................................................................................... 10 
1.2. Các phương pháp tính toán, phân tích và đánh giá ổn định HTĐ ...................... 12 
1.2.1. Phương pháp tính toán theo tiêu chuẩn năng lượng ................................. 13 
1.2.2. Đánh giá ổn định theo tiêu chuẩn Lyapunov ............................................ 15 
1.2.3. Phương pháp phân tích đường cong PV và QV ....................................... 17 
1.2.4. Phương pháp phân tích độ nhạy VQ (VQ Sensitivity Analysis) và phân 
tích trạng thái QV (QV Modal Analysis) ........................................................... 21 
1.2.5. Phương pháp đánh giá theo chỉ số ổn định ............................................... 24 
1.2.6. Các tiêu chuẩn thực dụng Markovits ........................................................ 28 
1.3. Đề xuất phương pháp nghiên cứu ...................................................................... 30 
iii 
1.4. Kết luận chương ................................................................................................. 36 
CHƯƠNG 2 37 
PHƯƠNG PHÁP XÂY DỰNG MIỀN LÀM VIỆC CHO PHÉP THEO ĐIỀU 
KIỆN GIỚI HẠN ỔN ĐỊNH TRONG MẶT PHẲNG CÔNG SUẤT ................. 37 
2.1. Mở đầu ............................................................................................................... 37 
2.2. Phương pháp tính toán đẳng trị sơ đồ HTĐ ....................................................... 38 
2.2.1. Hệ phương trình trạng thái HTĐ ở chế độ xác lập ................................... 38 
2.2.2. Đề xuất phương pháp GMAT để tính toán đẳng trị sơ đồ HTĐ .............. 41 
2.3. Chương trình tính toán đẳng trị sơ đồ sử dụng phương pháp GEMAT ............. 44 
2.3.1. Xây dựng lưu đồ thuật toán chương trình ................................................ 44 
2.3.2. Chương trình tính toán đẳng trị sơ đồ HTĐ ............................................. 46 
2.4. Xây dựng miền làm việc ổn định trong MPCS của HTĐ phức tạp ................... 50 
2.5. Xây dựng chương trình miền làm việc cho phép theo điều kiện giới hạn ổn định 
điện áp trong mặt phẳng công suất ............................................................................ 59 
2.5.1. Xây dựng lưu đồ thuật toán chương trình miền làm việc cho phép theo 
điều kiện giới hạn ổn định điện áp trong mặt phẳng công suất .......................... 59 
2.5.2. Xây dựng chương trình miền làm việc cho phép theo điều kiện giới hạn 
ổn định điện áp trong mặt phẳng công suất ........................................................ 61 
2.5.3. Đánh giá độ tin cậy của chương trình ....................................................... 63 
2.6. Kết luận chương ................................................................................................. 69 
CHƯƠNG 3 71 
PHƯƠNG PHÁP ĐÁNH GIÁ MỨC ĐỘ ỔN ĐỊNH CỦA HỆ THỐNG ĐIỆN THEO 
CÁC YẾU TỐ BẤT ĐỊNH ...................................................................................... 71 
3.1. Mở đầu ............................................................................................................... 71 
3.2. Tính chất ngẫu nhiên của các thông số vận hành và cấu trúc HTĐ ................... 73 
3.2.1. Hàm phân phối nhị thức (Binomial Distribution) ..................................... 74 
3.2.2. Hàm phân phối Poisson (Poisson Distribution)........................................ 74 
3.2.3. Hàm phân phối chuẩn (Normal Distribution) ........................................... 75 
3.2.4. Hàm Weibull ............................................................................................. 77 
iv 
3.3. Phương pháp xây dựng miền làm việc cho phép trong MPCS theo các thông tin 
bất định của HTĐ ...................................................................................................... 77 
3.3.1. Thuật toán xây dựng miền làm việc cho phép trong MPCS theo các thông 
tin bất định của HTĐ .......................................................................................... 77 
3.3.2. Phương pháp xác định số điểm cắt đường đặc tính giới hạn .................... 80 
3.4. Xây dựng chương trình xác định vùng làm việc nguy hiểm trong MPCS của 
công suất nút phụ tải ................................................................................................. 81 
3.4.1. Xây dựng chương trình xác định vùng làm việc nguy hiểm .................... 81 
3.4.2. Áp dụng tính toán cho sơ đồ IEEE 39 nút ................................................ 84 
3.5. Kết luận chương ................................................................................................. 90 
CHƯƠNG 4 92 
ÁP DỤNG XÂY DỰNG CHƯƠNG TRÌNH GIÁM SÁT ỔN ĐỊNH CHO HTĐ 
500KV VIỆT NAM THEO CÁC YẾU TỐ BẤT ĐỊNH ........................................ 92 
4.1. Hiện trạng và tổng thể quy hoạch HTĐ 500kV Việt Nam đến 2025 ................. 92 
4.1.1. Hiện trạng vận hành HTĐ 500kV ............................................................ 92 
4.1.2. Quy hoạch HTĐ 500kV đến 2025 ............................................................ 94 
4.2. Thông số vận hành các TBA 500kV Việt Nam ................................................. 96 
4.2.1. Thực trạng Cung – Cầu điện năng ............................................................ 96 
4.2.2. Thu thập, xử lý số liệu và xác định qui luật ngẫu nhiên của công suất các 
nút phụ tải ........................................................................................................... 98 
4.3. Xây dựng bộ số liệu ngẫu nhiên công suất P, Q cho các nút phụ tải tại các TBA 
500kV .................................................................................................................... 98 
4.4. Áp dụng để tính toán xác định vùng làm việc nguy hiểm của công suất phụ tải 
trong MPCS cho HTĐ 500kV Việt Nam ................................................................ 100 
4.4.1. Sơ đồ HTĐ .............................................................................................. 100 
4.4.2. Thông số các phần tử của hệ thống ........................................................ 100 
4.4.3. Chọn chế độ vận hành cơ bản ................................................................. 100 
4.4.4. Áp dụng để tính toán xác định vùng làm việc nguy hiểm của công suất 
phụ tải trong MPCS cho HTĐ 500kV Việt Nam ............................................. 102 
v 
4.5. Phân tích, đánh giá mức độ ổn định của HTĐ 500kV Việt Nam .................... 105 
4.6. Kết luận chương ............................................................................................... 109 
KẾT LUẬN VÀ KIẾN NGHỊ 111 
1. Kết luận ............................................................................................................... 111 
2. Kiến nghị ............................................................................................................. 113 
DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ 1 
DANH MỤC TÀI LIỆU THAM KHẢO 2 
PHỤ LỤC i 
Phụ lục 1: So sánh kết quả tính toán, phân tích ổn định cho sơ đồ IEEE39 nút ..........i 
Phụ lục 2: Tổng trở các nhánh đường dây và máy biến áp sơ đồ IEEE39 nút ........... v 
Phụ lục 3: Kết quả phân tích các số liệu thống kê phụ tải tại các TBA 500kV Việt 
Nam 2016 ...................................................................................................................vi 
Phụ lục 4: Thông số HTĐ 500kV Việt Nam ......................................................... xxiii 
Phụ lục 5: Kết quả tính toán phân tích áp dụng cho HTĐ 500kV Việt Nam đến 2025
 ................................................................................................................................. xxx 
Phụ lục 6: Các mã code chính sử dụng trong luận án ................................................ li 
vi 
DANH MỤC CÁC CHỮ VIẾT TẮT 
ĐTSĐ Đẳng trị sơ đồ 
ĐZ Đường dây 
EVNNPT Tổng công ty truyền tải điện quốc gia 
GDP Gross Domestic Product 
GIS Gas Insulation Switchgear 
HTĐ Hệ thống điện 
MBA Máy biến áp 
MFĐ Máy phát điện 
MLVOĐ Miền làm việc ổn định 
MPCS Mặt phẳng công suất 
NCKH Nghiên cứu khoa học 
NCSS Phần mềm thống kê của hãng NCSS 
PS Power system 
PSS/ADEPT Power System Simulator / Advanced Distribution Engineering 
Productivity Tool 
PSSE Power System Simulator for Engineering 
R Phần mềm thống kê mã nguồn mở 
SAS Statistical Analysis Systems 
SCADA Supervisory Control and Data Acquisition 
SPSS Statistical Product and Services Solutions 
TBA Trạm biến áp 
TĐK Tự động điều chỉnh kích từ máy phát điện 
SCA Siêu cao áp 
vii 
DANH MỤC CÁC HÌNH 
Hình 1. Các bài báo công bố quốc tế về ổn định HTĐ từ 1950-2017 (theo Google 
Scholar) 5 
Hình 1.1. Mô hình HTĐ đơn giản (a) và đặc tính công suất của Tuabin-MFĐ (b)
 13 
Hình 1.2. Mô hình HTĐ tại nút phụ tải (a) và đặc tính công suất phản kháng các 
máy phát và phụ tải (b) 14 
Hình 1.3. Sơ đồ thay thế HTĐ của hình 1.1 17 
Hình 1.4. Đường đặc tính PV xét với các dạng tải và cos 2 khác nhau [2] 18 
Hình 1.5. Sơ đồ hệ thống điện đơn giản (a) và sơ đồ tính toán phân tích (b). 19 
Hình 1.6. Đường cong QV ứng với các chế độ vận hành khác nhau [2] 19 
Hình 1.7. Mô hình đường dây truyền tải 25 
Hình 1.9. PVSM theo công suất phụ tải tại nút j xét cho sơ đồ IEEE 14 nút 27 
Hình 1.8. Mô hình HTĐ nối với nút j (a) và sơ đồ thay thế tương đương (b) 27 
Hình 1.10. Sơ đồ HTĐ có cấu trúc bất kỳ (a) và sơ đồ đẳng trị hình tia (b) 31 
Hình 1.11. Miền làm việc cho phép trong MPCS xét ở chế độ bình thường (a) và chế 
độ nặng nề nhất (b) 32 
Hình 1.12. Miền làm việc cho phép trong MPCS xét đến các yếu tố bất định của HTĐ
 34 
Hình 2.1. Sơ đồ đẳng trị HTĐ (a) và miền làm việc ổn định của công suất phụ tải 
trong MPCS (b) 38 
Hình 2.2. Sơ đồ thay thế tương đương HTĐ IEEE 9 nút (a) và sơ đồ đẳng trị về nút 
phụ tải cần quan tâm (b) 41 
Hình 2.3. Kết quả tính toán đẳng trị sơ đồ HTĐ dùng phương pháp GEMAT 44 
Hình 2.4. Lưu đồ thuật toán đẳng trị sơ đồ thay thế HTĐ dùng phương pháp 
GEMAT 45 
Hình 2.5. Giao diện chương trình tính đẳng trị sơ đồ. 47 
Hình 2.6. Giao diện nhập thông tin nút (a), nhánh ĐZ (b), MBA (c) và thiết bị bù 
viii 
(d) 47 
Hình 2.7. Mở sơ đồ HTĐ đã có sẵn trong cơ sở dữ liệu 48 
Hình 2.8. Giao diện nhập Thông tin về các phần tử của HTĐ vào thư viện 49 
Hình 2.9. Giao diện database (a) và sơ đồ nguyên lý của HTĐ(b) 49 
Hình 2.10. Bảng kết quả tính đẳng trị của HTĐ 50 
Hình 2.11. Sơ đồ đẳng trị hình tia của HTĐ có F nguồn cung cấp. 51 
Hình 2.12. Thuật toán tính toán và xây dựng miền làm việc nguy hiểm 60 
Hình 2.13. Giao diện chương trình (a) và đường cong giới hạn ổn định tĩnh (b) cho 
sơ đồ IEEE 39 nút 61 
Hình 2.14. Kết quả tính toán tại nút 25 sơ đồ IEEE 39 nút khi phụ tải làm việc trong 
vùng ổn định (a) và cách xác định hệ số dự trữ ổn định tĩnh (b) 62 
Hình 2.15. Sơ đồ HTĐ IEEE 9 nút 63 
Hình 2.16. Giao diện chương trình tính toán cho sơ đồ IEEE 9 nút 65 
Hình 2.17. Bảng hiển thị và hai khối chứa các thiết bị mô phỏng 67 
Hình 2.18. Giao diện màn hình giám sát trên máy tính kết nối với mô hình 67 
Hình 2.19. Miền làm việc ổn định trong MPCS P-Q xét tại nút 5 68 
Hình 3.1. Miền làm việc cho phép trong MPCS theo tiêu chuẩn ổn định dQ/dU<0 
khi không xét đến yếu tố bất định (a) và xét đến yếu tố bất định (b) 72 
Hình 3.2. Đồ thị hàm mật độ hàm phân phối Gaussian 75 
Hình 3.3. Các điểm cắt do đoạn OM3 tạo ra trong vùng nguy hiểm 78 
Hình 3.4. Lưu đồ thuật toán xây dựng miền làm việc ổn định của công suất phụ tải 
trong MPCS khi xét đến yếu tố bất định 79 
Hình 3.5. Xác định tọa độ điểm cắt trong vùng nguy hiểm 81 
Hình 3.6. Giao diện của chương trình 82 
Hình 3.7. Giao diện nhập số liệu Nút, nhánh DZ và nhánh MBA 82 
Hình 3.8. Giao diện nhập số ngẫu nhiên 82 
Hình 3.9. Kết quả tính toán các đại lượng thay thế 83 
Hình 3.10. Kết quả ma trận trạng thái của HTĐ IEEE 39 nút 83 
Hình 3.11. Sơ đồ HTĐ IEEE 39 Nút 84 
ix 
Hình 3.12. Sơ đồ nguyên lý HTĐ IEEE 39 Nút 88 
Hình 3.13. Vùng làm việc nguy hiểm của công suất nút phụ tải 25 88 
Hình 4.1. Sơ đồ hiện trạng HTĐ 500kV Việt Nam tính đến tháng 8/2017 93 
Hình 4.2. Sơ đồ quy hoạch HTĐ 500kV Việt Nam giai đoạn 20162025 95 
Hình 4.3. Biểu đồ phụ tải điển hình ngày từ Thứ 2 đến Chủ nhật năm 2016 96 
Hình 4.4. Biểu đồ năng lượng ngày các tháng của HTĐ quốc gia 97 
Hình 4.5. Tình hình nguồn cung điện tại Việt Nam giai đoạn 2001-2016 và dự 
phòng theo quy hoạch điện VII đến 2030 97 
H ... ode) and 
 (SimpleGraph.DefaultNodeClass = TRhomboidalNode); 
 ObjectsRhomboid.Enabled := not IsReadonly; 
end; 
procedure TMainForm.ObjectsRhomboidExecute(Sender: TObject); 
begin 
 SimpleGraph.DefaultNodeClass := TRhomboidalNode; 
 SimpleGraph.CommandMode := cmInsertNode; 
end; 
xci 
procedure TMainForm.ObjectsPentagonUpdate(Sender: TObject); 
begin 
 ObjectsPentagon.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and 
 (SimpleGraph.DefaultNodeClass = TPentagonalNode); 
 ObjectsPentagon.Enabled := not IsReadonly; 
end; 
procedure TMainForm.ObjectsPentagonExecute(Sender: TObject); 
begin 
 SimpleGraph.DefaultNodeClass := TPentagonalNode; 
 SimpleGraph.CommandMode := cmInsertNode; 
end; 
procedure TMainForm.ObjectsHexagonUpdate(Sender: TObject); 
begin 
 ObjectsHexagon.Checked :=(SimpleGraph.CommandMode = cmInsertNode) and 
 (SimpleGraph.DefaultNodeClass = THexagonalNode); 
 ObjectsHexagon.Enabled := not IsReadonly; 
end; 
procedure TMainForm.ObjectsHexagonExecute(Sender: TObject); 
begin 
 SimpleGraph.DefaultNodeClass := THexagonalNode; 
 SimpleGraph.CommandMode := cmInsertNode; 
end; 
procedure TMainForm.ObjectsLinkUpdate(Sender: TObject); 
begin 
 ObjectsLink.Checked :=(SimpleGraph.CommandMode = cmInsertLink); 
 ObjectsLink.Enabled := not IsReadonly; 
end; 
procedure TMainForm.ObjectsLinkExecute(Sender: TObject); 
begin 
 SimpleGraph.CommandMode := cmInsertLink; 
end; 
procedure TMainForm.ViewZoomInUpdate(Sender: TObject); 
begin 
 ViewZoomIn.Enabled := (SimpleGraph.Zoom < High(TZoom)); 
end; 
procedure TMainForm.ViewZoomInExecute(Sender: TObject); 
begin 
 SimpleGraph.ChangeZoomBy(+10, zoCenter); 
end; 
procedure TMainForm.ViewZoomOutUpdate(Sender: TObject); 
begin 
 ViewZoomOut.Enabled := (SimpleGraph.Zoom > Low(TZoom)); 
end; 
procedure TMainForm.ViewZoomOutExecute(Sender: TObject); 
begin 
 SimpleGraph.ChangeZoomBy(-10, zoCenter); 
end; 
procedure TMainForm.ViewActualSizeUpdate(Sender: TObject); 
begin 
 ViewActualSize.Enabled := (SimpleGraph.Zoom 100); 
end; 
procedure TMainForm.ViewActualSizeExecute(Sender: TObject); 
begin 
 SimpleGraph.ChangeZoom(100, zoTopLeft); 
end; 
procedure TMainForm.ViewWholeGraphUpdate(Sender: TObject); 
begin 
 ViewWholeGraph.Enabled := (SimpleGraph.Objects.Count > 0); 
end; 
procedure TMainForm.ViewWholeGraphExecute(Sender: TObject); 
begin 
 SimpleGraph.ZoomGraph; 
end; 
procedure TMainForm.ViewGridUpdate(Sender: TObject); 
begin 
 ViewGrid.Checked := SimpleGraph.ShowGrid; 
end; 
procedure TMainForm.ViewGridExecute(Sender: TObject); 
begin 
xcii 
 SimpleGraph.ShowGrid := not SimpleGraph.ShowGrid; 
end; 
procedure TMainForm.ViewFixScrollsUpdate(Sender: TObject); 
begin 
 ViewFixScrolls.Checked := SimpleGraph.FixedScrollBars; 
end; 
procedure TMainForm.ViewFixScrollsExecute(Sender: TObject); 
begin 
 SimpleGraph.FixedScrollBars := not SimpleGraph.FixedScrollBars; 
end; 
procedure TMainForm.ViewTransparentUpdate(Sender: TObject); 
begin 
 ViewTransparent.Checked := SimpleGraph.Transparent; 
end; 
procedure TMainForm.ViewTransparentExecute(Sender: TObject); 
begin 
 SimpleGraph.Transparent := not SimpleGraph.Transparent; 
end; 
procedure TMainForm.ViewPanUpdate(Sender: TObject); 
begin 
 ViewPan.Checked := (SimpleGraph.CommandMode = cmPan); 
 ViewPan.Enabled := (SimpleGraph.HorzScrollBar.IsScrollBarVisible or 
 SimpleGraph.VertScrollBar.IsScrollBarVisible); 
end; 
procedure TMainForm.ViewPanExecute(Sender: TObject); 
begin 
 SimpleGraph.CommandMode := cmPan; 
end; 
procedure TMainForm.HelpAboutExecute(Sender: TObject); 
begin 
 with TAbout.Create(Application) do 
 try 
 ShowModal; 
 finally 
 Free; 
 end; 
end; 
procedure TMainForm.HelpUsageExecute(Sender: TObject); 
begin 
 THelpOnActions.Execute; 
end; 
procedure TMainForm.OptionsConfirmHookLinkExecute(Sender: TObject); 
begin 
 OptionsConfirmHookLink.Checked := not OptionsConfirmHookLink.Checked; 
end; 
procedure TMainForm.OptionsConfirmDeletionExecute(Sender: TObject); 
begin 
 OptionsConfirmDeletion.Checked := not OptionsConfirmDeletion.Checked; 
end; 
procedure TMainForm.FormCloseQuery(Sender: TObject;var CanClose: Boolean); 
begin 
 if IsGraphSaved then 
 begin 
 SimpleGraph.Clear; 
 CanClose := True; 
 end 
 else 
 CanClose := False; 
end; 
procedure TMainForm.cbxFontSizeChange(Sender: TObject); 
begin 
 cbxFontSize.Tag := StrToIntDef(cbxFontSize.Text, cbxFontSize.Tag); 
 SimpleGraph.ForEachObject(ForEachCallback, FEO_SETFONTSIZE, True); 
end; 
procedure TMainForm.cbxFontNameChange(Sender: TObject); 
begin 
 cbxFontName.Text := cbxFontName.Items[cbxFontName.ItemIndex]; 
 SimpleGraph.ForEachObject(ForEachCallback, FEO_SETFONTFACE, True); 
end; 
xciii 
procedure TMainForm.LinkRemovePointExecute(Sender: TObject); 
begin 
 with TGraphLink(SimpleGraph.SelectedObjects[0]) do 
 RemovePoint(LinkRemovePoint.Tag); 
end; 
procedure TMainForm.LinkAddPointExecute(Sender: TObject); 
begin 
 with TGraphLink(SimpleGraph.SelectedObjects[0]) do 
 AddBreakPoint(TargetPt); 
end; 
procedure TMainForm.LinkGrowExecute(Sender: TObject); 
begin 
 SimpleGraph.ForEachObject(ForEachCallback, FEO_GROW25, True); 
end; 
procedure TMainForm.LinkShrinkExecute(Sender: TObject); 
begin 
 SimpleGraph.ForEachObject(ForEachCallback, FEO_SHRINK25, True); 
end; 
procedure TMainForm.LinkRotateCWExecute(Sender: TObject); 
begin 
 SimpleGraph.ForEachObject(ForEachCallback, FEO_ROTATE90CW, True); 
end; 
procedure TMainForm.LinkRotateCCWExecute(Sender: TObject); 
begin 
 SimpleGraph.ForEachObject(ForEachCallback, FEO_ROTATE90CCW, True); 
end; 
procedure TMainForm.LinkReverseExecute(Sender: TObject); 
begin 
 SimpleGraph.ForEachObject(ForEachCallback, FEO_REVERSEDIRECTION, True); 
end; 
procedure TMainForm.ObjectsPopupPopup(Sender: TObject); 
var 
 HT: DWORD; 
 Index: Integer; 
 Link: TGraphLink; 
begin 
 if (SimpleGraph.SelectedObjects.Count = 1) and 
 (SimpleGraph.SelectedObjects[0] is TGraphLink) then 
 begin 
 LinkRemovePoint.Visible := True; 
 LinkAddPoint.Visible := True; 
 LinkGrow.Visible := True; 
 LinkShrink.Visible := True; 
 LinkRotateCW.Visible := True; 
 LinkRotateCCW.Visible := True; 
 LinkReverse.Visible := True; 
 TargetPt := SimpleGraph.CursorPos; 
 Link := TGraphLink(SimpleGraph.SelectedObjects[0]); 
 HT := Link.HitTest(TargetPt); 
 Index := HiWord(HT); 
 LinkRemovePoint.Enabled := ((HT and GHT_POINT) 0) and not 
Link.IsFixedPoint(Index, False); 
 LinkRemovePoint.Tag := Index; 
 LinkAddPoint.Enabled := ((HT and GHT_LINE) 0) and not (gloFixedBreakPoints 
in Link.LinkOptions); 
 LinkGrow.Enabled := Link.CanMove; 
 LinkShrink.Enabled := Link.CanMove; 
 LinkRotateCW.Enabled := Link.CanMove; 
 LinkRotateCCW.Enabled := Link.CanMove; 
 end 
 else 
 begin 
 LinkRemovePoint.Visible := False; 
 LinkAddPoint.Visible := False; 
 LinkGrow.Visible := False; 
 LinkShrink.Visible := False; 
 LinkRotateCW.Visible := False; 
 LinkRotateCCW.Visible := False; 
 LinkReverse.Visible := False; 
xciv 
 end; 
end; 
procedure TMainForm.SimpleGraphDblClick(Sender: TObject); 
begin 
 EditProperties.Execute; 
end; 
procedure TMainForm.SimpleGraphNodeDblClick(Graph: TSimpleGraph; 
 Node: TGraphNode); 
begin 
 EditProperties.Execute; 
end; 
procedure TMainForm.SimpleGraphLinkDblClick(Graph: TSimpleGraph; 
 Link: TGraphLink); 
begin 
 EditProperties.Execute; 
end; 
procedure TMainForm.SimpleGraphObjectDblClick(Graph: TSimpleGraph; 
 GraphObject: TGraphObject); 
begin 
 EditProperties.Execute; 
end; 
procedure TMainForm.SimpleGraphGraphChange(Sender: TObject); 
begin 
 if SimpleGraph.Modified then 
 StatusBar.Panels[4].Text := SModified 
 else 
 StatusBar.Panels[4].Text := ''; 
end; 
procedure TMainForm.SimpleGraphZoomChange(Sender: TObject); 
begin 
 StatusBar.Panels[5].Text := Format('%d%%', [SimpleGraph.Zoom]); 
end; 
procedure TMainForm.SimpleGraphCommandModeChange(Sender: TObject); 
begin 
 case SimpleGraph.CommandMode of 
 cmViewOnly: 
 StatusBar.Panels[0].Text := SViewOnly; 
 cmPan: 
 StatusBar.Panels[0].Text := SPan; 
 cmEdit: 
 StatusBar.Panels[0].Text := SEditing; 
 cmInsertLink: 
 StatusBar.Panels[0].Text := SInsertingLink; 
 cmInsertNode: 
 StatusBar.Panels[0].Text := SInsertingNode; 
 end; 
end; 
procedure TMainForm.SimpleGraphNodeMoveResize(Graph: TSimpleGraph; 
 Node: TGraphNode); 
begin 
 if Node.Selected and (SimpleGraph.SelectedObjects.Count = 1) then 
 begin 
 StatusBar.Panels[1].Text := Format('(%d, %d)', [Node.Left, Node.Top]); 
 StatusBar.Panels[2].Text := Format('%d x %d', [Node.Width, Node.Height]); 
 end; 
end; 
procedure TMainForm.SimpleGraphObjectSelect(Graph: TSimpleGraph; 
 GraphObject: TGraphObject); 
begin 
 if SimpleGraph.SelectedObjects.Count = 1 then 
 SimpleGraphObjectChange(Graph, SimpleGraph.SelectedObjects[0]) 
 else 
 begin 
 StatusBar.Panels[1].Text := ''; 
 StatusBar.Panels[2].Text := ''; 
 if SimpleGraph.SelectedObjects.Count > 1 then 
 StatusBar.Panels[3].Text := Format(SMultiSelect, 
[SimpleGraph.SelectedObjects.Count]) 
 else 
xcv 
 StatusBar.Panels[3].Text := ''; 
 end; 
end; 
procedure TMainForm.SimpleGraphInfoTip(Graph: TSimpleGraph; 
 GraphObject: TGraphObject; var InfoTip: String); 
const 
 Hooked: array[Boolean] of String = ('', SHooked); 
begin 
 if GraphObject.IsLink then 
 with TGraphLink(GraphObject) do 
 begin 
 InfoTip := Format(SLinkInfo, [Text, 
 Points[0].X, Points[0].Y, Hooked[Assigned(Source)], 
 Points[PointCount - 1].X, Points[PointCount - 1].Y, 
Hooked[Assigned(Target)], 
 PointCount - 2]); 
 end 
 else 
 with TGraphNode(GraphObject) do 
 begin 
 InfoTip := Format(SNodeInfo, [PrettyNodeClassName(ClassName), 
 Text, Left, Top, Width, Height, 
 TGraphNode(GraphObject).LinkInputCount, 
 TGraphNode(GraphObject).LinkOutputCount]); 
 end; 
end; 
procedure TMainForm.SimpleGraphCanHookLink(Graph: TSimpleGraph; 
 GraphObject: TGraphObject; Link: TGraphLink; Index: Integer; 
 var CanHook: Boolean); 
const 
 StartEndPoints: array[Boolean] of String = (SStartPoint, SEndPoint); 
var 
 MsgText: String; 
 LinkName, ObjectName: String; 
begin 
 if OptionsConfirmHookLink.Checked and not Link.Dragging and CanHook then 
 begin 
 LinkName := Link.Text; 
 if LinkName = '' then LinkName := SNoName; 
 ObjectName := GraphObject.Text; 
 if ObjectName = '' then ObjectName := SNoName; 
 MsgText := Format(SCanHook, [StartEndPoints[Index 0], LinkName, 
ObjectName]); 
 CanHook := (MessageDlg(MsgText, mtConfirmation, [mbYes, mbNo], 0) = mrYes); 
 end; 
end; 
procedure TMainForm.SimpleGraphCanLinkObjects(Graph: TSimpleGraph; 
 Link: TGraphLink; Source, Target: TGraphObject; var CanLink: Boolean); 
var 
 MsgText: String; 
 LinkName, SourceName, TargetName: String; 
begin 
 if OptionsConfirmHookLink.Checked and not Link.Dragging and CanLink then 
 begin 
 LinkName := Link.Text; 
 if LinkName = '' then LinkName := SNoName; 
 SourceName := Source.Text; 
 if SourceName = '' then SourceName := SNoName; 
 TargetName := Target.Text; 
 if TargetName = '' then TargetName := SNoName; 
 MsgText := Format(SCanLink, [SourceName, TargetName, LinkName]); 
 CanLink := (MessageDlg(MsgText, mtConfirmation, [mbYes, mbNo], 0) = mrYes); 
 end; 
end; 
procedure TMainForm.SimpleGraphObjectChange(Graph: TSimpleGraph; GraphObject: 
TGraphObject); 
var 
 PosFirstLine: Integer; 
begin 
xcvi 
 if (SimpleGraph.SelectedObjects.Count = 1) and (SimpleGraph.SelectedObjects[0] 
= GraphObject) then 
 begin 
 cbxFontName.Text := GraphObject.Font.Name; 
 cbxFontSize.Text := IntToStr(GraphObject.Font.Size); 
 FormatBold.Checked := (fsBold in GraphObject.Font.Style); 
 FormatItalic.Checked := (fsItalic in GraphObject.Font.Style); 
 FormatUnderline.Checked := (fsUnderline in GraphObject.Font.Style); 
 if GraphObject is TGraphNode then 
 with TGraphNode(GraphObject) do 
 begin 
 FormatAlignLeft.Checked := (Alignment = taLeftJustify); 
 FormatCenter.Checked := (Alignment = taCenter); 
 FormatAlignRight.Checked := (Alignment = taRightJustify); 
 FormatAlignTop.Checked := (Layout = tlTop); 
 FormatVCenter.Checked := (Layout = tlCenter); 
 FormatAlignBottom.Checked := (Layout = tlBottom); 
 StatusBar.Panels[1].Text := Format('(%d, %d)', [Left, Top]); 
 StatusBar.Panels[2].Text := Format('%d x %d', [Width, Height]); 
 PosFirstLine := Pos(#$D#$A, Text); 
 if PosFirstLine 0 then 
 StatusBar.Panels[3].Text := Copy(Text, 1, PosFirstLine) 
 else 
 StatusBar.Panels[3].Text := Text; 
 end 
 else 
 with TGraphLink(GraphObject) do 
 begin 
 StatusBar.Panels[1].Text := ''; 
 StatusBar.Panels[2].Text := Format(SNumOfPoints, [PointCount]); 
 StatusBar.Panels[3].Text := Text; 
 end; 
 end; 
end; 
procedure TMainForm.SimpleGraphObjectInitInstance(Graph: TSimpleGraph; 
 GraphObject: TGraphObject); 
var 
 FontStyle: TFontStyles; 
begin 
 FontStyle := []; 
 if FormatBold.Checked then 
 Include(FontStyle, fsBold); 
 if FormatItalic.Checked then 
 Include(FontStyle, fsItalic); 
 if FormatUnderline.Checked then 
 Include(FontStyle, fsUnderline); 
 with GraphObject.Font do 
 begin 
 if cbxFontName.Text '' then 
 Name := cbxFontName.Text; 
 Size := cbxFontSize.Tag; 
 Style := FontStyle; 
 end; 
 if GraphObject is TGraphNode then 
 begin 
 if FormatAlignLeft.Checked then 
 TGraphNode(GraphObject).Alignment := taLeftJustify 
 else if FormatAlignRight.Checked then 
 TGraphNode(GraphObject).Alignment := taRightJustify 
 else 
 TGraphNode(GraphObject).Alignment := taCenter; 
 if FormatAlignTop.Checked then 
 TGraphNode(GraphObject).Layout := tlTop 
 else if FormatAlignBottom.Checked then 
 TGraphNode(GraphObject).Layout := tlBottom 
 else 
 TGraphNode(GraphObject).Layout := tlCenter; 
 end; 
end; 
xcvii 
procedure TMainForm.SimpleGraphMouseMove(Sender: TObject; 
 Shift: TShiftState; X, Y: Integer); 
begin 
 with SimpleGraph.ClientToGraph(X, Y) do 
 StatusBar.Panels[6].Text := Format('(%d, %d)', [X, Y]); 
end; 
procedure TMainForm.SimpleGraphMouseWheelDown(Sender: TObject; 
 Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); 
var 
 I: Integer; 
begin 
 MousePos := SimpleGraph.ScreenToClient(MousePos); 
 if PtInRect(SimpleGraph.ClientRect, MousePos) then 
 begin 
 for I := 1 to 5 do 
 begin 
 SimpleGraph.ChangeZoomBy(-1, zoCursor); 
 SimpleGraph.Update; 
 end; 
 Handled := True; 
 end; 
end; 
procedure TMainForm.SimpleGraphMouseWheelUp(Sender: TObject; 
 Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); 
var 
 I: Integer; 
begin 
 MousePos := SimpleGraph.ScreenToClient(MousePos); 
 if PtInRect(SimpleGraph.ClientRect, MousePos) then 
 begin 
 for I := 1 to 5 do 
 begin 
 SimpleGraph.ChangeZoomBy(+1, zoCursor); 
 SimpleGraph.Update; 
 end; 
 Handled := True; 
 end; 
end; 
end. 
i www.efg2.com/Lab/Mathematics/ComplexMath.htm 

File đính kèm:

  • pdfluan_an_nghien_cuu_giam_sat_on_dinh_he_thong_dien_trong_thoi.pdf
  • pdfDong gop moi cua Luan an_PVKien (Viet_Anh).pdf
  • pdfTOM TAT TIENG ANH_PVKien(Final).pdf
  • pdfTOM TAT TIENG VIET_PVKien(Final).pdf
  • pdfTrich yeu luan an_PVKien (Viet_Anh).pdf