Implementarea Aplicatiei Privind Simularea Comenzii la Distanta

Capitolul 1. Introducere

Capitolul 1 prezintă modul de conducere a unui sistem energetic. Se începe să se prezinte de la sistemul energetic actual și se merge până la tehnologii viitoare care asigură o mai bună fiabilitate a sistemului. În acest capitol am încercat să realizez o comparație între echipamentele actuale și echipamentele viitoare..

1.1 Sistemul energetic tradițional

Sistemul energetic actual este predominant bazat pe centrale electrice de puteri mari conectate la sistemele de transport a energiei electrice, care la rândul lor alimentează sistemele de distribuție de medie și respectiv joasă tensiune.

Sistemul de transport și distribție este condus de monopoluri naturale, sub controlul autorităților de reglementare. Pe de altă parte, sectorul de producere a energiei electrice este tot mai competitive.

Figura1.1 Fluxul de putere1

Imaginea de ansamblu de mai sus a fluxului de energie de la producător la consumator este specifică sistemului energetic traditional.

Caracteristici:

Interconexiuni limitate între granițe

Control centralizat

Tehnologie care atinge în curând un secol de existență

Centrale electrice de puteri mari

Sistemul energetic este optimizat tehnic pentru consum regional

Reglementările comerciale și legislative diferite

1.2 Sisteme energetice inteligente

Sistemele de energie electrică ale Europei au furnizat, începând cu multe decenii în urmă, și continuă să furnizeze, cu succes, legăturile de bază dintre producătorii de energie electrică și consumatori.

Arhitectura de bază a acestor sisteme s-a dezvoltat în concordanță cu tehnologiile de generare a energiei electrice, bazate predominant pe surse convenționale de energie, situate în general departe de consumatori.

Problematica energetică actuală a determinat Europa să-și schimbe treptat viziunea despre sistemele electrice actuale și să treacă la implementarea de SISTEME ELECTRICE INTELIGENTE.

SISTEMELE ENERGETICE INTELIGENTE au apărut ca și concept (în Europa) în anul 2005, prin lansarea Platformei Europene de Cercetare Tehnologică în domeniul sistemelor de energie electrică, și care își propune formularea și promovarea unei noi viziuni pentru dezvoltarea sistemelor de electricitate ale Europei până în anul 2020 și după.

Inițiativa răspunde noilor provocări și oportunități, cu beneficii pentru toți utilizatorii, investitorii și companiile care au drept scop eficientizarea energiei. Creșterea globală a cererii de energie necesită mai mult decât capacități suplimentare. Aceasta va necesita utilizarea mai eficientă și o regândire a modului în care este gestionată energia.

Managementul inteligent al energiei oferă cea mai mare oportunitate din prezent pentru eficiență energetică. De la punctul de utilizare, sistemele inteligente vor fi un factor semnificativ permițând rețelei inteligente să facă economii reale de energie în întreaga rețea.

Se impune un sistem de management al consumului care se bazează pe dezvoltarea de strategii pentru modularizarea consumului local și încorporarea unor sisteme automate de control local bazat pe măsurări electronice. Astfel de sisteme automate devin vitale companiilor de distribuție în condițiile în care puterea instalată în sursele distribuite conectate la rețea este din ce în ce mai mare.

În concordanță cu acțiunea de echilibrare a puterilor, în ultimii ani, s-a dezvoltat, conceptul de stocare a energiei,dezvoltarea surselor hidro pare a fi cea mai bună soluție de stocare.

De asemenea, se remarcă evoluțiile tehnologice în sisteme rotative inerțiale (cu o limită maximă recent anunțată de 20 MW) și sisteme de stocare a energiei în baterii, care pot furniza puteri de ordinul zecilor de MW. Dezvoltarea acestor tehnologii a fost posibilă și datorită evoluției electronicii de putere.

Carcateristicile sistemelor electrice inteligente:

consumatorii sunt parte ale “buclei rețelei”, atât producători cât și consumatori = ”prosumatori” (producători+consumatori) : informații în timpreal despre prețul energiei (contoare inteligente) ,sisteme automatizate confort,investții adecvate și recompense stimulatoarei

posibilitatea integrării a milioane de surse de producere a energiei electrice de mici dimensiuni

energia electrică furnizată în centralele de mare putere să coexiste cu cea generată în mod sustenabil, la scară mică,

găsirea de soluții pentru echilibrarea situației cerere- resurse disponibile,

rețelele electrice eficiente și fiabile,calitatea energiei electrice diferențiată la punctul de conectare,

piața energiei electrice matură, reglementată corespunzător.

1.3 Sisteme energetice în viitorul apropiat

Funcționarea sistemului se va baza atât pe surse centrale cât și distribuite de producere a energiei electrice, cu managementul sistemului complet integrat.

Figura1.2 Sistem energetic1

Caracteristici:

Calitate, siguranță, fiabilitate conform cerințelor utilizatorului, specifice erei digitale,

Sistem strategic, optimizat, flexibil,

Management al cererii de energie flexibil și servici cu valoare adăugată orientate spre client,

Management energetic coordonat local și integrarea completă a centralelor mari cu DG și RES,

Producerea distribuită a energiei cât mai aproape de consumator,

Armonizarea cadrului legislativ european astfel încât să se faciliteze comerțul și serviciile energetice trans-europene.

Lucrarea actuală își propune să realizeze comunicații între diferitele puncte ale unei stații prin comanda echipamentelor aflate în interiorul stației. Dar în același timp acest sistem ar putea fi extins prin comunicația între mai multe stații și cu consumatorul final. Comunicația se bazează pe modelul SCADA, numai că în stație comunicațiile dintre echipamentele de același tip sunt făcute prin SPI, iar rezultatele de la Master sunt preluate prin CAN și prelucrate.

Capitolul 2. Placa de dezvoltare

În acest capitol am prezentat placa de dezvoltare cu toate componentele care le-am folosit și care trebuiau configurate. O atenție deosebită a fost data comunicațiilor de pe placă care apoi o să fie configurate în următorul capitol.

2.1 Platforma modulară de dezvoltare – Tower System

Tower System de la Freescale este o platformă modulară, scalabilă și flexibilă pentru dezvoltări hardware și software pentru microcontrolere (MCU) și microprocesoare (MPU) de 8-, 16- și 32-biți. Tower System sprijină dezvoltarea rapidă de prototipuri de complexitate variată, bazate pe MCU sau MPU, de la entry-level până la nivele avansate. Costurile și timpul de dezvoltare se reduc semnificativ prin utilizarea de structuri modulare reconfigurabile. Tower System are o structură modulară, fiind alcătuit din module cu funcții alese de proiectant dintr-o colecție de module într-o continuă expansiune. Tower System oferă proiectanților de aparate și sisteme electronice din marile domenii de aplicații (industrial, medical, auto, conectivitate și consum) cea mai rapidă modalitate de a scurta timpul de trecere de la proiect verificat pe prototip la fabricație și lansarea pe piață a produsului .2

Figura 2.1 Sistemul Tower

2.2 Tower System – Caracteristicile de bază

Structură modulară, extensibilă și variată bazată pe module verificate

modulele controler bazate pe MCU și MPU din diverse serii de dispozitive Freescale asigură realizarea de structuri hardware reconfigurabile;

modulele periferice interschimbabile (seriale, memorii și display-uri LCD) pentru personalizarea aplicației.

hardware-ul cu specificații tehnice standardizate ce promovează dezvoltarea de module suplimentare prin adăugare de funcții și personalizare de către producători terți , parteneri cu Freescale.

Scade timpul de dezvoltare a produsului pentru lansarea rapidă pe piață

hardware-ul și software-ul de tip open-source permit dezvoltarea rapidă folosind module verificate.

interfața integrată permite programarea ușoară, depanarea în sistem și controlul execuției programului prin conectare pe USB la un PC.

Costul proiectării scade prin reutilizare de module periferice

modulele periferice pot fi reutilizate cu toate tipurile de module controler în alte proiecte sau pentru prototipuri

module cu tehnologii verificate, de exemplu module ce conțin display-uri LCD (segmente, matrice), interfețele seriale, WiFi®, senzorii, dispozitivele analogice și memoriile sunt disponibile în stocuri, la un cost redus;

proiectarea se ridică la un nivel superior prin accesul la produsele de vârf de la Freescale: kit-uri și module cu funcții variate, din care se pot realiza configurații Tower System.

Se oferă software verificat și sprijin tehnic

Creșterea diversității și a complexității aplicațiilor a stimulat extinderea integrării de funcții într-o singură capsulă de circuit integrat. Freescale, împreună cu o puternică rețea de parteneri oferă soluții tehnice ce sunt integrate în platforme hardware și software verificate, inclusiv instrumente de dezvoltare a programelor, depanatoare de program și software variat.

Figura 2.2 Kit Tower S12g128 (3)

Se oferă instrumente de dezvoltare software

Instrumentele includ medii integrate de dezvoltare (IDE), depanatoare, kit-uri de dezvoltare software (SDK), codul de boot, instrumente de proiectare de interfață, programe de calcul și multe altele. Se pot face diverse operații: evaluare, verificare arhitectură, scriere cod program, compilare, depanare, optimizare sau verificare de software încorporat. 

Se oferă software run-time

Freescale oferă software-ul sistemului de operare, middleware (cum ar fi codec-uri, biblioteci și stive) și aplicațiile de referință. Soluțiile prezentate de Freescale includ: – MQX™ – sistem de operare în timp real și stive software 

Procesor Expert Software și componente integrate, ce reprezintă un instrument de dezvoltare rapidă a aplicațiilor în suita de instrumente CodeWarrior- Freescale Linux® BSP

CodeWarrior Development Studio- Bibliotecă Digital Signal Processing, ce oferă algoritmi optimizați pentru arhitectura ColdFire- VortiQa software pentru crearea de rețele

2.3 Caracteristici placă de dezvoltare

Tower S12G128 este o placă de dezvoltare pentru microcontrolerul MC9S12G128 de la Freescale folosit in domeniul automotiv. Este un microcontroler pe 16 biți focusat pe un cost scăzut de producție, având o înaltă performanță cu un număr relativ mici de pini incorporați. Microcontrolerul MC9S12G128 oferă 16 biți de acces larg la porturile de comunicare, fără stări de așteptare pentru înttreaga zonă de memorie și periferice. Obiectivele MC9S12g128 sunt de obicei pentru aplicații auto(care necesită comunicații CAN sau LIN/J2602) dar se pot folosii și în alte domenii cum ar fii energetică(comanda unui întrerupător/separator).(4)

Placa este utilizată pentru a putea comunica cu Sistemul Tower de la Freescale, o platformă de dezvoltare modulară, care ajută la crearea de prototipuri și tool-uri reutilizabile care pot fi folosite în diferite domenii. Sistemul integrat este Open Source, împreună cu softwal furnizat de producător fac dezvoltarea și debug-ul aplicației ușor și rapid. Toate semnalele sunt diponibile pe ambele părți laterale ale plăcii de dezvoltare.

În figura de mai jos este prezentată placa de dezvoltare impreună cu elementele regăsite pe aceasta.

Figura 2.3 Componența plăcii de dezvoltare

Microcontrolerul MC9S12G128 cu 100 de pinii are:

128K Bytes Flash

4096 Bytes EEPROM

8192 Bytes RAM

25MHz Bus Frequency

Oscilator intern

SCI, SPI, MSCAN

Integrată Open Sources BDM(USBDM)(debbuger interface Freescale)

Alimentare in funcție de jumper

Alimentare de la USB-BDM

Alimentare de la regulator de tensiunde de pe placă

Alimentare de la conector Tower System

Periferice acționate de utilizator

4 Butoane

4 LED-uri

Potențiometru (5Kohmi)

Buton Reset

Opțiune de deconectare a jumper-ilor pentru deconectarea perifericelor

Conectori

BDM_PORT Connector for External BDM Cable

USB mini-AB Connector

2×5, 0.1” ctr, RS-232 Header

1×4, 4.2mm, Molex CAN Cable Connector

2×2, 4.2mm, Molex LIN Cable Connector

Regulator 5V

RS-232 Serial Data Physical Layer Transceiver

Figura 2.4 Schema de principiu a microcontrolerului

Schema electrică a plăcii este figurată în Anexa1. Se pot vedea că toți pinii microcontrolerului se pot accesa și modul de conectare a Led-urilor și butoanelor. Pentru o identificare ușoară a pinilor, jumperilor și elementelor de pe placa de dezvoltare este prezentată placa în figura de mai jos.

Aplicația propusă de mine conține 2 asemenea plăci care comunică între ele prin intermediul SPI. Cele 2 plăci vor fi conectate și la un calculator, astfel comanda putănd fi dată de la distanță prin intermediul calculatorului.

Figura 2.5 Identificarea pinilor, elementelor,jumper-ilor de pe placă (4)

2.4. Harta Memoriei

Tabelul de mai jos figurează harta memoriei microcontrolerului. Pentru infomații suplimentare se poate consulta Data Sheet-ului microcontrolerului.

Tabel 2.1 Harta memoriei(5)

2.5Suport pentru dezvoltare

Dezvoltarea de aplicații și debbug pentru bord-ul TWR-S12 este susținută prin modulul Open-Source Debug Context (OSBDM),adică o interfață sau un conector de interfață BDM extern. OSBDM este pe deplin susținută în CodeWarrior și oferă, acces non-intruziv direct la resursele și pinii plăcii. Cât timp suntem în modul de BDM, nu se folosesc resurse interne. Este acceptat rularea step by step dar și să punem break point.

Conexiune între un PC gazdă și dispozitivul Tower este asigurată prin intermediul unui conector mini- USB. OSBDM este capabil să furnizeze energie la placă eliminând nevoia de alimentare externă. Trebuie reținut faptul că puterea furnizată de OSBDM este limitată de specificațiile USB. Atunci când placa este alimentată prin OSBDM, consumul total de curent, trebuie să rămână mai puțin de 500mA. În caz contrar, magistrala USB va provoca PC-ului deconectarea plăcii.. În acest caz poate fi afectată funcționarea normală a plăcii dar și a PC-ului prin defectarea USB-ului folosit.

2.6 Alimentarea plăcii

Placa Tower S12 poate fi alimentată de la :

OSBDM

System Tower

LIN +V

2 intrări E1 și E2

Intrarea LIN +V accepta +12V de la magistrala LIN și utilizează un regulator pentru a genera tensiunea de operare de 5V. Intrările E1 și E2 permit conectarea unei surse de energie externe dacă se dorește. Regulatorul este utilizat pentru a se aduce tensiunea de la intrare la tensiunea dorită. Utilizarea regulatorului necesită ca tensiunea de intrare să fie cuprinsă ăntre 7 și 27V.

2.7 Selectarea alimentării.

PWR_SEL selectează alimentarea pentru placă.. Atunci când placa este alimentată de la sistemul Tower, tensiunea de ieșire OSBDM este dezactivat. În figura de mai jos se poate observa modul ăn care se selectează alimentarea sistemului.

Figura 2.6 Modul de selectare a alimentării

2.8 Buton RESET

Butonul RESET este conectat pe o intrare de Reset asincronă la microcontroler. Apăsând butonul RESET se trage la ground pinul respectiv, astfel se dă o întrerupere care generează un soft Reset. Se folosește un rezistor Pull-up. Reset-ul durează cel puțin 768 cicli de clock, indiferent dacă este dat din interior sau exterior.

Figure 2.7 Timing Reset(5)

2.9 Comunicațiile

Opțiunile de comunicații pentru TWR-S12G128 includ seriale RS-232, LIN și CAN. Seriala RS-232 de comunicare este susținută printr-un dispozitiv RS-232 de nivel fizic (PHY) și un antet 2×5 pini. O viteză mare, îmbunătățită, LIN PHY oferă comunicații de bus LIN printr-un conector Molex 2×2 (pn 39-29-1048). Un CAN PHY de mare viteză oferă comunicații de bus printr-un conector 1 x 4 Molex (pn 39-30-3045).(4)

2.9.1 SPI(Serial Peripheral Interface)

Interfața seriala SPI (Serial Peripheral Interface) este o interfața sincronă standard de mare viteză, ce operează în mod full duplex. Numele ei a fost dat de Motorola. Ea e folosită ca sistem de magistrală serială sincronă pentru transmiterea de date, unde circuitele digitale pot să fie interconectate pe principiul master-slave. Aici, modul master/slave înseamnă, că dispozitivul (circuitul) digital master inițiază cuvântul de date. Mai multe dispozitive (circuite) digitale slave sunt permise cu slave select individual, adică cu selectare individuală.

Fig 2.8 Schema de principiu a unei comunicații SPI

SPI-ul are patru semnale logice specifice.

SCLK – Ceas serial (ieșire din master)

MOSI/SIMO – Master Output, Slave Input (ieșire din master)

MISO/SOMI – Master Input, Slave Output (ieșire din slave)

SS – Slave Select (active low, ieșire din master)

Figura 2.9 SPI diagrama bloc a mC(5)

Pentru detalii despre fiecare registru folosit se poate citii Data Sheet-ului microcontrolerului.

2.9.2 CAN(Controller Area Network)

Magistrala CAN ( Controller Area Network) este o magistrala seriala utilizata în industria de automobile, cu scopul de a asigura comunicarea intre mai multe microcontrolere fără utilizarea unui calculator-gazda. Dezvoltata inițial de către firma Bosch, în anul 1983, specificația a fost lansata oficial în anul 1986 (CAN 1.2) și standardizata sub denumirea de ISO 11898. Ulterior, mai multi producători de semiconductoare (Intel, Philips, Infineon, Texas Instruments, Motorola) au implementat periferice pe baza de CAN. In septembrie 1991, Bosch lansează versiunea a 2-a a specificației (CAN 2.0).(6)

Pe lângă industria de automobile (sisteme de frânare, o gama larga de senzori, lampi de semnalizare, controlul automat al ușilor) protocolul CAN a început sa fie utilizat su succes și în alte ramuri ale electronicii industriale (echipamente medicale, războaie de țesut),inclusive energetica(DeviceNet).

Principial, diferențele dintre versiunea 1.2 și 2.0 a standardului, constau în domeniul de adresare a nodurilor, care a fost extins în noua versiune. Mai exact, CAN 1.2 definește doar un singur tip de mesaj (mesaj standard) având lungimea câmpul de identificare a nodului (Id) de 11 biți, pe când versiunea CAN 2.0 mai introduce, pe lângă tipul de mesaj definit anterior și un mesaj cu lungimea Id-ul de 29 de biți numit mesaj extins. In continuare, dacă nu se specifica altfel, se va face referire doar la noua versiune.

Figura 2.10 Diagrama bloc CAN

Un sistem tipic CAN cu MSCAN este prezentat în figura de mai jos. Fiecare stație CAN este conectat fizic la liniile de bus printr-un dispozitiv de emisie recepție. Transiverul este capabil să conducă curentul necesar magistralei CAN și are protecție împotriva defectelor stașiei sau liniei CAN.

Figura 2.11 Sistem CAN(5)

Capitolul 3. Implementarea soft

În acest capitol am prezentat modulele dezvolate de mine împreună cu părți de soft pentru o înțelegere mai bună a aplicației. S-a prezentat modulele generate la care am intervenit pentru a realiza aplicația. Am acordat o mare atenție mediului de dezvoltare dar și regiștrilor utilizați împreună cu întreruperile utilizate.

3.1 Mediul Code warior

Sistemul Tower vine și cu un editor și compilator. Fiecare model de placă are propriul său compilator. Ca și editor folosim codeWarior avănd integrat compilator pentru microcontrolerul S12G128. La creeare unui proiect trebuie specificat microcontrolerul folosit și limbajul pe care o sa-l folosim. În cazul nostru folosim C.

Împărțirea programului pe module este prezentată în figura de mai jos. Așa apare structura în CodeWarior. Se observă că apar librării specifice compilatorului la care nu am intervenit, avănd denumiri specifice. Un astfel de modul este cel cu denumirea mc9s12g128.c

Fiecare modul are fișier de tip .c și de tip .h. Modulele dezvolate de mine sunt:

CAN

Buttom

SPI

Led

Protocol

CTM

Figura x Împărțirea programului pe module- Print Screen CodeWarior

3.2 Modulul de initializare a dispozitivului

Tot în soft sunt prezentați toți regiștrii microcontrolerului. Aceștia sunt sub forma unei diagrame care se poate selecta. Se poate observa mai jos toate porturile microcontrolerului. Acesta are rol de inițializare a porturilor. Accesând un singur port avem acces la toți regiștrii portului respectiv.

Figura Modulul de inițializare

Ca și exemplu o să luăm inițializarea Timer-ului. În soft folosim un Timer de 100 mS. În continuare o să prezint 2 metode de implementare a acestui Timer. Și anume prin interfața grafică prezentată mai sus și prin implementare prin cod scris în C de developer. În principiu cele 2 metode sunt identice deoarece interfața grafică prin acționarea unui buton o să genereze tot soft scris în C. Cea de a 2 metodă este mai generală permțând programatorului o libertate de a accesa orice flag dorește. Fiecare registru se găsește în data Sheet-ul microcontrolerului, cu explicații și exemple.

Din imaginea de mai jos se observă că frecvența noastră de pe bus este de 97.65kHz, ceea ce ne duce cu gândul că pentru a obține o întrerupere la 100 mS ne trebuie ca valoarea comparată să fie de 9765 tacți. Se selectează cananul de Timer, dintr-un număr de 7 canale.

Pentru înțelegere o să luăm un registru din data sheet-ului microcontrolerului. Acesta este registrul TIE(Timer Interrupt Enable Register).

Figura Registru Timer Interrupt Enable

Se observă că este un registru pe 8 biți alcătuit dintr-un bitfield. Fiecare bitfield corespunde unui canal.

Tabel Descrierea registrului TIE

Figura Implementarea Timerului de către programator

Așa cum am spus mai sus același lucru poate fi făcut și de un programator direct din cod. În continuare o să dau secvența de program care setează manual regiștrii. Detalii despre fiecare registru se găsește ăn Data sheet-ul microcontrolerului.

### Init_TIM init code */

/* TSCR1: TEN=0 */

TSCR1 &= (unsigned char)~(unsigned char)0x80U;

/* TIE: C7I=0,C6I=0,C5I=0,C4I=0,C3I=0,C2I=0,C1I=0,C0I=0 */

TIE = 0x00U;

/* PACTL: PAEN=0,PAI=0 */

PACTL &= (unsigned char)~(unsigned char)0x41U;

/* TIOS: IOS7=0,IOS6=0,IOS5=0,IOS4=0,IOS3=0,IOS2=0,IOS1=0,IOS0=1 */

TIOS = 0x01U;

/*TC0: BIT15=0,BIT14=0,BIT13=1,BIT12=0,BIT11=0,BIT10=1,BIT9=1,BIT8=0,BIT7=0,BIT6=0,BIT5=1,BIT4=0,BIT3=0,BIT2=1,BIT1=0,BIT0=1 */

TC0 = 0x2625U;

/* OCPD: OCPD7=0,OCPD6=0,OCPD5=0,OCPD4=0,OCPD3=0,OCPD2=0,OCPD1=0,OCPD0=1 */

OCPD = 0x01U;

/* OC7M: OC7M7=0,OC7M6=0,OC7M5=0,OC7M4=0,OC7M3=0,OC7M2=0,OC7M1=0,OC7M0=1 */

OC7M = 0x01U;

/* OC7D: OC7D7=0,OC7D6=0,OC7D5=0,OC7D4=0,OC7D3=0,OC7D2=0,OC7D1=0,OC7D0=0 */

OC7D = 0x00U;

/* TTOV: TOV7=0,TOV6=0,TOV5=0,TOV4=0,TOV3=0,TOV2=0,TOV1=0,TOV0=0 */

TTOV = 0x00U;

/* TCTL1: OM7=0,OL7=0,OM6=0,OL6=0,OM5=0,OL5=0,OM4=0,OL4=0 */

TCTL1 = 0x00U;

/* TCTL2: OM3=0,OL3=0,OM2=0,OL2=0,OM1=0,OL1=0,OM0=0,OL0=0 */

TCTL2 = 0x00U;

/* TCTL3: EDG7B=0,EDG7A=0,EDG6B=0,EDG6A=0,EDG5B=0,EDG5A=0,EDG4B=0,EDG4A=0 */

TCTL3 = 0x00U;

/* TCTL4: EDG3B=0,EDG3A=0,EDG2B=0,EDG2A=0,EDG1B=0,EDG1A=0,EDG0B=0,EDG0A=0 */

TCTL4 = 0x00U;

/* TFLG1: C7F=1,C6F=1,C5F=1,C4F=1,C3F=1,C2F=1,C1F=1,C0F=1 */

TFLG1 = 0xFFU;

/* TFLG2: TOF=1 */

TFLG2 = 0x80U;

/* TIE: C7I=0,C6I=0,C5I=0,C4I=0,C3I=0,C2I=0,C1I=0,C0I=1 */

TIE = 0x01U;

/* TSCR2: TOI=0,TCRE=1,PR2=1,PR1=1,PR0=0 */

TSCR2 = 0x0EU;

/*PACNT: BIT15=0,BIT14=0,BIT13=0,BIT12=0,BIT11=0,BIT10=0,BIT9=0,BIT8=0,BIT7=0,BIT6=0,BIT5=0,BIT4=0,BIT3=0,BIT2=0,BIT1=0,BIT0=0 */

PACNT = 0x00U;

/* PTPSR: PTPS7=0,PTPS6=0,PTPS5=0,PTPS4=0,PTPS3=0,PTPS2=0,PTPS1=0,PTPS0=0 */

PTPSR = 0x00U;

/* TSCR1: TEN=1,TSWAI=0,TSFRZ=0,TFFCA=1,PRNT=0 */

TSCR1 = 0x90U;

/* PAFLG: PAOVF=1,PAIF=1 */

PAFLG = 0x03U;

/* PACTL: PAEN=0,PAMOD=0,PEDGE=0,CLK1=0,CLK0=0,PAOVI=0,PAI=0 */

PACTL = 0x00U;

Pentru a întelege și mai bine cum funcționează o întrerupere, respective un timer o să pun în continuare schema de principiu a generării unei întreruperi cauzate de Timer-ul de 100 mS.

Figura Setarea flagului de întrerupere

IOCn- Input Capture and Output Compare Channel 5-0

TCn-Timer counter- număr setat cu care se compara Timerul principal(Main Timer)

CnF Interrupt- Flag setat cînd un eveniment are loc

3.3 Modulele generate automat de CodeWarior.

Sunt module care ajută la pornirea sistemului și în caz de distrugere a microcontrolerului la intrarea acestuia într-un mod de avarie care să nu permit defectarea microcontrolerului.Modulele generate automat sunt:

MCUInit

MC9S12G128

start12

hidef.h

datapage

Un astfel de modul este și MCUinit care inițializează sistemul. Aici sunt declarate tipurile de date utilizate după cum urmează.. Am ales acest modul deoarece are cel mai mare impact asupra programatorului, aici fiind definite funcțiile întreruperilor și de asemenea tabelul de întreruperi. Ca și exemplu o să iau tot întreruperea Timer-ului.

__interrupt void Timer_100mS(void)

{

/* Write your interrupt code here … */

TFLG1_C0F=1;

TC0=TC0+9765;

}

/* end of Timer_100mS */

#pragma CODE_SEG DEFAULT

Se observă că se incrementează counterul atunci cănd se dă o întrerupere, astfel în TC să fie tot timpul noua valoare cu care se compară. De asemenea se setează flagul C0F atunci când un eveniment a avut loc.

Tabel Intreruperi folosite

Se observă mai sus tabelul de întreruperi folosite. Sunt in total 40 de întreruperi dar noi folosim 6 întreruperi pe care o să le descriu în paginile următoare. Pentru a intelege si mai bine modul cum functioneaza o intrerupere atasez mai jos o poza cu scheme de principiu. Atunci cand se trigger-uie o intrerupere se verifica daca este nemascabila pentru a se trata. Apoi se stabileste prioritatea intreruperii in cazul in care sunt 2 intreruperi se tratateaza mai intai cea cu prioriatte mai mare.

Figura

Tot in modulul generat automat sunt predefinite si tipurile de date utilizate. O parte dintre acestea sunt evidentiate mai jos. In continuare am incercat sa folosesc aceleasi denumiri pentru tipurile de date utilizate.

#ifndef NULL_VAR

#define NULL_VAR 0

#endif

typedef unsigned char bool;

typedef signed char sint8;

typedef unsigned char uint8;

typedef signed int sint16;

typedef unsigned int uint16;

typedef signed long sint32;

typedef unsigned long uint32;

/******************************************************************************

* Important definitions for common use

*******************************************************************************/

#ifndef TRUE

#define TRUE 1 /* boolean true */

#endif

#ifndef FALSE

#define FALSE 0 /* boolean false */

#endif

#ifndef OK

#define OK 0 /* 'ok' return value */

#endif

#ifndef FAILURE

#ifndef ERROR

#define ERROR 1 /* 'error' return value */

#endif

3.4. Module dezvoltate

Modulele dezvolate de către mine sunt următoarele:

3.4.1 Modulul LED.c

In acest modul am configurat porturile pe care se afla Led-urile si anume pe portul T, bitii 4,5,6,7. Ceilalti 4 biti sunt neutilizati. Un LED este o sursă de lumină mică, de cele mai multe ori însoțită de un circuit electric ce permite modularea formei radiației luminoase. De cele mai multe ori acestea sunt utilizate ca indicatori în cadrul dispozitivelor electronice, dar din ce în ce mai mult au început să fie utilizate în aplicații de putere ca surse de iluminare. Culoarea luminii emise depinde de compoziția și de starea materialului semiconductor folosit, și poate fi în spectrul infraroșu, vizibil sau ultraviolet. Pe lângă iluminare, LED-urile sunt folosite din ce în ce mai des într-o serie mare de dispozitive electronice.

Tot in acest modul am implementat functii prin care aprind LED-urile, le sting si de asemenea fac ca acestea sa palpaie. Ledurile semnifica un intrerupator inchis atunci cand acestea sunt aprinse si un intrerupator deschis atunci cand acestea sunt stinse. Palpairea ledurilor semnifica o eroare aparuta in circuitul de comanda al intrerupatorului.

Functiile folosite in acest mosul sunt;

void init_PortT_Led(void);

void LED1(bool status);

void LED2(bool status);

void LED3(bool status);

void LED4(bool status);

void TogglingLED4(void);

void TogglingLED3(void);

void TogglingLED2(void);

void TogglingLED1(void);

void TogglingLED4_Timer(void);

void TogglingLED3_Timer(void);

void TogglingLED2_Timer(void);

void TogglingLED1_Timer(void);

Pentru accesarea fiecarui LED in parte am utilizat niste masti predefinite care sunt gasite in modulele generate automat de soft. Acestea sunt

#define maskLED1 PTT_PTT4_MASK //16u = 2^4

#define maskLED2 PTT_PTT5_MASK //32u =2^5

#define maskLED3 PTT_PTT6_MASK //64u =2^6

#define maskLED4 PTT_PTT7_MASK //128u =2^7

In functie de valoare putem accesa al n bit al byt-ului.

Cea mai importanta functie este aceea de initializare, fara aceasta nu am putea aprinde Led-urile. De fapt aici se initializeaza portul T, portul pe care sunt montate Led-urile. Mai jos prezint functia de initializare.

void init_PortT_Led(void) {

/* ### Init_GPIO init code */

/* PTT: PTT7=1,PTT6=1,PTT5=1,PTT4=1 */

PTT |= (unsigned char)0xF0U;

/* PPST: PPST7=1,PPST6=1,PPST5=1,PPST4=1 */

PPST |= (unsigned char)0xF0U;

/* PERT: PERT7=1,PERT6=1,PERT5=1,PERT4=1 */

PERT |= (unsigned char)0xF0U;

/* DDRT: DDRT7=1,DDRT6=1,DDRT5=1,DDRT4=1 */

DDRT |= (unsigned char)0xF0U;

flag_TogglingLED1=FALSE;

flag_TogglingLED2=FALSE;

flag_TogglingLED3=FALSE;

flag_TogglingLED4=FALSE;

/*Flag-urile de mai jos seteaza ca LED-urile la pornire sa fie stinse*/

Status[0]=LED_OFF;

Status[1]=LED_OFF;

Status[2]=LED_OFF;

Status[3]=LED_OFF;

}

Functia de mai jos aprinde, respectiv stinge Led-ul in functie de valoarea logica data variabilei status_LED. Pentru aprinderea LED-ului se apeleaza cu TRUE, respective stingerea LED-ului cu FALSE.

void LED1(bool status_LED) {

if (status_LED==FALSE) {

/*Se seteaza bitul corespunzator pe 1*/

PTT=PTT |maskLED1;

Status[0]=LED_ON;

}

else{

/*Se seteaza bitul corespunzator pe 0*/

PTT=PTT & ~ maskLED1;

Status[0]=LED_OFF;

}

flag_TogglingLED1=FALSE;

}

Trebuie precizat faptul ca ledurile sunt aprinse atunci cand bitul corespunzator lor este setat pe 1.

O alta functie este aceea prin care se face Toggle pe LED. De exemplu la apasarea unui buton acesta sa-si schimbe starea. Daca e aprins sa se stinga si invers. In secventa de mai jos am incercat sa realizez acest lucru. Pentru acesta am folosit un XOR.

void TogglingLED4(void){

PTT=PTT ^ maskLED4;

flag_TogglingLED4=FALSE;

}

3.4.2 Modul Button

Modulul are ca scop citirea butoanelor fizice si tratarea intreruperilor venite de la acestea. Fiecare buton este tratat individual si nu are legatura cu ledul corespunzator lui. Legarea butoanelor de Led-uri se face soft deci orice buton poate comanda orice led sau chiar mai multe Led-uri. In programul de fata fiecare buton comanda doar un singur led. In imaginea de mai jos se poate observa legarea butoanelor si led-urilor de porturile AD si T.

Butoanele sunt amplasate pe portul T dupa cum se observa in schema hardware de mai jos.

Figura x Modul de conectare butoane si Led-uri

Functiile implementate in acest modul sunt:

#define Buton_4_MASK PIF1AD_PIF1AD7_MASK

#define Buton_3_MASK PIF1AD_PIF1AD6_MASK

#define Buton_2_MASK PIF1AD_PIF1AD5_MASK

#define Buton_1_MASK PIF1AD_PIF1AD4_MASK

extern void init_portAD_Button(void);

/*Activeaza buton*/

void Deactivation_Button1(void);

void Deactivation_Button2(void);

void Deactivation_Button3(void) ;

void Deactivation_Button4(void) ;

/*Dezactiveaza buton*/

void Activation_Button1(void);

void Activation_Button2(void);

void Activation_Button3(void);

void Activation_Button4(void);

extern void Read_Led(void);

#pragma CODE_SEG __NEAR_SEG NON_BANKED

extern __interrupt void isrVportButton(void);

#pragma CODE_SEG DEFAULT

Functia de mai jos prezinta initializarea Butoanelor respective a Butoanelor. Directia portului este Input. Bitii corespunzatori, dupa cum se vede si in imaginea de mai sus sunt 4,5,6,7.

void init_portAD_Button(void){

/* ### Init_GPIO init code */

/* Disable interrupts */

/* PIE1AD: PIE1AD7=0,PIE1AD6=0,PIE1AD5=0,PIE1AD4=0,PIE1AD3=0,PIE1AD2=0,PIE1AD1=0,PIE1 AD0=0 */

PIE1AD = 0x00U;

/* Clear interrupt flags */

/* PIF1AD: PIF1AD7=1, PIF1AD6=1,PIF1AD5=1, PIF1AD4=1,PIF1AD3=1,PIF1AD2=1, PIF1AD1=1,PIF1AD0=1 */

PIF1AD = 0xFFU;

/* PPS1AD: PPS1AD7=0,PPS1AD6=0,PPS1AD5=0,PPS1AD4=0 */

PPS1AD &= (unsigned char)~(unsigned char)0xF0U;

/* PER1AD: PER1AD7=1,PER1AD6=1,PER1AD5=1,PER1AD4=1 */

PER1AD |= (unsigned char)0xF0U;

/* DDR1AD: DDR1AD7=0,DDR1AD6=0,DDR1AD5=0,DDR1AD4=0 */

DDR1AD &= (unsigned char)~(unsigned char)0xF0U;

/* PIE1AD: PIE1AD7=1,PIE1AD6=1, PIE1AD5=1,PIE1AD4=1,PIE1AD3=0,PIE1AD2=0, PIE1AD1=0,PIE1AD0=0 */

PIE1AD = 0xF0U;

}

Functia de intrerupere este prezentata mai jos. Trateaza intreruperile pe fiecare buton. Programul stie butonul ce este apasat prin compararea cu o masca. In functie daca led-ul este aprins sau stins acesta isi schimba starea. Butonul se considera apasat atunci cand valoarea bitul corespunzator este 0 logic. Tot in aceasta functie se seteaza si starea led-ului pein vectorul Status[].

#pragma CODE_SEG __NEAR_SEG NON_BANKED

__interrupt void isrVportButton(void)

{ // TogglingLED4();

/* Write your interrupt code here … */

if ((uint8)(PT1AD & Buton_4_MASK) == (uint8)0) {

TogglingLED4();

if ((uint8)(PTT & maskLED4) == (uint8)0) {

Status[3] = LED_ON ;

}else{

Status[3] = LED_OFF ;

}

}

Deoarece pentru cele 4 butoane codul este identic ca si exemplu am pus doar pentru butonul 4 corespunzator led-ului 4.

3.4.3 Modulul CAN

Modulul CAN configureaza canalul de CAN si ajuta la trimiterea si receptionarea mesajelor. Este unul dintyre cele mai importante module deoarece realizeaza comunicatia intre placa si calculator. Din mesajul de CAN doar primi 4 bytes sunt flositi, ceilalti fiind setati default 0XFF.

Functiile din acest modul sunt:

uint8 send_CAN_msg(void) ;

void init_CAN(void);

#pragma CODE_SEG __NEAR_SEG NON_BANKED

__interrupt void rec_can(void);

#pragma CODE_SEG DEFAULT

#pragma CODE_SEG __NEAR_SEG NON_BANKED

__interrupt void can_err(void);

#pragma CODE_SEG DEFAULT

:

Functia de initializare a canalului de CAN este prezentata mai jos

void init_CAN(void){

CANCTL0_INITRQ=1; /*request initialization mode*/

while(!CANCTL1_INITAK); /*wait for init acknowledge*/

if(CANCTL1_INITAK==1)

{

CANCTL0_WUPE=1; /*wake-up enable, the MSCAN is able to restart*/

CANCTL0_SLPRQ=0; /*running, the MSCAN function normally*/

CANCTL1_CANE=1; /*MASCAN module is enabled*/

CANCTL1_CLKSRC=1; /*bus clk*/

CANCTL1_LISTEN=0; /*normal operation*/

CANCTL1_WUPM=0; /*MSCAN wakes up on any dominant level on the CAN bus*/

CANBTR0=0x41; /*2Tq cycles, prescaler=1*/

CANBTR1=0x32; /*one sample per bit, Tseg1=1Tq cycles; Tseg2=2Tq cycles*/

CANRIER_RXFIE=1;

CANRIER_OVRIE=1;

}

}

Codul aferent intreruperii de CAN este scris mai jos. Valorile receptionate sunt memorate in vectorul RValue_CAN[];

#pragma CODE_SEG __NEAR_SEG NON_BANKED

//receive data CAN

__interrupt void rec_can(void){

uint16 ID=0;

uint16 aux=0;

if (CANRFLG_RXF) /*an receive interrupt*/

{

/* disabled interrupts */

CANRIER_RXFIE=0;

CANRIER_OVRIE=0;

if ((CANRXDLR & 0X0F )==8) {

/*create ID*/

ID=(uint16)CANRXIDR0;

ID=ID<<3;

aux=(uint16)CANRXIDR1>>5;

ID+=aux;

RValue_CAN[0] = CANRXDS

RValue_CAN[1] = CANRXDSR1;

RValue_CAN[2] = CANRXDSR2;

RValue_CAN[3] = CANRXDSR3;

RValue_CAN[4] = CANRXDSR4;

RValue_CAN[5] = CANRXDSR5;

RValue_CAN[6] = CANRXDSR6;

RValue_CAN[7] = CANRXDSR7;

}

/*clear flag receive flag*/

CANRFLG_RXF=1;

/* enable interrupts */

CANRIER_RXFIE=1;

CANRIER_OVRIE=1;

}

}

3.4.4 Modulul Protocol

In acest modul este implementat prototcolul prin care cele 2 placi impreuna cu calculatorul comunica. Lungimea mesajul atat prin SPI cat si prin CAN este alcatuit din 8 bytes.

Ordinea folosirii bytes este:

Byte 0- LED1 + Buton1

Byte 1 – LED2 + Buton 2

Byte 2 –LED3 + Buton3

Byte 3 – LED 4 + Buton 4

Byte 4 – CheckSum

Byte 5 –nefolosit

Byte 6 -nefolosit

Byte 7 –nefolosit

Funcțiile din acest modul sunt:

void Receive_status(void);

void Sent_Status (void);

Pentru sincronizarea plăcilor cu calculatorul am folosit mai multe stări. Acestea sunt declarate prin intermediul unor macrouri:

#define LED_OFF (uint8) 1 //LED stins

#define LED_ON (uint8) 2 //LED aprins

#define TogglingLED (uint8) 3 //LED palpaie la 0.5 secunde

#define Deactivation_Button (uint8) 4 // dezactivare buton

#define Activation_Button (uint8) 5// activare buton

#define Err_MSG (uint8) 6 //eroare

Codul corespunzător fiecărui buton este identic. Diferența este făcută de numărul elementului din vector care corespunde fiecărui buton. Valoarea RValue corespunzător LED-ului 1 este preluată din mesajul de CAN.

switch (RValue_CAN[0]) {

case LED_ON: LED1 (TRUE);

break;

case LED_OFF: LED1 (FALSE);

break;

case TogglingLED: flag_TogglingLED1=TRUE;

break;

case Deactivation_Button: Deactivation_Button1();

break;

case Activation_Button: Activation_Button1();

break;

default: {

flag_TogglingLED1=TRUE;

flag_TogglingLED2=TRUE;

flag_TogglingLED3=TRUE;

flag_TogglingLED4=TRUE;

Status[0]=Err_MSG ;

PTT=0;

}

}

3.4.5 SPI – Serial Peripheral Interface

Acest modul tratează problematica conectării a două plăci dar și modul de comunicație al acestora. Astfel dintre plăci este configurată ca Slave iar cealaltă ca Master. O placă slave nu poate iniția comunicația. Dar datorită modului de CTM acestea comunică la interval de 100mS atunci când Master îi cere starea plăcii configurate ca Slave.

Funcțiile folosite în acest modul sunt:

void init_SPI(void); //initializeaza portul SPI

void SPI0_send_8Bytes (unsigned char buffer[8]); //transmite 8 Bytes

__interrupt void SPI0(void) ; // funcția de recepționare

Figura Diagrama bloc a 2 plăci care comunică prin SPI

Diagrama de mai sus arată modul de conectare al celor 2 plăci. Trebuie reținut faptul că la o comunicare SPI poate fi o singură placă Master și una sau mai multe plăci Slave.În cazul nostru cu 2 plăci conectate pinul SS(Slave select) de la Slave este conectat la masa deoarece vrem ca tot timpul placa să fie conectată. Dacă ar fi mai multe plăci Slave, pinul SS ar fi conectat la pinul corespunzător SS de la placa Master. În acest caz placa Master ar avea mai mulți pin SS.

Codul de mai jos prezintă configurația necesară plăcii Slave. Astfel este activat portul și întreruperile de SPI pe pinii respective.

void init_SPI(void){

SPI0CR1_SPIE = 0; //SPI interrupts disable.

SPI0CR1_SPE = 1; //SPI enabled, port pins are dedicated to SPI functions.

SPI0CR1_SPTIE = 0; //SPTEF interrupt enabled

SPI0CR1_MSTR=0; //SPI is in slave mode.

SPI0CR2_MODFEN=0; //SS port pin is not used by the SPI.

SPI0CR2_XFRW=0; //8-bit Transfer Width

SPI0BR=0x20;

SPI0CR2_BIDIROE=1;

}

Funcțiile de mai jos transmit 8 byte prin SPI.

void transmitter_SPI(unsigned char send_value){

while (SPI0SR_SPTEF==0); //asteapta pana cand se trimite byte

if (1==SPI0SR_SPTEF ) { // daca registrul de date este gol

SPI_Counter=8;

SPI0DR=send_value; //SPI registru de date

}

}

void SPI0_send_8Bytes (unsigned char *buffer) {

uint8 i;

for (i=0; i<8;i++) {

transmitter_SPI(buffer[0]);

}

SPI0CR1_SPTIE=1; //SPTEF activează întreruperile

SPI0CR1_SPIE = 1; //SPI flag întrerupere

}

3.4.6 Modul CTM (Control task manager)

Modul are ca implementat 2 task-uri:

Task 1S

Task 500mS

Task-urile sunt create cu ajutorului Timer-ului de 100mS. Deoarece acesta era foarte rapid am creat 2 task-uri prin care citesc butoanele și command Led-urile. Task-ul de 1S este folosit atunci când dorim ca LED-urile să lumineze intermitent.

/*****Task 500 mS********/

if (flag_500mS==5) {// flag-ul se reseteaza cand se ajunge la 500mS

flag_500mS=1;

Task_500mS(); // se apeleaza functia

} else{

flag_500mS++;

}

/**** Task 1 S *****/

if (flag_1S==10) {

flag_1S=1;

Task_1S();

} else{

flag_1S++;

}

Capitolul 4. Aplicație-Simulare comandă la distanță

În acest capitol am prezentat interfața grafică și aplicabilitatea comunicațiilor realizată de către mine. Am încercat să prezint cu foarte multe imagini pentu o înțelegere mai bună și am explicat rolul butoanelor în interfață.

4.1 Montaj în ansamblu

Pentru a simula o comandă la distanță avem nevoie de:

Sistemul Tower alcătuit din 2 plăci de dezvoltare s12g128

Figura Sistem Tower

Aparat CANalyzer de la Vector

Fir de alimentare placă de la sursă sau USB calculator

Fir de conectare placă cu CANalyzer prin CAN

Calculator PC

Cablu conectare CANalyzer PC prin USB

Sistemul montat este figurat în imaginea de mai jos. Comunicația dintre cele 2 plăci este realizată prin SPI iar comunicația dintre PC și placă se realizează prin comunicație CAN(DeviceNet). Nu se realizează comunicație CAN și între plăci deoarece este scumpă de implementat dar este foarte sigură. La un million de mesaje acesta pierde un singur mesaj(statistic).

Figura întregului sistem

Se poate observa în figură LED-urile care pot simula un întreruptor. Astfel dacă LED-urile sunt aprinse întreruptorul este închis iar dacă LED-ul este stins întreruptorul este deschis. La fel poate fi simulat și un separator electric sau orice contact din sistemul energetic. Butoanele de pe placă simulează comanda locală a echipamentelor. Astfel dacă se observă o eoarere în sistem aceasta este semnalată operatorului uman prin aprinderea și stingerea LED-ului la un interval de 0.5S.

Diagnoza echipamentelor se poate face prin CAN astfel că se dau comenzi de la PC și apoi se citește statusul acestora. În cazul unor defecte este scos din uz doar celula respective, celelalte LED-uri nefiind afectate.

4.2 Interfața cu utilizatorul

Pentru a putea comanda echipamentele de la distanță prin intermediul unui calculator am realizat o interfață grafică prin care pot să comand un echipament. Am luat ca și caz particular comanda a 4 întreruptoare.

Figura Interfața cu utilizatorul

În imaginea de mai sus se poate observa 4 butoane. Acestea sunt folosite pentru a simula comanda de închidere respectiv de deschidere a unui întreruptor. Sub aceste butoane sunt 4 ckeck Boxuri prin care blochez accesul la un întreruptor. Astfel dacă aceste check box-uri sunt bifate atunci comanda pe întreruptorul respective este blocată. El păstrându-și starea anterioară.

Se poate vedea că în control Panel-ul de mai sus apare și un display. Acel display simulează energia tranzitată prin stație. Acest display este legat de potențiometrul de pe placă, astfel că la învărtirea acestuia valoarea de pe display se modifică. Astfel se măsoară puterea aparentă.

Cu ajutorul ferestei Status Echipamente se poate observa statusul fiecărui echipament și istoricul acestuia. Din acesată fereastră se poate genera și un LogFile în care se poate vedea când a fost deschis sau închis un întreruptor . Această caracteristică nu a fost implementată în această lucrare, dar pe viitor poate fi implementat împreună cu alte butoane. În imaginea de mai jos se poate vedea comenzile date.

Figura Interfața cu Status echipamente întreruptor

Comenzile date mai sus au fost la LED3(întreruptor 3) și LED4(întreruptor 4). Ele au fost închise și s-au dat comandă de deschidere. Nu se poate identifica dacă comenzile s-au dat local sau global

În partea de jos a contrl Panel-ului se poate observa butonul Eroare. Acesta simulează o eroare, astfel dacă este apăsat toate LED-urile se aprind și se sting la un interval de 0.5S.

4.2.1CANalyzer-Interfața

Întreaga interfață este realizată în CANalyzer. Este un soft livrat de Vector care operează cu mesaje CAN. Este un soft care oferă o gamă largă, inclusive de creare a unei interfețe dar singurul dezavantaj este acela că nu generează un fișier executabil. Astfel dacă vreau să deschid interfața trebuie ca softul CANalyzer să fie instalat pe PC respective.

În imaginea de mai jos este figurat o configurație de CAN. Pentru noi este interesant P denumit Program Node. Acest Program Node este un script care tratează toate mesajele venite pe CAN. Avem nevoie doar de un canal de aceea folosim Chanel 1. Mesajele sunt filtrate și în funcție de valoarea pe care o au se realizează o anumită acțiune. Program Node face legătura între mesaje venite pe CAN și Control Panel pe care sunt figurate butoanele. Deoarece logica folosită în DeviceNet este identică cu cea folosită în CANalyzer am folosit cel din urmă protocol deoarece am avut acces și la echipamentele necesare.

Figura Configutație CAN

Se observă că mesajele care sunt trimise de la placă sunt prelucrate și apoi se trimit din nou la Sistemul Tower pentru a lua o decizie. Dintre cele 2 plăci doar una este conectată la CAN și anume placa care este Master în comunicația SPI. Pot fi de asemenea urmărite toate mesajele cu ajutorul ferestrei Trace.

4.3 Comanda unui întreruptor

De ce le mai multe ori stațiile electrice pot fi comandate local sau la distanță. Local pot fi comandate de un operator uman, chiar de lăngă echipamanet, iar de la distanță de la un PC aflat oriunde are acces în rețeaua internă de comandă. În imaginea de mai jos simulez comanda unui întreruptor.

Figura Placa de dezvoltare cu LED-urile 4 și 2 aprinse.

Led-urile aprinse semnifică întreruptorul I2 și I4 închise. Comanda a fost dată local de această dată. Orice modificare a starilor LED-urilor este semnalizată în interfată. Comanda de asemenea potea fi dată de la calculator. Timpul de reacție al placî este cam de 500 mS deoarece totate comenzile sunt tratate în task-ul de 500 mS.

În interfața grafică se arată doar statusul evenimentelor, nu se afișează locul de unde a fost dată comanda locală sau de la distanță.

Figura Interfața grafică

În imaginea de mai sus se poate observa că întreruptoarele 1 și 3 sunt blocate. Orice comandă dată locală sau de la distanță nu se ia în seamă. În acest caz status echipament nu înregistrează nici un eveniment la întreruptoarele care sunt blocate. Celelalte echipamente funcționează normal.

4.4 LCD control

În imaginea de mai jos este prezentat LCD care este luat din control Panel. Are o singură cifră după virgulă și funcționează până la 999.9. Este strâns legat de potentiometru. Ca și aplicație practică acesta măsoară puterea tranzitată pein stație.. Potențiometrul este pus pe o intrare analogică care poate lua valori între 0 și 65532.

Figura Potențiometru și LCD Control

5.Concluzii

În zilele noastre fiabilitatea unui sistem este foarte importantă. De aceea trebuie dezvoltate sisteme care să le comande de la distanță și care să fie disponibile non-stop. Deși sistemulTower folosit de mine a fost folosit în industria automotiv acesta poate fi implementat și în energetică la supravegherea și comanda echipamentelor.

Protocolul de comunicație folosit ajută la standardizarea comunicațiilor astfel la orice moment dat poate fi introdus câte un dispozitiv nou cu foarte mare ușurință. Pot fi introduse un număr extrem de mare de dispozitive deoarece pentru fiecare mesaj CAN pot fi comandate 8 echipamente. Dacă ID de CAN este pe 2 Bytes pot fi astfel introduse 8*65536 dispozitive.

Bibliografie

ANEXE

ANEXE

Similar Posts

  • Posibilitati de Sprijinire Comunitara a Copiilor Ramasi Fara Parinti

    Cuprins: Introducere Capitolul I Abordarea problemei de investigație în literatura de specialitate Fenomenul migrației părinților: delimitări conceptuale, cauze, efecte Impactul migrației părinților asupra adolescenților Posibilități de sprijinire comunitară a copiilor rămași fără îngrijirea părintească Capitolul II Situația copiilor din familiile afectate de migrația părinților 2.1 Identificarea impactului migrației asupra relației părinți-copii. (Experimentul de constatare 2.2…

  • Napoleon Bonaparte

    Napoleon Bonaparte 2. Polonia în date 3. Polonia si UE Polonia este membra a urmatoarelor organisme si organizatii internationale si regionale: ONU si institutiile afiliate acesteia, OMC, NATO (din 1999), Consiliul Europei, UE (1 mai 2004), FMI, Banca Mondiala, OSCE, OCDE, BIE, BERD, Grupul de la Visegrad. Odată cu aderarea la UE, Polonia a oferit posibilitatea…

  • Industria Tigarilor

    ACADEMIA DE STUDII ECONOMICE DIN BUCUREȘTI DEPARTAMENTUL PENTRU PREGĂTIREA PERSONALULUI DIDACTIC LUCRARE DE LICENȚĂ 2015 ACADEMIA DE STUDII ECONOMICE DIN BUCUREȘTI DEPARTAMENTUL PENTRU PREGĂTIREA PERSONALULUI DIDACTIC Kundenbindungsprogramme bei Philip Morris CUPRINS INTRODUCERE 1. CARACTERISTICI GENERALE DE MARKETING IN CEEA CE PRIVESTE INDUSTRIA TIGARILOR 1.1.Instrumente de Marketing clasice FACTORI CARE INFLUENȚEAZĂ STRATEGIA DE DISTRIBUȚIE Factori legați…

  • Incalzirea Globala

    . PARTEA I – ASPECTE FUNDAMENTALE Introducere De-a lungul istoriei sale, Pământul s-a încălzit și s-a răcit în timp. Clima s-a schimbat când planeta a primit mai multă sau mai puțină lumină de la Soare, din cauza schimbariii subtile a orbitei sale, calitatea atmosferei sau a suprafaței terestre au fost modificate, sau atunci când energia…

  • Directii Strategice de Dezvoltare a Turismului Rural Carasan

    CUPRINS INTRODUCERE Dacă definiția clasică a turismului îl prezintă ca o “activitate cu caracter recreativ și/sau sportiv constând în parcurgerea pe jos sau cu diferite mijloace de transport a unor regiuni pitorești sau interesante dintr-un anumit punct de vedere”, turismul rural este, deci, turismul practicat în mediul rural rezultând din serviciile prestate clienților în vederea…

  • Prezentarea Comparativa a Metodelor de Consolidare

    INTRODUCERE Geneza ansamblurilor de societăți este legată de strategia de dezvoltare a entităților, acestea încercând în permanență reducerea gradului de vulnerabilitate la care sunt supuse și căutând să maximizeze nivelul performanțelor, manifestându-se o tendință generală de concentrare a mai multor societăți într-un ansamblu. Aceste concentrări pot avea loc prin dezvoltarea internă a entității sau cu…