Lưu đồ thuật toán

Một phần của tài liệu Xây dựng csdl và giao diện giám sát hệ thống chuyển đổi điện 1 chiều sang xoay chiều (Trang 38)

2.8 Xây dựng cơ sở dữ liệu

Bước 1:Chọn server name cho CSDL

Hình 2.18 Chọn server name cho CSDL

Bước 2: Chọn Database/chuột phải chọn New Database. Đặt tên cho CSDL

Hình 2.19 Đặt tên cho CSDL

Hình 2.20 Tạo một Table mới

Bước 4: Đặt tên cho từng cột, lựa chọn loại định dạng dữ liệu và chọn khóa chính

Hình 2.21 Đặt tên và chọn định dạng dữ liệu

Bước 5: Đặt tên cho Table và lưu Table

2.9 Xây dựng phần mềm

Bước 1: Khởi động Visual Studio, thiết lập New Project, chọn lập trình

Windows Forms Application và đặt tên rồi ấn OK:

Hình 2.23 Windows Forms Application

Bước 2: Kéo thả các toolbox và đặt tên cho các toolbox

Hình 2.25 Kéo thả Label, Textnox, Button, DataGridView

Bước 3: Liên kết với SCDL

Chọn bindingSource/Add Project Data Source/DataBase/Next/Dataset/Next

Chọn New Connection/chọn Server name/chọn database name

Hình 2.27 Kết nối CSDL

Sau đó nhấn NEXT và tích toàn bộ object cuảng Database

Chương 3: Kếp Quả Và Đánh Giá

3.1. Kết quả hệ thống

Hình ảnh sản phẩm

Hình 3.13 Hình ảnh thực tế

Giao diện giám sát

Hình 3.14 Dữ liệu nhận được

Dữ liệu lưu vào sql

Hình 3.15 Dữ liệu tại SQL

3.2. Đánh giá

Ưu điểm

 Hệ thống hoạt động ổn định.

 Độ chính xác khi đo của cảm biến tốt.  Giao diện dễ sử dụng.

 Mạch còn khá to.

 Linh kiện công suất nhỏ nên bị giới hạn về công suất.  Cảm biến mất nhiều thời gian để thu thâp dữ liệu.

 Hệ thống còn ở dạng mô hình nên còn rất nhiều thiếu sót để áp dụng vào thực tế nên

Phụ lục

Code Arduino

#include <Wire.h>

#include <PZEM004Tv30.h> #include "ACS712.h"

ACS712 sensor(ACS712_20A, A0); PZEM004Tv30 pzem(2,3); int zero; float I; float I_TB; float tong; float vol_out; float Adc = 0; float Vdc = 0; float v ; float c ; float p ; float e ; float f ; float pf ; int relay = 4; void setup(void) { Serial.begin(9600); pinMode(relay, OUTPUT); zero = sensor.calibrate(); digitalWrite(relay,HIGH); delay (2000); }

void loop(void) { delay(500); v = pzem.voltage(); c = 1000 * pzem.current(); p = pzem.power(); e = pzem.energy(); f = pzem.frequency(); pf = pzem.pf();

for (int i=0; i<=100; i++) { I = sensor.getCurrentDC(); tong = tong + I; } I_TB = tong/100; tong = 0; Adc = I_TB * 1000; int volt = analogRead(A1); vol_out = ( volt * 5.0 ) / 1024.0; Vdc = float(vol_out / float(993.0/float(10060.0 + 930.0))); if ( Vdc <= 11.5) { digitalWrite(relay, HIGH); } else { digitalWrite(relay, LOW); } v = pzem.voltage(); c = 1000 * pzem.current();

p = pzem.power(); e = pzem.energy(); f = pzem.frequency(); pf = pzem.pf(); if(v >200) {

Serial.println("~" +(String)Vdc + "!" +(String)Adc + "@" + (String)v + "#" + (String)c + "$" + (String)p + "%" + (String)e + "^" + (String)f + "&" + (String)pf + "*" + "---");

} }

Code Form 1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Data.SqlClient; namespace Giám_sát_tăng_áp_nghcịh_lưu {

public partial class Form1 : Form {

SerialPort port = new SerialPort(); public Form1()

{

InitializeComponent();

this.port.DataReceived += new

System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived); string[] com = SerialPort.GetPortNames();

cbbcom.Items.AddRange(com);

string[] baud = { "4800", "9600", "19200", "38400", "115200" }; cbbbr.Items.AddRange(baud);

private void Form1_Load(object sender, EventArgs e) {

// TODO: This line of code loads data into the 'doluong2DataSet.gstangap' table. You can move, or remove it, as needed.

this.gstangapTableAdapter.Fill(this.doluong2DataSet.gstangap); Control.CheckForIllegalCrossThreadCalls = false; cbbcom.SelectedIndex = 0; cbbbr.SelectedIndex = 1; hienthi_CSDL(); timer1.Enabled = false; }

string data, Vdc, Idc, Vac, Iac, P, E, F, Pf;

private void timer1_Tick(object sender, EventArgs e) {

tbtg.Text = DateTime.Now.ToString("hh.mm.ss dd.MM.yyyy"); KNCSDL kn = new KNCSDL();

kn.them_DL(tbtg.Text, tbudc.Text, tbidc.Text, tbuac.Text, tbiac.Text, tbp.Text, tbe.Text, tbf.Text, tbpf.Text);

hienthi_CSDL(); }

private void btdisconnect_Click(object sender, EventArgs e) { port.Close(); btdisconnect.Enabled = false; btconnect.Enabled = true; MessageBox.Show("Đã Ngắt Kết Nối"); timer1.Enabled = false; }

private void btconnect_Click(object sender, EventArgs e) { try { port.PortName = cbbcom.Text; port.Open(); btconnect.Enabled = false; btdisconnect.Enabled = true; timer1.Enabled = true; } catch {

MessageBox.Show("Lỗi Kết Nối", "Thử Lại", MessageBoxButtons.OK, MessageBoxIcon.Error);

} }

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) {

try {

//throw new NotImplementedException(); data = port.ReadExisting();

int start, end;

start = data.IndexOf("~"); end = data.IndexOf("!");

Vdc = data.Substring(start + 1, end - start - 1); tbudc.Text = Vdc;

end = data.IndexOf("@");

Idc = data.Substring(start + 1, end - start - 1); tbidc.Text = Idc;

start = end;

end = data.IndexOf("#");

Vac = data.Substring(start + 1, end - start - 1); tbuac.Text = Vac;

start = end;

end = data.IndexOf("$");

Iac = data.Substring(start + 1, end - start - 1); tbiac.Text = Iac;

start = end;

end = data.IndexOf("%");

P = data.Substring(start + 1, end - start - 1); tbp.Text = P;

start = end;

end = data.IndexOf("^");

E = data.Substring(start + 1, end - start - 1); tbe.Text = E;

start = end;

end = data.IndexOf("&");

F = data.Substring(start + 1, end - start - 1); tbf.Text = F;

start = end;

end = data.IndexOf("*");

Pf = data.Substring(start + 1, end - start - 1); tbpf.Text = Pf;

}

catch (Exception ex) { }

}

private void cbbcom_SelectedIndexChanged(object sender, EventArgs e) {

if (port.IsOpen) port.Close();

port.PortName = cbbcom.SelectedIndex.ToString(); }

private void cbbbr_SelectedIndexChanged(object sender, EventArgs e) {

if (port.IsOpen) port.Close();

port.BaudRate = Convert.ToInt16(cbbbr.Text); }

private void hienthi_CSDL() { KNCSDL kn = new KNCSDL(); kn.hienthi(this.dataGridView1); } } }

Code Class using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.IO.Ports; using System.Data; using System.Windows.Forms; namespace Giám_sát_tăng_áp_nghcịh_lưu { class KNCSDL {

SqlConnection con = new SqlConnection(@"Data Source=DESKTOP- KMPOVST\SQLEXPRESS;Initial Catalog=doluong2;Integrated Security=True");

public void hienthi(DataGridView _dt) {

try {

con.Open();

string selec = "select * from gstangap";

SqlDataAdapter sql = new SqlDataAdapter(selec, con); DataTable dt = new DataTable();

sql.Fill(dt);

_dt.DataSource = dt; con.Close();

catch (Exception es) { }

}

public void them_DL(String thoigian, String vDc, String iDc, String vAc, String iAc, String pw, String en, String fr, String pF)

{ try {

con.Open();

string insertSQL = "INSERT INTO gstangap VALUES(@tg, @udc, @idc, @uac, @iac, @p, @e, @f, @pf)";

SqlCommand Com = new SqlCommand(insertSQL, con); Com.CommandType = CommandType.Text;

Com.Parameters.AddWithValue("tg", SqlDbType.NVarChar).SqlValue = thoigian;

Com.Parameters.AddWithValue("udc", SqlDbType.NChar).SqlValue = vDc; Com.Parameters.AddWithValue("idc", SqlDbType.NChar).SqlValue = iDc; Com.Parameters.AddWithValue("uac", SqlDbType.NChar).SqlValue = vAc; Com.Parameters.AddWithValue("iac", SqlDbType.NChar).SqlValue = iAc; Com.Parameters.AddWithValue("p", SqlDbType.NChar).SqlValue = pw; Com.Parameters.AddWithValue("e", SqlDbType.NChar).SqlValue = en; Com.Parameters.AddWithValue("f", SqlDbType.NChar).SqlValue = fr; Com.Parameters.AddWithValue("pf", SqlDbType.NChar).SqlValue = pF; Com.ExecuteNonQuery();

con.Close(); }

catch (Exception exx) { }

} } }

Một phần của tài liệu Xây dựng csdl và giao diện giám sát hệ thống chuyển đổi điện 1 chiều sang xoay chiều (Trang 38)

Tải bản đầy đủ (PDF)

(56 trang)