SCADA TIA Portal - Conectivitate
  • Obiective
  • Organizarea sarcinilor de lucru

    1.Web Server

    Configurare Web Server

        Vom dezvolta in continuare proiectul numit   Web_server_000 
        In cadrul acestui proiect se va configura un WebServer care va furniza paginile web din folder-ul:   Web_pages 

        Configurare PROFINET Interface --> Ethernet adressses


        Configurare Web Server ---> General


        Configurare Web Server --> User Defined pages



    Aplicatii Web Server

        Program blocks --> Main



    Definirea Tag-urilor

         Vom defini:     Vom mai defini tag-urile:



        Pentru a realiza pagini Web in care sa accesam mai eficient Tag-urile de mai sus, vom crea un Program Blocks -- Cyclic Intrrupt in care vom codifica binar-zecimal toate intrarile binare B01-B15 precum si iesirile digitale C00-C15, pentru a face mai eficienta comunicarea intre PLC si paginile web.

    "Plc_cnt" := "Plc_cnt" + 1;
    IF "Plc_cnt" > 100 THEN
        "Plc_cnt" := 0;
        ;
    END_IF;
    
    // Calculez valoarea "Digi"
    
    "Digi" := 0;
    IF "B00" THEN
        "Digi" := "Digi" + 1;
    END_IF;
    IF "B01" THEN
        "Digi" := "Digi" + 2;
    END_IF;
    IF "B02" THEN
        "Digi" := "Digi" + 4;
    END_IF;
    IF "B03" THEN
        "Digi" := "Digi" + 8;
    END_IF;
    IF "B04" THEN
        "Digi" := "Digi" + 16;
    END_IF;
    IF "B05" THEN
        "Digi" := "Digi" + 32;
    END_IF;
    IF "B06" THEN
        "Digi" := "Digi" + 64;
    END_IF;
    IF "B07" THEN
        "Digi" := "Digi" + 128;
    END_IF;
    IF "B08" THEN
        "Digi" := "Digi" + 256;
    END_IF;
    IF "B09" THEN
        "Digi" := "Digi" + 512;
    END_IF;
    IF "B10" THEN
        "Digi" := "Digi" + 1024;
    END_IF;
    IF "B11" THEN
        "Digi" := "Digi" + 2048;
    END_IF;
    IF "B12" THEN
        "Digi" := "Digi" + 4096;
    END_IF;
    IF "B13" THEN
        "Digi" := "Digi" + 8192;
    END_IF;
    IF "B14" THEN
        "Digi" := "Digi" + 16384;
    END_IF;
    IF "B15" THEN
        "Digi" := "Digi" + 32768;
    END_IF;
    
    // Activez cele doua led-uri
    
    "k" := "k" + 1;
    IF "k" > 10 THEN
        "k" := 1;
    END_IF;
    IF ("k" MOD 2) = 0 THEN
        "C16" := TRUE;
        "C17" := FALSE;
    ELSE
        "C16" := FALSE;
        "C17" := TRUE;
    END_IF;
    
    // Actualizez C0-C15  din valoarea "Com"
    IF (NOT "Loc") THEN
        #vl := "Com";
        FOR #j := 0 TO 15 DO
            IF (#vl MOD 2) = 0 THEN
                #b := FALSE;
            ELSE
                #b := TRUE;
            END_IF;
            #vl := #vl / 2;
            CASE #j OF
                0:
                    "C00" := #b;
                1:
                    "C01" := #b;
                2:
                    "C02" := #b;
                3:
                    "C03" := #b;
                4:
                    "C04" := #b;
                5:
                    "C05" := #b;
                6:
                    "C06" := #b;
                7:
                    "C07" := #b;
                8:
                    "C08" := #b;
                9:
                    "C09" := #b;
                10:
                    "C10" := #b;
                11:
                    "C11" := #b;
                12:
                    "C12" := #b;
                13:
                    "C13" := #b;
                14:
                    "C14" := #b;
                15:
                    "C15" := #b;
            END_CASE;
        END_FOR;
    END_IF;
    

        Vom realiza in continuare o pagina Web care acceseaza tag-urile definite.


        Paginile web sunt realizate in HTML si AWP(Automation Web Programming). Comenzile AWP sunt inserate sub forma de comentarii HTML. Comenzile AWP pot fi plasate în orice pozitie din fisierul HTML. Cu toate acestea, din motive de claritate, se recomanda plasarea comenzilor AWP la inceputul fisierului HTML.
        Formatul comenzii AWP pentru declararea unei variabile:

    <!-- AWP_In_Variable Name='"Nume_var"' -->
    

        Toate variabilele transferate spre CPU trebuie sa fie definite ca AWP_In_Variable.
        Variabila este scrisa intre ghilimele duble si incadrate in ghilimele simple ('" … " ').
        Toate variabilele citite din CPU trebuie sa aiba forma:

    :="Nume_var":
    

        Sa presupunem ca avem definite PLC Tag-urile:Com, AO0, AO1.
        Pagina web set_val.html, care permite modificarea Tag-urilor Com, AO0, AO1 va fi:

    
    <!-- AWP_In_Variable Name='"Com"' -->
    <!-- AWP_In_Variable Name='"AO0"' -->
    <!-- AWP_In_Variable Name='"AO1"' -->
    
    <form method="get" action="set_val.html">
    	<input type="submit" value="Modific">
    	Com <input type="text" name='"Com"'value=':="Com":'>
    	AO0 <input type="text" name='"AO0"'value=':="AO0":'>
    </form>
    
    
    

        Pagina date_v0.html este un exemplu simplu in care se modifica respectiv se afiseza vlorile controlate de PLC prin intermediul Tag-urilor definite mai sus.



        Afisarea acestei pagini se va face utilizand orice browser in care se apeleaza url-ul: http://192.168.0.11/awp//index.htm


        Datele provenite de la PLC sunt dinamice. Pentru a afisa un nou set de date pagina trebuie reincarcata.
        Aplicatia date_r.html afiseaza repetitiv datele provenite de la PLC


        Continutul date_v1.html find:


        Aplicatia date_r.htmlafiseaza dinamic datele de la PLC insa dezavantajul este ca pagina "clipeste" la fiecare reincarcare.
        Cel mai potrivit ar fi sa folosim tehnologia "Ajax" si sa aducem repetitiv numai datele nemaifiid necesara reincarcarea paginii.
        Vom crea pagina date.html care trimite datele in vederea preluarii acestora prin tehnologia "Ajax"


        Dupa cum se observa valorile Tag-urilor "Plc_cnt","AI0","AI1","AI2","AI3","Digi","Com","AO0_w","AO1_w","Conn_cnt" sunt trimise sub forma de text delimitate prin separatorl ",".
        Aplicatia hmi_ajax.html afiseaza dinamic valorile primite de la PLC.




         Clasa voltm fiind: voltm Exemplu de utilizare: ex1

    2. conexiune OPC
    Capitol realizat cu contributia asist: Tudor Covrig

    Configurare IP Calculator
    Configurare OPC
    Instalarea aplicatiei UaExpert

    3. Conectarea PLC-ului la baza de date de tip SQL
    Capitol realizat cu contributia stud:Iordache Andrada-Bianca- AIA IV

    Se va realiza in continuare conectarea PLC-ului Siemens S7-1200 la o baza de date de tip SQL. Pentru a realiza conectarea s-a utilizat libraria LSql, care poate fi descarcata de la adresa: https://support.industry.siemens.com/cs/document/109779336/connecting-a-s7-1200-s7-1500-to-a-sql-database-?dti=0&lc=en-WW

    Configurarea PLC-ului:

    1.     Se descarca libraria LSql

    2.     Se creeaza un nou proiect in TIA Portal, unde se adauga configuratia PLC-ului. In paralel se dezarhiveaza proiectul descarcat si se deschide. Din proiectul descarcat se copiaza urmatoarele elemente in noul proiect creat:

    ·       "LSql" block folder

    ·       Data block "SqlConfig"

    ·       Data block "SqlCommand"

    ·       Data block "SqlReceive"

    ·       PLC data types folder

    ·       X1NetworkToSQLServer (din meniul Device and Networks)

     

     

     

     

    3.     Blocul LSql_Microsoft este apelat intr-un block ciclic (de exemplu Main) si se conecteaza intrarile si iesirile conform figurii urmatoare:

    Acest bloc este controlat prin intermediul intrarilor "enableLSql" si "executeSqlCommand". Astfel cand intrarea "enableLSql" este setata "TRUE" se realizeaza conexiunea la baza de date iar cand "executeSqlCommand" este setata "TRUE" se executa query-ul selectat.

    4.     Se seteaza urmatorii parametrii in blocul de date SqlConfig:

    Configurarea Server-ului Microsoft SQL Server Express

    Se descarca si se instaleaza Microsoft SQL Server Express basics de la adresa:

    https://www.microsoft.com/en-US/download/details.aspx?id=55994

    Se descarca si se instaleaza Microsoft SQL Server Management Studio

    https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

     

    Loggarea in SQL server

    1.     Porniti Microsoft SQL Server Management Studio

    2.     Deschideti meniul "Properties" a SQLEXPRESS

    Graphical user interface, application

Description automatically generated

    3.     In meniul Security activati "SQL Server Authentication Mode" si confirmati modificarile

    Graphical user interface, text, application, email

Description automatically generated

    4.     Creati un nou user: Security > Logins > New Login

     

    Graphical user interface, application

Description automatically generated

    5.     Selectati SQL Server authentication si adaugati un user name si o parola

    Graphical user interface, text, application

Description automatically generated

    Asigurati-va ca user-ul creat are dreptul de a accesa baza de date

     

    Graphical user interface, text, application, email

Description automatically generated

     

    Setarea portului pentru SQL server

     

    1.     Se deschide “Microsoft SQL Server Configuration Manager” si se cauta “Protocols for SQLEXPRESS”. Se deschide TCP/IP

    Graphical user interface, text, application, chat or text message

Description automatically generated

    2.     Se activeaza TCP/IP

    Graphical user interface, application

Description automatically generated

    3.     Se deschide IP3, se configureaza adresa IP si se seteaza portul 1433. Se activeaza si apasa OK.

    Graphical user interface, application

Description automatically generated

    4.     Se restarteaza server-ul SQL.

    Graphical user interface, text, application

Description automatically generated

    5.     Se deschide wf.msc

    Graphical user interface

Description automatically generated

     

    6.     Se adauga o noua regula in sectiunea “Inbound Rules” > “New Rule”

     

    Graphical user interface, text, application

Description automatically generated

     

    7.     Se selecteaza “Port” > “TCP” > “Specific local ports: 1433” > “Allow the connection” > “Domain, Private, Public” > Finish

     

     

    Graphical user interface, text, application, email

Description automatically generatedGraphical user interface, text, application, email

Description automatically generated

    Graphical user interface, text, application, email

Description automatically generatedGraphical user interface, text, application

Description automatically generated

     

    Graphical user interface, application

Description automatically generated

    8.     Se repeta pasul 7, dar de data aceasta se creeaza o noua regula pentru portul 1434, UDP:

    Graphical user interface, application

Description automatically generated

    9.     Urmatoare regula care trebuie creata este “Custom Rule”, astfel selectam “New Rule” >”Custom rule” > “Customize…” > “Apply to this service” . Se apasa OK si Next pana la final.

     

    Graphical user interface, application, Teams

Description automatically generatedGraphical user interface, application

Description automatically generated

     

    Exemplu aplicatie de scriere in baza de date


    Dupa ce s-au realizat pasii descrisi anterior, se deschide Microsoft SQL Server Management Studio si se acceseaza baza de date creata

    1.               In interiorul bazei de date se creaza un nou tabel de forma celui prezentat in figura urmatoare, cu numele “PLCDATA1”

     

     

    2.               Graphical user interface

Description automatically generated

    3.     In proiectul creat se adauga un bloc de tip “Function Block” iar ca limbaj se selecteaza SCL

     

     

    Graphical user interface, application

Description automatically generated

     

    4.     Functia se completeaza cu urmatoarele date si se apeleaza in Main

     

    #sep := ',';
    #close := ')';
    #data := 'insert into PLCDATA1 values(';
    #data1str := INT_TO_STRING(IN := #data1);
    #data2str := INT_TO_STRING(IN := #data2);
    #data3str := INT_TO_STRING(IN := #data3);

    #data := CONCAT_STRING(IN1 := #data, IN2 := #data1str);
    #data := CONCAT_STRING(IN1 := #data, IN2 := #sep);
    #data := CONCAT_STRING(IN1 := #data, IN2 := #data2str);
    #data := CONCAT_STRING(IN1 := #data, IN2 := #sep);
    #data := CONCAT_STRING(IN1 := #data, IN2 := #data3str);
    #data := CONCAT_STRING(IN1 := #data, IN2 := #close);

     

     

     

    5.     Se adauga HMI-ul in proiect si se conecteaza la PLC

     

    6.     Se adauga urmatoarele HMI tags

     

     

    7.     In Root Screen de adauga urmatoarele elemente

     

     

    8.     Elementele de tip “I/O Field” se conecteaza cu datele de intrare ale functiei create si se modifica tipul elementului > “Input”

     

    9.     Pentru butonul de “Start” se adauga un eviniment de tip “Click”, pe care se adauga functiaSetBit” la care ii se atribuie tag-ulenable_db”. Acest tag se conecteaza cu tag-ul din PLC conform figurii.

     

     

    10.  Pentru switch se adauga pe evenimenul “Switch ON” functia SetBit si ii se atribuie tag-ul write_to_db. Pe evenimentul “Switch OFF” se adauga functiaResetBitcareia ii se atribuie tag-ulwrite_to _db

     

    Graphical user interface

Description automatically generated

     

    11.   Se incarca programul creat in PLC si in HMI si se testeaza astfel: se apasa butonul “Start DB” > se inscriu valorile dorite > se comuta switch-ul in pozitia ON > se cauta inregistrarile in baza de date.

     



    Rezumat


  • Web server
        Formatul comenzii AWP pentru declararea unei variabile:

    <!-- AWP_In_Variable Name='"Nume_var"' -->
    

        Toate variabilele citite din CPU trebuie sa aiba forma:

    :="Nume_var":
    




  • Rezultate asteptate
  • Termeni esentiali


  • Recomandari bibliografice

  • Link-uri utile