Aplicatia 2 - Programarea aplicatiilor SCADA


Obiective Prezentare teoretica

  • Utilizarea instructiunilor decizionale

        Instructiunea if se foloseste pentru a selecta executia unei instructiuni (sau a unui grup de instructiuni) functie de valoarea logica a unei expresii relationale

        Formatul instructiunii:
        Instructiunea if are urmatoarele formate:

        If expresie relationala THEN
          instructiune(instructiuni);
        END


        sau

        If expresie relationala THEN
          instructiune(instructiuni);
        ELSE
          instructiune(instructiuni);
        END


  • Utilizarea functiilor

        Formatul pentru definirea unei functii fara parametri si fara returnare de valori:
        Pentru definirea unei astfel de functii se foloseste urmatorul format:

        FUNCTION nume_functie()
          declaratii;
          .
          .
          .
          declaratii;
        END


        Formatul pentru definirea unei functii cu parametri si fara returnare de valori:
        Pentru definirea unei astfel de functii se foloseste urmatorul format:

        FUNCTION nume_functie(Argumente)
          declaratii;
          .
          .
          .
          declaratii;
        END


        Formatul pentru definirea unei functii cu parametri si cu returnare de valori:
        Pentru definirea unei astfel de functii se foloseste urmatorul format:

        Tip valoare returnata FUNCTION nume_functie(Argumente)
          declaratii;
          .
          .
          .
          declaratii;
          RETURN valoare
        END


  • Utilizarea instructiunilor repetitive

        Instructiunea for Se foloseste pentru a executa repetitiv o instructiune sau o secventa de instructiuni. De obicei implementeaza structura ciclica cu numar cunoscut de pasi.

        Formatul instructiunii:
        Instructiunea for are urmatorul format:

        FOR Variabila=expresie1 TO expresie2 DO
          instructiune(instructiuni;)
        END

          Unde expresie1 este valoarea de start a variabilei iar expresie2 este valoarea de stop a variabilei.

    Tematica de laborator

        1. Utilizarea instructiunilor de atribuire si a instructiunilor decizionale

        Utilizand elementele de programare, realizati o noua pagina grafica avand numele "labs2_01" similara cu pagina grafica de jos.

        Dupa actionarea unuia din butoanele "Pornit/Oprit" sau a butonului "Start" pagina grafica trebuie sa fie similara cu:



        Realizati noi pagini grafice care sa contina diverse scheme cu comutatoare si in care sa utilizati functiile logice.     Realizati o aplicatie SCADA avand numele "labs2_05" care controleaza punerea la masa a unei linii electrice:


         -Se vor implementa urmatoarele reguli:     Realizati o aplicatie SCADA avand numele "labs2_02" care sa imite functionarea unui semafor:



        Realizati o aplicatie SCADA avand numele "labs2_03" care sa comute 3 linii monofilare la interval de 1 secunda si sa deconecteze cele trei linii in ordinea inversa tot la interval de 1 s folosind functia sleep():



         - Reluati aplicatia si creati o noua aplicatie avand numele "labs2_04" in care nu veti mai folosi functia sleep()
         - Introduceti modul de lucru Automat/Manual.
         - Butoanele ON respectiv OFF vor fi active numai pe modul automat. La apasarea butonului ON, vor fi cuplate la interval de 1 s cele 3 linii, iar la apasarea butonului Off, vor fi deconectate cele trei linii in ordine inversa pornirii.
         - Pe modul manual, pornirea respectiv oprirea se va putea face prin actionarea directa a intreruptoarelor respectiv a separatoarelor. Atentie separatoarele nu pot fi actionate in sarcina!

        2. Utilizarea instructiunilor repetitive

        Utilizand instructiuni repetitive, se va realiza o noua pagina grafica avand numele "labs2_15".
        Sa presupunem ca avem 10 valori diferite si 10 LED-uri corespunzatoare acestor valori.
        Realizati o noua pagina grafica avand numele "labs2_15" care aprinde sau stinge LED-urile in ordinea valorilor corespunzatoare LED-urilor.
        Valorile vor fi generate aleator la apasarea butonului "Init", de asemenea se vor plasa controale de tip Genie -> controls -> Ramp_UpDown_btn1 care vor permite modificarea valorilor generate in cazul in care se doreste.
        La apasarea butonului On, se vor aprinde led-urile in ordinea valorilor
        La apasarea butonului Off, se vor stinge led-urile in ordinea inversa a valorilor



        Avem nevoie de urmatoarele tag-uri:
    Tag-uri aferente
    Nume Tip Array Size Um Comentariu
    ld DIGITAL 11 - Ledurille ld[1]...ld[10]
    val_l INT 11 - Valori prag pentru comanda led-urilor


        Utilizand instructiuni repetitive, realizati o noua pagina grafica avand numele "labs2_16" care afiseaza o histograma si aprinde LED-urile corespunzatoare valorilor care au depasit un anumit prag pe care utilizatorul il poate seta similar cu imaginea de jos:


        Utilizand instructiuni repetitive, realizati urmaoarele pagini grafice:
    1.     Folosind 10 LED-uri realizati o aplicatie care aprinde pe rand led-urile pare dupa care led-urile impare la apasarea butonului "Start"
    2.     Adaugati la aplicatia anterioara un buton "Stop" care stinge pe rand led-urile impare dupa care led-urile pare.
    3.     Folosind 10 LED-uri realizati o aplicatie avand numele "labs2_11" care simuleaza deplasarea dreapta la apasarea butonului Start similar cu imaginea de jos:

    4.     Folosind 10 LED-uri realizati o noua pagina grafica avand numele "labs2_12" care simuleaza deplasarea dreapta sau stanga la apasarea butonului Stanga respectiv Dreapta similar cu imaginea de jos:

    5.     Modificati aplicatia anterioara si realizati o noua pagina grafica avand numele "labs2_13" astfel incat deplasarea sa fie continua, stanga sau dreapta
    6.     Folosind 10 LED-uri realizati o noua pagina grafica avand numele "labs2_14" unde afisati grafic sub forma de VU-metru valoarea tensiunii (0-250 V) generata aleator la interval de 1 s similar cu imaginea de jos:

    7.     Folosind 4 recipiente realizati o noua pagina grafica avand numele "labs2_17", in care deplasati pe rand recipientele



      Cerinte de rezolvat
      • Crearea unui nou proiect "Labs"
      • Realizarea paginii grafice "labs2_01"
      • Implementarea si verificarea functionalitatii pagini grafice "labs2_01"
      • Realizarea paginii grafice "labs2_02"
      • Implementarea si verificarea functionalitatii pagini grafice "labs2_02"


      Derularea activitatilor
      • Se creaza nou proiect "Labs"
      • Daca nu se reuseste crearea unui nou proiect valid, se poate utiliza proiectul "Sch_el_start" proiect in care au fost parcursi toti pasii pentru crearea unui nou proiect.
            Proiectul se poate descarca de pe www.science.upm.ro/~traian
            Dupa ce s-a download-at acest fisier, din Citect Explorer->Restore se incarca acest proiect si i se atribuie numele "Labs" .
      • Se realizeaza pagina grafica "labs2_01"
      • Se introduc elementele de functionalitate
      • Se realizeaza pagina grafica "labs2_02" in care se vor introduce si elemente de conditionalitate intre separatoare si intreruptoare
      • Se realizeaza functia leduri1_on() pentru butonul ON
      • Se realizeaza functia leduri1_ff() pentru butonul OFF
      • Se realizeaza functia init1_on() pentru butonul INIT
      • Se introduc elementele de functionalitate


      Prezentarea rezultatelor
        Punctarea activitatilor (total 6 puncte)
        Nr Denumire activitate Punctaj
        1 Se verifica aspectul grafic al pagini grafice "labs2_01"
        1
        2 Se verifica functionalitatea pagini grafice "labs2_01"
        1
        3 Se verifica aspectul grafic al pagini grafice "labs2_02"
        2
        4 Se verifica functionalitatea pagini grafice "labs2_02"
        2


      Aplicatii suplimentare
      • Realizati aplicatii pentru conexiuni ale centralelor electrice in care sa utilizatie elemente de programare

          Exemple de scheme de conexiuni ale centralelor electrice: