Управљање у реалном времену/Питања — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
 
(22 међуизмене истог корисника нису приказане)
Ред 56: Ред 56:


== Industrijske mreže ==
== Industrijske mreže ==
=== Saveti ===
1) ukoliko je naglaseno u tekstu da je potrebno "upravljanje uredjajima u realnom vremenu", onda odmah znam da ne treba MODBUS protokol da
iskoristim jer nije dovoljno pouzdan za tako nesto
2) ukoliko je naglaseno u tekstu da je potreban samo "nadzor uredjaja", kao npr. ocitavanje temperature u rezervoarima, onda odmah znam da
nema potrebe za PROFIBUS ili PROFINET protokolima, vec da moze MODBUS protokol da se iskoristi jer nije potrebno nikakvo upravljanje u
realnom vremenu (pod uslovom da ima do 32 uredjaja u mrezi, jer toliko uredjaja MODBUS protokol moze maksimalno da podrzi, kao i da je
rastojanje od centralne stanice do udaljene lokacije maksimalno oko 1km, jer toliki domet ima MODBUS protokol) - tada su samo potrebni
pametni senzori u udaljenim lokacijama
3) ukoliko je u udaljenim lokacijama potrebno upravljanje (pumpa, ventilator, grejac, itd.) to mi odmah govori da je potrebno da svaka udaljena
lokacija ima po PLC - mnogo je bolje tako nego da postoji samo jedan PLC u centru i da on obavlja celokupno upravljanje svim uredjajima u
udaljenim lokacijama; takodje, treba nacrtati i touch panel (HMI) u svakoj udaljenoj lokaciji kada je u njima potrebno upravljanje (naravno, ako
nema upravljanja nego samo npr. pametnih senzora, onda nema potrebe za touch panelom (HMI-jem) kao ni za PLC-om u udaljenoj lokaciji)
4) ukoliko sam zakljucio da treba da iskoristim PROFINET protokol sa optickim kablovima za povezivanje svica iz centralne stanice sa svicevima
u udaljenim lokacijama, onda su na ulazu u centralnu stanicu neophodni opticki pretvaraci koji konvertuju opticke signale u elektricne - ovo je
potrebno zato sto unutar centralne stanice nema potrebe koristiti opticke kablove posto su male udaljenosti, pa su za povezivanje uredjaja
dovoljni bakarni kablovi koji provode elektricne signale - isto vazi i za ulaz u udaljenu lokaciju, i tu su potrebni pretvaraci; medjutim, postoje
Siemens svicevi sa ulazima za opticke kablove, pa u tom slucaju cak i ne treba pretvarac
5) ako je udaljena lokacija udaljena od centralne prostorije oko 100m, odmah znam da mogu da iskoristim PROFINET i to sa bakarnim kablovima
(naravno, pod uslovom da je potrebno upravljanje u realnom vremenu, dakle ako imamo nekakve pumpe, ventilatore ili grejace u udaljenim
lokacijama, i takodje ako imamo veliki broj uredjaja u mrezi (preko 128), jer u suprotnom nema potrebe za ovako skupim resenjem ako nema - ako
ima preko 32 a manje od 128 mogao bi PROFIBUS da se iskoristi sa bakarnim kablovima, a ako ima manje od 32 uredjaja mogao bi MODBUS da
se iskoristi sa bakarnim kablovima ukoliko nije potrebno upravljanje)
6) ako se trazi najjeftinije moguce resenje, treba imati u vidu da je MODBUS najjeftiniji, pa onda PROFIBUS, a zatim PROFINET, a po kvalitetu
je isti redosled ako se gleda od najgoreg ka najboljem protokolu
7) PROFIBUS sa bakarnim kablovima se najcesce koristi ako je potreban domet do 1.2km i ako ima do 128 uredjaja u mrezi, a takodje vec postoji
neka stara postojeca infrastruktura koju zelimo da iskoristimo, medjutim ako se gradi neka mreza od nule u danasnje vreme, u 90% situacija ce
se iskoristiti PROFINET (sa bakarnim kablovima ako je udaljenost do oko 100m, a sa optickim ako je veca)
8) kod MODBUS i PROFIBUS je najcesca daisy chain (linearna) topologija mreze, dok je kod PROFINET najcesca star (zvezdasta) topologija
zajedno sa ring (prstenastom) topologijom, pri cemu se cesto koristi i dupli prsten radi redundanse
9) ako se traze "vizuelizacija i belezenje" informacija, to mi odmah govori da u centralnoj stanici treba da nacrtam PC sa SCADA-om jer je u
SCADA-i baza podataka gde se ti podaci cuvaju - ukoliko nije potrebno belezenje podataka, onda nema potrebe za SCADA-om, vec je dovoljan
touch panel (HMI) u centralnoj stanici tada
10) ukoliko je udaljenost izmedju centralne sobe i udaljenih lokacija ogromna (reda velicine stotina kilometara), tada komunikacija izmedju
njih moze da se odvija preko PROFINET protokola, ali mora takodje biti preko interneta (WAN) - radi sigurnosti pozeljno je koristiti i VPN kako bi komunikacija bila zasticena
11) cim ima ogroman broj uredjaja (preko 128), odmah znam da treba PROFINET da iskoristim, samo je pitanje da li sa bakarnim ili optickim
kablovima u zavisnosti od udaljenosti izmedju centralne sobe i udaljenih lokacija
12) ako je potreban samo nadzor (bez upravljanja u realnom vremenu) i ako bas nije moguce povezati centralnu sobu sa udaljenim lokacijama
kablovima iz nekog razloga, onda se moze pribeci koriscenju GSM ili radio veze za komunikaciju i tada je potreban modem kako u centralnoj
sobi (predajnik), tako i u svim udaljenim lokacijama (prijemnici) - treba imati u vidu da ovaj vid komunikacije nije pouzdan i nikako nije
real time; takodje treba imati u vidu da je ovo moguce kao resenje samo ako je naglaseno u tekstu da je u pitanju "moj objekat", jer su
samo tada kontrolisani uslovi, inace ako se preko javnih povrsina odvija komunikacija preko GSM ili radio veze, onda postoji veca opasnost
od napada
13) ako koristim MODBUS ili PROFIBUS, samo povezem sve uredjaje jednom istom linijom (magistralom) jer se tada koristi daisy chain (linearna)
topologija, a ako koristim PROFINET, onda je potreban po svic kako u centralnoj sobi, tako i u udaljenim lokacijama i oni mogu biti povezani
u star ili ring (a moze i double ring) topologije
14) ukoliko je potreban samo nadzor uredjaja, a ne upravljanje, PLC-ovi nisu potrebni niti u centralnoj sobi, niti u udaljenim lokacijama, vec je
dovoljan PC sa SCADA-om u centralnoj sobi za vizuelizaciju i belezenje podataka, dok iz udaljenih lokacija odgovarajuce vrednosti mogu slati
pametni senzori; takodje nisu potrebni ni HMI-jevi niti u centralnoj sobi niti u udaljenim lokacijama ako je samo nadzor uredjaj potreban
=== Jun 2020 ===
=== Jun 2020 ===
'''(12)''' Glavni ste elektro projektant i treba da napravite sistem unutar vašeg objekta koji ima centralnu stanicu (u centru kruga) i pet udaljenih lokacija (na zamišljenoj kružnici) na jednakom rastojanju od centralne stanice od 2km i jednakom međusobnom rastojanju. Svaka udaljena lokacija ima sistem koji pumpa vodu u 1okalni rezervoar i iz tog rezervoara pumpa vodu u centralni rezervoar sistemom cevovoda. Treba da projektujete centralni sistem i lokalne stanice tako da celokupan sistem funkcioniše u realnom vremenu, i koji poseduje mogućnosti da se u centralnoj stanici vizualizuju i beleže svi parametri (nivoi, temperature, protoci...) praktično neograničeno. Detaljno projektovati dati sistem, nacrtati raspored opreme, tako da neko može na osnovu vašeg projekta da nabavi sav potreban hardware i software, predložiti tip protokola komunikacije, kao i vrstu mreže...
'''(12)''' Glavni ste elektro projektant i treba da napravite sistem unutar vašeg objekta koji ima centralnu stanicu (u centru kruga) i pet udaljenih lokacija (na zamišljenoj kružnici) na jednakom rastojanju od centralne stanice od 2km i jednakom međusobnom rastojanju. Svaka udaljena lokacija ima sistem koji pumpa vodu u 1okalni rezervoar i iz tog rezervoara pumpa vodu u centralni rezervoar sistemom cevovoda. Treba da projektujete centralni sistem i lokalne stanice tako da celokupan sistem funkcioniše u realnom vremenu, i koji poseduje mogućnosti da se u centralnoj stanici vizualizuju i beleže svi parametri (nivoi, temperature, protoci...) praktično neograničeno. Detaljno projektovati dati sistem, nacrtati raspored opreme, tako da neko može na osnovu vašeg projekta da nabavi sav potreban hardware i software, predložiti tip protokola komunikacije, kao i vrstu mreže...
Ред 193: Ред 255:


== GRAFCET programiranje ==
== GRAFCET programiranje ==
=== Jun 2018 ===
[[Датотека:URV jun 2018 zadatak 3 dijagram.svg|thumb|Dijagram iz trećeg zadatka iz junskog roka 2018. godine.]]
'''(10)''' Dat je GRAPHCET<sup>[sic]</sup> dijagram sistema. Šta radi ovaj sistem i objasniti rečima kako radi.
=== Jun 2020 ===
=== Jun 2020 ===
'''(9)''' Nacrtati GRAFCET dijagram za [[#Jun 2020|zadatak 1]].
'''(9)''' Nacrtati GRAFCET dijagram za [[#Jun 2020|zadatak 1]].
Ред 199: Ред 265:
'''(10)''' Nacrtati GRAFCET dijagram za [[#Jul 2020|zadatak 1]].
'''(10)''' Nacrtati GRAFCET dijagram za [[#Jul 2020|zadatak 1]].


=== Jun 2018 ===
<br><br><br><br><br><br><br><br><br>
[[Датотека:URV jun 2018 zadatak 3 dijagram.svg|thumb|Dijagram iz trećeg zadatka iz junskog roka 2018. godine.]]
 
'''(10)''' Dat je GRAPHCET<sup>[sic]</sup> dijagram sistema. Šta radi ovaj sistem i objasniti rečima kako radi.
== Regulatori ==
<syntaxhighlight lang="C++">
void sleep(int seconds)
{
    // simulacija thread sleep
}
 
int main()
{
    float r; // referenca
 
    float y;                  // merenje
    float y_max = 40.0;        // maksimalna prava digitalna vrednost merenja
    float y_scaled_max = 1023; // maksimalna skalirana digitalna vrednost merenja koju moze da vrati analogno-digitalni konvertor
 
    float e_current;  // greska u trenutnoj periodi odabiranja
    float e_previous; // greska u prosloj periodi odabiranja
 
    float u;                  // upravljanje
    float u_min = 0.0;        // minimalna prava digitalna vrednost upravljanja
    float u_max = 100.0;      // maksimalna prava digitalna vrednost upravljanja
    float u_scaled_max = 4095; // maksimalna skalirana digitalna vrednost upravljanja koju moze da primi digitalno-analogni konvertor
    float u_man;              // upravljanje u rucnom rezimu rada
    float u_p = 0;            // upravljanje poteklo od proporcionalnog dejstva
    float u_i = 0;            // upravljanje poteklo od integralnog dejstva
    float u_d = 0;            // upravljanje poteklo od diferencijalnog dejstva
 
    float k_p = 4.0; // konstanta proporcionalnog dejstva
 
    float t_i = 0.5;              // vremenska konstanta integralnog dejstva
    float t_s = 0.1;              // perioda odabiranja (u sekundama)
    float k_i = (k_p / t_i) * t_s; // konstanta integralnog dejstva
 
    float t_d = 2.0;              // vremenska konstanta diferencijalnog dejstva
    float k_d = (k_p / t_s) * t_d; // konstanta diferencijalnog dejstva
 
    bool auto_current;          // da li je sistem u trenutnoj periodi odabiranja u automatskom rezimu rada
    bool auto_previous = false; // da li je sistem u prosloj periodi odabiranja bio u automatskom rezimu rada
 
    while (true)
    {
        // simulacija izvrsenja prekidne rutine
 
        // trenutno se u promenljivoj y nalazi skalirana digitalna vrednost koju je izracunao analogno-digitalni
        // konvertor, pa je neophodno prvo izracunati pravu digitalnu vrednost y
        y = (y / y_scaled_max) * y_max;
 
        if (auto_current == true)
        {
            // automatski rezim rada
 
            // obezbedjivanje bumpless prelaza iz rucnog u automatski rezim rada
            if (auto_previous == false)
            {
                r = y;          // ovo garantuje da ce u_p biti 0 sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
                u_i = u_man;    // ovo garantuje da ce u_i biti u_man sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
                e_previous = 0; // ovo garantuje da ce u_d biti 0 sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
            }
 
            // automatsko azuriranje upravljanja
            e_current = r - y;
            u_p = k_p * e_current;
            u_i = u_i + k_i * e_current;
            u_d = k_d * (e_current - e_previous);
            u = u_p + u_i + u_d;
           
            // obezbedjivanje zastite od navijanja (anti-windup)
            if (u > u_max)
            {
                u = u_max;
                u_i = u_i - k_i * e_current; // integralno dejstvo ne treba akumulirati kada je upravljanje dostiglo svoju maksimalnu vrednost
            }
            if (u < u_min)
            {
                u = u_min;
                u_i = u_i - k_i * e_current; // integralno dejstvo ne treba akumulirati kada je upravljanje dostiglo svoju minimalnu vrednost
            }
 
            // obezbedjivanje bumpless prelaza iz automatskog u rucni rezim rada
            u_man = u;
 
            // pamcenje greske iz tekuce periode odabiranja da bi se u narednoj periodi odabiranja sacuvala ta informacija zbog racunanja diferencijalnog dejstva
            e_previous = e_current;
 
            // pamcenje informacije o rezimu rada iz tekuce periode odabiranja da bi se u narednoj periodi
            // odabiranja znalo da li je potrebno izvrsiti kod koji obezbedjuje bumpless prelaz iz rucnog u automatski rezim
            auto_previous = true;
        }
        else
        {
            // rucni rezim rada
 
            // rucno azuriranje upravljanja
            if (u_man < u_min)
            {
                u = u_min;
            }
            else if (u_man > u_max)
            {
                u = u_max;
            }
            else
            {
                u = u_man;
            }
 
            // ova dodela se radi kako bi se dodatno potvrdilo da je sistem u rucnom rezimu rada time sto ce grafik reference biti isti kao grafik merenja
            r = y;
 
            // pamcenje informacije o rezimu rada iz tekuce periode odabiranja da bi se u narednoj periodi
            // odabiranja znalo da li je potrebno izvrsiti kod koji obezbedjuje bumpless prelaz iz rucnog u automatski rezim
            auto_previous = false;
        }
 
        // trenutno se u promenljivoj u nalazi prava digitalna vrednost upravljanja, pa je potrebno izracunati skaliranu
        // digitalnu vrednost upravljanja kako bi se ona dovela na ulaz digitalno-analognog konvertora
        u = (u / u_max) * u_scaled_max;
 
        // simulacija prekidne rutine pomocu beskonacne while petlje i thread sleep tako sto uspavamo glavnu nit na t_s sekundi, sto je upravo perioda odabiranja
        // inace bi se prekidna rutina automatski izvrsavala periodicno sa razmakom od t_s sekundi izmedju dva uzastopna izvrsavanja
        sleep(t_s);
    }
 
    return 0;
}
</syntaxhighlight>


[[Категорија:Управљање у реалном времену]]
[[Категорија:Управљање у реалном времену]]
[[Категорија:Рокови]]
[[Категорија:Рокови]]

Тренутна верзија на датум 18. септембар 2024. у 07:48

Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Na ovoj stranici su sakupljena pitanja sa prethodnih rokova bez naročite organizacije po rokovima.

Ladder programiranje

Jun 2020

(9) Primenom ladder programiranja realizovati program koji ima sledeće funkcionalnosti:

  • Pritiskom па taster koji je na lokaciji I0.0 resetuju se izlazi Q0.0 i Q0.1 i u narednih 5 sekundi se broje impulsi sa digitalnog ulaza I0.1. Kada prođe 5 sekundi prestaje se sa brojanjem i čeka se sledeci pritisak na taster I0.0.
  • Ukoliko se u toku vremena od 1 sekunde od pritiska na taster izbroji manje od 20 impulsa setovati izlaz Q0.0.
  • Ukoliko se u toku vremena od 2 sekunde od pritiska na taster detektuje više od 50 impulsa setovati izlaz Q0.1.
  • Ukoliko se taster pritisne posle manje od 5 sekundi od prethodnog pritiska tastera, ignorisati ovo i nastaviti brojanje impulsa.

Februar 2020

(10) Posedujete mašinu koja poseduje dva tastera za start (I0.0 i I0.1), jedan taster za stop (I0.2) i taster reset (I0.3). Da bi se sistem startovao potrebno je istovremeno pritisnuti oba tastera start (u maksimalnom vremenskom intervalu od 100ms) i tada se uključuje sekvenca. Ona sadrži: uključiti motor (Q0.0), sačekati 20 sekundi i zatim uključiti grejač (Q0.1) koji je 10 sekundi uključen, a zatim 30 sekundi isključen i ovu sekvencu (10sek ON/30sek OFF) ponoviti pet puta. Pre početka sekvence ukoliko se pritisne neki od tastera start, a ne oba u toku od 100ms vremenske razlike, brojati ovakve događaje u brojaču C0. Kada on izbroji 6 ovakvih uzastopnih događaja sistem ide u stanje stop (svi aktuatori isključeni) i da bi se sistem startovao mora se pritisnuti taster reset. Tasterom stop, sistem se zaustavlja (svi aktuatori se isključuju) i da bi se ponovo pokrenuo sistem mora se pritisnuti taster reset. Realizovati primenom ladder (lestvičastog) programiranja program koji ima navedenu funkcionalnost.

Jul 2020

(9) Realizovati automatizaclju rada semafora u ladder programskom jezlku. Postoji 5 digitalnlh izlaza (Q0.0, Q0.1, Q0.2 su adrese zelenog, žutog i crvenog svetla па semaforu, respektivno, a Q1.0 i Q1.1 su adrese zelenog i crvenog svetla za pešake, respektivno) i 2 dlgitalna ulaza (I0.0 je adresa tastera za pešaćki prelaz, a na adresl I0.1 se generiše impuls svaki put kad prođe automobil pored semafora). Program treba da ima sledeću funkcionalnost:

  • U nominalnom režimu uključeno je zeleno svetlo za automobile i crveno svetlo za pešake. Sva ostala svetla su isključena. U toku nominalnog režima broji se koliko je automobila prošlo pored semafora.
  • Ako smo u nominalnom režimu, kad se pritisne pešački taster započinje sledeća sekvenca
    • Čeka se da se ispuni barem jedan od sledecih uslova: prošlo je 10 sekundi od pritiska tastera ili je prošlo 15 automobila pored semafora.
    • Pos1e toga isključuje se zeleno i uključuje se žuto svetlo za automobile.
    • Čeka se 3 sekunde.
    • Pos1e toga uključuje se crveno svetlo za automobile i zeleno svetlo za pešake (sva ostala svetla su isključena).
    • Čeka se 15 sekundi
  • Ponovni pritisak pešačkog tastera se ignoriše u toku izvršavanja sekvence.
  • Pos1e izvršenja ove sekvence vrši se povratak u nominalni režim i resetuje se brojač automobila.

Jun 2019

(10) Posedujete mašinu koja poseduje dva tastera za start (I0.0 i I0.1), jedan taster za stop (I0.2) i taster reset (I0.3). Da bi se sistem startovao potrebno je istovremeno pritisnuti oba tastera start (u maksimalnom vremenskom intervalu od 100ms) i tada se uključuje sekvenca. Ona sadrži: uključiti motor (Q0.0), sačekati 20 sekundi i zatim uključiti grejač (Q0.1) koji je 5 sekundi uključen, a zatim 30 sekundi isključen i ovu sekvencu (5sek ON/30sek OFF) ponoviti tri puta. Pre početka sekvence ukoliko se pritisne neki od tastera start, a ne oba u toku od 100ms vremenske razlike, brojati ovakve događaje u brojaču C0. Kada on izbroji 6 ovakvih događaja sistem ide u stanje stop (svi aktuatori isključeni) i da bi se sistem startovao mora se pritisnuti taster reset. Tasterom stop, sistem se zaustavlja (svi aktuatori se isključuju) i da bi se ponovo pokrenuo sistem mora se pritisnuti taster reset. Realizovati primenom ladder (lestvičastog) programiranja program koji ima navedenu funkcionalnost.

Jul 2019

(10) Realizovati primenom ladder (lestvičastog) programiranja program koji ima sledeću funkcionalnost:

  • Potrebno je postaviti memorijsku lokaciju M0.0 na vrednost 1, kada se pojave četiri uzastopna impulsa trajanja manje od 50ms па digitalnom ulazu I0.0
  • Ukoliko se u sekvenci impulsa pojavi impuls duži od 150ms, a kraći od 200ms ili pritiskom na taster I0.1, potrebno je brojati kao da su se pojavila dva impulsa
  • Ukoliko se u sekvenci impulsa pojavi impuls duži od 200ms potrebno je resetovati brojanje
  • Memorijska lokacija M0.0 se postavlja na nulu pritiskom na taster koji se nalazi na digitalnom ulazu I0.3

Jun 2018

(10) Realizovati primenom ladder (lestvičastog) programiranja program koji ima sledeću funkcionalnost:

  • Potrebno je postaviti memorijsku lokaciju M100.0 па vrednost 1, kada se pojavi pet uzastopnih impulsa trajanja manje od 50ms na digitalnom ulazu I0.1
  • Ukoliko se u sekvenci impulsa pojavi impuls duži od 100ms, a kraći od 150ms ili pritiskom na taster I0.2, potrebno je ponovo započeti brojanje
  • Ukoliko se u sekvenci impulsa pojavi impuls duži od 150ms takav impuls se računa kao dva impulsa
  • Memorijska lokacija M100.0 se postavlja na nulu pritiskom na taster koji se nalazi na digitalnom ulazu I0.3

Jul 2018

(10) Realizovati primenom ladder (lestvičastog) programiranja program koji ima sledeću funkcionalnost:

  • Potrebno je postaviti memorijsku lokaciju M100.0 na vrednost 1, kada se pojavi osam uzastopnih impulsa trajanja manje od 50ms па digitalnom ulazu I0.1
  • Ukoliko se u sekvenci impulsa pojavi impuls duži od 150ms ili pritiskom na taster I0.3, potrebno je ponovo započeti brojanje
  • Memorijska lokacija M100.O se postavlja na nulu pritiskom na taster koji se nalazi na digitalnom ulazu I0.3

Septembar 2018

(10) Realizovati primenom ladder (lestvičastog) programiranja program koji ima sledeću funkcionalnost:

  • Potrebno je postaviti memorijsku lokaciju MB100 na vrednost 2, kada se pojavi osam uzastopnih impulsa trajanja manje od 50ms па digitalnom ulazu I0.1
  • Ukoliko se u sekvenci impulsa pojavi impuls du3i od 150ms ili pritiskom па taster I0.3, potrebno je ponovo započeti brojanje
  • Memorijska lokacija M8100 se postavlja na nulu pritiskom па taster koji se nalazi na digitalnom ulazu I0.3

Industrijske mreže

Saveti

1) ukoliko je naglaseno u tekstu da je potrebno "upravljanje uredjajima u realnom vremenu", onda odmah znam da ne treba MODBUS protokol da iskoristim jer nije dovoljno pouzdan za tako nesto

2) ukoliko je naglaseno u tekstu da je potreban samo "nadzor uredjaja", kao npr. ocitavanje temperature u rezervoarima, onda odmah znam da nema potrebe za PROFIBUS ili PROFINET protokolima, vec da moze MODBUS protokol da se iskoristi jer nije potrebno nikakvo upravljanje u realnom vremenu (pod uslovom da ima do 32 uredjaja u mrezi, jer toliko uredjaja MODBUS protokol moze maksimalno da podrzi, kao i da je rastojanje od centralne stanice do udaljene lokacije maksimalno oko 1km, jer toliki domet ima MODBUS protokol) - tada su samo potrebni pametni senzori u udaljenim lokacijama

3) ukoliko je u udaljenim lokacijama potrebno upravljanje (pumpa, ventilator, grejac, itd.) to mi odmah govori da je potrebno da svaka udaljena lokacija ima po PLC - mnogo je bolje tako nego da postoji samo jedan PLC u centru i da on obavlja celokupno upravljanje svim uredjajima u udaljenim lokacijama; takodje, treba nacrtati i touch panel (HMI) u svakoj udaljenoj lokaciji kada je u njima potrebno upravljanje (naravno, ako nema upravljanja nego samo npr. pametnih senzora, onda nema potrebe za touch panelom (HMI-jem) kao ni za PLC-om u udaljenoj lokaciji)

4) ukoliko sam zakljucio da treba da iskoristim PROFINET protokol sa optickim kablovima za povezivanje svica iz centralne stanice sa svicevima u udaljenim lokacijama, onda su na ulazu u centralnu stanicu neophodni opticki pretvaraci koji konvertuju opticke signale u elektricne - ovo je potrebno zato sto unutar centralne stanice nema potrebe koristiti opticke kablove posto su male udaljenosti, pa su za povezivanje uredjaja dovoljni bakarni kablovi koji provode elektricne signale - isto vazi i za ulaz u udaljenu lokaciju, i tu su potrebni pretvaraci; medjutim, postoje Siemens svicevi sa ulazima za opticke kablove, pa u tom slucaju cak i ne treba pretvarac

5) ako je udaljena lokacija udaljena od centralne prostorije oko 100m, odmah znam da mogu da iskoristim PROFINET i to sa bakarnim kablovima (naravno, pod uslovom da je potrebno upravljanje u realnom vremenu, dakle ako imamo nekakve pumpe, ventilatore ili grejace u udaljenim lokacijama, i takodje ako imamo veliki broj uredjaja u mrezi (preko 128), jer u suprotnom nema potrebe za ovako skupim resenjem ako nema - ako ima preko 32 a manje od 128 mogao bi PROFIBUS da se iskoristi sa bakarnim kablovima, a ako ima manje od 32 uredjaja mogao bi MODBUS da se iskoristi sa bakarnim kablovima ukoliko nije potrebno upravljanje)

6) ako se trazi najjeftinije moguce resenje, treba imati u vidu da je MODBUS najjeftiniji, pa onda PROFIBUS, a zatim PROFINET, a po kvalitetu je isti redosled ako se gleda od najgoreg ka najboljem protokolu

7) PROFIBUS sa bakarnim kablovima se najcesce koristi ako je potreban domet do 1.2km i ako ima do 128 uredjaja u mrezi, a takodje vec postoji neka stara postojeca infrastruktura koju zelimo da iskoristimo, medjutim ako se gradi neka mreza od nule u danasnje vreme, u 90% situacija ce se iskoristiti PROFINET (sa bakarnim kablovima ako je udaljenost do oko 100m, a sa optickim ako je veca)

8) kod MODBUS i PROFIBUS je najcesca daisy chain (linearna) topologija mreze, dok je kod PROFINET najcesca star (zvezdasta) topologija zajedno sa ring (prstenastom) topologijom, pri cemu se cesto koristi i dupli prsten radi redundanse

9) ako se traze "vizuelizacija i belezenje" informacija, to mi odmah govori da u centralnoj stanici treba da nacrtam PC sa SCADA-om jer je u SCADA-i baza podataka gde se ti podaci cuvaju - ukoliko nije potrebno belezenje podataka, onda nema potrebe za SCADA-om, vec je dovoljan touch panel (HMI) u centralnoj stanici tada

10) ukoliko je udaljenost izmedju centralne sobe i udaljenih lokacija ogromna (reda velicine stotina kilometara), tada komunikacija izmedju njih moze da se odvija preko PROFINET protokola, ali mora takodje biti preko interneta (WAN) - radi sigurnosti pozeljno je koristiti i VPN kako bi komunikacija bila zasticena

11) cim ima ogroman broj uredjaja (preko 128), odmah znam da treba PROFINET da iskoristim, samo je pitanje da li sa bakarnim ili optickim kablovima u zavisnosti od udaljenosti izmedju centralne sobe i udaljenih lokacija

12) ako je potreban samo nadzor (bez upravljanja u realnom vremenu) i ako bas nije moguce povezati centralnu sobu sa udaljenim lokacijama kablovima iz nekog razloga, onda se moze pribeci koriscenju GSM ili radio veze za komunikaciju i tada je potreban modem kako u centralnoj sobi (predajnik), tako i u svim udaljenim lokacijama (prijemnici) - treba imati u vidu da ovaj vid komunikacije nije pouzdan i nikako nije real time; takodje treba imati u vidu da je ovo moguce kao resenje samo ako je naglaseno u tekstu da je u pitanju "moj objekat", jer su samo tada kontrolisani uslovi, inace ako se preko javnih povrsina odvija komunikacija preko GSM ili radio veze, onda postoji veca opasnost od napada

13) ako koristim MODBUS ili PROFIBUS, samo povezem sve uredjaje jednom istom linijom (magistralom) jer se tada koristi daisy chain (linearna) topologija, a ako koristim PROFINET, onda je potreban po svic kako u centralnoj sobi, tako i u udaljenim lokacijama i oni mogu biti povezani u star ili ring (a moze i double ring) topologije

14) ukoliko je potreban samo nadzor uredjaja, a ne upravljanje, PLC-ovi nisu potrebni niti u centralnoj sobi, niti u udaljenim lokacijama, vec je dovoljan PC sa SCADA-om u centralnoj sobi za vizuelizaciju i belezenje podataka, dok iz udaljenih lokacija odgovarajuce vrednosti mogu slati pametni senzori; takodje nisu potrebni ni HMI-jevi niti u centralnoj sobi niti u udaljenim lokacijama ako je samo nadzor uredjaj potreban

Jun 2020

(12) Glavni ste elektro projektant i treba da napravite sistem unutar vašeg objekta koji ima centralnu stanicu (u centru kruga) i pet udaljenih lokacija (na zamišljenoj kružnici) na jednakom rastojanju od centralne stanice od 2km i jednakom međusobnom rastojanju. Svaka udaljena lokacija ima sistem koji pumpa vodu u 1okalni rezervoar i iz tog rezervoara pumpa vodu u centralni rezervoar sistemom cevovoda. Treba da projektujete centralni sistem i lokalne stanice tako da celokupan sistem funkcioniše u realnom vremenu, i koji poseduje mogućnosti da se u centralnoj stanici vizualizuju i beleže svi parametri (nivoi, temperature, protoci...) praktično neograničeno. Detaljno projektovati dati sistem, nacrtati raspored opreme, tako da neko može na osnovu vašeg projekta da nabavi sav potreban hardware i software, predložiti tip protokola komunikacije, kao i vrstu mreže...

Rešenje

  • Posto je udaljenost izmedju centralne sobe i udaljenih lokacija 2km, ne mogu da se upotrebe niti MODBUS (domet mu je oko 1km) niti PROFIBUS (domet mu je oko 1.2km), vec mora PROFINET (i to sa optickim kablovima jer je sa bakarnim domet oko 100m).
  • Posto koristimo PROFINET protokol, moguce je upotrebiti ili star ili ring (moze i double ring radi redundanse) topologiju mreze - stanice su medjusobno povezane preko sviceva, tj. sviceve povezujemo u odgovarajuce topologije mreze.
  • Posto je receno u tekstu da su u udaljenim lokacijama pumpe koje pumpaju vodu u lokalni rezervoar itd., a i naglaseno je posle da je potrebno da "celokupan sistem funkcionise u realnom vremenu" ocigledno je neophodno upravljanje u realnom vremenu, pa je potreban PLC kako u centralnoj sobi, tako i u udaljenim lokacijama (radi sigurnosti, kako ne bi celokupno upravljanje zavisilo od jednog PLC iz centralne sobe); takodje, potrebno je dodati i HMI kako u centralnu sobu, tako i u udaljene lokacije kako bi bilo moguce upravljanje preko touch panela.
  • Posto smo zakljucili da su pumpe nasi uredjaji kojima upravljamo u realnom vremenu, njih povezujemo bakarnim kablovima unutar stanica sa PLC.
  • Posto je receno u tekstu da je potrebno da se u centralnoj stanici vizuelizuju i beleze podaci, potreban je PC sa SCADA-om u centralnoj sobi.
  • Posto nema potrebe da se unutar udaljenih lokacija kao i unutar centralne sobe koriste opticki kablovi jer su tu male udaljenosti, potrebno je na ulazima u sve stanice postaviti pretvarac koji konvertuje opticki signal u elektricni, i obrnuto - na ovaj nacin se unutar svih stanica mogu koristiti bakarni kablovi, a opticki se koriste samo za povezivanje udaljenih lokacija sa centralnom sobom.

Jul 2020

(10) Glavni ste projektant i treba da napravite sistem i projektujete mrežu koja ima po 150 senzora nivoa (koji imaju izlaze 0-10V) u rezervoarima u dve prostorije koje su međusobno i od prostorije gde se nalazl sistem upravljanja udaljene po 300m. Kod centralne prostorije nalazl se centralni rezervoar sa senzorima nivoa i pumpama. U svakoj prostoriji potrebno je obezbediti mogućnost praćenja nivoa, ali rad pumpi koje se nalaze u tim prostorijama, u zavlsnosti od nivoa u rezervoarima. Treba da napravite sistem koji poseduje mogućnost da vizuelizuje i beleži nivoe rezervoara praktično neograničeno. Detaljno projektovati dati sistem, postaviti i skicirati mrežu, predložiti tip protokola komunikacije, tip mreže, PLC, PC računar. Projektovati ekonomski najpovoljnije rešenje.

Rešenje

  • Posto je receno da postoje dve udaljene prostorije i u svakoj ima po 150 senzora nivoa, a takodje postoje i pumpe u ovim prostorijama, to nam govori da ima preko 300 uredjaja u ovoj mrezi, odakle odmah zakljucujemo da ne mogu da se iskoriste niti MODBUS (podrzava najvise 32 uredjaja) niti PROFIBUS (podrzava najvise 128 uredjaja) protokoli, vec mora PROFINET protokol jer on podrzava neogranicen broj uredjaja.
  • Cim imamo pumpe u udaljenim prostorijama, to znaci da je potrebno upravljanje u realnom vremenu, pa je potreban PLC kako u centralnoj sobi, tako i u udaljenim prostorijama; takodje, potrebno je dodati i HMI u sve stanice; sve se povezuje sa svicevima - PLC, HMI, PC sa SCADA i stanice onda medjusobno povezujemo tako sto povezemo njihove sviceve.
  • Posto je receno u tekstu da su u udaljenim lokacijama pumpe koje pumpaju vodu u lokalni rezervoar itd., a i naglaseno je posle da je potrebno da "celokupan sistem funkcionise u realnom vremenu" ocigledno je neophodno upravljanje u realnom vremenu, pa je potreban PLC kako u centralnoj sobi, tako i u udaljenim lokacijama (radi sigurnosti, kako ne bi celokupno upravljanje zavisilo od jednog PLC iz centralne sobe); takodje, potrebno je dodati i HMI kako u centralnu sobu, tako i u udaljene lokacije kako bi bilo moguce upravljanje preko touch panela.
  • Posto je potrebna vizuelizacija i pamcenje podataka, u centralnoj sobi je potreban PC sa SCADA.
  • Posto je udaljenost izmedju centralne stanice i udaljenih prostorija 300m, nije moguce iskoristiti PROFINET sa bakarnim kablovima jer je njima domet 100m, tako da su neophodni opticki kablovi za povezivanje centralne prostorije sa udaljenim - takodje su onda potrebni i pretvaraci na ulazima u sve stanice koji konvertuju opticki signal u elektricni i obrnuto jer nema potrebe koristiti opticke kablove unutar samih stanica, vec je moguce tu iskoristiti bakarne kablove - to je svakako jeftinije resenje i racionalnije a i trazeno je u tekstu zadatka da isprojektujemo najekonomicnije resenje.
  • Moguce je povezati stanice bilo u ring (moze i double ring radi redundanse) bilo u star topologiju.

Jun 2019

(10) Glavni ste elektro projektant i treba da napravite sistem koji ima 400 senzora nivoa u 400 rezervora na 10 udaljenih lokacija, ravnomerno rasporedenih, tj. po 40 rezervoara po lokaciji. Treba da napravite sistem koji poseduje mogućnosti da vizuelizuje i beleži nivoe rezervoara praktično neograničeno. Detaljno projektovati dati sistem, nacrtati raspored opreme, odabrati svu opremu, dati raspored kompletne opreme, tako da neko može na osnovu vašeg projekta da nabavi sav potreban hardware i software, predložiti tip protokola komunikacije, kao i vrstu mreže...

Rešenje

  • Posto ima ukupno 400 senzora nivoa koji treba da budu u mrezi, to odmah govori da moramo da koristimo PROFINET protokol za komunikaciju jer MODBUS protokol podrzava do 32 uredjaja, a PROFIBUS do 128, dok PROFINET podrzava neogranicen broj uredjaja.
  • Iz teksta zadatka vidimo da nije potrebno obezbediti nikakvo upravljanje u realnom vremenu, vec samo nadzor, tj. ocitavanje vrednosti iz svih ovih senzora nivoa. Ovo znaci da nam uopste nije potreban PLC ni u jednoj stanici, kao ni HMI. Dovoljno je da svih 400 senzora budu pametni senzori koji ce slati vrednosti koje ocitaju preko mreze do centralne prostorije.
  • U centralnoj prostoriji je potreban PC sa SCADA kako bi mogli da se vizuelizuju i beleze podaci koje salju pametni senzori iz udaljenih lokacija.
  • Posto je potrebna vizuelizacija i pamcenje podataka, u centralnoj sobi je potreban PC sa SCADA.
  • Posto nije data udaljenost izmedju centralne stanice i ostalih stanica, pretpostavicemo da ce opticki kablovi odraditi posao i njih cemo onda iskoristiti za povezivanje stanica.
  • U svakoj stanici je potrebno nacrtati po switch, i stanice medjusobno povezujemo tako sto povezemo switch-eve. Posto je u pitanju PROFINET protokol, mozemo ih povezati u star ili ring (moze i double ring radi redundanse) topologiju.
  • Da bismo optimizovali troskove, dodacemo i pretvarace koji konvertuju opticke signale u elektricne i obrnuto na ulazu svake stanice jer nema potrebe da se unutar stanica koriste opticki kablovi, vec mogu bakarni.

Jun 2018

(10) Glavni ste projektant i treba da napravite sistem i projektujete mrežu koja ima po 150 senzora nivoa u rezervoarima u dve prostorije koje su međusobno i od prostorije gde se nalazi sistem upravljanja udaljene po 300m. U svakoj prostoriji potrebno je obezbediti mogućnost praćenja nivoa, a1i rad pumpi koje se nalaze u tim prostorijama, u zavisnosti od nivoa u rezervoarima. Treba da napravite sistem koji poseduje mogućnosti da vizelizuje i beleži nivoe rezervoara praktično neograničeno. Detaljno projektovati dati sistem, postaviti i skicirati mrežu, predložiti tip protokola komunikacije, vrstu mreže, PLC, PC računar...

Rešenje

  • Posto je receno da postoje dve udaljene prostorije i u svakoj ima po 150 senzora nivoa, a takodje postoje i pumpe u ovim prostorijama, to nam govori da ima preko 300 uredjaja u ovoj mrezi, odakle odmah zakljucujemo da ne mogu da se iskoriste niti MODBUS (podrzava najvise 32 uredjaja) niti PROFIBUS (podrzava najvise 128 uredjaja) protokoli, vec mora PROFINET protokol jer on podrzava neogranicen broj uredjaja.
  • Cim imamo pumpe u udaljenim prostorijama, to znaci da je potrebno upravljanje u realnom vremenu, pa je potreban PLC kako u centralnoj sobi, tako i u udaljenim prostorijama; takodje, potrebno je dodati i HMI u sve stanice; sve se povezuje sa svicevima - PLC, HMI, PC sa SCADA i stanice onda medjusobno povezujemo tako sto povezemo njihove sviceve.
  • Posto je receno u tekstu da su u udaljenim lokacijama pumpe koje pumpaju vodu u lokalni rezervoar itd., a i naglaseno je posle da je potrebno da "celokupan sistem funkcionise u realnom vremenu" ocigledno je neophodno upravljanje u realnom vremenu, pa je potreban PLC kako u centralnoj sobi, tako i u udaljenim lokacijama (radi sigurnosti, kako ne bi celokupno upravljanje zavisilo od jednog PLC iz centralne sobe); takodje, potrebno je dodati i HMI kako u centralnu sobu, tako i u udaljene lokacije kako bi bilo moguce upravljanje preko touch panela.
  • Posto je potrebna vizuelizacija i pamcenje podataka, u centralnoj sobi je potreban PC sa SCADA.
  • Posto je udaljenost izmedju centralne stanice i udaljenih prostorija 300m, nije moguce iskoristiti PROFINET sa bakarnim kablovima jer je njima domet 100m, tako da su neophodni opticki kablovi za povezivanje centralne prostorije sa udaljenim - takodje su onda potrebni i pretvaraci na ulazima u sve stanice koji konvertuju opticki signal u elektricni i obrnuto jer nema potrebe koristiti opticke kablove unutar samih stanica, vec je moguce tu iskoristiti bakarne kablove - to je svakako jeftinije resenje i racionalnije a i trazeno je u tekstu zadatka da isprojektujemo najekonomicnije resenje.
  • Moguce je povezati stanice bilo u ring (moze i double ring radi redundanse) bilo u star topologiju.

GRAFCET programiranje

Jun 2018

Dijagram iz trećeg zadatka iz junskog roka 2018. godine.

(10) Dat je GRAPHCET[sic] dijagram sistema. Šta radi ovaj sistem i objasniti rečima kako radi.

Jun 2020

(9) Nacrtati GRAFCET dijagram za zadatak 1.

Jul 2020

(10) Nacrtati GRAFCET dijagram za zadatak 1.










Regulatori

void sleep(int seconds)
{
    // simulacija thread sleep
}

int main()
{
    float r; // referenca

    float y;                   // merenje
    float y_max = 40.0;        // maksimalna prava digitalna vrednost merenja
    float y_scaled_max = 1023; // maksimalna skalirana digitalna vrednost merenja koju moze da vrati analogno-digitalni konvertor

    float e_current;  // greska u trenutnoj periodi odabiranja
    float e_previous; // greska u prosloj periodi odabiranja

    float u;                   // upravljanje
    float u_min = 0.0;         // minimalna prava digitalna vrednost upravljanja
    float u_max = 100.0;       // maksimalna prava digitalna vrednost upravljanja
    float u_scaled_max = 4095; // maksimalna skalirana digitalna vrednost upravljanja koju moze da primi digitalno-analogni konvertor
    float u_man;               // upravljanje u rucnom rezimu rada
    float u_p = 0;             // upravljanje poteklo od proporcionalnog dejstva
    float u_i = 0;             // upravljanje poteklo od integralnog dejstva
    float u_d = 0;             // upravljanje poteklo od diferencijalnog dejstva

    float k_p = 4.0; // konstanta proporcionalnog dejstva

    float t_i = 0.5;               // vremenska konstanta integralnog dejstva
    float t_s = 0.1;               // perioda odabiranja (u sekundama)
    float k_i = (k_p / t_i) * t_s; // konstanta integralnog dejstva

    float t_d = 2.0;               // vremenska konstanta diferencijalnog dejstva
    float k_d = (k_p / t_s) * t_d; // konstanta diferencijalnog dejstva

    bool auto_current;          // da li je sistem u trenutnoj periodi odabiranja u automatskom rezimu rada
    bool auto_previous = false; // da li je sistem u prosloj periodi odabiranja bio u automatskom rezimu rada

    while (true)
    {
        // simulacija izvrsenja prekidne rutine

        // trenutno se u promenljivoj y nalazi skalirana digitalna vrednost koju je izracunao analogno-digitalni
        // konvertor, pa je neophodno prvo izracunati pravu digitalnu vrednost y
        y = (y / y_scaled_max) * y_max;

        if (auto_current == true)
        {
            // automatski rezim rada

            // obezbedjivanje bumpless prelaza iz rucnog u automatski rezim rada
            if (auto_previous == false)
            {
                r = y;          // ovo garantuje da ce u_p biti 0 sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
                u_i = u_man;    // ovo garantuje da ce u_i biti u_man sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
                e_previous = 0; // ovo garantuje da ce u_d biti 0 sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
            }

            // automatsko azuriranje upravljanja
            e_current = r - y;
            u_p = k_p * e_current;
            u_i = u_i + k_i * e_current;
            u_d = k_d * (e_current - e_previous);
            u = u_p + u_i + u_d;
            
            // obezbedjivanje zastite od navijanja (anti-windup)
            if (u > u_max)
            {
                u = u_max;
                u_i = u_i - k_i * e_current; // integralno dejstvo ne treba akumulirati kada je upravljanje dostiglo svoju maksimalnu vrednost
            }
            if (u < u_min)
            {
                u = u_min;
                u_i = u_i - k_i * e_current; // integralno dejstvo ne treba akumulirati kada je upravljanje dostiglo svoju minimalnu vrednost
            }

            // obezbedjivanje bumpless prelaza iz automatskog u rucni rezim rada
            u_man = u;

            // pamcenje greske iz tekuce periode odabiranja da bi se u narednoj periodi odabiranja sacuvala ta informacija zbog racunanja diferencijalnog dejstva
            e_previous = e_current;

            // pamcenje informacije o rezimu rada iz tekuce periode odabiranja da bi se u narednoj periodi
            // odabiranja znalo da li je potrebno izvrsiti kod koji obezbedjuje bumpless prelaz iz rucnog u automatski rezim
            auto_previous = true;
        }
        else
        {
            // rucni rezim rada

            // rucno azuriranje upravljanja
            if (u_man < u_min)
            {
                u = u_min;
            }
            else if (u_man > u_max)
            {
                u = u_max;
            }
            else
            {
                u = u_man;
            }

            // ova dodela se radi kako bi se dodatno potvrdilo da je sistem u rucnom rezimu rada time sto ce grafik reference biti isti kao grafik merenja
            r = y;

            // pamcenje informacije o rezimu rada iz tekuce periode odabiranja da bi se u narednoj periodi
            // odabiranja znalo da li je potrebno izvrsiti kod koji obezbedjuje bumpless prelaz iz rucnog u automatski rezim
            auto_previous = false;
        }

        // trenutno se u promenljivoj u nalazi prava digitalna vrednost upravljanja, pa je potrebno izracunati skaliranu
        // digitalnu vrednost upravljanja kako bi se ona dovela na ulaz digitalno-analognog konvertora
        u = (u / u_max) * u_scaled_max;

        // simulacija prekidne rutine pomocu beskonacne while petlje i thread sleep tako sto uspavamo glavnu nit na t_s sekundi, sto je upravo perioda odabiranja
        // inace bi se prekidna rutina automatski izvrsavala periodicno sa razmakom od t_s sekundi izmedju dva uzastopna izvrsavanja
        sleep(t_s);
    }

    return 0;
}