Tải bản đầy đủ (.pdf) (83 trang)

Luận văn Thạc sĩ Kỹ thuật: Nghiên cứu ứng dụng đại số gia tử trong chẩn đoán sự cố tiềm ẩn của máy biến áp lực

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.18 MB, 83 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP

VŨ HOÀI SƠN

NGHIÊN CỨU ỨNG DỤNG ĐẠI SỐ GIA TỬ TRONG CHẨN
ĐOÁN SỰ CỐ TIỀM ẨN CỦA MÁY BIẾN ÁP LỰC

LUẬN VĂN THẠC SỸ KHOA HỌC
KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA

THÁI NGUN – NĂM 2019
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP

VŨ HOÀI SƠN
NGHIÊN CỨU ỨNG DỤNG ĐẠI SỐ GIA TỬ TRONG CHẨN ĐOÁN
SỰ CỐ TIỀM ẨN CỦA MÁY BIẾN ÁP LỰC
Chuyên ngành: Kỹ thuật điều khiển và tự động hóa
LUẬN VĂN THẠC SỸ KHOA HỌC
KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA

NGƯỜI HƯỚNG DẪN KHOA HỌC

TS ĐỖ TRUNG HẢI


TS NGUYỄN TIẾN DUY

Thái Nguyên - Năm 2019

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc

BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn: Vũ Hoài Sơn
Đề tài luận văn: Nghiên cứu ứng dụng đại số gia tử trong chẩn đoán
sự cố tiềm ẩn của máy biến áp lực
Chuyên ngành: Kỹ thuật điều khiển và tự động hóa
Mã số:
Tác giả, Cán bộ hướng dẫn khoa học và Hội đồng chấm luận văn xác
nhận tác giả đã sửa chữa, bổ sung luận văn theo biên bản họp Hội đồng ngày
16/6/2019 với các nội dung sau:
- Bỏ bớt tài liệu tham khảo không liên quan
- Sửa lại trang bìa
- Các ký hiệu trang 35
- Việt hóa một số bảng trang 23, 24, 43, 45
- Ý nghĩa khoa học đưa lên phần đầu của luận văn
Thái Nguyên, ngày….. tháng ….năm 2019

Cán bộ hướng dẫn


Tác giả luận văn

TS Đỗ Trung Hải

Vũ Hoài Sơn

Nguyễn Tiến Duy
CHỦ TỊCH HỘI ĐỒNG

PGS.TS Nguyễn Như Hiển
Số hóa bởi Trung tâm Học liệu và Cơng nghệ thông tin – ĐHTN




LỜI CAM ĐOAN
Tên tơi là: Vũ Hồi Sơn
Sinh ngày 31 tháng 07 năm 1986
Học viên lớp cao học khoá 20 chuyên ngành Kỹ thuật điều khiển và tự động hóa Trường đại học kỹ thuật Công nghiệp Thái Nguyên.
Hiện đang cơng tác tại : Tập đồn Điện lực Việt Nam
Tơi xin cam đoan luận văn “Nghiên cứu ứng dụng đại số gia tử trong chẩn
đoán sự cố tiềm ẩn của máy biến áp lực” do thầy giáo TS Đỗ Trung Hải và TS
Nguyễn Tiến Duy hướng dẫn là nghiên cứu của tôi với tất cả các tài liệu tham khảo
đều có nguồn gốc, xuất xứ rõ ràng.
Thái Nguyên, ngày…….tháng ….. năm 2019
Học viên

Vũ Hồi Sơn

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN





LỜI CẢM ƠN
Sau thời gian nghiên cứu, làm việc khẩn trương và được sự hướng dẫn tận tình
giúp đỡ của thầy giáo TS Đỗ Trung Hải và TS Nguyễn Tiến Duy, luận văn với đề
tài “Nghiên cứu ứng dụng đại số gia tử trong chẩn đoán sự cố tiềm ẩn máy biến
áp lực” đã được hoàn thành.
Tác giả xin bày tỏ lòng biết ơn sâu sắc tới:
Thầy giáo hướng dẫn TS. Đỗ Trung Hải và TS. Nguyễn Tiến Duy đã tận tình
chỉ dẫn, giúp đỡ tác giả hồn thành luận văn. Các thầy cô giáo Trường Đại học kỹ
thuật công nghiệp Thái Nguyên, và một số đồng nghiệp, đã quan tâm động viên, giúp
đỡ tác giả trong suốt quá trình học tập để hoàn thành luận văn này.
Mặc dù đã cố gắng hết sức, tuy nhiên do điều kiện thời gian và kinh nghiệm
thực tế của bản thân cịn ít, cho nên đề tài khơng thể tránh khỏi thiếu sót. Vì vậy, tác
giả mong nhận được sự đóng góp ý kiến của các thầy giáo, cô giáo và các bạn bè
đồng nghiệp cho luận văn của tơi được hồn thiện hơn.
Tôi xin chân thành cảm ơn!
Thái Nguyên, ngày……tháng……năm 2019
Tác giả luận văn

Vũ Hồi Sơn

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




MỤC LỤC

LỜI CAM ĐOAN ............................................................................................. i
LỜI CẢM
ƠN ...................................................................................................................... i
i ............................................................................................................................
MỤC LỤC ........................................................................................................ iii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT ................................... v
DANH MỤC CÁC BẢNG............................................................................... vi
DANH MỤC CÁC HÌNH, ĐỒ THỊ ............................................................... vii
MỞ ĐẦU ........................................................................................................... 1
Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI ............................... 4
CHƯƠNG 1 . TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP CHẨN ĐOÁN SỰ
SỐ TIỀM ẨN CỦA MÁY BIẾN ÁP LỰC ...................................................... 5
Tổng quan về máy biến áp lực ............................................................... 5
1.1.1. Các thông số cơ bản của máy biến áp ............................................. 5
1.1.2. Thí nghiệm máy biến áp.................................................................. 7
Các phương pháp chẩn đoán lỗi tiềm ẩn .............................................. 10
1.2.1. Kiểm tra đánh giá về điều kiện cách điện ..................................... 10
1.2.2. Giám sát trực tuyến sự phóng điện một phần – PD ...................... 11
1.2.3. Phân tích độ khí hồ tan trong dầu (DGA) ................................... 12
Chẩn đốn lỗi tiềm ẩn MBA trên cơ sở DGA ...................................... 14
1.3.1. Đặc tính sinh khí ........................................................................... 14
1.3.2. Các lỗi tiềm ẩn của MBA .............................................................. 15
1.3.3. Chẩn đoán lỗi dựa trên phương pháp tỉ lệ ..................................... 18
Đánh giá ưu nhược điểm của các phương pháp dựa trên DGA ........... 23
Kết luận chương ................................................................................... 23
CHƯƠNG 2 . THIẾT KẾ HỆ CHẨN ĐOÁN LỖI THEO ĐẠI SỐ GIA TỬ 24

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN





Tổng quan về đại số gia tử và suy luận xấp xỉ ..................................... 24
2.1.1. Cấu trúc đại số gia tử .................................................................... 24
2.1.2. Một số tính chất trong đại số gia tử .............................................. 25
2.1.3. Các hàm đo trên đại số gia tử ........................................................ 28
2.1.4. Biến ngôn ngữ ............................................................................... 30
2.1.5. Suy luận xấp xỉ .............................................................................. 31
Thiết kế hệ chẩn đoán lỗi ..................................................................... 35
2.2.1. Xây dựng mơ hình chẩn đốn mới theo đại số gia tử ................... 36
2.2.2. Thiết kế thuật toán cho mơ hình chẩn đốn .................................. 43
Kết luận chương ................................................................................... 45
CHƯƠNG 3 . MƠ PHỎNG ........................................................................... 46
Giới thiệu về cơng cụ, mơi trường lập trình ......................................... 46
Kết quả mơ phỏng ................................................................................ 47
3.2.1. Giao diện chính của chương trình ................................................. 48
3.2.2. Chức năng chẩn đoán .................................................................... 49
3.2.3. Chức năng tra cứu ......................................................................... 51
3.2.4. Chức năng in báo cáo .................................................................... 53
Kết luận chương ................................................................................... 53
KẾT LUẬN ..................................................................................................... 54
TÀI LIỆU THAM KHẢO ............................................................................... 55
PHỤ LỤC: MỘT SỐ MODUL CHÍNH CỦA CHƯƠNG TRÌNH ................ 57

Số hóa bởi Trung tâm Học liệu và Cơng nghệ thơng tin – ĐHTN




DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

DGA Dissolved Gas Analysis
HFCT High Frequency Current Transformer
IEC International Electrotechnical Commission
LRBS Linguistic Rule Base System
MBA Máy biến áp
PD Partial Discharge
TOGAS Transformer Oil Gas Analysis System
SQL Structured Query Language

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




DANH MỤC CÁC BẢNG
Bảng 1. 1. Bảng tiêu chuẩn của dầu MBA ................................................................10
Bảng 1. 2. Các lỗi MBA và nguyên nhân gây ra .......................................................15
Bảng 1. 3. Định nghĩa tỉ lệ và phương pháp tỉ lệ ......................................................18
Bảng 1. 4. Phương pháp hệ số tỉ lệ Dornenburg ......................................................18
Bảng 1. 5. Giá trị giới hạn L1 của Dornenburg .......................................................19
Bảng 1. 6. Bảng chẩn đoán gốc của phương pháp tỉ lệ Rogers ................................19
Bảng 1. 7. Mã định nghĩa của phương pháp tỉ lệ Rogers đã cải tiến .......................20
Bảng 1. 8. Chẩn đoán theo phương pháp tỉ lệ Rogers đã cải tiến ............................20
Bảng 1. 9. Tỉ lệ các thành phần khí và các lỗi tương ứng theo IEC-60599 (2015) ..21
Bảng 1. 10. Mã của các tỉ số theo từng khoảng giá trị .............................................22
Bảng 1. 11. Bảng luật chuẩn đoán lỗi theo mã quy ước ...........................................22
Bảng 2. 1. Bảng luật chẩn đoán cho 8 lỗi được viết lại theo nhãn ngôn ngữ ..........42
Bảng 2. 2. Ngưỡng L1 theo IEC-599 ........................................................................43
Bảng 2. 3. Tính tốn độ tin cậy kết luận của các luật chẩn đoán mờ .......................44


Số hóa bởi Trung tâm Học liệu và Cơng nghệ thơng tin – ĐHTN




DANH MỤC CÁC HÌNH, ĐỒ THỊ
Hình 1. 1. Các cuộn dây phía 110 kV mới ................................................................16
Hình 1. 2. Phóng điện đánh thủng cách điện chưa biến dạng vịng dây ..................16
Hình 1. 3. Phóng điện đánh thủng cách điện và biến dạng vịng dây ......................17
Hình 2. 1. Sơ đồ bộ suy luận xấp xỉ theo tiếp cận fuzzy logic ...................................34
Hình 2. 2. Xây dựng hàm thuộc giữa 2 giá trị ngữ nghĩa có điểm “đặc trưng” ......37
Hình 2. 3. Tập mờ cho các tỉ số ................................................................................40
Hình 3. 1. Visual Studio 2013 Ultimate ....................................................................46
Hình 3. 2. Bảng cơ sở dữ liệu....................................................................................47
Hình 3. 3. Giao diện chính của chương trình ...........................................................49
Hình 3. 4. Nhập số liệu để thực hiện chức năng chẩn đoán .....................................50
Hình 3. 5. Kết quả chẩn đốn sau khi nhập số liệu ..................................................50
Hình 3. 6. Tra cứu lịch sử chẩn đốn .......................................................................51
Hình 3. 7. Danh sách lịch sử chẩn đốn ..................................................................52
Hình 3. 8. Chi tiết kết quả tra cứu.............................................................................53

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




MỞ ĐẦU
Máy biến áp (MBA) lực là một thiết bị chủ đạo trong hệ thống năng lượng. Độ tin
cậy của chúng không chỉ ảnh hưởng tới khả năng cung cấp điện mà cịn ảnh hưởng tới
sự vận hành có tính kinh tế của một hộ tiêu thụ nào đó (ví dụ như các lò luyện, dây truyền

sản xuất, v.v. trong các nhà máy). Ví dụ, một lỗi của MBA phân phối có thể làm cho
hàng nghìn hộ tiêu thụ mất điện. Một lỗi của MBA tăng thế có thể là nguyên nhân gây
ra mất điện của các khu vực liền kề trong hệ thống lưới điện đó.
Chẩn đốn sự cố tiềm ẩn của MBA lực trong hệ thống điện là một vấn đề đã
được nhiều nhà khoa học quan tâm. Để có thể đưa ra được thơng tin về các lỗi (lỗi
tiềm ẩn) có thể xảy ra trong tương lai của MBA, trong một số cơng trình đã đưa ra
các phương pháp chẩn đốn dựa trên phân tích lượng khí hồ tan trong dầu. Ngồi ra
cịn có các phương pháp chẩn đoán dựa trên đáp ứng phổ tần MBA, chẩn đoán dựa
trên độ rung của MBA. Phương pháp sắc ký khí với phân tích khí hồ tan trong dầu
[1] cần thiết phải có những thiết bị đo chuyên dụng và địi hỏi độ chính xác cao. Dựa
trên những kỹ thuật này, đã có nhiều kỹ thuật hiện đại cho phép chẩn đoán tốt hơn
Error! Reference source not found., tuy nhiên một điểm chung của các phương p
háp này là phải dựa trên các kỹ thuật đo đạc chính xác. Vì vậy, kết quả chẩn đoán
cũng phụ thuộc nhiều vào độ chính xác kết của của các phép đo. Một phương pháp
chẩn đốn khác có thể kế thừa được tri thức chuyên gia dưới dạng luật thống kê đã
được giới thiệu Error! Reference source not found., Error! Reference source not fo
und.. Phương pháp này được phát triển dựa trên sử dụng mạng neural nhân tạo. Để
có được kết quả chẩn đốn chính xác, theo phương pháp sử dụng mạng neural cần
phải có bộ dữ liệu thực nghiệm “đủ lớn” để huấn luyện mạng và lựa chọn được một
cấu trúc mạng hợp lí. Thực tế cho thấy, theo tiếp cận này có rất nhiều cấu trúc mạng
có thể được lựa chọn với những kết quả chẩn đoán khác nhau. Thời gian huấn luyện
mạng lớn cũng là một nhược điểm của phương pháp này. Ngoài ra, các phương pháp
sử dụng fuzzy logic, mờ-neural cũng được đề xuất Error! Reference source not f
ound., Error! Reference source not found., Error! Reference source not found..

Số hóa bởi Trung tâm Học liệu vàouble)CH4 / H2;
z = (double)C2H4 / C2H6;
R1.GetValue(x);
R2.GetValue(y);
R3.GetValue(z);

Reliability = new double[9];
Reliability[0] = Rule1();
Reliability[1] = Rule2();
Reliability[2] = Rule3();
Reliability[3] = Rule4();
Reliability[4] = Rule5();

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




Reliability[5]
Reliability[6]
Reliability[7]
Reliability[8]

=
=
=
=

Rule6();
Rule7();
Rule8();
Rule9();

}
private double Min(double a, double b)
{

return Math.Min(a, b);
}
private double Min(double a, double b, double c)
{
return Min(Min(a, b), c);
}
public bool isNomal()
{
return (H2 <= 100) && (CH4 <= 120) && (C2H2 <= 35) &&
(C2H4 <= 50) && (C2H6 <= 65) && (CO <= 350);
}
public double Rule1()
{
return Min(R1.VL, R2.VM, R3.VL);
}
public double Rule2()
{
return Min(R2.VL, R3.VL);
}
public double Rule3()
{
return Min(R1.VM, R2.VL, R3.VL);
}
public double Rule4()
{
double min1 = Min(R1.VL,
double min2 = Min(R1.VL,
double min3 = Min(R1.VM,
double min4 = Min(R1.VM,


R2.VM,
R2.VM,
R2.VM,
R2.VM,

R3.VM);
R3.VH);
R3.VM);
R3.VH);

double max12 = Math.Max(min1, min2);
double max34 = Math.Max(min3, min4);
return Math.Max(max12, max34);
}

public double Rule5()

Số hóa bởi Trung tâm Học liệu và Cơng nghệ thông tin – ĐHTN




{
return Min(R1.VM, R2.VM, R3.VH);
}
public double Rule6()
{
return Min(R1.VL, R2.VM, R3.VM);
}
public double Rule7()

{
return Min(R1.VL, R2.VH, R3.VL);
}
public double Rule8()
{
return Min(R1.VL, R2.VH, R3.VM);
}
public double Rule9()
{
return Min(R1.VL, R2.VH, R3.VH);
}
public double TotalGas()
{
double total = O2 + N2 + CO + CO2 + H2 + CH4 + C2H2 +
C2H4 + C2H6;
return total;
}
public double TKC()
{
double total = CO + H2 + CH4 + C2H2 + C2H4 + C2H6;
return total;
}
public bool checkOK_GAS()
{
return (TotalGas() <= 10000);
}
public bool checkOK_TKC()
{
return (TKC() <= 720);
}

public string isOK_Gas()
{
if (checkOK_GAS())
return "Đạt tiêu chuẩn";
else
return "Không đạt tiêu chuẩn";

Số hóa bởi Trung tâm Học liệu và Cơng nghệ thông tin – ĐHTN




}
public string isOK_TKC()
{
if (checkOK_TKC())
return "Trong ngưỡng cho phép";
else
return "Vượt ngưỡng cho phép";
}
public bool isNAN(double d)
{
return (Double.IsNaN(d) || Double.IsInfinity(d));
}
public bool isNAN()
{
return isNAN(x) || isNAN(y) || isNAN(z);
}
public void toString(out string s, out string d, bool
show_debug = false)

{
MBAFuzzyAlgorithm MBA = this;
int nRule = 9;
s = "";
s += "

Kết quả chẩn đoán

";
if (MBA.id > 0)
s += string.Format("ID: {0}
", MBA.id);
s
+=
string.Format("Thời
gian:
{0}
",
MBA.ngay.ToString("dd/MM/yyyy HH:mm:ss"));
s += "<div class='table-responsive'>";
s += "<thead><tr class='table-info'><th class='textcenter'>Tổng hàm lượng khí hồ tan (Total Gas)</th></tr></thead>";
s += "<tbody>";
s += string.Format("<tr><td>Total Gas = {0} ppm ≈
{1:0.##}%</td></tr>", MBA.TotalGas(), MBA.TotalGas() / 10000.0);
s += string.Format("<tr><td>Ngưỡng = 10,000 ppm ≈
1%</td></tr>");
s += string.Format("<tr class='{1}'><td>{0}</td></tr>",
MBA.isOK_Gas(), MBA.checkOK_GAS() ? "table-success" : "tabledanger");
s += "</tbody>";
s += "</table></div>";
s += "<div class='table-responsive'>
";
s += "<thead><tr class='table-info'><th class='textcenter'>Tổng hàm lượng khí dễ cháy (TKC)</th></tr></thead>";
s += "<tbody>";
s

+=
string.Format("<tr><td>TKC
=
{0}
ppm

{1:0.##}%</td></tr>", MBA.TKC(), MBA.TKC() / 720.0 * 100);

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




s
+=
string.Format("<tr><td>Ngưỡng
=
720
ppm</td></tr>");
//s
+=
string.Format("class='xrow
{1}'>class='cell
left'>{0}</div></div>",
MBA.isOK_TKC(),
MBA.checkOK_TKC() ? "ok" : "red");
if (this.isNomal())
{

s
+=
string.Format("class='tablewarning'><td>Tất cả các thành phần khí cháy dưới ngưỡng</td></tr>");
}
else
{
s
+=
string.Format("class='{1}'><td>{0}</td></tr>", MBA.isOK_TKC(), MBA.checkOK_TKC() ?
"table-success" : "table-danger");
}
s += "</tbody>";
s += "</table></div>";
string st = "";
string[] pp = { "", "Fuzzy", "Fuzzy Based on HA" };
st
+=
string.Format("title='Phương
pháp
{0}'>{0}", pp[MBA.Algorithm]);
//if (MBA.Algorithm == 1)
//{
//
st += "

Phương pháp 1 Chẩn đoán mờ

";
//}
//else if (MBA.Algorithm == 2)
//{

//
st += "

Phương pháp 2 Chẩn đoán mờ

";
//}
st
+=
"class='table-responsive'>class='table table-bordered table-hover'>";
st += "<thead><tr class='table-info'><th class='textcenter'>Lỗi</th>class='text-center'>Chẩn
đoán</th>class='text-center'>Độ tin cậy</th></tr></thead>";
st += "<tbody>";
double sum = 0;
for (int i = 0; i < nRule; i++)
{
sum += MBA.Reliability[i];
if (MBA.Reliability[i] > 0.0)
st
+=
string.Format("class='{3}'>class='text-center'>{0}</td><td>{2}</td>class='textcenter'>{1:0.#}%</td></tr>", i + 1, 100 * MBA.Reliability[i],
MBA.Diagnose[i], MBA.Reliability[i] >= 0.5 ? (i > 0 ? "table-danger"
: "") : "");

Số hóa bởi Trung tâm Học liệu và Cơng nghệ thông tin – ĐHTN





}
st += "</tbody>";
st += "</table></div>";
if (isNAN() || sum < 1e-9)
{
s
+=
"class='table-responsive'>class='table table-bordered table-hover'>";
s += "<tbody>";
s
+=
string.Format("class='tabledanger'><td>Kết luận: Không xác định</td></tr>");
s += "</tbody>";
s += "</table></div>";
}
else
s += st;
d = "";
d += string.Format("

Thông tin chung

");
if (MBA.id > 0)
d += string.Format("ID: {0}
", MBA.id);
d
+=
string.Format("Thời
gian:

{0}
",
MBA.ngay.ToString("dd/MM/yyyy HH:mm:ss"));
d += "<div class='table-responsive'>
";
d += "<thead>";
d += string.Format("<tr class='table-info'><th>Công
ty</th><th>Số hiệu</th></tr>");
d += "</thead>";
d += "<tbody>";
d += string.Format("<tr><td>{0}</td><td>{1}</td></tr>",
MBA.cty, MBA.mba_id);
d += "</tbody>";
d += "</table>";
d += "</div>";
d += "

Số liệu thí nghiệm

";
d += "<div class='table-responsive'>
";
d += "<tbody>";
d
+=
string.Format("class='table-info'>class='text-center'>H₂</th>class='text-center'>O₂</th>class='text-center'>N₂</th></tr>");
d
+=
string.Format("<tr>class='textcenter'>{0}</td><td class='text-center'>{1}</td><td class='textcenter'>{2}</td></tr>", MBA.H2, MBA.O2, MBA.N2);
d

+=
string.Format("class='table-info'>class='text-center'>CH₄</th>class='text-center'>CO</th>class='text-center'>CO₂</th></tr>");

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




d
+=
string.Format("<tr>class='textcenter'>{0}</td><td class='text-center'>{1}</td><td class='textcenter'>{2}</td></tr>", MBA.CH4, MBA.CO, MBA.CO2);
d
+=
string.Format("class='table-info'>class='text-center'>C₂H₄</th>class='text-center'>C₂H₆</th>class='text-center'>C₂H₂</th></tr>");
d
+=
string.Format("<tr>class='textcenter'>{0}</td><td class='text-center'>{1}</td><td class='textcenter'>{2}</td></tr>", MBA.C2H4, MBA.C2H6, MBA.C2H2);
d += "</tbody>";
d += "</table>";
d += "</div>";

d += "

Các tỉ số

";
d += "<div class='table-responsive'>
";
d += "<thead>";
d
+=
string.Format("class='table-info'>class='text-center'>R₁</th>class='text-center'>R₂</th>class='text-center'>R₃</th></tr>");
d
+=
string.Format("class='table-info'>class='text-center'>C₂H₂/C₂H₄</th>class='textcenter'>CH₄/H₂</th><th class='text-center'>C₂H₄/C₂H₆</th></tr>");
d += "</thead>";
d += "<tbody>";
d
+=
string.Format("<tr>class='textcenter'>{0:0.##}</td>class='text-center'>{1:0.##}</td>class='text-center'>{2:0.##}</td></tr>", MBA.x, MBA.y, MBA.z);
d += "</tbody>";
d += "</table>";
d += "</div>";
if (show_debug)
{

d += "

Debug

";
d
+=
"class='table-responsive'>class='table table-bordered table-hover'>";
d += "<thead>";
d
+=
string.Format("class='table-info'>class='invisible'>\\</th>class='text-center'>L</th>class='text-center'>M</th><th class='text-center'>H</th></tr>");
d += "</thead>";
d += "<tbody>";
d += string.Format("<tr><td class='table-info textcenter'><b>R₁</b></td>class='text-center'>{0:0.###}</td>class='text-center'>{1:0.###}</td><td>{2:0.###}</td></tr>",
MBA.R1.VL, MBA.R1.VM, MBA.R1.VH);
d += string.Format("<tr><td class='table-info textcenter'><b>R₂</b></td>class='text-center'>{0:0.###}</td>class='text-center'>{1:0.###}</td><td>{2:0.###}</td></tr>",
MBA.R2.VL, MBA.R2.VM, MBA.R2.VH);

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN





d += string.Format("<tr><td class='table-info textcenter'><b>R₃</b></td>class='text-center'>{0:0.###}</td>class='text-center'>{1:0.###}</td><td>{2:0.###}</td></tr>",
MBA.R3.VL, MBA.R3.VM, MBA.R3.VH);
d += "</tbody>";
d += "</table>";
d += "</div>";
}
}
}
}

2. Lưu dữ kết quả chẩn đoán vào CLDS
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Text;
LibMBA;
System.Data;
System.Data.SqlClient;
System.Configuration;

namespace MBA_DB

{
public class MBA_Store
{
public bool LuuTru(MBAFuzzyAlgorithm MBA)
{
bool ok = true;
//lệnh lưu trữ here
//lưu trữ các thông tin trong MBA
//gọi sp_MBA_Backup
//2. tạo đối tượng để chạy SQL
dbLib db = new dbLib();
SqlCommand cm = new SqlCommand("sp_MBA_Backup");
cm.CommandType = CommandType.StoredProcedure;
//truyền tham số
cm.Parameters.Add("@Cty",
SqlDbType.NVarChar,
500).Value = MBA.cty;
cm.Parameters.Add("@Ngay", SqlDbType.DateTime).Value =
MBA.ngay;
cm.Parameters.Add("@MBA_ID",
SqlDbType.NVarChar,
50).Value = MBA.mba_id;
cm.Parameters.Add("@h2",

SqlDbType.Float).Value

=

MBA.H2;


Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




cm.Parameters.Add("@ch4",

SqlDbType.Float).Value

=

cm.Parameters.Add("@c2h2",

SqlDbType.Float).Value

=

cm.Parameters.Add("@c2h4",

SqlDbType.Float).Value

=

cm.Parameters.Add("@c2h6",

SqlDbType.Float).Value

=

MBA.CH4;

MBA.C2H2;
MBA.C2H4;
MBA.C2H6;
cm.Parameters.Add("@o2",

SqlDbType.Float).Value

=

cm.Parameters.Add("@n2",

SqlDbType.Float).Value

=

cm.Parameters.Add("@co",

SqlDbType.Float).Value

=

MBA.O2;
MBA.N2;
MBA.CO;
cm.Parameters.Add("@co2",

SqlDbType.Float).Value

=


SqlDbType.Int).Value

=

MBA.CO2;
cm.Parameters.Add("@pp",
MBA.Algorithm;

SqlParameter
out_id
=
cm.Parameters.Add("@id",
SqlDbType.Int);
out_id.Direction = ParameterDirection.Output;
//thực thi SP_
int n = db.Excute(cm);
MBA.id = (int)out_id.Value;
//n==1: là insert thành công
ok = (n == 1);
return ok;
}
public bool check_login(string uid, string pw, ref string
fullname, ref int role)
{
string sql = "select fullname,role from [users] where
(uid=@uid)and(pw=@pw)";
SqlCommand cm = new SqlCommand(sql);
cm.Parameters.Add("@uid", SqlDbType.VarChar, 50).Value
= uid;
cm.Parameters.Add("@pw", SqlDbType.VarChar, 50).Value =

pw;
dbLib db = new dbLib();
DataTable dt = db.GetTable(cm);
if (dt != null && dt.Rows.Count == 1)
{
DataRow r = dt.Rows[0];
fullname = (string)r["fullname"];
role = (int)r["role"];

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN




return true;
}
return false;
}
public List<MBAFuzzyAlgorithm> TraCuu(string key)
{
//lệnh lấy dữ liệu từ DB
//gán cho các thuộc tính của MBA
//2. tạo đối tượng để chạy SQL
SqlCommand cm = new SqlCommand("sp_MBA_Restore");
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add("@key",
SqlDbType.NVarChar,
500).Value = key;
dbLib db = new dbLib();
//thực thi SP_ dữ liệu trả về đặt trong đối tượng dr

//tạo dt để chứa dữ liệu,
DataTable dt = db.GetTable(cm);
//dữ liệu được load từ dr
List<MBAFuzzyAlgorithm>
ListMBA
List<MBAFuzzyAlgorithm>();
foreach (DataRow row in dt.Rows)
{
MBAFuzzyAlgorithm MBA = getMBA(row);
ListMBA.Add(MBA);
}
return ListMBA;
}

=

new

public MBAFuzzyAlgorithm ChiTiet(int id)
{
//lệnh lấy dữ liệu từ DB
//gán cho các thuộc tính của MBA
//2. tạo đối tượng để chạy SQL
SqlCommand cm = new SqlCommand("sp_MBA_RestoreByID");
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add("@id", SqlDbType.Int).Value = id;
//thực thi SP_ dữ liệu trả về đặt trong đối tượng dr
dbLib db = new dbLib();
//tạo dt để chứa dữ liệu,
DataTable dt = db.GetTable(cm);

DataRow row = dt.Rows[0];

Số hóa bởi Trung tâm Học liệu và Cơng nghệ thông tin – ĐHTN




MBAFuzzyAlgorithm MBA = getMBA(row);
return MBA;
}
private MBAFuzzyAlgorithm getMBA(DataRow row)
{
MBAFuzzyAlgorithm MBA = new MBAFuzzyAlgorithm(); //ok
MBA.id = (int)row["id"];
MBA.cty = (string)row["cty"];
MBA.mba_id = (string)row["mba_id"];
MBA.ngay = (DateTime)row["ngay"];
MBA.H2 = (double)row["H2"];
MBA.CH4 = (double)row["CH4"];
MBA.C2H2 = (double)row["C2H2"];
MBA.C2H4 = (double)row["C2H4"];
MBA.C2H6 = (double)row["C2H6"];
MBA.O2 = (double)row["O2"];
MBA.N2 = (double)row["N2"];
MBA.CO = (double)row["CO"];
MBA.CO2 = (double)row["CO2"];
int Algorithm = (int)row["pp"];
MBA.setAlgorithm(Algorithm);
return MBA;
}

}
}

3. Xử lý cơ sở dữ liệu
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Configuration;
System.Data;
System.Data.SqlClient;
System.Web;

namespace MBA_DB
{
public class dbLib
{
private
static
readonly
string
conStr
=
ConfigurationManager.ConnectionStrings["MBA_connect_DB"].Connectio
nString;

public SqlConnection con;//= new SqlConnection(conStr);
public SqlConnection Connect()
{
con = new SqlConnection(conStr);

Số hóa bởi Trung tâm Học liệu và Cơng nghệ thông tin – ĐHTN




return con;
}
public DataTable GetTable(string sql)
{
SqlCommand cm = new SqlCommand(sql);
return GetTable(cm);
}
public DataTable GetTable(SqlCommand cm)
{
DataTable tbl = new DataTable();
try
{
OpenCon();
cm.Connection = con;
SqlDataAdapter da = new SqlDataAdapter(cm);
da.Fill(tbl);
}
catch (Exception ex)
{
throw (ex);

}
finally
{
CloseCon();
DisposeCon();
}
return tbl;
}
public string GetValue(DataTable dt)
{
string value = "";
if (dt != null && dt.Rows.Count > 0)
value = dt.Rows[0].ItemArray[0].ToString();
return value;
}
public string GetValue(string sql)
{
DataTable dt = GetTable(sql);
return GetValue(dt);
}
public string GetValue(SqlCommand cm)
{
DataTable dt = GetTable(cm);
return GetValue(dt);
}
private void OpenCon()
{
con = new SqlConnection(conStr);
con.Open();
}


Số hóa bởi Trung tâm Học liệu và Cơng nghệ thông tin – ĐHTN




private void CloseCon()
{
con.Close();
}
private void DisposeCon()
{
con.Dispose();
}
public int Excute(string sql)
{
SqlCommand cm = new SqlCommand(sql);
return Excute(cm);
}
public int Excute(SqlCommand cm)
{
try
{
OpenCon();
cm.Connection = con;
return cm.ExecuteNonQuery();
}
catch (Exception ex)
{
throw (ex);

//return -1;
}
finally
{
CloseCon();
DisposeCon();
}
}
public string table_html(string sql ,string css="")
{
string html = "";
DataTable dt = this.GetTable(sql);
html += "<table class='table "+css+"'>";
html += "<thead><tr>";
foreach (DataColumn c in dt.Columns)
{
html
+=
string.Format("<th>{0}</th>",
c.ColumnName);
}
html += "</tr></thead><tbody>";
foreach (DataRow r in dt.Rows)
{
html += "<tr>";
foreach (DataColumn c in dt.Columns)
{

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN





html+=string.Format("<td>{0}</td>",r[c.ColumnName]);
}
html += "</tr>";
}
html += "</tbody></table>";
return html;
}
}
}

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN