Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 89 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
89
Dung lượng
4,08 MB
Nội dung
Đại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN MINH TRUNG NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG SCADA ĐẶC THÙ TRONG CÁC CÔNG TRÌNH THỦY LỢI Chun ngành : Tự động hóa LUẬN VĂN THẠC SĨ GVHD: TS.TRƯƠNG ĐÌNH CHÂU TP Hồ Chí Minh, tháng 11 năm 2008 Trang CƠNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học : TS TRƯƠNG ĐÌNH CHÂU Cán chấm nhận xét : TS HỒNG MINH TRÍ Cán chấm nhận xét : PGS.TS HỒ ĐẮC LỘC Luận văn thạc sĩ bảo vệ tại: HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 26 tháng 12 năm 2008 HVTH: Nguyễn Minh Trung (MS: 01505359) Trang ĐẠI HỌC QUỐC GIA TP HCM CỘNG HOÀ XÃ HỘI CHỦ NGHIÃ VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA.TP.HCM Độc Lập - Tự Do - Hạnh Phúc -oOo Tp HCM, ngày tháng năm NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: NGUYỄN MINH TRUNG Ngày, tháng, năm sinh : 30/05/1979 Chun ngành : Tự động hóa Khố (Năm trúng tuyển) : K2005 Giới tính : Nam ;/ Nữ Nơi sinh : KHÁNH HÒA 1- TÊN ĐỀ TÀI: NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG SCADA ĐẶC THÙ TRONG CÁC CƠNG TRÌNH THỦY LỢI 2- NHIỆM VỤ LUẬN VĂN: 3- NGÀY GIAO NHIỆM VỤ : 4- NGÀY HOÀN THÀNH NHIỆM VỤ : TS TRƯƠNG ĐÌNH CHÂU 5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : Nội dung đề cương Luận văn thạc sĩ Hội Đồng Chuyên Ngành thông qua CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH (Họ tên chữ ký) TS TRƯƠNG ĐÌNH CHÂU HVTH: Nguyễn Minh Trung (MS: 01505359) Trang Lời em muốn nói xin chân thành cảm ơn thầy mơn Tự động hóa trường Đại học Báck Khoa TP.HCM tận tình giảng dạy em học kỳ vừa qua Và đặc biệt hơn, em xin chân thành cảm ơn giúp đỡ hướng dẫn nhiệt tình Thầy Trương Đình Châu để em hồn thành đề tài Bên cạnh cảm ơn giúp đỡ bạn bè, đồng nghiệp góp phần hỗ trợ tài liệu giúp hoàn thành đề tài Xin chân thành cám ơn NGUYỄN MINH TRUNG HVTH: Nguyễn Minh Trung (MS: 01505359) Trang MỤC LỤC CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN 1.1 Tổng quan đề tài nghiên cứu 1.2 Mục đích nghiên cứu 10 1.3 Phương pháp nghiên cứu 10 CHƯƠNG 2: SCADA 11 2.1 Tổng quan SCADA 11 2.2 Các thành phần hệ thống SCADA 12 2.3 Cơ chế thu thập xử lý liệu 14 2.3.1 Cơ chế thu thập liệu 14 2.3.2 Xử lý liệu 14 2.4 Phân cấp hệ thống SCADA 15 2.4.1 Cấp - cấp trường 16 2.4.2 Cấp - Cấp điều khiển 17 2.4.3 Cấp - Cấp điều khiển giám sát 17 2.4.4 Cấp - Cấp điều hành sản xuất 18 2.4.5 Cấp 5- Cấp quản lý 18 2.4.6 Sơ đồ luồng thông tin 19 2.5 Các mạng truyền thông thông dụng SCADA 19 2.5.1 Mạng FieldBus 19 2.5.2 Mạng AS-i 20 2.5.3 Mạng Profibus 21 2.5.4 Mạng Modbus 26 2.5.5 Mạng CAN 27 CHƯƠNG 3: INTERNET VÀ SCADA 31 3.1 Internet 31 3.2 Mơ hình tham chiếu OSI 32 3.2.1 Mục đích mơ hình tham chiếu OSI 32 3.2.2 Các lớp mơ hình tham chiếu OSI 34 3.3 Mơ hình tham chiếu TCP/IP 37 3.3.1 Vai trị mơ hình tham chiếu TCP/IP 37 3.3.2.Các lớp mơ hình tham chiếu TCP/IP 37 3.3.3 Sơ đồ giao thức TCP/IP 38 3.4 Giao thức TCP 39 HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 3.4.1 Tổng quan giao thức TCP 39 3.4.2 Cấu trúc gói tin 40 3.4.3.3 Kết thúc kết nối 45 3.4.4 Địa TCP 45 3.4.5 Các cổng TCP 46 3.5 Kết hợp SCADA Internet 47 CHƯƠNG 4: OPC 49 4.1 Giới thiệu chung OPC 49 4.2 Sự cần thiết OPC 49 4.3 Phạm vi ứng dụng OPC 51 4.4 Cấu trúc cở đối tượng OPC 52 4.5 Các phiên OPC 53 4.6 OPC Data Access (OPC DA) 54 4.6.1 OPC Server: 54 4.6.2 OPC Group 56 4.6.3 OPC Item 57 4.6.4 Tag 57 4.6.5 OPC Client 59 4.6.6 Đọc liệu từ OPC 60 CHƯƠNG 5: THIẾT KẾ HỆ THỐNG SCADA 65 5.1 Cấu hình hệ thống SCADA thủy lợi Tiền Giang 65 5.2 Thiết kế chương trình cho điều khiển cho PLC 69 5.3 Thiết kế chương trình cho điều khiển cho PC 71 CHƯƠNG 6: KẾT QUẢ THỰC HIỆN 84 6.1 Kết thực 84 6.1 Hướng phát triển đề tài 87 TÀI LIỆU THAM KHẢO 88 HVTH: Nguyễn Minh Trung (MS: 01505359) Trang CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN 1.1 Tổng quan đề tài nghiên cứu Đồng sông Cửu Long (ĐBSCL) phần cuối châu thổ sông MêKông chảy qua Việt Nam với diện tích tự nhiên khoảng 3.95 triệu Hằng năm, đồng sơng Cửu Long đóng góp gần 27% GDP 40% sản phẩm nơng nghiệp cho nước Vì vậy, đồng sơng Cửu Long đóng vai trị quan trọng cơng phát triển kinh tế - xã hội nước Một nhân tố đóng góp vào thành công hệ thống thủy lợi lớn ngày đầu tư phát triển nhanh chóng Các hệ thống xây dựng với nhiệm vụ cung cấp nước ngọt, kiểm soát lũ vào mùa mưa, tiêu chua ngăn chặn xâm nhập mặn từ biển Đông nhằm phục vụ cho việc canh tác nông nghiệp nuôi trồng thủy sản vùng Tuy vậy, để nâng cao tính hiệu hệ thống thuỷ lợi yêu cầu cần đặt phải tiến hành đại hố cơng tác quản lý hệ thống thủy lợi Đây yêu cầu cấp thiết thiết thực để giải nhanh vấn đề ngập lũ, xâm nhập mặn sử dụng nguồn nước tiết kiệm, hợp lý Hiện nay, vùng đồng sông Cửu Long có nhiều hệ thống thủy lợi lớn Các hệ thống thủy lợi tỉnh phân cấp cho cơng ty có trách nhiệm quản lý khai thác Nhiệm vụ công ty phải điều tiết cơng trình để đảm bảo nhu cầu nước phục vụ cho sản xuất nông nghiệp ni trồng vùng Ngồi ra, cơng ty quản lý khai thác cịn có chức dự báo phịng chống lũ từ sơng MêKơng, ngăn chặn xâm nhập mặn từ biển Đông HVTH: Nguyễn Minh Trung (MS: 01505359) Trang Hình 1.1: Hệ thống thủy lợi đồng sông Cửu Long Một số hệ thống thuỷ lợi lớn đồng sơng Cửu Long Vị trí Diện tích STT Tên hệ thống thủy lợi Gị Cơng Tiền Giang 54.000 Tiếp Nhật Sóc Trăng 53.910 Nam Măng Thít Vĩnh Long, Trà Vinh 225.682 Quản Lộ - Phụng Hiệp Sóc Trăng, Bạc Liêu 178.888 Ô Môn – Xà No Kiên Giang, Cần Thơ 45.340 Nhật Tảo – Tân Trụ Long An 13.320 Ba Lai Bến Tre 50.800 Bắc Đông Long An, Tiền Giang 40.400 Ba Rinh – Tà Liêm Sóc Trăng, Cần Thơ 30.944 10 Hồng Ngự Đồng Tháp 21.754 11 Hương Mỹ Bến Tre 17.000 Nhiệm vụ phục vụ (ha) HVTH: Nguyễn Minh Trung (MS: 01505359) cấp nước ngọt, ngăn mặn cấp nước ngọt, ngăn mặn cấp nước ngọt, ngăn mặn, tiêu chua cấp nước ngọt, ngăn mặn cấp nước ngọt, ngăn mặn, tiêu chua cấp nước ngọt, ngăn mặn cấp nước ngọt, ngăn mặn cải tạo đất, kiểm soát lũ cấp nước ngọt, ngăn mặn cải tạo đất, kiểm soát lũ cấp nước ngọt, ngăn mặn Trang 12 Ba Thê – tri Tôn An Giang, Kiên Giang 43.700 13 Cần Thơ – Long Mỹ Cần Thơ 50.000 14 Cái Sắn - Thốt Nốt Cần Thơ, Kiên Giang 58.000 15 Kế Sách Sóc Trăng, Cần Thơ 32.000 cải tạo đất, kiểm soát lũ cấp nước ngọt, ngăn mặn cấp nước ngọt, ngăn mặn, tiêu chua cấp nước ngọt, ngăn mặn, tiêu chua Để thực nhiệm vụ đo đạc thu thập số liệu, năm cơng ty quản lý khai thác cơng trình thủy lợi phải tiến hành thu thập số mực nước, độ mặn, độ pH, lưu lượng, … nhằm để phục vụ cho công tác vận hành, lập kế hoạch tưới tiêu, dự báo tình hình lũ, diễn biến mặn để có kế hoạch điều tiết, khống chế thiên tai kịp thời Vì vậy, để đáp ứng nhu cầu thơng tin kịp thời phục vụ cho sản xuất phòng chống thiên tai, cơng ty bố trí nhiều điểm đo mực nước độ mặn toàn tỉnh; chưa tính tới điểm đo phụ điểm đo thời vụ cần thiết khác Hiện nay, cách làm tốn chi phí phải bố trí nhiều nhân lực Bên cạnh đó, số liệu khơng xác cách đo cịn thủ cơng chủ quan người đọc phải làm việc liên tục ngày đêm Việc đo lưu lượng trở nên phức tạp phải cần 3-4 người thực với nhiều trang thiết bị cồng kềnh, phương tiện xuồng, ghe tốn khơng an tồn Ngồi ra, yếu tố quan trọng cơng tác dự báo phịng chống lũ tính thời phận xử lý thông tin không đáp ứng liệu kịp thời Xuất phát từ nhu cầu thực tế nêu trên, cần phải xây dựng hệ thống thu thập liệu điều khiển cơng trình thủy lợi để phục vụ thơng tin kịp thời cho sản xuất nơng nghiệp phịng chống thiên tai Đề tài “NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG SCADA ĐẶC THÙ TRONG CÁC CƠNG TRÌNH THỦY LỢI” nhằm mục đích nghiên cứu xây dựng hệ thống quan trắc thơng số cơng trình thủy lợi diện rộng Hệ thống SCADA giúp cho nhà quản lý hệ thống thủy lợi có thơng số cần thiết xác từ hệ thống để từ đưa giải pháp vận hành cơng trình hiệu Hệ thống quan trắc bao gồm trạm đo đặt HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 10 vị trí cơng trình cống hay kênh Tùy thuộc vào nhiệm vụ vị trí trạm mà cần thu thập thơng số khí tượng, mực nước, độ mặn, pH điều khiển đóng/mở cống thích hợp Các số liệu truyền webserver thơng qua internet 1.2 Mục đích nghiên cứu • Thiết kế xây dựng hệ thống thu thập liệu điều khiển cục diện rộng cho hệ thống cơng trình thuỷ lợi 1.3 Phương pháp nghiên cứu • Các phương pháp truyền thơng lý thuyết SCADA • Kỹ thuật lý thuyết hệ thống cơng trình thủy lợi • Ngơn ngữ lập trình Visual C#.NET, ASP.NET, ADO.NET, Step7 để viết ứng dụng HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 75 Hình 5.9: Giao diện truy cập sở liệu Viết mã cho trang xem liệu Realtime using using using using using using using using using using using System; System.Data; System.Configuration; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Web.UI.HtmlControls; System.Runtime.InteropServices; System.Drawing; using using using using OPC; OPCDA; OPCDA.NET; WebChart; public partial class _Default : System.Web.UI.Page { // application data for OPCServer static OpcServer Srv = null; static OpcGroup oGrp = null; static OPCItemResult[] addGrpRslt = new OPCItemResult[3]; int UpdateRate = 1000;// miliseconds string strStatus ="Status: Nothing done!"; //Chart data static Chart ChartMNSong = new SmoothLineChart(); static ChartPointCollection dataMNSong = ChartMNSong.Data; static Chart ChartMNDong = new SmoothLineChart(); static ChartPointCollection dataMNDong = ChartMNDong.Data; static Chart ChartMua = new SmoothLineChart(); static ChartPointCollection dataMua = ChartMua.Data; protected void Page_Load(object sender, EventArgs e) HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 76 { if (Page.IsPostBack == false) { TimerRead.Enabled = false; ChartControl.Visible = false; tbxMNDong.Text = ""; tbxMNSong.Text = ""; tbxMua.Text = ""; //======================= string opcsrvName = "S7200.OPCServer"; string[] Tagxx = new string[3]; int rtc; Tagxx[0] = " MicroWin.PLC224XP.Sensor01.Sensor_S1"; Tagxx[1] = " MicroWin.PLC224XP.Sensor01.Sensor_S2"; Tagxx[2] = " MicroWin.PLC224XP.Sensor01.Sensor_Mua"; lblTime.Text = "Time: " + DateTime.Now.ToLongTimeString()+" “ + DateTime.Now.ToShortDateString(); if (Srv == null) { try { strStatus = "Connecting to OPC server "; Srv = new OpcServer(); rtc = Srv.Connect(opcsrvName); if (HRESULTS.Failed(rtc)) { strStatus = "Error " + rtc.ToString() + " at connecting to server."; Srv = null; return; } } catch (Exception ex) { strStatus = "Cannot connect to " + opcsrvName + " Because " + ex.Message; Srv = null; return; } SERVERSTATUS stat; rtc = Srv.GetStatus(out stat); if (HRESULTS.Succeeded(rtc)) { strStatus = "Status: " + opcsrvName + " is " + stat.eServerState.ToString(); } else { strStatus = "Error " + rtc.ToString() + " at getStatus."; Srv = null; return; } float deadBand = 0.0F; try { // create group with 1sec update rate oGrp = Srv.AddGroup("DataGroup", true, UpdateRate, ref deadBand, 0, 0); } HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 77 catch { Srv.Disconnect(); } OPCItemDef[] items = new OPCItemDef[3]; //client handle as item index items[0] = new OPCItemDef(Tagxx[0], true, 0, VarEnum.VT_BSTR); items[1] = new OPCItemDef(Tagxx[1], true, 0, VarEnum.VT_BSTR); items[2] = new OPCItemDef(Tagxx[2], true, 0, VarEnum.VT_BSTR); rtc = oGrp.AddItems(items, out addGrpRslt); if (HRESULTS.Failed(rtc)) { Srv.Disconnect(); } } } TimerRead.Enabled = true; ChartControl.Visible = true; lblStatus.Text = strStatus; btnWrite.Enabled = false; btnwritets.Enabled = false; btnRead.Enabled = true; btnreadts.Enabled = true; } protected void TimerRead_Tick(object sender, EventArgs e) { lblTime.Text = "Time: "+DateTime.Now.ToLongTimeString() + " " + DateTime.Now.ToShortDateString(); //===================== int[] iHnd = new Int32[3]; iHnd[0] = addGrpRslt[0].HandleServer; iHnd[1] = addGrpRslt[1].HandleServer; iHnd[2] = addGrpRslt[2].HandleServer; OPCItemState[] rslt; int rtc = oGrp.Read(OPCDATASOURCE.OPC_DS_CACHE, iHnd, out rslt); string strValue; ChartControl.Visible = true; if (HRESULTS.Failed(rtc)) { strValue = "read error"; } else { ChartMNSong.Legend = "Mực nước sông"; ChartMNDong.Legend = "Mực nước đồng"; ChartMua.Legend = "Lượng mưa"; //Read Tag01 if (HRESULTS.Failed(rslt[1].Error)) { tbxMNSong.Text = " NMsong read error"; } else { tbxMNSong.Text = rslt[0].DataValue.ToString(); if (dataMNSong.Count > 10) dataMNSong.RemoveAt(0); HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 78 dataMNSong.Add(new ChartPoint(DateTime.Now.ToShortTimeString(), float.Parse(rslt[0].DataValue.ToString()))); } //Read Tag02 if (HRESULTS.Failed(rslt[1].Error)) { tbxMNDong.Text = " NMDong read error"; } else { tbxMNDong.Text = rslt[1].DataValue.ToString(); if (dataMNDong.Count > 10) dataMNDong.RemoveAt(0); dataMNDong.Add(new ChartPoint(DateTime.Now.ToShortTimeString(), float.Parse(rslt[1].DataValue.ToString()))); } //Read Tag03 if (HRESULTS.Failed(rslt[2].Error)) { tbxMua.Text = " Mua read error"; } else { tbxMua.Text = rslt[2].DataValue.ToString(); if (dataMua.Count > 10) dataMua.RemoveAt(0); dataMua.Add(new ChartPoint(DateTime.Now.ToShortTimeString(), float.Parse(rslt[2].DataValue.ToString()))); } //=========Raw Chart============== ChartMNSong.Line.Color = Color.Red; ChartMNDong.Line.Color = Color.Green; ChartMua.Line.Color = Color.Blue; ChartControl.Charts.Add(ChartMNSong); ChartControl.Charts.Add(ChartMNDong); ChartControl.Charts.Add(ChartMua); ChartMNSong.DataLabels.Visible = false; ChartMNDong.DataLabels.Visible = false; ChartMua.DataLabels.Visible = false; ChartControl.YTitle.StringFormat.FormatFlags = StringFormatFlags.DirectionVertical; ChartControl.YTitle.StringFormat.Alignment = StringAlignment.Near; ChartControl.RedrawChart(); } } protected void btnRead_Click(object sender, EventArgs e) { } protected void btnreadts_Click(object sender, EventArgs e) { TimerRead.Enabled = false; //read savetime and savednumber parameter from OPC string[] TagPar = new string[2]; HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 79 int rtc; TagPar[0] =" MicroWin.PLC224XP.Sensor01.Sample_Time";//=savetime TagPar[1] ="MicroWin.PLC224XP.Sensor01.Sample_Num";//=savednumber string opcsrvName = "S7200.OPCServer"; if (Srv == null) { try { Srv = new OpcServer(); rtc = Srv.Connect(opcsrvName); if (HRESULTS.Failed(rtc)) { strStatus = "Error " + rtc.ToString() + " at connecting to server."; Srv = null; //return; } } catch (Exception ex) { strStatus = "Cannot connect to " + opcsrvName + " Because " + ex.Message; Srv = null; //return; } } //Add Group OpcGroup GrpPar01 = null; float deadBand = 0.0F; try { // create group with 1sec update rate GrpPar01 = Srv.AddGroup("DataPar01", true, UpdateRate, ref deadBand, 0, 0); } catch { Srv.Disconnect(); } OPCItemDef[] ParItems = new OPCItemDef[2]; OPCItemResult[] addGrpPar01Rslt = new OPCItemResult[2]; //client handle as item index ParItems[0] = new OPCItemDef(TagPar[0], true, 0, VarEnum.VT_BSTR); ParItems[1] = new OPCItemDef(TagPar[1], true, 0, VarEnum.VT_BSTR); rtc = GrpPar01.AddItems(ParItems, out addGrpPar01Rslt); int[] iHnd = new Int32[2]; iHnd[0] = addGrpRslt[0].HandleServer; iHnd[1] = addGrpRslt[1].HandleServer; OPCItemState[] rslt; rtc = GrpPar01.Read(OPCDATASOURCE.OPC_DS_CACHE, iHnd, out rslt); if (HRESULTS.Failed(rtc)) { return;// strValue = "Read parameter is error"; } else { tbxDataluu.Text = rslt[0].DataValue.ToString(); HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 80 DropDownTgluu.Text = rslt[1].DataValue.ToString(); } btnwritets.Enabled = true; TimerRead.Enabled = false; } } protected void btnstartstop_Click(object sender, EventArgs e) { if (btnstartstop.Text == "Start Read") { btnstartstop.Text = "Stop Read"; TimerRead.Enabled = true; btnWrite.Enabled = false; btnwritets.Enabled = false; btnreadts.Enabled = false; btnRead.Enabled = false; } else { btnstartstop.Text = "Start Read"; TimerRead.Enabled = false; btnWrite.Enabled = false; btnwritets.Enabled = false; btnreadts.Enabled = true; btnRead.Enabled = true; } } protected void btnwritets_Click(object sender, EventArgs e) { Srv.Disconnect(); } Viết mã cho trang truy sở liệu using using using using using using using using using using using using System; System.Data; System.Configuration; System.Collections; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Web.UI.HtmlControls; System.Drawing; WebChart; using System.Data.OleDb;//Use an OleDbConnection object to connect to a Microsoft Access or third-party database public partial class viewdatabase : System.Web.UI.Page { //view file TungBuocLapTringADO_NET.pdf" or "webapp2.chm" public OleDbConnection OleDbConnection = new OleDbConnection(); public OleDbDataAdapter OleDbDataAdapter = new OleDbDataAdapter(); public OleDbCommand OleDbSelectCommandStation = new OleDbCommand(); protected void Page_Load(object sender, EventArgs e) { DataSet DataSetStation = new DataSet(); DataTable TStation = new DataTable(); //OleDbConnection = new OleDbConnection(); HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 81 //OleDbDataAdapter = new OleDbDataAdapter(); //OleDbSelectCommandStation = new OleDbCommand(); if (Page.IsPostBack == false) { //Connect to Database file of Microsoft Access OleDbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + Server.MapPath("App_Data/Database.mdb"); OleDbConnection.Open(); // Create Table by query command OleDbSelectCommandStation.Connection = OleDbConnection; OleDbSelectCommandStation.CommandText = "SELECT * FROM StationTable"; OleDbDataAdapter.SelectCommand = OleDbSelectCommandStation; //Copy all date from query command to DataSet OleDbDataAdapter.Fill(DataSetStation, "StationTable"); // Display DataSet TStation = DataSetStation.Tables["StationTable"]; DropDownListData.Items.Clear(); if (bool.Parse(TStation.Rows[0][4].ToString())) DropDownListData.Items.Add("Mực nước sông"); if (bool.Parse(TStation.Rows[0][5].ToString())) DropDownListData.Items.Add("Mực nước đồng"); if (bool.Parse(TStation.Rows[0][6].ToString())) DropDownListData.Items.Add("Mưa"); if (bool.Parse(TStation.Rows[0][7].ToString())) DropDownListData.Items.Add("Lưu lượng"); if (bool.Parse(TStation.Rows[0][8].ToString())) DropDownListData.Items.Add("Nhiệt độ"); if (bool.Parse(TStation.Rows[0][9].ToString())) DropDownListData.Items.Add("Độ mặn"); if (bool.Parse(TStation.Rows[0][10].ToString())) DropDownListData.Items.Add("pH"); tbxDateFrom.Text = DateTime.Now.ToShortDateString(); tbxDateTo.Text = DateTime.Now.ToShortDateString(); } ChartControl1.Visible = false; GridView1.Visible = false; } protected void tbxDateTo_TextChanged(object sender, EventArgs e) { } protected void btnshowtable_Click(object sender, EventArgs e) { DataSet DataSetdata = new DataSet(); string stationname = ""; switch (DropDownListData.Text) { case "Mực nước sông": stationname = "WLTable"; break; case "Mực nước đồng": stationname = "WLTable1"; break; case "Mưa": stationname = "RainfallTable"; break; case "Lưu lượng": stationname = "DischargeTable"; HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 82 break; case "Nhiệt độ": stationname = "TempTable"; break; case "Độ mặn": stationname = "Salinity"; break; case "pH": stationname = "pHTable"; break; } //SHOW DATA //Connect to Database file of Microsoft Access OleDbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + Server.MapPath("App_Data/Database.mdb"); OleDbConnection.Open(); // Create Table by query command OleDbSelectCommandStation.Connection = OleDbConnection; OleDbSelectCommandStation.Connection = OleDbConnection; OleDbSelectCommandStation.CommandText = "SELECT TT, DateTime, Value FROM " + stationname; OleDbDataAdapter.SelectCommand = OleDbSelectCommandStation; //Copy all date from query command to DataSet OleDbDataAdapter.Fill(DataSetdata); GridView1.DataSource = DataSetdata; GridView1.DataBind(); ChartControl1.Visible = false; GridView1.Visible = true; } protected void btnshowchart_Click(object sender, EventArgs e) { Chart ChartLine = new SmoothLineChart(); ChartPointCollection dataLine = ChartLine.Data; DataSet DataSetdata = new DataSet(); string stationname = ""; switch (DropDownListData.Text) { case "Mực nước sông": stationname = "WLTable"; break; case "Mực nước đồng": stationname = "WLTable1"; break; case "Mưa": stationname = "RainfallTable"; break; case "Lưu lượng": stationname = "DischargeTable"; break; case "Nhiệt độ": stationname = "TempTable"; break; case "Độ mặn": stationname = "Salinity"; break; case "pH": stationname = "pHTable"; break; } HVTH: Nguyễn Minh Trung (MS: 01505359) Trang 83 //SHOW DATA //Connect to Database file of Microsoft Access OleDbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + Server.MapPath("App_Data/Database.mdb"); OleDbConnection.Open(); // Create Table by query command OleDbSelectCommandStation.Connection = OleDbConnection; OleDbSelectCommandStation.Connection = OleDbConnection; OleDbSelectCommandStation.CommandText = "SELECT TT, DateTime, Value FROM " + stationname; OleDbDataAdapter.SelectCommand = OleDbSelectCommandStation; //Copy all date from query command to DataSet OleDbDataAdapter.Fill(DataSetdata); //Draw chart int introws = DataSetdata.Tables.Count; for (int i = 0; i