Upload
suboptimalnistanko
View
214
Download
0
Embed Size (px)
Citation preview
8/19/2019 PRAUT - 2007-08 - Predavanje04
1/35
Praktikum automatizacije
Predavanje 04 – Podatkovni
blokovi, funkcije i funkcijski
blokovi. Indirektno adresiranje.
8/19/2019 PRAUT - 2007-08 - Predavanje04
2/35
Praktikum automatizacije -- Predavanje 04 2
Sažetak Predavanja 03 (1)• PLC-e se konfigurira i programira putem programske
podrške na osobnom računalu
• Konfiguracijom se definira prisutno sklopovlje PLC-a iparametrira to sklopovlje
• Program se prebacuje na programabilne module – CPU
module• Program se piše u nekom od četiri jezika definirana
standardom IEC 61131-3: – LD
– FBD
– IL
– ST
8/19/2019 PRAUT - 2007-08 - Predavanje04
3/35
Praktikum automatizacije -- Predavanje 04 3
Sažetak Predavanja 03 (2)• Razmatrali smo programiranje osnovnih binarnih
operacija u LD, FBD i IL – Radni i mirni kontakti – Bistabili
– Detekcija brida RLO
• Razmatrali smo programiranje osnovnihdigitalnih operacija u LD, FBD i IL: – Aritmetičke operacije
– Operacije pretvorbe između tipova
– Operacije usporedbe
– Brojila
– Vremenski registri
8/19/2019 PRAUT - 2007-08 - Predavanje04
4/35
Praktikum automatizacije -- Predavanje 04 4
Pregled Predavanja 04• Programiranje PLC-a:
– Podatkovni blokovi (DB) – Logički blokovi
• Funkcije (FC)
• Funkcijski blokovi (FB)• Sistemske funkcije (SFC) i sistemski funkcijski blokovi (SFB)
• Nadgledanje PLC-a u radu
• Dijagnostika PLC-a• Indirektno adresiranje kod S7-300
8/19/2019 PRAUT - 2007-08 - Predavanje04
5/35
Praktikum automatizacije -- Predavanje 04 5
Memorijska mjesta za spremanje
podataka u PLC-u• Primjer Siemens PLC-a:
Bit memorija
PIQ
PII
Podatkovniblokovi
DBx
DBy
DBz
...
I/Opodruč je
L stog
Timer-i
Counter-i
Registri na
samim modulima
U njega se spremaju:
• privremene varijable u FC,FB,OB
• parametri koje se predaje FC
Sistemska memorija Radna memorija
8/19/2019 PRAUT - 2007-08 - Predavanje04
6/35
Praktikum automatizacije -- Predavanje 04 6
Podatkovni blokovi• Podatkovni blokovi su korisnički deklarirana područ ja
radne memorije namijenjena spremanju podataka
(nekoliko desetaka kB radne memorije iskoristivo za tusvrhu)
• Korisniku je nebitna fizička adresa podatkovnog bloka,samo relativna adresa podatka unutar bloka
• Podatkovni blokovi se međusobno razlikuju oznakom;npr. DB1, DB8, DB99,... – može im se, kao i logičkim blokovima, dodijeliti simboličko ime
radi lakšeg snalaženja u programu
• Prema namjeni, podatkovni blokovi se dijele na: – Dijeljene (engl. Shared DB) – pristupa im se iz bilo kojeg dijelakôda
– Pridružene (engl. Instance DB) – pristupa im se samo iz FBkojem su pridijeljeni prilikom poziva
8/19/2019 PRAUT - 2007-08 - Predavanje04
7/35
Praktikum automatizacije -- Predavanje 04 7
Deklaracija dijeljenog podatkovnog bloka• Podatkovni blok
deklarira senavođenjempodataka s pripadnimtipovima koje upodatkovnom blokutreba spremiti
• Navodi se također i inicijalnavrijednost na koju se
postavlja pripadnamemorijska lokacija prirezervaciji memorije (tj.prebacivanju bloka na PLC)
Ime
podatkaTip
podatka
Početna
vrijednostKomentar
Prebacivanje
na PLC
8/19/2019 PRAUT - 2007-08 - Predavanje04
8/35
Praktikum automatizacije -- Predavanje 04 8
Pregled podataka u podatkovnom bloku• Podatci se u
podatkovnom
bloku nadgledaju utzv. podatkovnompogledu (dataview)
Mogućnost
on-line
nadgledanja
podataka
8/19/2019 PRAUT - 2007-08 - Predavanje04
9/35
Praktikum automatizacije -- Predavanje 04 9
Adresiranje podataka u
podatkovnom bloku• I podatkovni blok se
može promatrati kaobyte-ovno orjentirana
memorijska tablica
DB99 (Simbol: Podatci)
Broj1
xx
Motor.Struja
Motor.Brzina
Mjerenja[1]
Mjerenja[2]
Mjerenja[3]
Mjerenja[4]
Mjerenja[5]
Mjerenja[6]
0
1
2
3
45
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Byte
DB99.DBW0 ili
“Podatci”.Broj1
DB99.DBX7.0 ili “Podatci”.Zastavica
DB99.DBB4 ili “Podatci”.xx[1]
DB99.DBD8 ili
“Podatci”.Motor.Struja
DB99.DBW12 ili
“Podatci”.Motor.Brzina
DB99.DBW18 ili
“Podatci”.Mjerenja[3]
8/19/2019 PRAUT - 2007-08 - Predavanje04
10/35
Praktikum automatizacije -- Predavanje 04 10
Rad s podatkovnim blokovima• Procesor posjeduje dva registra za adresiranje
podatkovnih blokova: – DB register 1 za adresiranje jednog dijeljenog DB – DB register 2 za adresiranje jednog pridruženog DB
• Podatkovni blok čija se brojčana oznaka trenutno nalaziu DB registru naziva se otvorenim
– Podatkovni blok otvara se u STL naredbom OPN:
• Radi mogućih kasnijih preinaka u programu ipodatkovnom bloku, najbolje je koristiti simbolički pristup
OPN DB99 //upisivanje adrese 99 u DB register 1
L DBD8ili L DB99.DBD8
L “Podatci”.Motor.Struja
OPN DI28 //upisivanje adrese 28 u DB register 2L DIB 7
ili L DI28.DBB7
8/19/2019 PRAUT - 2007-08 - Predavanje04
11/35
Praktikum automatizacije -- Predavanje 04 11
Blokovi kôda• Standardom IEC 61131-3 definirani su sljedeći
standardni blokovi kôda u PLC-ima: – Funkcije (FC) – Funkcijski blokovi (FB)
• FB ima pridružen podatkovni blok na kojeg
sprema vrijednosti ulaznih parametara pri pozivute statičke varijable bloka – Pridruženi podatkovni blok je privatni memorijski
prostor funkcijskog bloka
• FC nema statičkih varijabli niti privatnimemorijski prostor, a ulazni parametri joj sepredaju preko stoga
8/19/2019 PRAUT - 2007-08 - Predavanje04
12/35
Praktikum automatizacije -- Predavanje 04 12
Primjer funkcije bez formalnih
parametara• Promijenjeni primjer s
laboratorijskog bloka 1 –FC19
• Ova funkcija načinjena jeda obavi određeni posao
točno nad zadanimadresama: Q4.1, MW30,...
• Ne može se upotrijebiti za
obavljanje istog posla nadnekim drugim skupomadresa
8/19/2019 PRAUT - 2007-08 - Predavanje04
13/35
Praktikum automatizacije -- Predavanje 04 13
Blokovi s formalnim parametrima
• Kôd bloka često je potrebno iskoristiti na
nekoliko mjesta u programu, za obavljanje istihoperacija nad različitim adresama
• Da bi se to postiglo, blok se mora pisati s
formalnim ulaznim i izlaznim parametrima• To je sasvim prirodno u višim programskim
jezicima
• Programeri PLC-a koriste ovu mogućnost zastvaranje biblioteka vlastitih univerzalnih blokova
8/19/2019 PRAUT - 2007-08 - Predavanje04
14/35
Praktikum automatizacije -- Predavanje 04 14
Primjer funkcije s formalnim
parametrima (1)• Promatrajmo funkciju
FC19 i zaključimo koje suvarijable – ulazne (IN, samo ih se čita
funkcijom),
– izlazne (OUT, samo se na
njih piše funkcijom) – ulazno-izlazne (IN-OUT i
čita ih se i piše na njih)
– privremene (TEMP,
potrebne za spremanjemeđurezultata u funkciji, nitiulazne niti izlazne)
IN
IN
IN-OUT
IN-OUT
IN-OUT
IN-OUT
IN-OUT
IN-OUTTEMP TEMP OUT
8/19/2019 PRAUT - 2007-08 - Predavanje04
15/35
Praktikum automatizacije -- Predavanje 04 15
Primjer funkcije s formalnim
parametrima (2)
Poziv funkcije:
IN
IN-OUT
Zamjena apsolutnih
adresa u kôdu formalnim
parametrima
(kod snimljen pod imenom
FC29)
OUT
8/19/2019 PRAUT - 2007-08 - Predavanje04
16/35
Praktikum automatizacije -- Predavanje 04 16
Blokovi “s” memorijom• Bloku se može pridijeliti i privatni memorijski
prostor, kojemu samo instrukcije iz tog blokaimaju pravo pristupa – tada se radi ofunkcijskom bloku (FB)
• U taj prostor spremaju se varijable koje jepotrebno pamtiti iz poziva u poziv bloka (tzv.statičke varijable bloka)
• Primjer iz FC29: pomoćne memorije za
detekciju brida i broj događanja mogu se sakritiod ostatka kôda i spremati u podatkovni blokpridružen kôdu
8/19/2019 PRAUT - 2007-08 - Predavanje04
17/35
Praktikum automatizacije -- Predavanje 04 17
Funkcijski blok kojim se zamjenjuje
FC29 (1)• Kôd bloka sasvim je isti kao i kôd FC29;
drugačija je samo podjela formalnih parametarapo kategorijama
• Sve IN-OUT varijable proglasit ćemo statičkim
varijablama bloka i sakriti od ostatka kôda• Rezultirajući funkcijski blok imenujemo FB29
8/19/2019 PRAUT - 2007-08 - Predavanje04
18/35
Praktikum automatizacije -- Predavanje 04 18
Funkcijski blok kojim se zamjenjuje
FC29 (2)• Prema predlošku tablice
deklaracija funkcijskog blokastvara se podatkovni blokpridružen funkcijskom bloku;imenujemo ga npr. DB29:
• Funkcijski blok FB29 poziva se navodeći i njemu za tajpoziv pridruženi podatkovni blok:
Jednostavnije sučelje!
Statičke varijable su skrivene i korisnik
se o njihovom smještaju u memoriju
ne mora brinuti!
8/19/2019 PRAUT - 2007-08 - Predavanje04
19/35
Praktikum automatizacije -- Predavanje 04 19
Poziv funkcije ili funkcijskog bloka
iz IL
• Kada funkcija ili funkcijski blok imaju
parametre, pozivanje je u STL moguće jedino naredbom CALL
Pozivanje FC29: Pozivanje FB29:
CALL FB29, DB29
Driving_bit:=Q4.1
Reset_bit:=I1.0
BCD_prikaz:=MD18
CALL FC29
Driving_bit:=Q4.1
Reset_bit:=I1.0
BCD_prikaz:=MD18
Brid1:=M150.0
Brid2:=M150.1
Broj_pojavljivanja:=MD30
8/19/2019 PRAUT - 2007-08 - Predavanje04
20/35
Praktikum automatizacije -- Predavanje 04 20
Zauzeće lokalnog stoga s
privremenim varijablama (1)
2 5 6
B y t e - a
Događaj
Zauzećena L stogu
1
OB1
OB 1
1
Operacijskisustav
FC 20
sa priv.varijablama
FC20
FC17
OB1
3
3
FC17
OB1
4
4
OB1
FC17
6
6
FC 20
sa priv.varijablama
FC20
OB1
FC17
5
5
FC 17
sa priv.varijablama
2
OB1
FC17
2
7
OB1
7
256 byte-a na
razini prioriteta
cikličkog izvođenja
8/19/2019 PRAUT - 2007-08 - Predavanje04
21/35
Praktikum automatizacije -- Predavanje 04 21
Zauzeće lokalnog stoga s
privremenim varijablama (2)Izvršavanje
Za S7-300™:
Veličina L stogaKlasa prioriteta
256 byte1
27Startup (izvršava se samo jednom)
Cikličko izvršavanje
256 byte
256 byte
256 byte12
3
2Vremenski
uvjetovanoizvršavanje
Time-of-Day prekid
Time-Delay prekid
Ciklički prekid
Greška u ciklusu
256 byte16
28
26
256 byte
Događajemuvjetovanoizvršavanje
Sklopovski prekid
Greška pri pokretanju
Ukupna veličina:
1.5 kB
(CPU 313..316)
8/19/2019 PRAUT - 2007-08 - Predavanje04
22/35
Praktikum automatizacije -- Predavanje 04 22
Sistemske funkcije i sistemski
funkcijski blokovi• Skup instrukcija koje je proizvođač namijenio za
obavljanje specifičnih funkcija, primjer S7-300PLC-a (Standard Library):
– Čitanje sistemskog sata – SFC1 (simbol “READ_CLK”):
– Uvećanje IEC brojila – SFB0 (simbol “CTU”):
8/19/2019 PRAUT - 2007-08 - Predavanje04
23/35
Praktikum automatizacije -- Predavanje 04 23
Nadgledanje varijabli PLC-a• Standardom IEC 61131-3 nisu
propisane mogućnosti
programskih alata za rad sPLC-om u područ junadgledanja PLC-a u radu
• Međutim, funkcije nadgledanjaPLC-a u radu postale sustandardnim dijelom većineprograma za rad s PLC-ima
• RSLogix 500 (Allen Bradley):Custom Data Monitor,Histogram
• MelSoft (Mitsubishi): GX IECDeveloper
• Step 7 (Siemens):Monitor/Modify Variables,Monitor Block
RSLogix 500, Histogram:
Step 7, Monitor/Modify Variables:
Vremenska
baza za
crtanje
histograma
8/19/2019 PRAUT - 2007-08 - Predavanje04
24/35
Praktikum automatizacije -- Predavanje 04 24
Sistemska dijagnostika (1)• PLC na razini operacijskog sustava nadzire rad
korisničkog programa i sklopovlje PLC-a
• Pojava greške uzrokuje: – Poziv potprograma za obradu te vrste greške na najvišoj razini
prioriteta
– Zapis u dijagnostički spremnik
• Korisniku se na taj način omogućuje da u zasebnompotprogramu isprogramira reakciju PLC-a na svakupojedinu grešku
• Korisnik preko programskog alata za rad s PLC-om imamogućnost iščitavanja dijagnostičkog spremnika – Naknadna analiza zbog čega se dogodila neka greška na PLC-u
8/19/2019 PRAUT - 2007-08 - Predavanje04
25/35
Praktikum automatizacije -- Predavanje 04 25
Sistemska dijagnostika (2)• Često jedan potprogram može biti zadužen za više
podtipova grešaka
• Operacijski sustav u odgovarajućoj privremenoj varijablipotprograma zapisuje kôd događaja i na taj načinomogućuje korisniku da ima različite reakcije upotprogramu ovisno o podtipu greške
• Primjeri potprograma za obradu greške kod serije S7-300 (Siemens): – OB80: prekoračenje vremena ciklusa (kôd W#16#3501),...
– OB121: greška u BCD pretvorbi (kôd W#16#2521), kôd pozvanefunkcije nije prisutan u memoriji PLC-a (kôd W#16#253C), kôdpozvanog funkcijskog bloka nije prisutan u memoriji PLC-a (kôdW#16#253E),...
8/19/2019 PRAUT - 2007-08 - Predavanje04
26/35
Praktikum automatizacije -- Predavanje 04 26
Neposredno i direktno adresiranje
kod S7-300• Neposredno adresiranje (immediate
addressing):L -1 //učitavanje INT konstante -1 u ACCU1L L#-1 //učitavanje DINT konstante -1 u ACCU1
L DW#16#AB8ACCD2 //učitavanje 32-bitnog niza zapisanog u hex bazi
L TOD#17:00:05.457 //učitavanje Time_of_day konstante
• Direktno adresiranje (direct addressing): A Q7.1 //radni kontakt nad adresom Q7.1
L MW30 //učitavanje riječi s byte-ova 30 i 31 memorijskog polja M u ACCU1
SD T58 //rad s timer-om 58 u on-delay načinuL DB76.DBB7 //učitavanje byte-a 7 podatkovnog bloka 76 u ACCU1
L LW8 //učitavanje riječi iz dijela L-stoga pridijeljenom bloku, s adrese 8
8/19/2019 PRAUT - 2007-08 - Predavanje04
27/35
Praktikum automatizacije -- Predavanje 04 27
Indirektno adresiranje kod S7-300• Procesor S7-300 PLC-a posjeduje 2 32-bitna registra
zaspremanje adresa pri indirektnom adresiranju: AR1 i
AR2• Dva su tipa indirektnog adresiranja moguća:
– area-internal (unutar naredbom zadanog memorijskog područ ja);oblik adrese:
00000000 00000bbb bbbbbbbb bbbbbxxxb – bitovi koji određuju adresu byte-a
x – bitovi koji određuju adresu bita
– area-crossing (unutar memorijskog područ ja zadanog adresom);
oblik adrese:10000yyy 00000bbb bbbbbbbb bbbbbxxx
y – identifikator memorijskog područ ja
8/19/2019 PRAUT - 2007-08 - Predavanje04
28/35
Praktikum automatizacije -- Predavanje 04 28
Identifikator memorijskog područ ja
• Pridruženje između kodova i memorijskih polja kodindirektnog adresiranja unutar memorijskog područ ja
zadanog adresom:1000 0yyy
P 1000 0000 80 I/O područ je
I 1000 0001 81 PII
Q 1000 0010 82 PIQM 1000 0011 83 Bitovna memorija
DB 1000 0100 84 Otvoreni dijeljeni DB
DI 1000 0101 85 Otvoreni pridruženi DBL 1000 0110 86 Lokalni stog
VL 1000 0111 87 Parametri FC na lok. stogu
8/19/2019 PRAUT - 2007-08 - Predavanje04
29/35
Praktikum automatizacije -- Predavanje 04 29
Adresna konstanta• Konstantu tipa adrese moguće je sažeto zapisati
naredbom:L P#10.0 //area-internal adresa učitava se u ACCU1
L P#I10.0 //area-crossing adresa učitava se u ACCU1
• Postoje i posebne naredbe kojima se sadržaj ACCU1 prebacuje u adresni registar AR1 ili AR2i obrnuto
LAR1 //sadržaj ACCU1 ide u AR1
LAR2 //sadržaj ACCU1 ide u AR2
LAR1 P#30.2 //AR1 puni se area-internal adresnom konstantom
LAR2 P#Q2.7 //AR2 puni se area-crossing adresnom konstantom
TAR1 //sadržaj AR1 ide u ACCU1
TAR2 //sadržaj AR2 ide u ACCU1
8/19/2019 PRAUT - 2007-08 - Predavanje04
30/35
Praktikum automatizacije -- Predavanje 04 30
Indirektno adresiranje (1)• Moguće je adresiranje s podatcima u poljima L,
M, DB, DI
• Indirektno adresiranje timer-a i counter-a:SD T [LW 8] // rad s timer-om čiji je broj zapisan u LW 8
CU C [DBW 2] // rad s counter-om čiji je broj zapisan u trenutnootvorenom dijeljenom DB u njegovoj riječi na adresi 2
• Area-internal indirektno adresiranje (memorijskopolje navodi se u naredbi): A I [LD 2] //AND s bitom u polju I čija je adresa zapisana kao
area-internal pointer u LD 2
O I [MD 10] //OR s bitom u polju I čija je adresa zapisana kao area-
internal pointer u MD 10XN Q [DBD 7] //...
A M [DID 5]
A M [MD 2]
Primjer:
L P#2.4
T MD 10
A I [MD 10]
A I2.4
8/19/2019 PRAUT - 2007-08 - Predavanje04
31/35
Praktikum automatizacije -- Predavanje 04 31
Indirektno adresiranje (2)• Area-internal indirektno adresiranje preko
adresnog registra: A I [AR1,P#0.0] // AND s bitom u memorijskom polju I čiji se položaj
određuje adresnim registrom AR1
A Q [AR2,P#20.7] // AND s bitom u memorijskom polju Q čiji se položajodređuje adresom koja se dobije sumom
AR2+P#20.7
• Area-crossing indirektno adresiranje:
A [AR1, P#2.4] // AND s bitom u memorijskom polju određenom sumom
area-crossing adrese u AR1 i konstante P#2.4
T B [AR1, P#20.0] // prijenos najnižeg byte-a iz ACCU1 na area-crossing adresu u
AR1 uvećanu za P#20.0
T D [AR2,P#0.0] //prijenos ACCU1 na dvostruku riječ na area-crossing adresizapisanoj u AR2 L P#I7.6
LAR1
A [AR1,P#0.0]
Primjer:
A I7.6
8/19/2019 PRAUT - 2007-08 - Predavanje04
32/35
Praktikum automatizacije -- Predavanje 04 32
Primjer • Podatkovni blok DB18 sastoji se od polja od 10 podataka tipa
WORD te od DINT broja kojin služi kao pokazivač:
• Svakih 5 sekundi potrebno je uzeti uzorak s ulaza IW0 i ciklički ga
spremati u polje u podatkovnom bloku DB18, na način da se
najstariji podatak prebriše novim
Deklaracijski pogled na DB 18: Podatkovni pogled na DB 18:
8/19/2019 PRAUT - 2007-08 - Predavanje04
33/35
Praktikum automatizacije -- Predavanje 04 33
Rješenje• Program se piše u OB35, konfiguriranjem
se namješta da se ciklički prekid, kojeg
OB35 servisira, poziva svakih 5 sekundi
OPN DB 18 //otvaranje DB 18
L DBD 20
LAR1 //pokazivač
se iz DBD 20 prebacuje u AR1L IW 0
T DBW [AR1,P#0.0] //sadržaj IW0 se prebacuje u DBW određen adresom u AR1
TAR1 //prebacivanje AR1 u ACCU1
L P#2.0
+D //adresa u ACCU1 se uvećava za 2 byte-a
L P#20.0 //ACCU2:=ACCU1, ACCU1:=P#20.0
>=D //RLO je 1 ako je adresa u ACCU2 veća ili jednaka 20 byte
TAK //zamjena ACCU1 i ACCU2
JCN KRAJ
L P#0.0 //adresa se vraća na nulu ako je veća ili jednaka 20 byte
KRAJ: T DBD 20 //adresa se upisuje u DBD 20 za sljedeći prolaz
8/19/2019 PRAUT - 2007-08 - Predavanje04
34/35
Praktikum automatizacije -- Predavanje 04 34
Zaključak (1)
• Veće količine podataka u PLC-u se spremaju u
podatkovne blokove – U podatkovnim blokovima podatci se mogu jednostavno strukturirati u složenije podatkovnetipove
• Preglednost i ponovna uporabljivost kôdapovećavaju se upotrebom funkcija s pridruživimparametrima i funkcijskih blokova
• Statičke varijable i ulazno-izlazni parametrifunkcijskog bloka spremaju se u podatkovni blokpridružen funkcijskom bloku
8/19/2019 PRAUT - 2007-08 - Predavanje04
35/35
Praktikum automatizacije -- Predavanje 04 35
Zaključak (2)
• Na lokalni stog spremaju se privremene
varijable bloka i ulazno-izlazni parametrifunkcija
• Upoznali smo se s naredbama za
indirektno adresiranje u PLC-u