Sunteți pe pagina 1din 34

Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial

an universitar 2011/ 2012

UNIVERSITATEA “POLITEHNICA” DIN TIMISOARA

FACULTATEA DE AUTOMATICĂŞI CALCULATOARE

DEPARTAMENTUL AUTOMATICĂŞI INFORMATICĂAPLICATĂ

SISTEM DE MONITORIZARE A
CONSUMULUI ELECTRIC ÎN MEDIUL
INDUSTRIAL

Proiect Sincretic 1.3.

AUTORI: Ilies Ionut-Daniel


Chivari Anghel Cristian
Vadas Robert Mihaly
Mihut Cristian Mircea
Mituca Mihai

COORDONATORI: As.ing. Dadiana CĂIMAN


As.mat. Lavinia DRAGOMIR

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial
an universitar 2011/ 2012

CUPRINS

1. Prezentarea temei proiectului .................................1


2. Fundamentare teoretica..........................................2
3. Dezvoltarea produsului softwere...........................16
4. Concluzii.................................................................17
5. Bibliografie..............................................................17
6. Anexe........................................................................18

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 1
an universitar 2009/ 2010

1. Prezentarea temei proiectului


Tema proiectului consta in dezvoltarea unui produs software pentru
citerea si salvarea datelor intr-o baza de data si generarea de rapoarte a
unui contor industrial.
Dezvoltarea produsului software a avut loc in mai multe etape.Aceste
etape constau in realizarea interfetei si citirea datelor de la contor ,respectiv
generarea de rapoarte si realizarea unei baze de date pt stocarea
informatilor.
Prima etapa a mai fost impartita in 2 parti , mai exact citirea datelor
de la contor consta in doua parti ,citirea datelor prin intermediul portului
serial si realizarea unor orare pt citirea datelor .
Dupa finalizarea primei etape a avut loc ansamblarea interfetei cu
partea de citire a contorului.
Asamblarea finala consta in adaugarea bazei de date si generarea
rapoartelor.
Specificatile proiectului :
o Să se proiecteze şi să se implementeze, respectând condiţiile 2-4 şi
caracteristicile 5-15, următoarele componente ale interfeţei cu
utilizatorul:
– interfaţa principală;
– interfaţa pentru setarea valorilor parametrilor necesari etapei de citire
a datelor de la contoare.

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

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 2
an universitar 2009/ 2010

o Să se proiecteze şi să se implementeze o interfaţă de afişare a datelor


din baza de date Access, respectând cerinţele.
o Baza de date Access va conţine minim următoarele două tabele:
tabelul DictionarDate cu următoarea structură:
Denumire câmp Tip câmp
DenumireMarime şir de caractere
IdentificatorEDIS şir de caractere
UnitateDeMasura şir de caractere
Prescurtari şir de caractere
o initializarea parametrilor de comunicaţie (valorile vor fi citite dintr-un fisier
text )
o citirea datelor de la contor folosind standardul IEC61107 (contorul se va
conecta la portul serial al calculatorului)
o salvarea datelor citite de la contor într-un fişier text

2. Fundamentara teoretica
a)Descrierea contorului:

Contorul utilizat impreuna cu platforma software se numeste Alpha A1200 si


are ca scop monitorizarea consumului electric in mediul industrial. Asociaţia
Germană de Electricitate VDEW (Verband der Elektriyitätswirtshaft) care include
90% din companiile implicate în livrarea şi producerea energiei electrice din
Germania, a realizat un standard de codificare a mărimilor afişate de contor
(standardul EDIS - Energy Data Identification System ) din care a rezultat ulterior şi
standardul internaţional OBIS (Object Identification System). Membrii asociaţiei
VDEW sunt producătorii, distribuitorii şi transportatorii de energie electrică
Mai jos este dată tabela de codificare a mărimilor afişate de contor:

Mărime afişată Identificator Identificator Descriere


EDIS LCD tipic
Puterea activă +kW 1.7.0 8.0 Putere activă livrată dpdv al
distribuitorului –mărime instantanee -
P=U*I* cosφ

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 3
an universitar 2009/ 2010

Mărime afişată Identificator Identificator Descriere


EDIS LCD tipic
Puterea activă -kW 2.7.0 8.1 Putere activă primită dpdv al
distribuitorului –mărime instantanee -
P=U*I* cosφ
Puterea aparentă +kVA 9.7.0 8.4 Putere aparentă livrată dpdv al
distribuitorului –mărime instantanee -
P=U*I
Puterea aparentă -kVA 10.7.0 8.5 Putere aparentă primită dpdv al
distribuitorului –mărime instantanee -
P=U*I
Curent pe faza L1 31.7.0 L1 (“A” unităţi) Curentul de pe faza L1 (R sau A)
Curent pe faza L2 51.7.0 L2 (“A” unităţi) Curentul de pe faza L2 (S sau B)
Curent pe faza L3 71.7.0 L3 (“A” unităţi) Curentul de pe faza L3 (T sau C)
Data după ultima C.63.5 7.4 Ziua şi luna după ultima modificare a
modificare a timpului/ timpului / datei
datei
Data înainte de ultima C.63.2 7.3 Ziua şi luna existentă înainte de
modificare a timpului/ ultima modificare a timpului / datei
datei
Data ultimei resetări a C.64.2 5.7 Ziua şi luna la care s-a apăsat butonul
puterii de reset al puterii maxime – se roteşte
butonul Galben la 90°
Data ultimei erori de C.66.2 F.4 Un sistem de tensiuni valid este
serviciu de sistem atunci când tensiunile de faza sunt
230V +/- 10% iar unghiul între 2
tensiuni de faza (între tensiune de pe
faza R şi de pe faza S respectiv între
tensiunea de pe faza S şi de pe faza
T) este de 120° . Şi pentru curenţi se
definesc anumite valori valide. Acest
câmp afişează data ultimei erori a
serviciului de sistem.
Lungimea intervalului de 0.8.0 5.0 Puterea maximă se calculează ca
putere (minute) maximul dintre puterile medii calculate
pe un interval de timp – acest afişaj
reprezintă intervalul de timp
Contorul resetărilor de 0.1.0 5.1 Numărul de apăsări ale butonului de
putere reset
Cantitatea de energie 1 †.8.0*1 ‡.L Contorul poate măsura două energii

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 4
an universitar 2009/ 2010

Mărime afişată Identificator Identificator Descriere


EDIS LCD tipic
totală de pe perioada de din cele prezentate în tabelul B-2. †
facturare anterioară reprezintă prefixul mărimilor selectate.
În plus la apăsarea butonului de
Reset se salvează într-un registru
separat valoarea curentă a indexului
total Acest afişaj reprezintă indexul
total de pe perioada anterioară al
primei energii selectate - în cazul de
faţă este vorba de kWh livraţi
Cantitatea de energie 1 †.8.1 ‡.1 Contorul poate să împartă energia 1
tarif 1 măsurată pe 4 tarife funcţie de
intervalele orare stabilite – Acest
afişaj prezintă indexul de pe tariful 1
Cantitatea de energie 1 †.8.2 ‡.2 Idem pentru tariful 2
tarif 2 energie
Cantitatea de energie 1 †.8.3 ‡.3 Idem pentru tariful 3
tarif 3 energie
Cantitatea de energie 1 †.8.4 ‡.4 Idem pentru tariful 4
tarif 4 energie
Cantitatea de energie 1 †.8.0 ‡.0 Acest afişaj reprezintă indexul total al
energia totală primei energii selectate
Cantitatea de energie 2 †.8.0*1 ‡.L Contorul poate măsura două energii
energia totală anterioară din cele prezentate în tabelul B-2. †
reprezintă prefixul mărimilor selectate.
În plus la apăsarea butonului de
Reset se salvează într-un registru
separat valoarea curentă a indexului
total Acest afişaj reprezintă indexul
total de pe perioada anterioară al
celei de a doua energii selectate - în
cazul de faţă este vorba de kVARh
livraţi
Cantitatea de energie 2 †.8.1 ‡.1 Contorul poate să împartă energia 2
tarif 1 energie măsurată pe 4 tarife funcţie de
intervalele orare stabilite – Acest
afişaj prezintă indexul de pe tariful 1
Cantitatea de energie 2 †.8.2 ‡.2 Idem pentru tariful 2
tarif 2 energie
Cantitatea de energie 2 †.8.3 ‡.3 Idem pentru tariful 3

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 5
an universitar 2009/ 2010

Mărime afişată Identificator Identificator Descriere


EDIS LCD tipic
tarif 3 energie
Cantitatea de energie 2 †.8.4 ‡.4 Idem pentru tariful 4
tarif 4 energie
Cantitatea de energie 2 †.8.0 ‡.0 Acest afişaj reprezintă indexul total al
energie totală celei de a doua energii selectate
Suma de control a C.65.0 0.4 Prin programul încorporat în contor se
programul încorporat în înţelege firmware-lul contorului.
contor Acesta are o sumă de control pentru a
verifica dacă este încă valid
Codul de revizie al 0.2.0 0.3 Firmware-ul contorului poate suferii
programului încorporat in modificări în cazul în care se
contor realizează modificări ale funcţiilor
contorului sau ale hardware-lui După
orice modificare contorul trebuie
aprobat din nou şi se modifică revizia
contorului.
Ultima eroare de serviciu C.66.3 F.6 Afişează codificat cauza ultimei erori
de sistem a serviciului de sistem
Testul segmentului LCD -- -- Testul de afişaj al contorului – se
aprind toate segmentele de pe afişaj
pentru a testa dacă nu sunt toate
vizibile
Puterea maximă .6.1 5.6 Puterea maximă se calculează ca
maximul dintre puterile medii calculate
pe un interval de timp
Seria contorului C.1.0 0.1 Seria din fabrică a contorului
Energia de suprasarcină .10.0 6.0 În contor se poate stabili un prag de
putere. În cazul în care se depăşeşte
această putere contorul înregistrează
energia consumată peste pragul de
putere prescris.
Practic este implementată funcţia
Esuprasarcină=  (Pcurent - Psuprasarcinã) * t
Pragul de suprasarcină 0.5.1 6.5 Pragul de suprasarcină
Timpul de absenţă a C.61.2 9.6 Dacă o tensiune de pe orice fază
tensiunii pe fază lipseşte se incrementează acest timp
Data actuală 0.9.2 0.6 Ziua, luna şi anul curent
Puterea pe intervalul .4.1 5.4 Puterea medie calculată pe intervalul

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 6
an universitar 2009/ 2010

Mărime afişată Identificator Identificator Descriere


EDIS LCD tipic
actual curent. Se calculează din energia
acumulată in intervalul de calcul al
puterii cu formula:
P= E * 60/t unde t este intervalul de
timp de calcul al puterii în minute
Timpul actual 0.9.1 0.5 Ora şi minutul curent
Puterea pe intervalul .5.1 5.5 Puterea medie calculată pe intervalul
anterior anterior
Puterea maximă .6.1*1 5.L În momentul apăsării butonului
anterioară RESET al puterii maxime, valoarea
puterii maxime se înregistrează în
acest registru iar registrul de putere
maximă se aduce la 0
Numărul de identificare a 0.2.1 0.2 Administratorul contoarelor poate să
programului creeze mai multe programe pentru
contor, fiecare fiind identificat printr-un
număr.
Puterea reactivă +kVAR 3.7.0 8.2 Putere reactivă livrată dpdv al
distribuitorului –mărime instantanee -
P=U*I* sinφ
Puterea reactivă -kVAR 4.7.0 8.3 Putere reactivă primită dpdv al
distribuitorului – mărime instantanee –
P=U*I* sinφ
Contorul de reporniri C.61.0 9.9 Se contorizează de câte ori a fost
repornit contorul de către wachdog-ul
intern.
Estimarea debitului de C.62.1 9.7 Deşi contorul contorizează energia
energie în sens invers activă livrată, el poate înregistra şi
energia activă primită – valoare ce ar
trebui să fie 0
Contorul erorilor de C.66.0 F.3 Un sistem de tensiuni valid este
Serviciu de sistem atunci când tensiunile de faza sunt
230V +/- 10% iar unghiul între 2
tensiuni de faza (între tensiune de pe
faza R şi de pe faza S respectiv între
tensiunea de pe faza S şi de pe faza
T) este de 120° . Şi pentru curenţi se
definesc anumite valori valide. - Se
numără câte erori au apărut

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 7
an universitar 2009/ 2010

Mărime afişată Identificator Identificator Descriere


EDIS LCD tipic
Erori de Serviciu de F.2 F.2 Se afişează codul erorii serviciului de
sistem sistem (vezi tabelele de mai jos)
Erori de Serviciu de F.2 F.2 Idem – în condiţie de eroare
sistem (numai în condiţii
de eroare)
Erorile contorului F.F F.F Erori ale contorului care afectează
funcţionarea
Erori contorului (numai în F.F F.F Idem - în condiţie de eroare
condiţii de eroare)
Avertizări ale contorului F.1 F.1 Erori care ar putea afecta
funcţionarea contorului, dar nu este
sigur.
Avertizări ale contorului F.1 F.1 Idem – în condiţii de eroare
(numai la avertizări)
Contorul de schimbare a C.60.0 9.0 Numărul de programări ale orarului de
tarifului comutare al tarifelor
Timpul de la ultima C.63.4 7.2 Ora şi minutul după ultima modificare
schimbare timp/ dată a timpului / datei
Timpul înainte de ultima C.63.1 7.1 Ora şi minutul existentă înainte de
schimbare timp/ dată ultima modificare a timpului / datei
Timpul de la ultima C.64.1 5.6 Numărul de minute scurse de la
resetare a puterii ultima apăsare a butonului de Reset
al puterii maxime
Timpul de la ultima C.66.1 F.5 Timpul scurs de la ultima eroare a
eroare de Serviciu de serviciului de tensiuni
sistem
Starea programului de C.60.5 1.5 Tariful curent
comutare a tarifelor
Timpul pe tariful 1 C.60.1 9.1 Timpul scurs pe tariful 1
Timpul pe tariful 2 C.60.2 9.2 Timpul scurs pe tariful 2
Timpul pe tariful 3 C.60.3 9.3 Timpul scurs pe tariful 3
Timpul pe tariful 4 C.60.4 9.4 Timpul scurs pe tariful 4
Contorul de schimbare C.63.0 7.5 Numărul de modificări data/ora.
dată/ timp
Timpul total de C.61.1 9.5 Timpul total de funcţionare de la
funcţionare ultima programare
Timpul total de lipsă de C.61.3 9.8 Timpul total în care contorul nu a fost
alimentare (ore) alimentat

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 8
an universitar 2009/ 2010

Mărime afişată Identificator Identificator Descriere


EDIS LCD tipic
Numărul de identificare 0.0.0 0.0 Proprietarul contorului poate avea un
utilităţi număr de inventar al contorului care
poate fi înregistrat
Tensiune pe faza L1 32.7.0 L1 (“V” unităţi) Tensiunea de pe faza L1 (R sau A)
Tensiunea pe faza L2 52.7.0 L2 (“V” unităţi) Tensiunea de pe faza L2 (S sau B)
Tensiunea pe faza L3 72.7.0 L3 (“V” unităţi) Tensiunea de pe faza L3 (T sau C)

Citirea datelor de la contorul ALPHA A1200 (aplicaţie consolă):


Conţine o clasă ce realiză:
-initializarea parametrilor de comunicaţie (valorile vor fi citite dintr-un fisier text )
-citirea datelor de la contor folosind standardul IEC61107 (contorul se va conecta la
portul serial al calculatorului)
-salvarea datelor citite de la contor într-un fişier text

Protocolul IEC 61107 MOD C


Valorile parametrilor de comunicaţie:
Denumire Valoare

viteză de
2400
comunicaţie [bps]

Paritate Even

biţi de stop One

număr de biţi
7
transmişi

Handshake pe portul electric

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 9
an universitar 2009/ 2010

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 10
an universitar 2009/ 2010

Modul de citire date

b)Elemente de programare (terminologia de baze de date folosită, elemente de


Visual C# etc.):

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 11
an universitar 2009/ 2010

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:

CREATE TABLE NumeTabel (numeCamp1 tipDataCamp1


optiuniCamp1,numeCamp2 tipDataCamp2 optiuniCamp2, ...);
• crearea unui tabel dintr-un tabel existent:

CREATE TABLE NumeTabelNou (numeCampNou1, numeCampNou2,...)AS


(SELECT numeCampVechi1, numeCampVechi2,...)FROM numeTabelVechi);
• ştergerea unui tabel:

DROP TABLE NumeTabel;


• adăugarea unui câmp nou la sfârşitul unui tabel:

ALTER TABLE NumeTabel

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 12
an universitar 2009/ 2010

ADD COLUMN numeCampNou tipDataCampNou;


• eliminarea unui câmp dintr-un tabel:

ALTER TABLE NumeTabel DROP COLUMN numeCamp;


• opţiuni: NULL / NOT NULL, DEFAULT=valoareImplicita

• completarea valorilor câmpurilor unei înregistrări a unui tabel:

INSERT INTO NumeTabel VALUES (valoareCamp1, valoareCamp2,...);


INSERT INTO NumeTabel (numeCamp_i, numeCamp_j,...) VALUES
(valoareCamp_i, valoareCamp_j,...);
• regăsirea unor informaţii dintr-un tabel:

SELECT listaNumeCampuri FROM NumeTabel;


SELECT listaNumeCampuri FROM NumeTabel WHERE
conditieDeCautare;
Librării pentru lucrul cu baze de date:
• Microsoft JET:

– librărie destinată creării şi gestionării bazelor de date Access prin


intermediul unui limbaj de programare sau al unei interfeţe de
programare

• ADO:

– Microsoft ActiveX Data Objects

– librărie folosită pentru gestionarea bazelor de date

– permite accesul la surse de date prin intermediul furnizorului OLE DB

• ADOX:

– Microsoft ActiveX Data Object Extensions for Data Definition


Language and Security

– extensie a librăriei ADO

Visual C#, ADO, ADOX


• bibliotecile ADO şi ADOX trebuiesc incluse printre referinţele proiectului:

Project  Add Reference  COM:


Microsoft ActiveX Data Objects 2.8 Library
- librăria ADO

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 13
an universitar 2009/ 2010

Microsoft ADO Ext. 2.8. for DLL and Security


- librăria ADOX
• fiecare din aceste librării are un spaţiu de nume asociat în Visual C#:

– librăria ADO  spaţiul de nume ADODB

– librăria ADOX  spaţiul de nume ADOX

• crearea unei baze de date:

– se foloseşte metoda de instanţă Create() a clasei CatalogClass

– clasa CatalogClass implementează interfaţa Catalog

– interfaţa Catalog şi clasa CatalogClass sunt definite în spaţiul de


nume ADOX

– sintaxa metodei Create():

object Create(string sirConexiune)


unde:
sirConexiune=“Provider=numeFurnizor;
Data Source=numeSursaDeDate;”
– furnizorul (provider) în cazul bazelor de date Access este
Microsoft.JET.OLEDB.4.0

– sursa de date este baza de date folosită, specificată prin nume şi


calea de directoare în care se află

• conexiunea cu o bază de date:

– se deschide cu metoda de instanţă Open() a clasei ConnectionClass

– se închide cu metoda de instanţă Close() a clasei ConnectionClass;


la închidere se eliberează automat şi resursele folosite

– clasa ConnectionClass implementează interfaţa Connection

– interfaţa Connection şi clasa ConnectionClass sunt definite în spaţiul


de nume ADODB

– sintaxa metodei Open():

void Open(string sirConexiune, string IDUtilizator,string parola, int optiune)

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 14
an universitar 2009/ 2010

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:

CatalogClass cat=new CatalogClass();


string sirConexiune=...;
cat.let_ActiveConnection(sirConexiune);
Tables listaTabele=cat.Tables;
foreach(Table tab in listaTabele) {
if(tab.Name==numeTabelCautat) {
// tabelul a fost gasit
}
}
• execuţia unei comenzi SQL:

– se realizează cu metoda de instanţă Execute() a clasei


ConnectionClass

– sintaxa metodei Execute():

Recordset Execute(string textComanda, out object inregistrariAfectate,


int optiune)
unde:
textComanda este un şir de caractere care reprezintă comanda SQL
inregistrariAfectate este un argument pentru a reţine câte înregistrări au fost
afectate de comanda SQL executată
optiune indică furnizorului cum să evalueze comanda SQL; în caz de
indecizie, valoarea este 0
– metoda Execute() returnează referinţa către un obiect Recordset

– manipularea înregistrărilor unei baze de date:

– se realizează prin intermediul proprietăţilor şi metodelor de instanţă


ale clasei Recordset, definită în spaţiul de nume ADODB

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 15
an universitar 2009/ 2010

– la un moment dat, un obiect Recordset se referă la o singură


înregistrare din setul de înregistrări ale unui tabel al unei baze de
date sau dintr-un set de înregistrări al bazei de date obţinut cu o
comandă SQL , numită înregistrarea curentă

– deschiderea unui cursor spre un obiect Recordset:

void Open(object sursaDeDate, object conexiuneActiva,


ADODB.CursorTypeEnum tipCursor, ADODB.LockTypeEnum lockType, int
optiune)
unde:
sursaDeDate este fie numele unui tabel, fie o interogare SQL
conexiuneActiva este un obiect de tip ConnectionClass / Connection care a
fost folosit pentru a deschide conexiunea cu baza de date
tipCursor este un element al enumerării {adOpenStatic,
adOpenForwardOnly, adOpenDynamic, adOpenKeyset, adOpenUnspecified}; în
cazul bazelor de date cu acces concurenţial, tipul cursorului precizează modul de
navigare printre înregistrări permis şi dacă utilizatorul poate sau nu vedea
modificările făcute de alţi utilizatori care folosesc în acelaşi timp aceeaşi bază de
date
lockType este un element al enumerării {adLockBatchOptimistic,
adLockOptimistic, adLockPessimistic, adLockReadOnly}; se foloseşte în cazul
bazelor de date cu acces concurenţial
optiune indică furnizorului cum să evalueze parametrul sursaDeDate; în caz
de idecizie, valoarea este 0
• manipularea înregistrărilor unei baze de date - continuare:

– închiderea cursorului spre un obiect Recordset:

void Close()
– câmpurile unei înregistrări:

• lista câmpurilor se obţine cu ajutorul colecţiei Recordset.Fields

• un câmp al înregistrării este un element al colecţiei Fields,


fiind obţinut prin indicarea între [] a numelui câmpului (ca şir
de caractere) sau a poziţiei sale în colecţie; un obiect al
colecţiei Fields este un obiect al clasei Field

• câteva proprietăţi ale unui obiect Field: Name, Value, Type

– manipularea înregistrărilor unei baze de date - continuare:

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 16
an universitar 2009/ 2010

– navigarea printre înregistrări:

3. Dezvoltare produsului software


Dezvoltarea produsului sa relizat pe parcursul a doua etape si cu o echipa
formata din cinci membrii.Modalitatea de organizare aleasa a fost impartirea
echipei in doua subansamble ,primul pentru dezvoltarea partii de citire de la
contor iar a doua pentru crearea interfetei aferente.In faza a doua echipa a
ramas impartita in doua subasamble care , simultan au dezvoltat baza de
date si generarea de rapoarte.Repartizarea si durata devoltarii se poate
aobserva in tabelul de mai jos :

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 .

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 17
an universitar 2009/ 2010

 Realizarea comunicari aplicatie cu contorul prin intermediul


portului serial.
- Interfata
 Introducerea datelor valide pentru setarea citiri datelor de la
contor
Implementare fazei II :
- Generarea de rapoarte :
 Generare de rapoarte a datelor citite si afisarea acestora prin
intermediu interfetei
- Crearea unei baze de date pentru stocare datelor citite si vizualizarea
acestora.

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/

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 18
an universitar 2009/ 2010

6. Anexe
Cod sursa :
o Clasa orar :
public partial class Orar : Form
{
string v1, v2, v3;
DateTime t2, t3;
public Orar()
{

InitializeComponent();
}

private void Timer1()


{
timer1 = new Timer();
timer1.Tick += new EventHandler(timer1_Tick);

}
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)
{

string s1 = DateTime.Now.Year + "_" + DateTime.Now.Month +


"_" + DateTime.Now.Day + "_" + DateTime.Now.Hour + "_" +
DateTime.Now.Minute + "_v1.txt ";
if (min == DateTime.Now.Minute)
{

Contor contor = new Contor("fisierCitire.txt", s1);


contor.scrieCnt();

min = (min +int.Parse (v1)) % 60;

private void timer2_Tick(object sender, EventArgs e)


{

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 19
an universitar 2009/ 2010

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;
}
}

private void button1_Click(object sender, EventArgs e)


{
string program = "Interfata";
string dirStart = Directory.GetCurrentDirectory();
int poz = dirStart.IndexOf(program);
string dirTarget = dirStart.Substring(0, poz +
program.Length + 1);
Directory.SetCurrentDirectory(dirTarget);

string dirSetari = dirTarget + "Setari\\";


if (Directory.Exists(dirSetari) == false)
{
Directory.CreateDirectory(dirSetari);
}
Directory.SetCurrentDirectory(dirSetari);

StreamReader st = new StreamReader("orar1.txt");


v1 = st.ReadLine();
v2 = st.ReadLine();
v3 = st.ReadLine();

if (v1 != null)
{

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 20
an universitar 2009/ 2010

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;

private void button2_Click(object sender, EventArgs e)


{
timer1.Enabled = false;
timer2.Enabled = false;
Close();

private DateTime parser1(string txt,int f)


{

DateTime x=new DateTime();


var tmp = txt.Split(' ');

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;
}

private void Orar_Load(object sender, EventArgs e)


{

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 21
an universitar 2009/ 2010

}
}

o Clasa bd:

class BD
{
string program = "Interfata";

private string tabel1 = "DictionarDate";


private string tabel2 = "DateCititeContor";

private string bd, sirConexiune;

public BD(string bazadedate)


{
string dirStart = Directory.GetCurrentDirectory();
int poz = dirStart.IndexOf(program);
string dirTarget = dirStart.Substring(0, poz +
program.Length + 1);

Directory.SetCurrentDirectory(dirTarget);
string dirBazeDate = dirTarget + "BazeDate\\";

if (Directory.Exists(dirBazeDate) == false)
{
Directory.CreateDirectory(dirBazeDate);
}
Directory.SetCurrentDirectory(dirBazeDate);

CatalogClass cat = new CatalogClass();


bool gasit = false;
bool gasit2 = false;
ConnectionClass con = new ConnectionClass();
object obj = new object();

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;

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 22
an universitar 2009/ 2010

}
}

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
{

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 23
an universitar 2009/ 2010

MessageBox.Show("Probleme cu conexiunea la baza de


date (1)!");
}
finally
{
con.Close();
}
}

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 streamReader = null;

string dirStart = Directory.GetCurrentDirectory();


int poz = dirStart.IndexOf(program);
string dirTarget = dirStart.Substring(0, poz +
program.Length + 1);
dirTarget = dirTarget + "Setari";
File.Delete(dirTarget + "\\fisierCitire.txt");
File.Delete(dirTarget + "\\orar1.txt");
string[] nume_fisier = Directory.GetFiles(dirTarget);
foreach (string nume_string in nume_fisier)
{
string[] fis = nume_string.Split('_');

int pozitie = fis[0].LastIndexOf('\\');


fis[0] = fis[0].Substring(pozitie + 1);

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 24
an universitar 2009/ 2010

Serie = fis[0].Substring(0, 8);


data = fis[2] + "." + fis[1] + "." +
fis[0].Substring(8) + " " + fis[3] + ":" + fis[4];

streamReader = new StreamReader(nume_string);

while (streamReader.EndOfStream == false)


{

string linie = streamReader.ReadLine();


string[] x = linie.Split('(', '*');
if (x[0].CompareTo("1.7.0") == 0) val[0] = x[1];
if (x[0].CompareTo("31.7.0") == 0) val[1] = x[1];
if (x[0].CompareTo("51.7.0") == 0) val[2] = x[1];
if (x[0].CompareTo("71.7.0") == 0) val[3] = x[1];
if (x[0].CompareTo("1.8.1") == 0) val[4] = x[1];
if (x[0].CompareTo("1.8.2") == 0) val[5] = x[1];
if (x[0].CompareTo("1.8.3") == 0) val[6] = x[1];
if (x[0].CompareTo("1.8.4") == 0) val[7] = x[1];
if (x[0].CompareTo("1.8.0") == 0) val[8] = x[1];
if (x[0].CompareTo("3.8.0") == 0) val[9] = x[1];
if (x[0].CompareTo("3.7.0") == 0) val[10] = x[1];
if (x[0].CompareTo("32.7.0") == 0) val[11] = x[1];
if (x[0].CompareTo("52.7.0") == 0) val[12] = x[1];
if (x[0].CompareTo("72.7.0") == 0) val[13] = x[1];
}

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] + ");";

conec.Execute(comSQL, out objec, 0);

}
catch
{
MessageBox.Show("Probleme cu conexiunea la baza de
date (3)!");
}

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 25
an universitar 2009/ 2010

finally
{
conec.Close();
}
}

foreach (string nume_string in nume_fisier)


{
File.Delete(nume_string);

}
}

o Clasa interfata :
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

#region ok date contor

private void btn_ok_Click(object sender, EventArgs e)


{
DialogResult dr;

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;

string program = "Interfata";


string dirStart = Directory.GetCurrentDirectory();
int poz = dirStart.IndexOf(program);
string dirTarget = dirStart.Substring(0, poz +
program.Length + 1);
Directory.SetCurrentDirectory(dirTarget);

string dirSetari = dirTarget + "Setari\\";


if (Directory.Exists(dirSetari) == false)
{
Directory.CreateDirectory(dirSetari);
}
Directory.SetCurrentDirectory(dirSetari);

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 26
an universitar 2009/ 2010

using (StreamWriter fisierCitire = new


StreamWriter("fisierCitire.txt"))
{

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;
}
}

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 27
an universitar 2009/ 2010

#region Buton Start


private void btn_Start_Click(object sender, EventArgs e)
{
Orar nume = new Orar();
nume.Show();

#endregion
private void checkBox1_CheckedChanged(object sender, EventArgs
e)
{

if (numericUpDown1.Enabled == false)
numericUpDown1.Enabled = true;
else
numericUpDown1.Enabled = false;
}

private void checkBox2_CheckedChanged(object sender, EventArgs


e)
{
if (numericUpDown2.Enabled == false &&
numericUpDown3.Enabled == false &&
selectdata.Enabled == false)
{
numericUpDown2.Enabled = true;
numericUpDown3.Enabled = true;
selectdata.Enabled = true;
}
else
{
numericUpDown2.Enabled = false;
numericUpDown3.Enabled = false;
selectdata.Enabled = false;
}

private void checkBox3_CheckedChanged(object sender, EventArgs


e)
{
if (numericUpDown4.Enabled == false &&
numericUpDown5.Enabled == false)
{
numericUpDown4.Enabled = true;
numericUpDown5.Enabled = true;
}
else
{
numericUpDown4.Enabled = false;
numericUpDown5.Enabled = false;

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 28
an universitar 2009/ 2010

#endregion
#region ok_orare

private void btn_ok_orare_Click(object sender, EventArgs e)


{
DialogResult dr1;
string opt;
var v1_minute = numericUpDown1.Value;
var v2_ore = numericUpDown2.Value;
var v2_minute = numericUpDown3.Value;
var v3_zi = numericUpDown4.Value;
var v3_ore = numericUpDown5.Value;

string program = "Interfata";


string dirStart = Directory.GetCurrentDirectory();
int poz = dirStart.IndexOf(program);
string dirTarget = dirStart.Substring(0, poz +
program.Length + 1);
Directory.SetCurrentDirectory(dirTarget);

string dirSetari = dirTarget + "Setari\\";


if (Directory.Exists(dirSetari) == false)
{
Directory.CreateDirectory(dirSetari);
}
Directory.SetCurrentDirectory(dirSetari);

string tot = selectdata.Value.ToString();


//selectdata.Value.Date;
string luna = tot.Substring(3, 2);
string ziua = tot.Substring(0, 2);

using (StreamWriter orar1 = new StreamWriter("orar1.txt"))


{

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);

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 29
an universitar 2009/ 2010

orar1.WriteLine();

if (checkBox3.Enabled == true)
{
opt = "V3:";

orar1.Write(v3_zi);
orar1.Write(" ");
orar1.Write(v3_ore);
orar1.WriteLine();
}

dr1 = MessageBox.Show("Continuati?", " ",


MessageBoxButtons.YesNo);
if (dr1 == DialogResult.Yes)
{
if ((checkBox1.Checked == false && checkBox2.Checked
== false && checkBox3.Checked == false) == true)
{
btn_Start.Enabled = false;
groupBox2.Enabled = true;
}
else
{
groupBox2.Enabled = false;
btn_Start.Enabled = true;
}

}
}

#endregion

#region inchidere

private void btnIncheiere_Click(object sender, EventArgs e)


{
DialogResult dr2;
dr2=MessageBox.Show("Doriti sa iesiti?", "",
MessageBoxButtons.YesNo);
if(dr2==DialogResult .Yes )
Close();
}

#endregion

private void Form1_Load(object sender, EventArgs e)


{

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 30
an universitar 2009/ 2010

Mod de utilizare al prodului software :


1. Deschirea aplicatie

2. Din meniul principal se selecteaza operatia dorita

3. Pentru citirea datelor de la contor se introduc parametri necesari


pentru contor si setarea orarelor de citire

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 31
an universitar 2009/ 2010

4. Petru salvarea datelor intr-o baza de dade se selecteaza din meniul


principal optiunea :”Salvarea datelor citite de la contor intr-o baza de
date”

5. Vizualizare datelor salvate are loc prin optiune corespondenta din


meniul principal;

6. Generarea rapoartelor poate fi de mai multe tipuri astfel acestea se


aleg din submeniul corespunzator ;

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată
Proiect sincretic I – Sistem de monitorizare a consumului electric în mediul industrial 32
an universitar 2009/ 2010

7. Pentru inchiderea aplicatie se alege optiunea “Incheierea modului de


lucru” din meniul principal;

Probleme intampinate pe parcursul dezvoltari aplicatiei :


1. Problema: Incompatibilitatea fisierelor generate de interfata cu cele citite
de contor;
Solutie: Comunicarea si modificarea fisierelor pentru a fi compatibile;
2. Problema :Multiple incompatibilitati la ansamblarea de la finalizarea fazei
I;
Solutie: Identificare si corectarea acestora;

U.P.T – Facultatea de Automatică şi Calculatoare


Departamentul de Automatică şi Informatică Aplicată

S-ar putea să vă placă și