Download as pdf or txt
Download as pdf or txt
You are on page 1of 27

Univerzitet u Sarajevu

Elektrotehnički fakultet u Sarajevu

SoMachine: Logic Builder,

Materijal pripremio:
Josip Franjić

Sarajevo, Juli 2020


1 SoMachine
SoMachine je Schneiderov alat za razvijanje programa namjenjenih za PLC-
ove srednjih klasa. Softver je dizajniran na način da bude intuitivan te je diza-
jniran po IEC 61131-3 standardu propisanog od strane Codesys-a. Budući da
je dizajniran za PLC-ove boljih performansi od Zelio PLR-a takoder posje-
duje veći broj funkcionalnosti i mogućnosti od ZelioSofta koje će biti obradene
u ovom poglavlju.

1.1 Kreiranje projekta u SoMachine V4.3


U ovom poglavlju će se opisati programiranje PLC-a korištenjem softverskog
paketa SoMachine, kako konfigurisati PLC, kako odabrati tip programiranja
te kako izvršiti simulaciju rada odabranog PLC-a [4].

Kada se pokrene SoMachine otvara se prozor kao na slici 1. U ovom ko-


raku se može odabrati ”Create new program” (označeno crvenom bojom na
slici), ako se želi napraviti novi program u SoMachine ili ”Open an existing
program” ako postoji program koji je kreiran ranije.

Slika 1: Početni prozor nakon otvaranja SoMachine.

Nakon kreiranja novog programa potrebno je izvršiti konfiguraciju, tj.

1
dodavanje hardvera koji će se koristiti. Klikom na ”Configuration” (označen
crvenom bojom na slici 2), otvara se prozor kao na slici 3.

Slika 2: Dodavanje hardvera potrebnog za realizaciju projekta u SoMachine.

Kao što je prikazano na slici 3 moguće je odabrati PLC s različitim speci-


fikacijama. Potrebno je odabrati onaj tip PLC-a koji će se koristiti za izradu
projekta, jer pogrešan odabir PLC-a može dovesti do toga da se odredene
funkcionalnosti ne mogu koristiti. U nastavku rada obradit će se PLC iz
M241 serije.

2
Slika 3: Odabir PLC-a potrebnog za realizaciju projekta u SoMachine.

Nakon odabira PLC-a potrebno je odabrati HMI modul. Ovaj dio je


opcionalan tj. PLC može sam po sebi funkcionirati i bez HMI modula. U
nastavku rada odabrat će se HMI iz HMISTU serije (slika 4).

Slika 4: Odabir HMI modula potrebnog za realizaciju projekta u SoMachine.

Nakon odabira hardvera klikom na ”Controller” (označeno crvenom bo-


jom na slici 5) završava se konfigurisanje hardvera te se može preći na naredni

3
korak tj. programiranje PLC-a i HMI-a što će biti objašnjeno u sljedećem
potpoglavlju.

Slika 5: Odabir programiranja PLC-a u SoMachine.

1.2 Kreiranje programa u SoMachine


Nakon odabira ikone ”Controller” prelazi se na ”Applications tree” (označen
crvenom bojom na slici 6). Nakon toga kreira se novi POU (engl. Program
Organization Unit) koji služi za kreiranje programa. POU može biti: Ladder,
FBD, SFC, ST, IL. Uobičajeno se koristi ST.

4
Slika 6: Kreiranje POU u SoMachine.

Nakon kreiranja POU potrebno je kreirati varijable koje će se koristiti


unutar programa. Varijable se kreiraju klikom na ”GLV” (označen crvenom
bojom na slici 7) a zatim na ”insert” dugme (označen crvenom bojom na
slici 7).

Slika 7: Kreiranje globalnih varijabli u SoMachine.

Nakon klika na ”Insert” dodaje se varijabla te joj se pridružuje naziv.

5
Varijable mogu biti različitog tipa. Tip varijable se mijenja klikom na ”Input
assistant” (slika 8).

Slika 8: Input assistant za dodavanje varijabli u SoMachine.

Nakon klika na ”Input assistant” mogu se odabrati različiti tipovi varijabli


(slika 9). Svi standardni tipovi varijabli su isti kao i u drugim programskim
jezicima. Takoder, potrebno je naglasiti i ”Structured Types” koje pred-
stavljaju strukture iz C, C++ programskih jezika. Ove tipove detaljno će se
obraditi u poglavlju 1.4.

6
Slika 9: Različiti tipovi varijabli u SoMachine.

Nakon kreiranja potrebnih varijabli (A i B ulazi i motor izlaz) kreirati će


se jednostavan program u POU (slika 10). Zatim se izvrši dvostruki klik na
”Devices tree” (Označeno crvenom bojom na slici 10).

Slika 10: Devices tree.

Nakon klika na ”Devices tree” kofigurišu se digitalni ulazi i izlazi (DI, DO;

7
označeni zelenom bojom na slici 11). Zatim se klikne na 3 tačke (Označene
plavom bojom na slici 11). Ponekad se može desiti greška te je potrebno prije
kofiguristanja resetirati ulaze/izlaze pritiskom na dugme ”Reset mapping”
(označen crvenom bojom na slici 11). Važno je napomenuti da program se
može simulirati i bez ove konfiguracije. Ovaj korak je neophodno uraditi za
slučaj da se program piše za stvarni PLC gdje će se povezati ulazni i izlazni
moduli.

Slika 11: Konfiguracija digitalnih izlaza i ulaza u SoMachine.

Važna stvar jeste da se POU povuče (engl. drag and drop) u master
task. Ovo je jako česta greška jer se program neće izvršavati ako nije dodi-
jeljen u master task. (označeno crvenom bojom na slici 12). Nakon toga
se kompajlira kod (označeno plavom bojom na slici 12). U slučaju da POU
nije dodijeljen u master task, bilo kakva greška u POU se neće registrirati.
Dok POU nije u master tasku on se i ne izvršava. Kao i u svakom dru-
gom programskom jeziku bitno je da nema grešaka, dok se upozorenja mogu
ignorirati.

8
Slika 12: Povlačenje POU u master task u SoMachine.

Zatim se simulacija pokrene klikom na Online → Simulation (Slika 13).

Slika 13: Pokretanje simulacije u SoMachine.

Nakon omogućavanja simulacije potrebno se logirati u PLC koji emulira


PC (označeno crvenom bojom na slici 14). Zatim se izvrši klik na ”Yes”
(te ponovo ”Yes” ako se ova opcija pojavi). Nakon ove potvrde PC simulira
ponašanje odabranog PLC-a u skladu s odabranim ulazima.

9
Slika 14: Logiranje programa na PLC u SoMachine.

Nakon akcije login potrebno je kliknuti ”Start” dugme (označeno crvenom


bojom na slici 15). Nakon klika na start može se početi testirati program.
Testiranje se vrši tako što u ”Prepared value” (označen plavom bojom na slici
15) se unese vrijednost koju varijabla treba poprimiti, te zatim na tastaturi
se pretisne ctrl+F7. U slučaju da se želi ponovno mijenjati program potrebno
je prvo kliknuti ”logout” dugme (označeno zelenom bojom na slici 15).

Slika 15: Start i simulacija kreiranog programa u SoMachine.

10
1.3 Kreiranje korisničkog interfejsa u SoMachine
Nakon potvrde da se program izvršava u željenom maniru može se pristupiti
izradi HMI-a. U ovom poglavlju će se opisati kako dizajnirati HMI.
Prvi korak je da se u SoMachine-u odabere opcija ”Tools tree” (označen
crvenom bojom na slici 16) te se doda ”Symbol configuration”.

Slika 16: Dodavanje ”Symbol configuration” u SoMachine.

Nakon dodavanja ”Symbol configuration” potrebno je kliknuti na dodatno


build dugme (označeno crvenom bojom na slici 17).

11
Slika 17: Kompajliranje ”Symbol configuration” u SoMachine.

Zatim je potrebno omogućiti GLV (označeno crvenom bojom na slici 18)


te izvršiti još jedno kompajliranje.

Slika 18: Dodavanje GLV u ”Symbol configuration” u SoMachine.

Nakon toga potrebno je odabrati ”Devices tree” te izvršiti dvostruki klik


na ”MyController” (označen crvenom bojom na slici 19) kako bi se vidio PLC
koji se simulira. Zatim dvostrukim klikom na ”nodename” (označen zelenom

12
bojom na slici 19) izvrši se kopiranje nodename (označeno plavom bojom na
slici 19).

Slika 19: Kopiranje nodename u SoMachine.

Nakon kopiranja nodename potrebno je otići u central (označen crvenom


bojom na slici 20).

Slika 20: Vraćanje u central u SoMachine.

13
Zatim se izvrši dvostruki klik na ”HMI” (označen crvenom bojom na slici
21).

Slika 21: Odabir programiranja HMI modula u SoMachine.

Nakon što odabira ”HMI” tzv. ”Vijeo Frame” potrebno je izvršiti dvostruki
klik na HMI (označen crvenom bojom na slici 22). Nakon omogućavanja
prikaza ”Host Name” se unosi željeni nodename (označen zelenom bojom na
slici 22).

14
Slika 22: Unošenje nodename u HMI u svrhe povezivanja HMI modula s
PLC-om u SoMachine.

Zatim je potrebno odabrati ”IO Manager” (označen crvenom bojom na


slici 23) →” SOM HMIS5T (označen zelenom bojom na slici 23). Zatim se
unese kopirani nodename u ”Equipment Adress” (označen plavom bojom na
slici 23).

Slika 23: Unošenje nodename u adresu HMI modula u SoMachine.

15
Po završetku konfiguracije potrebno je odabrati prvi panel (označen cr-
venom bojom na slici 24).

Slika 24: Prikaz dodavanja prekidača i tastera u HMI.

Nakon kreiranja HMI-a sa željenim funkcionalnostima potrebno je izvršiti


simulaciju kako bi se provjerila ispravnost rada istog. Kao prvo, potrebno
je odabrati build → build all (slika 24) a zatim build → Simulation. Ako
je sve ispravno konfigurisano simulacija će se izvršavati na željeni način a
pomoću HMI-a će se ostvarivati željene kontrole. Pri pokretanju simulacije,
SoMachine projekt tj. Logic Builder, zajedno s opcijom start treba biti i
omogućen.

16
1.4 Programiranje u SoMachine posredstvom Struk-
tuiranog teksta
Kada se rade zadaci sa FBD-om, nakon odredenog stepena težine zadatak se
zakomplicira i postaje nepregledan. Upravo iz tog razloga se pojavljuje novi
oblik programiranja za PLC-ove a to je tekstualno programiranje. Tekstualno
programe je lakše održavati te u slučajevima kada se radi u timu lakše je
drugim članovima tima čitati program jer se mogu dodavati komentari pored
svake linije koda. Takoder, prednost SoMachine u odnosu na ZelioSoft jeste
činjenica da na PLC-ove u SoMachine se može priključiti HMI, s više opcija
nego što je to u slučaju PLC-ova iz serije Zelio te koji putem etherneta mogu
komunicirati sa PLC-om u realnom vremenu što je prednost jer se može imati
PLC na jednom kraju postrojenja dok se HMI nalazi u centralnoj prostoriji.
U ovom potpoglavlju će se objasniti kako pisati programe u ST te kako PLC
povezati sa HMI.

1.4.1 Varijable u struktuiranom tekstu


Primitivni tipovi
U primitivne tipove spadaju tipovi varijabli poput bool, integer, real (float),
string. Potrebno je naglasiti jednu razliku a to je da je znak ”=” u ST
zamjenjem znakom ”:=” a znak ”==” zamjenjen znakom ”=”. Takoder,
stringovi se okružuju jednostrukim navodnim znacima a ne dvostrukim kao
u drugim programskim jezicima.

Struktuirani tipovi

• Bistablina funkcija (RS flip flop, SR flip flop) - Standardni bista-


bilni flip flop. Kod RS flip-flopa reset ima veći prioritet dok kod SR
flip-flopa set ima veći prioritet.

Način na koji se inicijalizira ovaj blok je prikazan sljedećim


dijelom koda:

R s F l i p F l o p (SET1:= s 1 , RESET:= r 1 ) ;
i z l a z := R s F l i p F l o p . Q1 ;

17
Gdje su:

– s1 i r1 varijable tipa bool,


– RsFlipFlop.Q1 je stanje flip flopa.

• Brojači - Postoje tri tipa brojača CTU (engl. Counter Up), CTD
(engl. Counter Down) i CTUD (engl. Counter Up Down). Kod CTU
brojača se može brojati samo unaprijed, kod CTD brojača samo un-
azad dok kod CTUD se može brojati i unaprijed i unazad.

Način na koji se inicijalizira CTU blok je prikazan sljedećim


dijelom koda:

CTUbrojac (CU:= i m p u l s i g o r e , RESET:= r e s e t ,


PV:= max broj ) ;
i z l a z := CTUbrojac .Q ;
t r e n v r i j e d n o s t := CTUbrojac .CV;

Gdje su:

– impulsi gore - signal pomoću kojeg se broji broj impulsa. Na


pozitivnu ivicu povećava se broj koji je izbrojan sve se ne dostigne
max broj. U tom slučaju izlaz postaje log 1,
– reset - varijabla tipa bool. Ako je log 1 tada se izbrojana vrijed-
nost vraća na 0,
– max broj - Varijabla tipa WORD. Kada se izbroji do ove vrijed-
nosti tada se na izlazu javlja log 1,
– CTUbrojac.Q - Varijabla tipa bool. Predstavlja izlaz brojača,
– CTUbrojac.CV - Varijabla tipa WORD. Predstavlja trenutno
izbrojenu vrijednost brojača.

18
Način na koji se inicijalizira CTD blok je prikazan sljedećim
dijelom koda:

CTDbrojac (CD:= i m p u l s i d o l e , Load:= load ,


PV:= max broj ) ;
i z l a z := CTDbrojac .Q ;
t r e n v r i j e d n o s t := CTDbrojac .CV;

Gdje su:

– impulsi dole - signal pomoću kojeg se broji broj impulsa. Na


pozitivnu ivicu smanjuje se broj koji je izbrojan sve dok se ne
distgne nula. U tom slučaju izlaz postaje log 1,
– load - varijabla tipa bool. Ako je log 1 tada se izbrojana vrijednost
stavlja na max broj,
– max broj - Varijabla tipa WORD. Predstavlja maksimalnu vri-
jednost koju brojač može imati,
– CTDbrojac.Q - Varijabla tipa bool. Predstavlja izlaz brojača. U
početku na izlazu je log 1 jer ako nije ništa inicijalizirano trenutna
vrijednost brojača je nula,
– CTDbrojac.CV - Varijabla tipa WORD. Predstavlja trenutno
izbrojenu vrijednost. U početku je 0 sve dok nije podešeno da
load bude log 1. Ne može biti negativna.

Način na koji se inicijalizira CTUD blok je prikazan sljedećim


dijelom koda:

CTUDbrojac (CU := i m p u l s i g o r e , CD:= i m p u l s i d o l e ,


RESET := r e s e t , LOAD:= l o a d , PV:= max broj ) ;
i z l a z 1 := CTUDInst .QU ;
i z l a z 2 := CTUDInst .QD ;
t r e n v r i j e d n o s t := CTUDInst .CV;

19
CTUD predstavlja kombinacija CTD i CTU. Posjeduje 2 brojačka sig-
nala, jedan broji prema gore dok drugi prema dole. Takoder, blok
posjeduje 2 digitalna ulaza: load i reset, čija je funkcija ista kao i load
i reset u prethodnim brojačima.

Blok posjeduje 2 izlaza:

– CTUDInst.QU - Daje logičku jedinicu ako trenutna vrijednost


dostigne maximalnu vrijednost,
– CTUDInst.QD - Daje logičku jedinicu ako je trenutna vrijednost
jednaka 0.

• Tajmeri - Postoje 3 različita tipa tajmera. TOF (engl. timer off ),


TON (engl. timer on), TP (engl. timer pulse). TON je tajmer kod
kojeg prednja ivica kasni, TOF je tajmer kod kojeg zadnja ivica kasni
dok je TP tajmer koji reagira na pozitivnu ivicu na ulazu te na izlazu
daje vrijednost logičke jedinice onoliko dugo koliko je zadano putem
parametara.

TOF tajmer se inicijalizira na sljedeći način:

TOFtajmer ( IN := u l a z , PT:= T#5s ) ;


i z l a z :=TOFtajmer .Q;

TON tajmer se inicijalizira na sljedeći način:

TONtajmer ( IN := u l a z , PT:= T#5s ) ;


i z l a z :=TONtajmer .Q;

20
TP tajmer se inicijalizira na sljedeći način:

TPtajmer ( IN := u l a z , PT:= T#5s ) ;


i z l a z := TPtajmer .Q;

Ulaz i izlaz su varijable tipa bool.

• Okidači (engl. Trigger ) - Varijable koje detektuju ivice, nagle prom-


jene u signalu. Postoje 2 tipa okidača:

1. F TRIG - varijabla koja detektuje negativnu ivicu,


2. R TRIG - varijabla koja detektuje pozitivnu ivicu.

Kada bilo koja od varijabli detektuje promjenu ivice na trenutak postane


jednaka logičkoj jedinici.

F TRIG se inicijalizira na sljedeći način:

F o k i d a c (CLK:= u l a z ) ;
i z l a z := F o k i d a c .Q;

R TRIG se inicijalizira na sljedeći način:

R o k id a c (CLK:= u l a z ) ;
i z l a z := R o k id a c .Q;

Ulaz i izlaz su varijable tipa bool.

• PID (engl. proportional–integral–derivative) kontroler - Varijabla tipa


PID se može pronaći struktuiranim tipovima varijabli. Klikom na
”Util” biblioteku moguće je izabrati ”Controller” te na kraju je potrebno

21
izabrati ”PID”. Jednadžba PID regulatora glasi:

1
y = KP + + TV s (1)
TN s

Način na koji se konfiguriše PID varijabla u SoMachine jeste


sljedeći:

r e g u l a t o r .KP:= p r o p o r c i o n a l n a ;
r e g u l a t o r .TN:= i n t e g r a l n a ;
r e g u l a t o r .TV:= d e r i v a c i o n a ;
i z l a z := r e g u l a t o r .Y;
r e g u l a t o r .ACTUAL:= p o v r a t n a s p r e g a ;
r e g u l a t o r . SET POINT:= r e f e r e n t n a v r i j e d n o s t ;

Gdje su:

– Proporcionalna (KP ), integralna (TN ), derivaciona (TV )


konstante koje su zadane regulatoru u jednadžbi 1,
– izlaz je signal koji se dobiva sa regulatora tj. signal koji se šalje
na izvršni organ (obično neki aktuator, grijač i slično),
– povratna sprega je vrijednost koja se mjeri u sistemu tj. vrijed-
nost varijable sa kojom se upravlja, stvarna, trenutačna vrijednost,
– referentna vrijednost je zadana vrijednost koju varijabla kojom
se upravlja treba da dostigne.

• HSC (engl. High Speed Counters) - Brojači velike brzine. Koriste se


kada se žele brojati ulazi koji imaju brze impulse, tj. gdje se obične
brojače ne može koristiti npr. za enkodere. Varijabla se bira tako što
se unutar struktuiranih tipova odabere sljedeće: ”SEC HSC”→”HSC”
→”HSCMain M241”. ”M241” označava tip PLC-a koji se koristi, u
konkretnom slučaju PLC klase M241.

22
Primjer korištenja HSC u ST:

HscMainDualPhase 0 . EN Enable := o m o g u c i b r o j a c ;
HscMainDualPhase 0 . EN Preset := preset HSC ;
HscMainDualPhase 0 . F Enable := o m o g u c i e n k o d e r ;
HscMainDualPhase 0 . F P r e s e t := p r e s e t e n k o d e r ;
t r e n u t n o i z b r o j e n o := HscMainDualPhase 0 . CurrentValue ;

Gdje su:
– omoguci brojac - ako je postavljen na log 1, brojač broji (putem
eksternog ulaza ako je omogućen),
– preset HSC - ako je postavljen na log 1 izbrojena vrijednost je
postavljena na vrijednost koja je zadana HSC-u,
– omoguci enkoder - ako je postavljen na log 1 brojač broji (in-
terno postavljeno),
– preset enkoder - ako je postavljen na log 1 izbrojena vrijednost
je postavljena na vrijednost koja se nalazi u HSC (putem eksternog
ulaza ako je omogućem)(interno postavljena),
– trenutno izbrojeno - trenutna vrijednost brojača.
• PWM (engl. Pulse Width Modulation) - Način na koji se bira PWM
varijabla jeste da unutar struktuiranih tipova se odabere: SEC PTOP-
WM→PWM→PWM M241.

Način na koji se konfiguriše PWM varijabla u SoMachine jeste


sljedeći:

PWM 0. EN Enable := p w m e n a b l e e k s t e r n o ;
PWM 0. Duty:= pwm duty cycle ;
PWM 0. Frequency := f r e k v e n c i j a ;
PWM 0. H i g h P r e c i s i o n := v i s o k a p r e c i z n o s t ;
PWM 0. F Enable := p w m e n a b l e i n t e r n o ;

23
Gdje su:

– pwm enable eksterno - Ako je postavljeno na log 1 moguće je


eksterno omogućiti/onemogućiti PWM,
– pwm duty cycle - Trajanje pozitivnog dijela impulsa u PWM
signalu od 0 do 100 (1% do 100%) tj. od 0 do 1000 (0.1% do
100%), ako je omogućena visoka preciznost,
– frekvencija - Izlazna frekvencija PWM signala 1-200 000 (0.1
[Hz] do 20 000[Hz]),
– visoka preciznost - Ako je omogućena visoka preciznost tada
pwm duty cycle se kreće od 0 do 1000,
– pwm enable interno - Ako je postavljen na 1 tada PWM signal
se generiše na izlazu.

1.4.2 Sintaksa
U ovom poglavlju će se pokazati korištenje uslova: ”IF”, ”SWITCH-CASE”,
”FOR”, ”WILE” i ”JMP”.

Korištenje IF uslova je pokazano sljedećim kodom:

IF D<0 THEN
C:=A;
ELSIF D=0.0 THEN
C:=B ;
ELSE
C:=D;
END IF ;

Korištenje SWITCH-CASE strukture je pokazano sljedećim kodom:

24
CASE i n t e e g e r OF
1 : var1 := TRUE;
2 : var2 := TRUE;
ELSE
var1 := FALSE ;
var2 := FALSE ;
END CASE ;

Korištenje FOR petlje je pokazano sljedećim kodom::

J :=101;
FOR I :=1 TO 100 BY 2 DO
IF ARR[ I ] = 70 THEN
J:= I ;
’EXIT ;
END IF ;
END FOR;

Korištenje WHILE petlje je pokazano sljedećim kodom::

J :=1;
WHILE J<= 100 AND ARR[ J ] <> 70 DO
J:=J +2;
END WHILE ;

Korištenje JMP uslova je pokazano sljedećim kodom::

l a b e l 1 : i := i +1;
IF i =10 THEN

25
JMP l a b e l 2 ;
END IF
JMP l a b e l 1 ;
label2 :

26

You might also like