Documente Academic
Documente Profesional
Documente Cultură
SISTEM DE MONITORIZARE A
CONSUMULUI ELECTRIC ÎN MEDIUL
INDUSTRIAL
CUPRINS
o -Interfaţa să fie astfel proiectată, încât să poată îngloba, cât mai simplu, -
componenta de citire a datelor de la contor şi componenta de generare
de- rapoarte, şi să poată fi completată ulterior cu fereastra de vizualizare
a datelor din baza de date.
o Citirea datelor de la contor
o Salvarea datelor citite in fisiere corespunzatoare
o Implementarea a trei variante de citire a datelor
o Rularea aplicaţiei nu trebuie să depindă de directorul în care a fost salvat
executabilul.
o Să se salveze datele citite de la contor într-o bază de date Access,
respectând cerinţele
2. Fundamentara teoretica
a)Descrierea contorului:
viteză de
2400
comunicaţie [bps]
Paritate Even
număr de biţi
7
transmişi
Datele citite de la contor sunt salvate într-o baza de date Access. Baza de date
Access conţine urmatoarele doua tabele:
-tabelul DictionarDate cu următoarea structura:
Denumire câmp Tip câmp
DenumireMarime şir de caractere
IdentificatorEDIS şir de caractere
UnitateDeMasura şir de caractere
Prescurtari şir de caractere
-tabelul DateCititeContor cu următoarea structură:
Denumire câmp Tip câmp
Serie şir de caractere
Orar dată / timp
PAL numeric real
CFL1 numeric real
CFL2 numeric real
CFL3 numeric real
CELT1E numeric real
CELT2E numeric real
CELT3E numeric real
CELT4E numeric real
CETLkW numeric real
CETLkV numeric real
PR numeric real
TFL1 numeric real
TFL2 numeric real
TFL3 numeric real
Elemente de programare (SQL, ADODB, ADOX):
-Elemente de SQL:
• crearea unui tabel:
• ADO:
• ADOX:
unde:
sirConexiune are aceeaşi structură ca şi argumentul sirConexiune a metodei
ADOX.CatalogClass.Create()
IDUtilizator, parola reprezintă identificatorul utilizatorului şi parola pentru
autentificare
optiune este o valoare care precizează dacă se revine din metodă înainte
sau după stabilirea conexiunii cu baza de date; în caz de indecizie, valoarea este 0;
implicit, valoarea este -1 (revenire după)
– sintaxa metodei Close():
void Close()
• verificarea existenţei unui tabel al unei baze de date:
void Close()
– câmpurile unei înregistrări:
Faza I Faza II
Durata 4 Sedinte 3 Sedinte
Dezvoltare interfetei Dezvoltarea bazei de
aferente si citirea date si generarea de
Sarcini
datelor de la contor rapoarte
Implementarea fazei I :
-citirea de la contor :
Orar de citire a datelor : In dezvoltarea citiri de la contor sa
implentat un orar de citire a datelor .Acesta consta in
implementare a trei timere in c# cu ajutorul caruia se realizeaza
cele trei variante de citire a datelor .
4. Concluzii
Platforma software indeplineste in totalitate lista de specificati , fiecare punct a fost
Posibile imbunatatire aduse :
-Adaugarea a mai multor orare de citire a contorului ;
-Trimiterea rapoartelor realizate prin imtermediul e-mail-ului ;
-Estimarea costului comsumului masurat
-Generarea de facuri pentru consumul masurat
-Accesul la baza de data prin intermediul internetului ,de la distanta;
5.Bibliografie :
-Cursuri aferente proiectului
-http://msdn.microsoft.com/en-us/vstudio/hh388566.aspx
-http://www.meshplex.org/wiki/C_Sharp_Tutorial
-http://www.icsharpcode.net/
6. Anexe
Cod sursa :
o Clasa orar :
public partial class Orar : Form
{
string v1, v2, v3;
DateTime t2, t3;
public Orar()
{
InitializeComponent();
}
}
private void Timer2()
{
timer2 = new Timer();
timer2.Interval = 10000;
timer2.Tick += new EventHandler(timer2_Tick);
}
private void Timer3()
{
timer3 = new Timer();
timer3.Interval = 10000;
timer3.Tick += new EventHandler(timer3_Tick);
}
int min;
private void timer1_Tick(object sender, EventArgs e)
{
if ((DateTime.Now.ToString("M d
h:m").ToString()).Equals(t2.ToString("M d h:m").ToString()))
{
string s1 = DateTime.Now.Year + "_" +
DateTime.Now.Month + "_" + DateTime.Now.Day + "_" + DateTime.Now.Hour
+ "_" + DateTime.Now.Minute + "_v2.txt ";
Contor contor = new Contor("fisierCitire.txt", s1);
contor.scrieCnt();
timer2.Stop();
}
int luna;
private void timer3_Tick(object sender, EventArgs e)
{
if ((DateTime.Now.ToString("d h").Equals(t3.ToString("d
h").ToString())) )
{
if (luna == DateTime.Now.Month)
{
string s1 = DateTime.Now.Year + "_" +
DateTime.Now.Month + "_" + DateTime.Now.Day + "_" + DateTime.Now.Hour
+ "_" + DateTime.Now.Minute + "_v3.txt ";
Contor contor = new Contor("fisierCitire.txt",
s1);
contor.scrieCnt();
luna = (luna + 1) % 12;
}
}
if (v1 != null)
{
min = DateTime.Now.Minute;
timer1.Enabled = true;
min = min + 1;
}
if (v2 != null)
{
t2 = parser1(v2,2);
timer2.Enabled = true;
if (v3 != null)
{
t3 = parser1(v3, 3);
timer3.Enabled = true;
luna = DateTime.Now.Month;
if (f==2)
{
var htmp = ((String)tmp[2]).Split(':');
x = new DateTime(2011, int.Parse(tmp[0]),
int.Parse(tmp[1]), int.Parse(htmp[0]), int.Parse(htmp[1]), 0);
}else
if (f == 3)
{
var htmp = ((String)tmp[1]).Split(' ');
x = new DateTime(2011,11,
int.Parse(tmp[0]),int.Parse(htmp[0]),0,0);
}
return x;
}
}
}
o Clasa bd:
class BD
{
string program = "Interfata";
Directory.SetCurrentDirectory(dirTarget);
string dirBazeDate = dirTarget + "BazeDate\\";
if (Directory.Exists(dirBazeDate) == false)
{
Directory.CreateDirectory(dirBazeDate);
}
Directory.SetCurrentDirectory(dirBazeDate);
bd = bazadedate;
sirConexiune = "Provider=Microsoft.JET.OLEDB.4.0; Data
Source=" + bd + ";";
if (File.Exists(bd) == false)
{
cat.Create(sirConexiune);
}
cat.let_ActiveConnection(sirConexiune);
Tables tabele = cat.Tables;
foreach (Table tab in tabele)
{
if (tab.Name == tabel1)
{
gasit = true;
}
if (tab.Name == tabel2)
{
gasit2 = true;
}
}
if (gasit == false)
{
try
{
con.Open(sirConexiune, "", "", 0);
con.Execute("create table " + tabel1 +
"(DenumireMarime string, IdentificatorEDIS
string, UnitateDeMasura string, " +
"Prescurtari string);", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Puterea activa
livrata','1.7.0','kW','PAL');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Curent pe faza
L1','31.7.0','A','CFL1');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Curent pe faza
L2','51.7.0','A','CFL2');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Curent pe faza
L3','71.7.0','A','CFL3');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Cantitatea de energie livrata la tarif
1 energie','1.8.1','kWh','CELT1E');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Cantitatea de energie livrata la tarif
2 energie','1.8.2','kWh','CELT2E');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Cantitatea de energie livrata la tarif
3 energie','1.8.3','kWh','CELT3E');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Cantitatea de energie livrata la tarif
4 energie','1.8.4','kWh','CELT4E');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Cantitatea de energie totala livrata
kWh','1.8.0','kWh','CETLkW');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Cantitatea de energie totala livrata
kVARh','3.8.0','kVARh','CETLkV');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Puterea
reactivă','3.7.0','kVAR','PR');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Tensiune pe faza
L1','32.7.0','V','TFL1');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Tensiune pe faza
L2','52.7.0','V','TFL2');", out obj, 0);
con.Execute("insert into " + tabel1 +
" values ('Tensiune pe faza
L3','72.7.0','V','TFL3');", out obj, 0);
}
catch
{
if (gasit2 == false)
{
try
{
con.Open(sirConexiune, "", "", 0);
con.Execute("create table " + tabel2 +
"(Serie string, Orar Date, PAL double,CFL1
double,CFL2 double,CFL3 double, " +
"CELT1E double,CELT2E double,CELT3E
double,CELT4E double,CETLkW double,CETLkV double," +
"PR double,TFL1 double,TFL2 double,TFL3
double);", out obj, 0);
}
catch
{
MessageBox.Show("Probleme cu conexiunea la baza de
date (2)!");
}
finally
{
con.Close();
}
}
}
public void Salvare()
{
string Serie;
string data;
string[] val = new string[14];
streamReader.Close();
ConnectionClass conec = new ConnectionClass();
object objec = new object();
try
{
conec.Open(sirConexiune, "", "", 0);
/* string com1SQL = "insert into DateCititeContor
values ('12345678','11.12.2011 8:28'," +
"11,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.10,11.11,12,13,14);";
conec.Execute(com1SQL, out objec, 0);*/
string comSQL = "insert into " + tabel2 + "
values('" + Serie + "','" + data + "'," + val[0] + "," + val[1] + ","
+ val[2] + "," +
val[3] + "," + val[4] + "," + val[5] + "," +
val[6] + "," + val[7] + "," + val[8] + "," + val[9] + "," + val[10] +
"," + val[11] + "," +
val[12] + "," + val[13] + ");";
}
catch
{
MessageBox.Show("Probleme cu conexiunea la baza de
date (3)!");
}
finally
{
conec.Close();
}
}
}
}
o Clasa interfata :
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool f;
var serie = SerieC.Text;
var viteza = Viteza_combo.SelectedItem;
var par = paritate_combo.SelectedItem;
var biti = biti_combo.SelectedItem;
var nrbiti = txt_nr_biti.Text;
var tastept = txt_timp_astept.Text;
fisierCitire.Write(serie);
fisierCitire.WriteLine();
fisierCitire.Write(viteza);
fisierCitire.WriteLine ();
fisierCitire.Write(par);
fisierCitire.WriteLine ();
fisierCitire.Write(biti);
fisierCitire.WriteLine();
fisierCitire.Write(nrbiti);
fisierCitire.WriteLine ();
fisierCitire.Write(tastept);
}
f = true;
if (SerieC.Text.Length != 8)
{
MessageBox.Show("Nu ati introdus corect datele!", "",
MessageBoxButtons.OK, MessageBoxIcon.Error);
f = false;
}
try
{
Int32.Parse(SerieC.Text);
Int32.Parse(txt_nr_biti.Text );
Int32.Parse(txt_timp_astept.Text );
}
catch
{
MessageBox.Show("Nu ati introdus corect datele!",
"",MessageBoxButtons .OK ,MessageBoxIcon.Error );
f = false;
}
if ((Viteza_combo.Items.Contains(Viteza_combo.Text) ==
false) || (paritate_combo.Items.Contains(paritate_combo.Text) ==
false) || (biti_combo.Items.Contains(biti_combo.Text) == false))
{
f = false;
MessageBox.Show("Folositi doar datele disponibile din
combobox", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (f == true)
{
dr = MessageBox.Show("Continuati?", " ",
MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
groupBox1.Enabled = false;
groupBox2.Enabled = true;
}
}
#endregion
private void checkBox1_CheckedChanged(object sender, EventArgs
e)
{
if (numericUpDown1.Enabled == false)
numericUpDown1.Enabled = true;
else
numericUpDown1.Enabled = false;
}
#endregion
#region ok_orare
if (checkBox1.Enabled == true)
{
opt = "V1:";
orar1.Write(v1_minute);
orar1.WriteLine();
}
if (checkBox2.Enabled == true)
{
opt = "V2:";
orar1.Write(luna);
orar1.Write(" ");
orar1.Write(ziua);
orar1.Write(" ");
orar1.Write(v2_ore);
orar1.Write(":");
orar1.Write(v2_minute);
orar1.WriteLine();
if (checkBox3.Enabled == true)
{
opt = "V3:";
orar1.Write(v3_zi);
orar1.Write(" ");
orar1.Write(v3_ore);
orar1.WriteLine();
}
}
}
#endregion
#region inchidere
#endregion