Professional Documents
Culture Documents
Az s40 PLC Programozasi Nyelv Elemkeszletenek Ismertetese PDF
Az s40 PLC Programozasi Nyelv Elemkeszletenek Ismertetese PDF
Az s40 PLC Programozasi Nyelv Elemkeszletenek Ismertetese PDF
hu
programstruktra
adattpusok, vltozk deklarlsa
utastskszlet
fggvnyek
funkciblokkok
Forrs: http://www.doksi.hu
Tartalomjegyzk
1. A kziknyvrl............................................................................................. 5
2. A Sucosoft programstruktrja ................................................................ 5
3. Adattpusok, vltozk deklarlsa ............................................................ 6
Elemi adattpusok felsorolsa ........................................................................................... 6
Adattpusok felosztsa ..................................................................................................... 7
Szrmaztatott adattpusok ................................................................................................. 8
Vltoz fajtk ................................................................................................... 12
Vltoz tpusok ................................................................................................... 14
4. POU-k programutastsi rsze................................................................. 17
Utastskszlet ................................................................................................... 17
Fggvnyek ................................................................................................... 19
Funkciblokkok ................................................................................................... 20
5. Fggvnyek ................................................................................................ 23
Adattpusokat konvertl fggvnyek ............................................................................ 25
Numerikus fggvnyek................................................................................................... 27
Aritmetikai fggvnyek .................................................................................................. 27
llapotbit vizsgl fggvnyek ...................................................................................... 28
Bit mozgatsok ................................................................................................... 30
Logikai fggvnyek ................................................................................................... 31
sszehasonltsi fggvnyek.......................................................................................... 31
Opercis rendszer-fggvnyek ..................................................................................... 31
Megszaktst tilt / engedlyez fggvnyek................................................................. 32
Karakterlnccal kapcsolatos fggvnyek........................................................................ 34
Kivlasztsi fggvnyek ................................................................................................. 37
6. Funkciblokkok......................................................................................... 40
_16BitBinaryToBCD 16-bit binris kdols szm -> decimliss alaktsa ............. 43
_16Bit_Compare ................................................................................................... 45
_16BitCounter 16-bites elre- /htraszmll ................................................... 46
ADRtoSTR vett adatbjtok STRING tpus vltozv alaktsa ................. 48
BCDTo16BitBinary Decimlis kdols szm -> 16-bit binriss alaktsa ............ 49
BlockCompare adatblokkok sszehasonltsa, adott adat keresse a
blokkban (cmvltozk alkalmazsval)................................... 50
BlockTransfer adatblokk msolsa, inicializlsa (cmvltozk
alkalmazsval)......................................................................... 55
CompareArray adatblokkok sszehasonltsa, adott adat keresse a
blokkban.................................................................................... 58
COMtoSTR vett adatbjtok STRING tpus vltozv alaktsa ................. 62
CounterAlarm szmll megszaktskezels .................................................... 64
DATconcat dtum s id (DATE_AND_TIME) tpus vltoz
sszelltsa egyedi UINT tpus adatokbl............................. 68
DateConcat dtum (DATE) tpus vltoz sszelltsa egyedi UINT
tpus adatokbl ........................................................................ 70
DateSplit dtum (DATE) tpus vltoz sztvlasztsa egyedi UINT
tpus adatokra .......................................................................... 71
3
Forrs: http://www.doksi.hu
4
Forrs: http://www.doksi.hu
A Sucosoft programstrukturja
1. A kziknyvrl
Ezen dokumentci az AWB2700-1306 szm dokumentci szerkesztett fordtsa, mely az
alapvet ismereteket s az ltalunk legfontosabb utastsok, fggvnyek, funkciblokkok
fordtst tartalmazza a kompakt PLC-kre (PS4-200, PS4-300) vonatkozan.
Az egyes programnyelvi kifejezsek az sszes PLC tpusra (PS4, PS416) azonosak. A
klnbsgek csak az egyes PLC-k memrianagysgban, a tmogatott adattpusokban illetve
a klnbz perifrikbl addhatnak. Ezen esetekben kln hivatkozunk az adott tpusokra.
A PS4-200 jells a PS4-141/-151-MM1 valamint a PS4-201/-271-MM1, a PS4-300 jells a
PS4-341-MM1 kompakt PLC-kre, a PS416 jells pedig az sszes modulris CPU tpusra
(CPU-200, CPU-300, CPU-400) vonatkozik.
Megjegyzsek nlkli lers rszek minden PLC tpusra rvnyes.
2. A Sucosoft programstruktrja
A Sucosoft ltal hasznlt programnyelvek megfelelnek az IEC1131-3 szabvnynak.
A klnbz felhasznli programok strukturlt kialaktshoz hrom porgramorganizcis
egysg (tovbbiakban POU) ll rendelkezsre.
PROGRAM (fprogram)
FUNCTION (fggvnyek, tovbbiakban FU)
FUNCTIONBLOCK (funkciblokkok, tovbbiakban FB)
A gyakran fellp feladatok megknnytsre a Sucosoft a standard fggvnyek s
funkciblokkok sorozatt kinlja fel.
5
Forrs: http://www.doksi.hu
Adattpusok
6
Forrs: http://www.doksi.hu
Adattpusok
2) A karakterlnc hossznak default rtke 32jel. Amennyiben ms rtkre van szksg,
akkor azt a deklarls sorn kell kerek zrjelek kztt megadni.
pl. Text : STRING(12) := ABC;
maximlis STRING hossz PS4-200 esetn: 253jel,
PS4-300 s PS416 esetn: 1024jel
Adattpusok felosztsa
ANY
ANY_REAL ANY_INT
REAL
REAL* SINT
SINT BOOL
BOOL DATE
DATE
INT
INT BYTE
BYTE TIME_OF_DATE
TIME_OF_DAY (TOD) TIME
(TOD)
DINT
DINT* WORD
WORD DATE_AND_TIME(DAT)
DATE_AND_TIME (DAT)
USINT
USINT DWORD
DWORD*
UINT
UINT
UDINT
UDINT*
ARRAY[..]
7
Forrs: http://www.doksi.hu
Adattpusok
Az ADDRESS adattpus s az ANY kategriajellsek csak mint ltalnos adattpus
jellsek a standard funkcik s funkciblokkok bemeneti s kimeneti paramtereinl
hasznlatosak.
Szrmaztatott adattpusok
A szrmaztatott adattpusokat az elemi adat adattpusokbl lehet j, a felhasznl ltal adott
kulcsszval ellltani. A deklarls a TYPEEND_TYPE kulcsszavakkal trtnik.
A szrmaztatott adattpusok definilsval a VAREND_VAR kulcsszavak kz egyedi
adattpus vltozkat tud bevezetni.
plda:
TYPE
Analogertek : INT ;
END_TYPE
VAR
Ertek1 : Analogertek ;
END_VAR
A szrmaztatott adattpusok csak abban a POU-ban rvnyesek, ahol a hozztartoz
tpusdefinils megtrtnt.
Projekt globlis szrmaztatott adattpusokat a usertype.typ fjlban tetszleges
szvegszerkesztvel lehet a TYPEEND_TYPE kulcsszavakkal definilni. (Lsd rszletesen
az AWB2700-1306 kziknyvet.)
VAR
Meresi_Ertek1 : analogertek_1 ;
Meresi_Ertek2 : feszultseg ;
Kazan_Temp : temperatur ;
END_VAR
8
Forrs: http://www.doksi.hu
Adattpusok
felsorols adattpusok: A felsorols adattpus definilsval egy listt adunk meg,
amilyen rtkeket a vltoz a ksbbiek folyamn felvehet. A tpus definilsakor a nv
megadst kveten kerek zrjelben, egymstl vesszvel elvlasztva adjuk meg a
vltoz rtkeket. A befejez zrjelet kveten lehet a kezdeti rtket megadni.
Amennyiben nincs kezdeti rtkads, akkor az els programfeldolgozskor a vltozlista
els eleme kerl felhasznlsra.
plda: tpus-inicializls
Az adattpus Kozl_Lampa hrom rtket (piros, sarga, zold) vehet fel. A vltoz sarga
kezdeti rtkkel indul. Ha hinyozna az inicializls, akkor a vltoz a pirost, mint az
els rtket venn fel.
TYPE Kozl_Lampa :
(piros,
sarga,
zold) :=sarga ;
END_TYPE
VAR
K_Lampa1 : Kozl_lampa ;
K_Lampa2 : Kozl_lampa ;
K_Lampa3 : Kozl_lampa ;
Auto_Allj :BOOL ;
END_VAR
A program utastsrszben az egyes definilt rtkek kzvetlenl is felhasznlhatk.
LD K_Lampa1
EQ piros
St Auto_Allj
tmb tpus adatok: Tbb azonos tpus adatot egy vltozba is ssze lehet foglalni. Ezt
az adattpust tmbnek nevezzk. Egy tmb tartalmazhat mind elemi mind szrmaztatott
adattpust. A definils az ARRAY kulcsszval s az adatelemek szmnak megadsval
trtnik.
A tmbvltozk kzvetlen cmekkel is sszekapcsolhat az AT kulcssz felhasznlsval.
plda: Tmbvltoz deklarlsa
A tomb1 telem INT tpus, a tomb2 egy hromdimenzis 24 elem vltozt jelent.
A 17-es kezdeti rtk tmbelemet a program 5-re trja.
PROGRAM tomb
TYPE
tomb_5_INT : ARRAY [1..5] of INT :=[1,13,5,34,2] ;
tomb_24_INT : ARRAY [1..2,1..3,1..4] of INT
:=[[[3,7,2,9],[2,8,6,1],[5,7,2,17],
[[2,3,0,5],[6,1,2,4],[3,0,1,4]]];
9
Forrs: http://www.doksi.hu
Adattpusok
END_TYPE
VAR
tomb1 : tomb_5_int ;
tomb2 :tomb_24_int ;
END_VAR
.
.
LD 5
ST tomb2[1,3,4]
.
END_PROGRAM
Struktra adattpus definilsa: (csak a PS4-300 s a PS416 estn)
Klnbz tpus adatelemek egy adattpusba val sszerendelsre szolgl az
adatstruktra. Az adatstruktra tartalmazhat elemi vagy szrmaztatott adattpusokat is. A
deklarlshoz a STRUCT kulcsszt kell megadni, majd ezt kveti az egyes elemek
felsorolsa tpus megadsukkal egytt.
Egy struktraelem megszltsa a struktra vltoz nvmegadssal majd ponttal
elvlasztva a struktraelem nevvel trtnik.
plda: kezdeti rtkads a deklarls sorn
PROGRAM struktur
TYPE
Berendezes_Adatok :
STRUCT
meres1: BOOL := 1 ;
meres2: INT := -15 ;
meres3: UINT := 100;
meres4: REAL := 10.2;
END_STRUCT
END_TYPE
VAR
allomas1 : Berendezes_Adatok ;
allomas2 : Berendezes_Adatok ;
END_VAR
LD allomas1. meres3
.
10
Forrs: http://www.doksi.hu
Adattpusok
END_PROGRAM
plda: kezdeti rtkads a deklarls utn
PROGRAM struktur
TYPE
Berendezes_Adatok :
STRUCT
meres1: BOOL ;
meres2: INT ;
meres3: UINT ;
meres4: REAL ;
END_STRUCT := (meres1 :=1,
meres2 := -15,
meres3 := 100,
meres4 : =10.2) ;
END_TYPE
VAR
allomas1 : Berendezes_Adatok ;
allomas2 : Berendezes_Adatok ;
END_VAR
11
Forrs: http://www.doksi.hu
Vltozk
Vltoz fajtk
A PLC-ben alkalmazott adatelemeket vltozknak nevezzk.
A vltozk csoportostsa:
vltozk, melyek a kzbens bels adattrolsra szolglnak
kzvetlen cmzs vltozk, melyek a bemenetekhez, kimenetekhez, vagy meghatrozott
memriaterlethez illetve a PLC kommunikcis memriaterlethez kapcsoldnak.
A vltozkat jellel, nvvel lehet azonostani. A nevek betvel vagy alhzsjellel (_)
kezddhetnek, s egybknt kis- s nagybetk, szmok, alhzsok sorozatbl ll.
Igny esetn egy tmbhz is lehet kzvetlenl cmeket hozzrendelni, de csak az azonos
tpus cmzseket (BOOL, BYTE, SINT, USINT, WORD, INT stb.) lehet sszefogni egy
tmbbe. A PS4-200 s PS4-300 estn a bitvltozkat csak a 8 egszszm tbbszrseknt
12
Forrs: http://www.doksi.hu
Vltozk
lehet sszefogni.
A PROGRAM POU-ban deklarlt globlis direkt cmzs vltozkat a funkciblokkokban,
mint kls (EXTERNAL) deklarlt vltozkknt lehet felhasznlni. Egy msik, gyorsabb
lehetsg a funkciblokkok esetn a vltozk paramter tadsa a VAR_IN_OUT tpusokon
keresztl. Ez a lehetsg azonban csak az rhat vltozkra (PLC kimenetekre,
memriahelyekre, kommunikcis adatokra) vonatkozik.
A Sucosoft a kvetkez fizikai cmeket ismeri:
I: digitlis bemenet
Q: digitlis kimenet
M: memriaterlet
IA: analg bemenet
QA: analg kimenet
IC: szmll bemenet
IS: status informcis bemenet (diagnosztika)
SD: intelligens Suconet K rsztvevnek kldend adat
RD: intelligens Suconet K rsztvevtl fogadott adat
13
Forrs: http://www.doksi.hu
Vltozk
Vltoz tpusok
A programozsi egysg deklarcis rszben minden felhasznlsra kerl vltozt definilni
kell. A klnbz vltoztpusokat a megfelel kulcsszavakkal lehet jellemezni. A
kvetkezkben sszefoglalva lthat a klnbz vltoztpusok s jellemzsk.
Kulcssz Felhasznls
VAR loklis vltozk; rvnyessgi krk csak az adott POU-ra,
ahol definilsra kerltek, vonatkozik.
VAR_GLOBAL A globlisknt deklarlt vltoz rvnyessgi terlete a
teljes programra vonatkozik, azaz egy a PROGRAM POU-
ban globlisan deklarlt vltoz brmelyik programbeli
funkciblokkban (FB-ben) is elhvhat. Az FB-ben, ahol
egy globlisan deklarlt vltoz felhasznlsra kerl, a
vltozt azonos nvvel, mint VAR_EXTERNAL tpusknt
kell deklarlni.
VAR_EXTERNAL Ha egy FB-ben egy globlisan deklarlt vltoz kerl
felhasznlsra, akkor az azonos nvvel s
VAR_EXTERNAL tpusknt kell deklarlni.
VAR_INPUT Egy vltoz bemeneti vltozknt kerlhet definilsra egy
POU-ban (FU (= fggvny), FB), ha ebben a programozsi
egysgben a vltozt csak olvassk, vagy csak
paramtertadsra hasznljk, vagyis a vltoz rtkt nem
szabad megvltoztatni.
VAR_OUTPUT Egy FB kimeneti vltozjaknt definilt vltozt az FB a
hvs folyamn kpes rni, azaz azt megvltoztatni.
VAR_IN_OUT Az IN_OUT tpus vltozt az FB kpes meghvni, s
ugyanazon a nven mdostott rtket adni. Mivel a az FB.n
bell rtkads trtnhet, rsvdett vltozt (pl.
CONSTANT) a VAR_IN_OUT-knt nem lehet hasznlni.
TYPE A TYPE kulcssz a szrmaztatott adattpusok jellsre
szolgl.
A VAR_IN_OUT vltoz mutat (pointer), amely az adott tpus deklarlt vltozra mutat. A
vltoz csak FB-ben alkalmazhat, s az FB hvsa eltt mr rvnyes rtkkel kell
rendelkeznie.
A demo nev FB-ben alkalmazott w_array VAR_IN_OUT tpus vltoz nem 201
szt tartalmaz tmb, hanem egy mutat, mely erre a tmbre mutat. A demo FB-ben a
word_array globlis tmbre trtnik a hivatkozs.
14
Forrs: http://www.doksi.hu
Vltozk
A mutatk alkalmazsa a kvetkez elnyket nyjtja:
15
Forrs: http://www.doksi.hu
Vltozk
A PS4-200 esetn egy funkciblokk egyes vltozit remanenss belltani nem lehet. Ebben
az esetben az egsz funkciblokkot kell remanensknt deklarlni.
Vltoztpusok FU FB PRG
felhasznlsa
VAR_INPUT
VAR_OUTPUT
VAR_IN_OUT
VAR_GLOBAL
VAR_EXTERNAL
VAR
TYPE * * *
Funkciblokkok helyfoglalsa
A funkciblokkot abban a POU-ban (PROGRAM vagy egy msik FB), ahol meghvsra
kerl, kln deklarlni szksges. A definils ebben az esetben szintn egy egyedi
nvadssal s a tpus (funkciblokk prototpusnak) megadsval trtnik. Pl.
szamlalo : CTU ;
azaz a funkciblokk egy egyedi, szamlalo nvvel elltva, s CTU tpusknt kerl meghvsra.
A bemeneti vltozkat a meghvs eltt kell paramterezni, a kimeneteket vagy eltte, vagy a
meghvs utn lehet tovbbi vltozkhoz hozzrendelni.
A fggvnyektl eltren csak azokat a bemeneti vltozkat kell paramterezni, amelyek
lnyegesek a funkciblokk hvsa esetn. Kivtelek a VAR_IN_OUT tpus vltozk,
melyeket minden hvskor paramterezni kell, klnben szintaktikai hiba lp fel a fordts
sorn.
16
Forrs: http://www.doksi.hu
Utastskszlet
Utastskszlet
17
Forrs: http://www.doksi.hu
Utastskszlet
Programrsi szablyok
Egy utasts szekvencia mindig LD(N) utastssal kezddik. A szekvencit az operandus rsi
utastsok (ST(N), S,R), valamint a feltteles ugrsok, hvsok s visszatrsi utastsok
zrjk le. Kivtelt kpeznek a felttel nlkli ugrsok s hvsok, valamint ta visszatrsi
utastsok.
Ugrsi cmkket az utastsi sor elejre kell rni s kettsponttal kell lezrni. Ugrsi clknt
csak a szekvencia kezdett lehet megadni.
Fontos kvetelmny: Az utastsokat csak azonos tpus adatokkal lehet vgrehajtani.
A Sucosoftban termszetesen konstansokkal is lehet dolgozni. Lehet adatelemeket
CONSTANT attribtummal elltva s a kvnt kezdeti rtkkel inicializlva deklarlni. Msik
lehetsg a programvgrehajts sorn direkt rtkads alkalmazsa nvvel elltott adatelem
felhasznlsa nlkl.
A konstansok klnbz adattpusaihoz elrt helyesrsi konvenci tartozik. A konstanson
bell szkzk alkalmazsa helyett trelvlasztnak az alhzs jel megengedett. (A
szkzk csak a SRTING vltozkban hasznlhatk!)
Konstansok ttekintse
Konstansok Plda Jelents
INT -13 egsz szm; -13
45165 vagy 45_165 egsz szm; 45 165
+125 egsz szm; 125
REAL 1) 13.12 vals szm: 13,12
123.45 vals szm: 123,45
0.123 vals szm: 0,123
1.23E-3 vals szm:0,00123
binris szm 2#0111_111 vagy 126 126 decimlisan
hexadecimlis szm 16#123 vagy 291 291 decimlisan
STRING ABC karakterlnc ABC
TIME T#12.3ms vagy 12,3ms idtartam
TIME#12.3ms
DATE DATE#1995-12-24 vagy dtum: 1995 12. 24.
D#1995-12-24
TIME_OF_DAY TOD#12:05:14.56 vagy idpont: 12ra 5perc, 14,56msodp.
TIME_of_DAY#12:05:14.56
DATE_AND_TIME DT#1995-12-24-12:05:14.56 v. drum s id egytt:
DATE_AND_TIME#1995- 1995 12. 24
12-24212:05:14.56 12ra 5perc, 14,56msodperc
1) csak a PS4-300 s Ps416 esetn
18
Forrs: http://www.doksi.hu
Utastskszlet
Fggvnyek
Rendszeresen ismtld feladatokhoz clszer fggvnyeket alkalmazni. A fggvny tbb
bellthat indul paramtert tartalmazhat, a vgrehajts eredmnye pedig egyetlen kimeneti
adatban helyezkedik el, mely lehet egyetlen, de akr tbbelem, tmb tpus is.
A fggvnyek rvnyessgi terlete globlis, azaz minden POU rszre rendelkezsre ll, s
nem kell kln a hv POU-ban deklarlni.
A fggvny hvsa a fggvny nevnek megadsval s a bemeneti adatok teljes
paramtertadsval trtnik.
A fggvny els paramtert bemenetknt az akkumultoron keresztl, a tovbbi
paramtereket egymstl vesszvel elvlasztva (a fggvnynevet szkzzel kveten) a
fggvny argumentumaknt kell megadni.
A fggvny az eredmnyt a fggvny nevnek megadsval az akkumultoron keresztl adja
vissza a meghv POU-nak. A fggvnyek nem kpesek az eredmnyek trolsra.
A fggvny a loklis paramtereket minden fggvnyhvskor az adattpusuknak megfelelen
(lsd az elemi adattpusokat felsorol tblzatot az elz fejezetben) inicializlja. Ha a hvs
az eredmny lltsa nlkl fejezdik be, akkor a fggvny automatikusan visszalltja a
loklis vltozk tpusnak megfelel kezdeti rtkt.
Plda: sszeadsi fggvny
FUNCTION szumma : INT
VAR_INPUT
A : INT ; (* deklarcis rsz *)
B : INT ;
C : INT ;
END_VAR
LD A (* utastsrsz *)
ADD B
ADD C
ST szumma
PROGRAM pr_sum
VAR
tenyezo1 : INT := 1 ;
tenyezo2 : INT := 2 ;
tenyezo3 : INT := 3 ;
eredmeny : INT ;
END_VAR
LD tenyezo1
Szumma tenyezo2, tenyezo3
ST eredmeny
END_PROGRAM
Egy fggvnyen bell tovbbi fggvnyek is hvhatk Viszont egy fggvnybe nem lehet
funkciblokkot begyazni, tovbb nem lehet funkciblokk nevet bemeneti paramterknt
felhasznlni.
19
Forrs: http://www.doksi.hu
Utastskszlet
A Sucosoft a gyakori feladatok szmra nagyszm gyrt specifikus fggvnyt ajnl fel.
Funkciblokkok
A gyakran elfordul feladatokhoz a fggvnyeken kvl funkciblokkokat is lehet hasznlni.
A funkciblokkok ellenttben a fggvnyekkel tbb kimeneti paramterrel is
rendelkezhetnek. A funkciblokk a vltozit megrzi a kvetkez hvsig, melyek gy tovbb
feldolgozsra kzvetlenl felhasznlhatk.
Egy funkciblokk tovbbi FB-ket hvhat. A kvetkez tblzat mutatja a funkciblokk be-
/kimeneti vltozinak megengedett hasznlatt:
Hasznlat funkciblokkon bell funkciblokkon kivl
bemenet olvassa LD IN1 LD FBx.IN1
AND IN2 ST %QW0.0.0.2
ST Q1
bemenet rsa nem megengedett! LD Start
ST FBx.IN1
CAL FBx
kimenet olvassa LD OUT1 CAL FBx(IN1 := Be, )
AND IN2 LD FBx.OUT1
ST OUT1 ST %QW0.0.0.2
kimenet rsa LD 100 nem megengedett!
ST OUT1
Ha a bemeneti operandust, mint l figyelst kell alkalmazni, akkor a vltozt ennek
megfelelen (pl. start : BOOL_R_EDGE ;) kell deklarlni! A l figyels vltozk hasznlata
csak a PS4-200 s a PS4-300 csaldban lehetsges.
Az IEC szabvny kt azonos eredmnnyel jr eljrst engedlyez a funkciblokkok
paramtertadsra. A kvetkez pldban (a feladat tbbszrs kzprtkkpzs) kt
hvssal mutatjuk be a kt eljrst.
20
Forrs: http://www.doksi.hu
Utastskszlet
A kzprtkkpzst vgz funkciblokk prototpusa a kvetkez:
FUNCTION_BLOCK kozepertek
VAR_INPUT
Reset : BOOL ;
Bem1 : USINT ;
Bem2 : USINT ;
END_VAR
VAR_OUTPUT
atlag : USINT ;
END_VAR
LD Bem1
ADD Bem2
DIV 2
St atlag
END_FUNCTION_BLOCK
Az FB-t hv program felptse: A kozepertek FB a programban klnbz nevekkel
ktszer kerl meghvsra (instanclsra).
PROGRAM poe3
VAR
Instanz1_nev : kozepertek ;
Instanz2_nev : kozepertek ;
ertek1 AT %IB0.0.0.0 : USINT ;
ertek2 AT %IB0.0.0.1 : USINT ;
eredmeny1 AT %QB0.0.0.0 : USINT ;
eredmeny2 AT %QB0.0.0.1 : USINT ;
torles AT %I0.0.0.2.0 : BOOL ;
END_VAR
(* FU hvs - 1. eljrs *)
Cal Instanz1_nev (Reset := torles,
Bem1 := ertek1,
Bem2 := ertek2)
LD Instanz1_nev.atlag
St eredmeny1
(* FU hvs - 2. eljrs *)
LD torles
St torles
LD ertek1
ST Instanz2_nev.bem1
LD ertek2
ST Instanz2_nev.bem2
Cal Instanz2_nev
LD Instanz2_nev.atlag
St eredmeny2
END_PROGRAM
A csak egyszer kialaktott FB szksg szerint tbbszr is (ms-ms nevekkel) meghvhat.
21
Forrs: http://www.doksi.hu
Utastskszlet
A neveket a flrendelt hv POU-ban kell deklarlni. A deklarls sorn az egyedi
neveket (itt: Instanz1_nev, Instanz2_nev) s a funkciblokk prototpust (itt: kozepertek)
is meg kell adni.
A Sucosoft a szksges memriaterletet az instanclt FB-hez hozzrendeli, azaz a
funkciblokk minden egyes alkalmazsnl a bels adatok is letrolsra kerlnek.
A funkciblokk hvsakor (Cal Instanz1_nev) a trtnik meg a tulajdonkppeni
paramterezs, azaz ekkor rendeldnek hozz a funkciblokk bemeneti paramtereihez az
adott specifikus vltozk. Az egyes operandusokat kerek zrjelben egymstl vesszvel
elvlasztva kell megadni. A funkciblokk kimeneti paramtereit direkt hozzrendelssel
lehet tadni ms vltozknak:
LD Instanz1_nev.atlag
ST eredmeny1
A msodik eljrs esetn a funkciblokk hvsa eltt az egyes instanz-specifikus
vltozkat, az akkumultor segtsgvel, tadjuk a funkciblokk bemeneti
paramtereinek. Maga a funkciblokk hvs nem tartalmaz semmilyen paramter tadst.
A funkciblokk eredmnyek hasonl mdon letroldnak, s az LD utastssal
megszlthatk.
Tovbb gynevezett Moeller-specifikus funkciblokk hvs is realizlhat. Ekkor a be-
/kimeneti paramtertads egymstl elvlasztva a |-jellel egyszerre trtnik.
Plda:
Cal Instanz3_nev (Reset := torles,
Bem1 := ertek1,
Bem2 := ertek2
|
eredmeny := atlag)
22
Forrs: http://www.doksi.hu
Fggvnyek
5. Fggvnyek
A Sucosoft S40 a fggvnyek nagy vlasztkt nyjtja a programozs rszfeladatainak
megknnytsre.
Az IEC 1131-3 ltal definilt fggvnyeken kvl a Moeller Electric a PLC-khez tovbbi
gyrt specifikus fggvnyeket is ksztett, melyek kihasznljk a PLC egyedi adottsgait.
Ezek hasznlata tovbb knnytheti az egyes felhasznli alkalmazsok elksztst.
Az albbiakban csoportostva felsoroljuk a fontosabb fggvnyeket:
Fggvnyek Jelentsk
Adattpusokat konvertl fggvnyek ...................................................................... 25
*_TO_** tpuskonverzik elemi adattpusok kztt
TRUNC REAL szm egszt adja ANY_INT adattpusban
Numerikus fggvnyek............................................................................................... 27
ABS abszolt rtkkpzs
NEG 2-es komplemens kpzs
Aritmetikai fggvnyek .............................................................................................. 27
ADD sszeads
MUL szorzs
SUB kivons
DIV egsz szm oszts
MOD maradkrtket ad oszts
llapotbit vizsgl fggvnyek .................................................................................. 28
IsCarry aritmetikai mveletet kveten tvitel bit = ?
IsZero aritmetikai mveletet kveten eredmny nulla bit = ?
IsOverflow aritmetikai mveletet kveten tlcsorduls = ?
ISPositive aritmetikai mveletet kveten eredmny pozitv = ?
IsBitTrue akkumultor adott bit = ?
GetCarryRegister tvitelregisztert az akkumultorba felhozni
Bit mozgatsok ............................................................................................................ 30
SHL bitmintt adott rtkkel balra tolni
SHR bitmintt adott rtkkel jobbra tolni
ShiftLeftCarry bitmintt - carry biten - t adott rtkkel balra tolni
ShiftRightCarry bitmintt - carry biten - t adott rtkkel jobbra tolni
ROL bitmintt adott rtkkel balra forgatni
ROR bitmintt adott rtkkel jobbra forgatni
23
Forrs: http://www.doksi.hu
Fggvnyek
Logikai fggvnyek..................................................................................................... 31
AND, & logikai S kapcsolat
OR logikai VAGY kapcsolat
XOR logikai KIZR VAGY kapcsolat
NOT bitminta bitenknti neglsa
sszehasonltsi fggvnyek...................................................................................... 31
GT NAGYOBB, MINT sszehasonlts
GE NAGYOBB, EGYENL sszehasonlts
EQ EGYENL sszehasonlts
LE KISEBB, EGYENL sszehasonlts
NT KISEBB, MINT sszehasonlts
NE NEM EGYENL sszehasonlts
Opercis rendszer-fggvnyek ................................................................................ 31
PLC_Message rendszerdiagnosztikai status-bjt/sz kiolvassa
PLC_ReadCLock valsidej ra egyedi elemeinek kiolvassa
Megszaktskrst tilt / engedlyez fggvnyek................................................... 32
Disable_Interrupt megszaktskrs tilts
Enable_Interrupt megszaktskrs engedlyezs
Karakterlnccal kapcsolatos fggvnyek ................................................................. 34
LEN adott karakterlnc hosszt megllaptani
CONCAT karakterlncokat egybefzni
DELETE karakterlncbl adott karaktereket trlni
FIND karakterlncban adott karaktersorozatot megtallni
INSERT karakterlncba vlaszthat hosszsg karaktereket befzni
LEFT karakterlncbl balrl vlaszthat hosszsg karakterek kivlasztsa
MID karakterlnc belsejbl vlaszthat hosszsg karakterek kivlasztsa
REPLACE karakterlncban vlaszthat helyen adott karaktersorozat behelyettestse
RIGHT karakterlnc jobbrl vlaszthat hosszsg karakterek kivlasztsa
Kivlasztsi fggvnyek ............................................................................................. 37
LIMIT rtkkorltozs
MAX maximumrtk keress
MIN minimumrtk keress
MUX multiplexer
SEL feltteles operandus kivlaszts
24
Forrs: http://www.doksi.hu
Fggvnyek
kimenet
DWORD 1)
STRING 1)
UDINT 1)
REAL 1)
WORD
DINT1)
USINT
BOOL
DATE
BYTE
UINT
SINT
TOD
BCD
bemenet
INT
SINT X X X X X X X X X X X
INT X X X X X X X X X X X
1)
DINT X X X X X X X X X X X
USINT X X X X X X X X X X X
UINT X X X X X X X X X X X X
1)
UDINT X X X X X X X X X X X
REAL 1) X X X X X X
BOOL X X X X X X X X X
BYTE X X X X X X X X X
WORD X X X X X X X X X
DWORD 1) X X X X X X X X X
DATE_AND_TIME X X
TIME X X
BCD X X X X X X
STRING 1) X
ADDRESS 2) X
25
Forrs: http://www.doksi.hu
Fggvnyek
Megjegyzsek:
1. Az eljeles numerikus rtkek bitsorozatt val talaktsa sorn a fggvny
figyelembe veszi az eljelet.
High Low
pl. 0010_0101 0000_0000 0010_0101
SINT talaktsa WORD tpuss, illetve
26
Forrs: http://www.doksi.hu
Fggvnyek
Numerikus fggvnyek
ABS A fggvny a bemenetre adott ANY_NUM abszolt rtkt adja vissza. Az adattpus
az talakts sorn nem vltozik.
Vigyzat: A legkisebb SINT (-128) s a INT (-32768) rtkeket a fggvny nem
vltoztatja meg, mivel a 128 s 128, illetve a 32768 s 32768 binris rtke azonos.
Ha ilyen rtkek lpnek fel az ABS fggvnyben, akkor hiba generls nem trtnik.
NEG A fggvny ANY_NUM adattpusokra vonatkozik. Az adattpus az talakts sorn
nem vltozik.
Eljeles szmok esetn a fggvny kimenet = (-1)*bemenet, azonban eljel nlkli
szmok esetn a fggvny eredmnye egy msik szm!
Aritmetikai fggvnyek
Numerikus rtkek adattpusokkal val mveletek szablyai:
Numerikus rtkek (ANY_NUM) kztti mveletek esetn a be- illetve kimeneti
operandusoknak azonos tpusak kell lenni.
ADD ADD, SUB, esetn, ha az eredmny tllpi az adattpusra megengedett tartomnyt,
SUB akkor a tlcsorduls llapot bit bebillen, mely az IsOverFlow fggvnnyel
krdezhet le.
MUL MUL esetn, ha az eredmny tllpi az adattpusra megengedett tartomnyt, akkor a
tlcsordult rtk az tvitel regiszterbe (melynek mrete mindig megegyezik a
bemeneti operandusok mretvel) kerl. rtke a GetCarryRegister fggvnnyel
DIV krdezhet le.
DIV mvelet esetn az egsz oszts maradka az tvitel regiszterbe (melynek mrete
mindig megegyezik a bemeneti operandusok mretvel) kerl. rtke a
GetCarryRegister fggvnnyel krdezhet le.
Idtartam illetve dtum s ra adattpusokkal val mveletek szablyai:
ADD ADD esetn a msodik operandus csak TIME tpus lehet, amit az elsknt megadott
SUB TIME, TIME_OF_DATE, DATE_AND_TIME1) tpushoz lehet hozzadni. A
kimenet adattpus megegyezik az els operandus adattpusval.
MUL A MUL s DIV esetn az els operandus lehet TIME adattpus, mg a msodik csak
DIV ANY_NUM adattpust vehet fel.
27
Forrs: http://www.doksi.hu
Fggvnyek
Cm (ADDRESS) adattpusokkal val mveletek szablyai:
A cmekkel kapcsolatos mind a ngy alapmvelet megengedett, de csak a PS4-200 s
a PS4-300 esetn lehetsges!
Az albbi tblzat szerinti vltozatok lehetsgesek:
bemenet1 bemenet2 kimenet
ADDRESS ANY_INT ADDRESS
ADDRESS ADDRESS ADDRESS
LD Number1
ADD 12
IsOverflow
CALC Edge (CLK := Signal)
LD Edge.Q
ST Pulse
END_PROGRAM
28
Forrs: http://www.doksi.hu
Fggvnyek
LD Byte1
SHL 3
BYTE_TO_USINT
IsCarry (* Carry regiszter = 1 *)
CALC Edge (CLK := Signal)
LD Edge.Q
ST Pulse
END_PROGRAM
PROGRAM remainder
VAR
Number: INT := 127;
Result_integ : INT;
ResultRemainder : INT;
END_VAR
LD Number
DIV 4
ST Result_integ (* oszts eredmnye : 31, egsz *)
GetCarryRegister
ST ResultRemainder (* maradk : 3 *)
.
.
END_PROGRAM
29
Forrs: http://www.doksi.hu
Fggvnyek
Bit mozgatsok
SHL a Az akkumultorban lev ANY_BIT tpus bitmintt a fggvny
SHR operandusaknt megadott rtkkel (ANY_INT) balra/balra tolja. A tolskor
felszabadul helyek 0-val tltdnek fel. Az eredmny az akkumultorban a bemeneti
bitmintval azonos adattpusban ll rendelkezsre.
PROGRAM rot_bal
VAR
BitPattern : BYTE := 2#01110001;
Places : INT := 3;
NewBitPattern: BYTE;
END_VAR
LD BitPattern
ROL Places
ST NewBitPattern (* j bitminta: 2#10001011 *)
END_PROGRAM
ShiftLeftCarry, ShiftRightCarray: A fggvnyek egy hellyel balra illetve jobbra tolja
bemenetknt megadott bitmintt.
Pldul BYTE adattpus esetn:
j tviteli bit bitminta rgi tviteli bit
ShiftLeftCarry: C 7 0 C
ShiftRightCarry: C 7 0 C
PROGRAM shi_jobb
VAR
BitPattern : BYTE := 2#01011100;
NewBitPattern : BYTE;
END_VAR
LD BitPattern
ShiftRightCarry
ST NewBitPattern (* j bitminta: x0101110 ahol "x" *)
(* a 7. bitpozicban az tvitelbit rgi rtke *)
.
.
END_PROGRAM
ROL A fggvnyek az akkumultor tartalmt (ANY_BIT) a fggvny paramtereknt
ROR megadott rtkkel (ANY_INT) balra vagy jobbra forgatja, azaz a kitolt biteket a msik
oldalon visszatlti. Az j bitminta az akkumultorban ll rendelkezsre.
PROGRAM rot_le
VAR
BitPattern : BYTE := 2#01110001;
Places : INT := 3;
NewBitPattern: BYTE;
END_VAR
30
Forrs: http://www.doksi.hu
Fggvnyek
LD BitPattern
ROL Places
ST NewBitPattern (* az j bitminta: 2#10001011 *)
END_PROGRAM
Logikai fggvnyek
A fggvnyek a szoksos logikai fggvnyek (rsze a Sucosoft utastskszletnek),
melyek csak azonos adattpusokon (ANY_BIT) vgezhet el. Az eredmny a
bemenetekkel azonos tpus, s az akkumultorban kpzdik.
sszehasonltsi fggvnyek
A fggvnyek a szoksos logikai fggvnyek (rsze a Sucosoft utastskszletnek),
melyek csak azonos adattpusokon (ANY_INT) vgezhet el. Az eredmny BOOL
tpus, s az akkumultorban kpzdik.
Opercis rendszer-fggvnyek
PLC_Message: A fggvnnyel a bemenetre adott felsorols tpus vltoz egyik elemnek
rtke hatrozhat meg. A bemenet MESSAGE_TYPE (Moeller ltal definilt, csak
olvashat rendszerdiagnosztikai) vltoz, a kimenet BOOL tpus.
A MESSAGE_TYPE vltoz az egyes PLC tpusok esetn a kvetkez elemeket
tartalmazza (minden tpusra a standard bellts az ISA):
PS4-200 esetn:
TYPE
MESSAGE_TYPE
(ISA, (* start utni els programciklus *)
IRE, (* RESET nyomgomb mkdtetve *)
IFO, (* RUN zemmdban a FORCE aktv *)
REC, (* jraindts esetn a maradk-ciklus fut *)
ICS, (* a vezrls hidegen indtva *)
NKD_1, (* az SBI1-en (SBI -= Suconet K busz) friss adatok vannak *)
NKD_2, (* az SBI2-en (SBI -= Suconet K busz) friss adatok vannak *)
NKD_3 (* az SBI3-en (SBI -= Suconet K busz) friss adatok vannak *)
) := ISA ;
END_TYPE
PS4-300 esetn:
TYPE
MESSAGE_TYPE
(ISA, (* =0: start utni els programciklus *)
IRE, (* =1: RESET nyomgomb mkdtetve *)
IFO, (* =2: RUN zemmdban a FORCE aktv *)
REC, (* =3: jraindts esetn a maradk-ciklus fut *)
ICS, (* =4: a vezrls hidegen indtva *)
NKD_1, (* =5: az SBI1-en (SBI -= Suconet K busz) friss adatok vannak *)
NKD_2, (* =6: az SBI2-en (SBI -= Suconet K busz) friss adatok vannak *)
NKD_3, (* =7: az SBI3-en (SBI -= Suconet K busz) friss adatok vannak *)
ICT, (* =8: ECT az els programciklusban *)
IAH, (* =9: EAH az els programciklusban *)
IRT, (* =10: ERT az els programciklusban *)
) := ISA ;
END_TYPE
31
Forrs: http://www.doksi.hu
Fggvnyek
PS416 esetn:
TYPE
MESSAGE_TYPE
(ICS (* =0: start utni els programciklus hideg indtssal*)
ISA, (* =1: start utni els programciklus *)
RTW, (* =2: run time warning -figyelmeztets *)
REC, (* =3: jraindts esetn a maradk-ciklus fut )
DAKE, (* =4: AK-Error, az egysg nem szlthat meg, esetleg nincs bent )
KOM, (* =5: a kommunikcis partner nem vlaszol *)
) := ISA ;
END_TYPE
Plda: Rendszerdiagnosztikai tvirat kirtkelse
LD ISA
PLC_Message
JMPCN No_new_start
PLC_ReadClock: A fggvnnyel a bemenetre adott felsorols tpus vltoz egyik elemnek
rtke hatrozhat meg. A bemenet PLC_Clock (Moeller ltal definilt, csak
olvashat) vltoz, a kimenet USINT tpus.
A PLC_Clock standard belltsa a CK_YEAR):
PLC_CLOCK:
CK_YEAR, (* vek szma *)
CK_MONTH, (* hnap *)
CK_DAY, (* nap *)
CK_WEEKDAY, (*htnap sorszm; 0 = vasrnap *)
CK_HOURS, (* rk *)
CK_MINUTES, (* percek *)
CK_SECONDS (* msodpercek *)
) := CK_YEAR;
END_TYPE
PROGRAM RD_Clock
VAR
Hours : USINT ;
END_VAR
LD CK_HOURS
PLC_ReadClock
ST Hours
END_PROGRAM
32
Forrs: http://www.doksi.hu
Fggvnyek
PS4-300 esetn:
TYPE ALARM_CHANNEL
(CounterAlarm_Channel, (* 0 *)
TimerAlarm_Channel, (* 1 *)
EdgeAlarm_Channel_1, (* 2 *)
EdgeAlarm_Channel_2 (* 3 *)
) := CounterAlarm_Channel ;
END_TYPE
PS416 esetn:
TYPE ALARM_CHANNEL
(CounterAlarm_Channel1, (* 0 *)
TimerAlarm_Channel, (* 1 *)
EdgeAlarm_Channel_1, (* 2 *)
EdgeAlarm_Channel_2, (* 3 *)
EdgeAlarm_Channel_3, (* 4 *)
EdgeAlarm_Channel_4, (* 5 *)
EdgeAlarm_Channel_5, (* 6 *)
EdgeAlarm_Channel_6, (* 7 *)
EdgeAlarm_Channel_7, (* 8 *)
EdgeAlarm_Channel_8) (* 9 *)
):= CounterAlarm_Channel ;
END_TYPE
Disable_Interrupt: A fggvny hasznlatval egy lehetsges megszaktskrs letiltsra
kerl. gy a fprogrambeli rst, olvasst a megszaktst okoz forrs nem tudja
flbeszaktani, azaz az adatok szinkronizlhatk. (Lehetsges megszaktskr
forrsok a CounterAlarm, EdgeAlarm, s a TimerAlarm (PS4-200, PS4-300 esetn),
illetve a CAlarm, FAlarm, TAlarm (PS416 esetn).)
A fggvnyt nll szekvenciaknt kell alkalmazni. Lsd a kvetkez alkalmazst.
PROGRAM D_Alarm
VAR_GLOBAL
Intermediate_storage: INT ;
Edgealarm : EdgeAlarm ;
I_Routine : AlarmFB ;
END_VAR
LD ICS (*start figyels, mert a megszaktskrst
PLC_Message (*FB-t csak egyszer kell hvni *)
CALC Edgealarm
(EnableDisable := 1,
Number := 0,
RisingEdge := 0,
SetPointValue := 1,
Subroutine := I_Routine)
LD EdgeAlarm_Channel
Disable_Interrupt (* EdgeAlarm megszaktsk. tilts *)
LD 500
ST Intermediate_storage
LD EdgeAlarm_Channel
Enable_Interrupt (* megszaktskrs engedlyezs *)
END_PROGRAM
33
Forrs: http://www.doksi.hu
Fggvnyek
FUNCTION_BLOCK AlarmFB
VAR_EXTERNAL
Intermediate_storage: INT ;
END_VAR
LD 30000
ST Intermediate_storage
END_FUNCTION_BLOCK
34
Forrs: http://www.doksi.hu
Fggvnyek
LD Date
CONCAT Time
ST Date_and_Time (*dtum s id: DT#1997-05-10-6:35 *)
END_PROGRAM
DELETE A megadott karakterlncban az L pozcitl kezdve P szm karaktert letrl. P
s L ANY_INT tpusak. H L = 0, vagy P > mint az eredeti bemeneti karakterlnc
hossza, akkor a karakterlnc vltozatlan marad.
PROGRAM Delete
VAR
Text1 : STRING := 'abABCDcd';
Length : UINT := 3;
Position : UINT := 5;
Text2 : STRING;
END_VAR
LD Text1
DELETE Length, Position
ST Text2 (* Text2: 'abABd' *)
END_PROGRAM
FIND A bemenetknt megadott STRING vltozban keresi az argumentumban megadott
STRING vltozt. Kimenete INT tpus szm, mely megmutatja a keresett vltoz
helyt. Ha nem tallja, akkor a kimenet rtke 0. Ha a vltozs tbbszr is elfordul a
bemenetben, akkor az els elforduls helyt mutatja a kimenet rtke.
PROGRAM find
VAR
Basic_Text : STRING := 'On_condition';
Find_Text : STRING := 'on';
Position : INT;
END_VAR
LD Basic_Text
FIND Find_Text
ST Position (* Position: 5 *)
END_PROGRAM
INSERT A fggvny els argumentumaknt megadott STRING vltozt a msodikknt, P
vltozval (ANY_INT) megadott rtktl kezdve beszrja a bemeneti STRING
vltozba. Ha a P rtke nagyobb mint a bemeneti STRING vltoz hossza, akkor a
bemeneti vltoz vltozatlan marad.
PROGRAM insert
VAR
Text1 : STRING := 'abcd';
Text2 : STRING := 'ABCD';
Position : INT := 2;
NewText : STRING;
END_VAR
LD Text1
INSERT Text2, Position
ST NewText (* NewText: 'abABCDcd' *)
END_PROGRAM
35
Forrs: http://www.doksi.hu
Fggvnyek
LEFT A bemenetknt megadott STRING vltoz bal szls rszt veszi t L (ANY_INT)
rtkben.
PROGRAM li_text
VAR
String : STRING := 'Teststring';
CharNo : INT := 4;
n_left_Chars : STRING;
END_VAR
LD String
LEFT CharNo
ST n_left_Chars (* n_left_Chars: 'Test' *)
END_PROGRAM
36
Forrs: http://www.doksi.hu
Fggvnyek
RIGHT A bemenetknt megadott STRING vltoz jobb szls rszt veszi t L (ANY_INT)
rtkben.
PROGRAM re_text
VAR
String : STRING := 'TestString';
StringNo : INT := 6;
n_right_chars : STRING;
END_VAR
LD String
RIGHT StringNo
ST n_right_chars (*n_right_chars: 'String' *)
END_PROGRAM
Kivlasztsi fggvnyek
Az albbi STRING vltozkat kezel fggvnyek csak a PS4-300 s a PS416 vezrlsekre
rvnyesek.
LIMIT rtkkorltozs
LIMIT
*) MIN *)
*) IN
*) MX
37
Forrs: http://www.doksi.hu
Fggvnyek
MAX Maximum, (minimum) kivlaszts
MIN
MAX (MIN)
*) IN1
*)
*) IN2
. .
*) INn
*) a tmogatott adattpusok: ANY_BIT, ANY_INT, ANY_DATE, TIME, STRING
Az sszes adattpusnak azonosnak kell lenni!
IN1 bemeneti rtkek, melyekbl a legnagyobb kerl kivlasztsra
INn
Az MAX fggvny a bemenetek kzl a legnagyobbat, a MIN fggvny a legkisebbet adja
vissza.
A STRING adattpusok kzl a leghosszabb/legkisebb karakterlnc kerl kivlasztsra. Ha
azonos hosszakat tall a fggvny, akkor az elszr nagyobb/kisebb rtk karakterrel
rendelkez kerl kivlasztsra.
PROGRAM minimum
VAR
Value1 : SINT := 155;
Value2 : SINT := -24;
Value3 : SINT := -3;
Value4 : SINT := 5;
Lowest : SINT;
END_VAR
LD Value1
MIN Value2, Value3, Value4
ST Lowest (*Lowest: -24 *)
END_PROGRAM
MUX Multiplexer
MUX
ANY_INT K
*)
*) IN0
*) IN1
. .
*) IN6
38
Forrs: http://www.doksi.hu
Fggvnyek
K Kivlaszt operandus. Az operandus rtke adja meg, hogy melyik bemenetet
kell a fggvny rtkeknt visszaadni.
rvnyes rtkek, K = 06, ha Kennl nagyobb, akkor a legnagyobb
rvnyes rtket vlasztja ki.
IN0 max. 7 bemeneti rtk, melyekbl a legnagyobb kerl kivlasztsra
IN6
Pldaprogram: kt bemeneti rtk kzli vlaszts
PROGRAM select
VAR
IN_No : USINT := 2;
Numb0 : INT := 15;
Numb1 : INT := -123;
Numb2 : INT := 1;
SelectedNo : INT;
MUX a, b, c, d, e, f, g, h, i, j, K : BYTE;
result : BYTE;
END_VAR
LD IN_Nr
MUX Numb0, Numb1, Numb2
ST SelectedNo (* SelectedNo: 1 *)
END_PROGRAM
BOOL G
*)
*) IN0
*) IN1
39
Forrs: http://www.doksi.hu
Funkciblokkok
6. Funkciblokkok
A Sucosoft S40 a funkciblokkok nagy vlasztkt nyjtja a programozs rszfeladatainak
megknnytsre.
Az IEC 1131-3 ltal definilt funkciblokkokon kvl a Moeller Electric a PLC-khez tovbbi
gyrt specifikus funkciblokkokat is ksztett, melyek kihasznljk a PLC egyedi
adottsgait. Ezek hasznlata tovbb knnytheti az egyes felhasznli alkalmazsok
elksztst.
Az albbiakban csoportostva felsoroljuk a fontosabb funkciblokkokat:
A. Idztk
MS_TimeFalling elejtsre ksleltetett idzt (milliszekundumos megadssal)...................... 95
MS_TimeRising meghzsra ksleltetett idzt (milliszekundumos megadssal)................ 97
S_TimeFalling elejtsre ksleltetett idzt (szekundumos megadssal) ........................... 109
S_TimeRising meghzsra ksleltetett idzt (szekundumos megadssal) ..................... 111
TimeGenerator temad impulzusgenertor ....................................................................... 143
TimePulse impulzuskpz............................................................................................ 145
B. Szmllk s sszehasonltsok
16Bit_Compare 16 bites sszehasonltsok............................................................................ 45
_16bitCounter 16-bites elre- / htraszmll ..................................................................... 46
C. Dtum, id mveletek
GetRealTimeClock vals idej ra kiolvassa............................................................................. 89
RealTimeClock vals idej ra sszehasonltsa egyedi bemeneti adatokkal ..................... 104
RTC vals idej ra lltsa................................................................................ 108
SetRealTimeClock vals idej ra lltsa................................................................................ 128
DATconcat dtum s id (DATE_AND_TIME) tpus vltoz sszelltsa
egyedi UINT tpus adatokbl ..................................................................... 68
DATsplit dtum s id (DATE_AND_TIME) tpus vltoz sztvlasztsa
egyedi UINT tpus adatokra ....................................................................... 72
DateConcat dtum (DATE) tpus vltoz sszelltsa
egyedi UINT tpus adatokbl ..................................................................... 70
DateSplit dtum (DATE) tpus vltoz sztvlasztsa
egyedi UINT tpus adatokra ....................................................................... 71
TimeConcat id (TIME) tpus vltoz sszelltsa
egyedi UINT tpus adatokbl ................................................................... 141
TimeSplit id (TIME) tpus vltoz sztvlasztsa
egyedi UINT tpus adatokra ..................................................................... 150
TODconcat napi id (TOD) tpus vltoz sszelltsa
egyedi UINT tpus adatokbl ................................................................... 152
40
Forrs: http://www.doksi.hu
Funkciblokkok
TODsplit napi id (TOD) tpus vltoz sztvlasztsa
egyedi UINT tpus adatokra ..................................................................... 153
D. Regiszter mveletek
SR_x bites lptet regiszter.................................................................................. 130
SRB_x bjtos lpet regiszter................................................................................. 133
SRW_x szavas lpet regiszter................................................................................ 136
LifoBx 8-bites veremtr regiszter ............................................................................. 90
LifoWx 16-bites veremtr regiszter ........................................................................... 92
FifoBx 8-bites cstr regiszter.................................................................................. 83
FifoWx 16-bites cstr regiszter................................................................................ 86
E. Kdkonvertlsok
_16BitBinaryToBCD 16-bit binris kdols szm -> decimliss alaktsa ............................ 43
BCDTo16BitBinary decimlis kdols szm -> 16-bit binriss alaktsa ............................ 49
F. Tmb/adatblokk mveletek
CompareArray adatblokkok sszehasonltsa, adott adat keresse a blokkban.................... 58
TransferArray adatblokk msolsa, inicializlsa ............................................................. 154
Serialize tetszleges adatstruktra bjtos tmbbe val msolsa ............................. 125
Deserialize tmbbl tetszleges formtum adatok kivlasztsa ................................... 77
BlockCompare adatblokkok sszehasonltsa, adott adat keresse a blokkban
(cmvltozk alkalmazsval) ...................................................................... 50
BlockTransfer adatblokk msolsa, inicializlsa (cmvltozk alkalmazsval)............... 55
G. String feldolgozs
ADRtoSTR vett adatbjtok STRING tpus vltozv alaktsa (cmvltozkkal) ........ 48
STRtoADR STRING tpus vltoz adott cmterletre msolsa (cmvltozkkal) .... 139
COMtoSTR vett adatbjtok STRING tpus vltozv alaktsa (tmbvltozkkal)...... 62
STRtoCOM STRING tpus vltoz adott cmterletre msolsa (tmbvltozkkal) .. 140
H. Kommunikci
SCO transzparens soros vonali kommunikci .................................................. 115
DE4netK DF4 frekvenciavltk kommunikcis modulja .......................................... 74
MI4netK MI4 kijelzk kommunikcis modulja ........................................................ 94
I. Memriakrtya rs, olvass
ReadMC adatok olvassa a flash-memribl ............................................................ 99
WriteMC adatok rsa a flash-memriba.................................................................. 156
ReloadData adatok olvassa a flash-memribl (cmvltozk alkalmazsval) ......... 102
SaveData adatok rsa a flash-memriba (cmvltozk alkalmazsval)................. 113
41
Forrs: http://www.doksi.hu
Funkciblokkok
J. Megszakts kezelsek
CounterAlarm szmll megszaktskezels ....................................................................... 64
EdgeAlarm vltozsfigyels megszaktskezels............................................................ 79
TimerAlarm idztses megszaktskezels.................................................................... 147
42
Forrs: http://www.doksi.hu
_16BitBinaryToBCD
_16BitBinaryToBCD
DecimalHigh UINT
DecimalLow UINT
Az operandusok jelentse:
BinaryValue a binrisan kdolt bemeneti rtk
Signed a BCD szm eljele, (0 = pozitv, 1 = negatv)
DecimalHigh a BCD szm 5. dekdja
DecimalLow a BCD szm 1.- 4. dekdjai
Lers:
16 bites binrisan kdolt szmot talakt 5 deks hosszsg BCD szmm. Az eljel
a Signed kimeneten jelenik meg. ( 0 + , 1 - )
4. dekd 3. dekd 2. dekd 1. dekd
DecimalLow
5. dekd
DecimalHigh
43
Forrs: http://www.doksi.hu
_16BitBinaryToBCD
Pldaprogram:
PROGRAM du16_bcd
VAR
Converter1 : _16BitBinaryToBCD;
BinaryNumb : INT;
Sign : BOOL;
HighNumber : UINT;
LowNumbers : UINT;
END_VAR
LD Converter1.Signed
ST Sign
LD Converter1.DecimalHigh
ST HighNumber
LD Converter1.DecimalLow
ST LowNumbers
END_PROGRAM
44
Forrs: http://www.doksi.hu
_16Bit_Compare
_16Bit_Compare
_16Bit_Compare
Less BOOL
Az operandusok jelentse:
InputValue1 els sszehasonltand szm
InputValue2 msodik sszehasonltand szm
Greater eredmny: els szm nagyobb
Equal eredmny: a kt szm egyenl
Less eredmny: els szm kisebb
Lers:
A funkciblokk a kt bemeneti szm rtkt hasonltja ssze. Az eredmyn hrom
biten jelenik meg.
Less Equal Greater
InputValue1 < InputValue2 1 0 0
InputValue1 = InputValue2 0 1 0
InputValue1 > InputValue2 0 0 1
Pldaprogram:
PROGRAM length
VAR
Compare_length : _16Bit_Compare;
Length1 : INT := 10;
Length2 : INT := 10;
L1_equal_L2 : BOOL;
END_VAR
CAL Compare_length(InputValue1 := Length1,
InputValue2 := Length2)
LD Compare_length.Equal
ST L1_equal_L2
END_PROGRAM
45
Forrs: http://www.doksi.hu
_16BitCounter
BOOL Set
BOOL ReSet
UINT InputValue
Az operandusok jelentse:
Forward Elreszmlls, felfut l
Backward Visszaszmlls, felfut l
Set rtk bers, felfut l
ReSet Visszallts, trls.
InputValue Berand rtk
Zero Jelzs: szmll llapota=0
OutputValue Szmll aktulis rtke
Lers:
A funkciblokk impulzusok elre- / htraszmllsra szolgl. A Forward bemenetre
jut felfut l eggyel nveli, a Backward bemenetre jut felfut l eggyel cskkenti a
szmll tartalmt. A szmll aktulis rtke az OutputValue kimeneten
leolvashat. A Set bemenetre adott felfut llel lehet az InputValue rtkt a
szmllnak tadni. A ReSet bemenetre adott 1-el a szmll tartalma trlhet,
tarts 1-el pedig a szmll letiltsra kerl.
A szmll rtelmezsi tartomnya: 0..65535. A szmok gyrszeren krbefutjk
a tartomnyt.
Ha szmll nem remanensknt van deklarlva, akkor minden kezdskor 0 rtket
vesz fel, s gy a Zero kimenet 1-t vesz fel. Remanens deklarls esetn a szmll
megtartja eredeti rtkt.
Megjegyzs!
A pulzusok hossznak s a pulzusok kzti sznetidnek legalbb egy-egy ciklusidnl
hosszabbnak kell lennie, hogy a szmll minden szmlland pulzust figyelembe
1
vegyen. a maximlis szmllsi frekvencia: F =
2 * TCiklusid
46
Forrs: http://www.doksi.hu
_16BitCounter
Pldaprogram:
PROGRAM parts_16
VAR RETAIN
Count_parts : _16BitCounter;
END_VAR
VAR
Light_barrier AT %I0.0.0.0.0 : BOOL;
Quantity UINT;
Clear : AT %I0.0.0.0.1 : BOOL;
END_VAR
LD Count_parts.OutputValue
ST Quantity
END_PROGRAM
47
Forrs: http://www.doksi.hu
ADRtoSTR
ADRtoSTR
TextSring TextSring
ANY_STRING
BOOL Enable
UINT StrLen
ADDRESS ReceiveVariable
Az operandusok jelentse:
Enable Az talaktsi folyamat engedlyezse
StrLen Az talaktand jelek szma
ReceiveVariable A memriaterlet kezdcme, ahol az adatok tallhatk
TextSring Karakterlnc, mely a memriaterlet adataibl ltrejtt.
Lers:
A soros vonalon vett s az adott memriaterleten elhelyezett adatokat a
funkciblokk talaktja egy STRING tpus vltozv. Az Enable bemenetre adott 1-
es szinttel indthat az talaktsi mvelet.
Az StrLen bemenetre adott szmmal lehet az talaktand karakterek szmt, azaz az
eredmnyl kapott STRING vltoz hosszt megadni. Amennyiben a deklarls
sorn a STRING vltoz karakterhossza rvidebb a vteli tmbben elhelyezett
adatok szmnl, akkor csak a STRING vltozban definilt hosszsg adatok
kerlnek beolvassra.
Pldaprogram:
PROGRAM Str_Gen
VAR
Marker_to_String : ADRtoSTR;
ReceiveText : STRING(4) := 'HALT';
StartAddress AT %MB0.0.0.100 : ARRAY[1..20] OF BYTE;
ReceiveLength : UINT := 4;
END_VAR
CAL Marker_to_String(Enable := 1,
StrLen := ReceiveLength,
ReceiveVariable := &StartAddress,
TextString := ReceiveText)
(* A karaterlncot a %MB0.0.0.100-tl kezdd adatokkal tlti fel! *)
END_PROGRAM
48
Forrs: http://www.doksi.hu
BCDTo16BitBinary
BCDTo16BitBinary
UINT DecimalValue
Az operandusok jelentse:
Signed a BCD szm eljele, (0 = pozitv, 1 = negatv)
DecimalValue a BCD szm (4 dekdban)
BinaryValue a binrisan kdolt kimeneti rtk
Lers:
4 dekdos binrisan kdolt eljeles decimlis szmot talakt eljeles binris
szmm. deks hosszsg BCD szmm. rtktartomny: -9999+9999.
A konvertland 4 dekdos BCD szmok: +11, +9999, -1311, -9999.
Signed DecimalValue BinaryValue BinaryValue
(hexadecimlis) (eljeles,
decimlis)
0 0 0 1 1 B 11
0 9 9 9 9 270F 9999
1 1 2 1 1 FAE1 -1311
1 9 9 9 9 DBF1 -9999
Pldaprogram:
PROGRAM bcd_du16
VAR
Converter3 : BCDTo16BitBinary;
DecimalNumber : UINT := 13;
Sign : BOOL := 0;
BinaryNumber : INT;
END_VAR
END_PROGRAM
49
Forrs: http://www.doksi.hu
Blockcompare
BlockCompare
Error USINT
Az operandusok jelentse:
Mode zemmd: (0 = adatkeress, 1 = blokk sszehasonlts)
SourceAddress a forrstartomny kezdcme
DestinationAddress cltartomny kezdcme
ElementNumber msoland elemek szma
Greater sszehasonlts eredmnye nagyobb jelzs
Equal sszehasonlts eredmnye azonos jelzs
Less sszehasonlts eredmnye kisebb jelzs
Output pozci megadsa, hol van az els eltrs,
vagy a keresett adat helye
Error hibajelzs
Lers:
A funkciblokknak ktfle zemmdja van (adat keress, s adatterletek
sszehasonltsa), Az zemmd vlaszts a Mode bemenetre adott rtkkel trtnhet.
Keressi zemmd
A keress zemmd egy adatterleten elhelyezked egyedi rtk megkeressre
szolgl. A keresend adatot a SourceAddress bemeneten megadott cm vltoz
tartalmazza. Az ellenrizend tartomny kezdcmt a DestinationAddress
bemeneten lev vltoz, a tartomny nagysgt az ElementNumber bemenet adja
meg. (A vltozcmeket a cmvltoz el rt & cmopertor jelzi.
Ha a megadott helytl kezdve (DestinationAddress) tvizsglva, a kijellt terleten
bell (ElementNumber) a funkciblokk megtallja a keresett adatot (SourceAddress),
50
Forrs: http://www.doksi.hu
BlockCompare
akkor a megtallt adat helyzete az Output kimeneten megjelenik, s az Equal
kimenet magasba ( =1 ) kerl. A kimenetek llapota, amikor az rtket megtallta az
albbi:
Output = 0 . (ElementNumber - 1) Equal = 1; Less = Greater = 0
Ha a megadott rtket nem tallja meg a kijellt terleten, akkor az Output kimenet
egyenl az ElementNunber vltozval, az Equal kimenet = 0 lesz, a Less s a
Greater kimenetek pedig az utols adatrtk sszehasonltskor felvett rtkket
tartjk meg. A kimenetek llapota, amikor az rtket nem tallta meg, teht az albbi:
Output = ElementNumber Equal = 0; Less =1, Greater = 0
(Less = 0, Greater = 1)
A kvetkez plda a MB23 merker bjtban trolt "7D" rtket keresi a MB27 s a
MB32 ltal hatrolt adatterleten
%MB0.0.0.23 7D
%MB0.0.0.24 00
%MB0.0.0.25 00
%MB0.0.0.26 00
%MB0.0.0.27 3D
%MB0.0.0.28 70
%MB0.0.0.29 4D
%MB0.0.0.30 7D
%MB0.0.0.31 7D
%MB0.0.0.32 7D
%MB0.0.0.33 00
Eredmny Output = 3 %MB0.0.0.34 00
Less = 0
Equal= 1 tallatkor abbahagyja a keressi eljrst
Greater = 0
51
Forrs: http://www.doksi.hu
Blockcompare
Pldaprogram:
PROGRAM search
VAR
search_fb : BlockCompare;
SourceAddress AT %MB0.0.0.23 : BYTE := 16#7D;
(* a 23. bjt Marker 7Dhex kezdeti rtkkel van inicializlva *)
DestinationAddress AT %MB0.0.0.27 : BYTE;
Start AT %I0.0.0.0.0 : BOOL; (* keress indtsa *)
Found : USINT;
Result_greater : BOOL;
Result_equal : BOOL;
Result_less : BOOL;
END_VAR
LD Start
CALC search_fb(Mode := 0, (* keressi zemmd! *)
SourceAddress := &SourceAddress,
DestinationAddress := &DestinationAddress,
ElementNumber := 6 (* keressi tartomny: 6 bjt *)
)
LD search_fb.Output
ST Found (* tallati hely, ahol az els azonossg kiderlt *)
(* rtke: "DestinationAddress" + "Output" *)
LD search_fb.Greater
ST Result_greater
LD search_fb.Equal
ST Result_equal
LD search_fb.Less
ST Result_less
END_PROGRAM
sszehasonltsi zemmd
Az adatterlet sszehasonltsi zemmd kt adatterlet tartalmt hasonltja ssze.
Az adatterletek kezdeteit a SourceAddress, s a DestinationAddress bemeneteken,
az sszehasonltand terlet mrett az ElementNumber bemeneten kell megadni. Ha
a kt adatterlet tartalma azonos, akkor az Output kimeneten az ElementNumber
rtke jelenik meg, az Equal kimenet pedig 1-el jelzi az azonossgot. A kimenetek
llapota, amikor az adatterletek azonosak az albbi:
Output = ElementNumber; EQ = 1; LT = 0; GT = 0;
52
Forrs: http://www.doksi.hu
BlockCompare
A kvetkez plda a MB23 s MB26 kztti bjtok tartalmt hasonltja ssze az
MB30 s a MB 33 kztti bjtok tartalmval.
%MB0.0.0.23 7D
%MB0.0.0.24 3B
%MB0.0.0.25 64
%MB0.0.0.26 A6
%MB0.0.0.27 00
%MB0.0.0.28 00
%MB0.0.0.29 00
%MB0.0.0.30 7D
%MB0.0.0.31 3B
%MB0.0.0.32 64
%MB0.0.0.33 A6
Eredmny Output = 4 %MB0.0.0.34 00
Less = 0 sszehasonlts eredmnye
Equal = 1
Greater = 0
Pldaprogram:
PROGRAM compare
VAR
compare_fb : BlockCompare;
SourceAddress AT %MB0.0.0.23 : BYTE;
DestinationAddress AT %MB0.0.0.30 : BYTE;
Start AT %I0.0.0.0.0 : BOOL ; (* sszehasonlts indts *)
Discrepancy : USINT;
Result_greater : BOOL;
Result_equal : BOOL;
Result_less : BOOL;
END_VAR
53
Forrs: http://www.doksi.hu
Blockcompare
LD Start
CALC compare_fb(Mode := 1, (* sszehasonltsi zemmd! *)
SourceAddress := &SourceAddress,
DestinationAddress := &DestinationAddress,
ElementNumber := 4) (* sszehasonltand blokkmret: 4*)
LD such_fb.Output
ST Discrepancy (*els pozc, ahol eltrs volt *)
(* DestinationAddress + Output *)
LD such_fb.Greater
ST Result_greater
LD such_fb.Equal
ST Result_equal
LD such_fb.Less
ST Result_less
END_PROGRAM
54
Forrs: http://www.doksi.hu
BlockTransfer
BlockTransfer
BOOL Mode
ADDRESS SourceAddress
ADDRESS DestinationAddress
Az operandusok jelentse:
Mode zemmd: (0 = inicializls, 1 = blokk msols)
SourceAddress a forrstartomny kezdcme
DestinationAddress cltartomny kezdcme
ElementNumber msoland elemek szma
Error hibajelzs
Lers:
A funkciblokknak ktfle zemmdja van (adatok inicializlsa, s adatterlet
msolsa).
Az zemmd vlaszts a Mode bemenetre adott rtkkel trtnhet.
Az ElementNumber bemenetre adott szm a az adatblokk nagysgt adja meg
bjtban kifejezve.
Az Error kimeneten az esetleges hibakd jelenik meg:
0 nincs hiba,
1 az elemek szma (ElementNumber) nulla.
2 rvnytelen forrscm a SourcsAddresse bemeneten
3 rvnytelen cltartomny cm a SourcsAddresse bemeneten
4 a forrscm azonos a cltartomny cmvel
Msolsi zemmd
A msols zemmd egy adott adatterleten elhelyezked adatmennyisget visz t
egy msik terletre. A msoland tartomny kezdcmt a SourceAddress bemeneten
55
Forrs: http://www.doksi.hu
BlockTransfer
megadott cm vltoz tartalmazza. A cltartomny kezdcmt a
DestinationAddress bemeneten lev vltoz cme, a tartomny nagysgt az
ElementNumber bemenet adja meg. (A vltozcmeket a cmvltoz el rt &
cmopertor jelzi.
Pldaprogram:
A kvetkez plda a MB23-tl az MB26ig terjed merker bjtban trolt rtket viszi
t az MB30-tl az MB33ig terjed adatterletre.
Vltozcmek vltoz rtkek
%MB0.0.0.23 7D
%MB0.0.0.24 3B
%MB0.0.0.25 64
%MB0.0.0.26 A6
%MB0.0.0.27 00
%MB0.0.0.28 00
%MB0.0.0.29 00
%MB0.0.0.30 7D
%MB0.0.0.31 3B
%MB0.0.0.32 64
%MB0.0.0.33 A6
%MB0.0.0.34 00
PROGRAM copy
VAR
copy_fb : BlockTransfer;
SourceAddress AT %MB0.0.0.23 : BYTE;
DestinationAddress AT %MB0.0.0.30 : BYTE;
Start AT %I0.0.0.0.0 : BOOL; (* msols indtsa*)
END_VAR
LD Start
CALC copy_fb(Mode := 1, (* msols zemmd! *)
SourceAddress := &SourceAddress,
DestinationAddress := &DestinationAddress,
ElementNumber := 4) (* msoland elemek szma konstans *)
END_PROGRAM
56
Forrs: http://www.doksi.hu
BlockTransfer
Inicializlsi zemmd
Az inicializlsi zemmdban egy adott adott rtket r be egy kijellt tartomny
minden vltozjba. A msoland vltoz cmt a SourceAddress bemeneten
megadott cm vltoz tartalmazza. A cltartomny kezdcmt a
DestinationAddress bemeneten lev vltoz cme, a tartomny nagysgt az
ElementNumber bemenet adja meg. (A vltozcmeket a cmvltoz el rt &
cmopertor jelzi.
Pldaprogram:
A kvetkez plda a MB23 merker bjtban trolt "7D" rtket viszi be a MB27 s a
MB32 ltal hatrolt adatterletre
%MB0.0.0.23 7D
%MB0.0.0.24 00
%MB0.0.0.25 00
%MB0.0.0.26 00
%MB0.0.0.27 7D
%MB0.0.0.28 7D
%MB0.0.0.29 7D
%MB0.0.0.30 7D
%MB0.0.0.31 7D
%MB0.0.0.32 7D
%MB0.0.0.33 00
%MB0.0.0.34 00
PROGRAM init
VAR
init_fb : BlockTransfer;
SourceAddress AT %MB0.0.0.23 : BYTE := 16#7D;
(* MarkerByte 23 initialised with the data value 7D *)
DestinationAddress AT %MB0.0.0.27 : BYTE;
Start AT %I0.0.0.0.0 : BOOL; (* a mvelet indtsa *)
END_VAR
LD Start
CALC init_fb(Mode := 0, (* inicializlsi zemmd! *)
SourceAddress := &SourceAddress,
DestinationAddress := &DestinationAddress,
ElementNumber := 6) (* elemek szma konstans: 6bjt *)
END_PROGRAM
57
Forrs: http://www.doksi.hu
CompareArray
CompareArray
Source Source
ANY_ARRAY
Destination Destination
ANY_ARRAY
BOOL Mode
UINT SourceOffset Greater BOOL
UINT DestinationOffset Equal BOOL
UINT ElementNumber Less BOOL
Output UINT
Error USINT
Az operandusok jelentse:
Mode zemmd: (0 = adatkeress, 1 = blokk sszehasonlts)
Source a forrstmb
Destination cltmb
SourceOffset a forrstmbbn belli eltols rtke
DestinationOffset a cltmbbn belli eltols rtke
ElementNumber msoland bjtok szma
Greater sszehasonlts eredmnye nagyobb jelzs
Equal sszehasonlts eredmnye azonos jelzs
Less sszehasonlts eredmnye kisebb jelzs
Output pozci megadsa, hol van az els eltrs,
vagy a keresett adat helye
Error hibajelzs
Lers:
A funkciblokknak ktfle zemmdja van (adat keress, s adatterletek
sszehasonltsa), Az zemmd vlaszts a Mode bemenetre adott rtkkel trtnhet.
A forrs s a cl-tmb tetszleges nagysg tmb lehet. A tmb tpusa ANY_INT
vagy ANY_BIT lehet, kivve a BOOL (bites) tmbket.
Az Error kimenet a kvetkez rtkeket veheti fel:
0 nincs hiba,
1 az elemek szma (ElementNumber) nulla.
2 A SourceOffset rtke nagyobb, mint a Source tartomny rtke
58
Forrs: http://www.doksi.hu
CompareArray
3 Az elemek szma tllpi a a forrstartomny rtkt
4 A DestinationOffset rtke nagyobb, mint a Destination tartomny rtke
5 Az elemek szma tllpi a cltartomny rtkt
Keressi zemmd
A keress zemmd egy tmben elhelyezked egyedi rtk megkeressre szolgl. A
keresend adatot a Source bemeneten megadott tmb a SourceOffset ltal megadott
vltozja tartalmazza. Az ellenrizend tartomny kezdett a Destination bemeneten
lev tmb s a DestinationOffset vltoz egyttesen adja meg.
Az tvizsgland blokk hosszt az ElementNumber hatrozza meg.
Ha az tvizsgls sorn a funkciblokk a cltartomny s az elemszm ltal
meghatrozott terleten a keresett adatot megtallja, akkor a megtallt adat helyzete
az Output kimeneten megjelenik, s az Equal kimenet magasba (=1) kerl. A
kimenetek llapota, amikor az rtket megtallta az albbi:
Output = 0 . (ElementNumber - 1) Equal = 1; Less = Greater = 0
Ha a megadott rtket nem tallja meg a kijellt terleten, akkor az Output kimenet
egyenl az ElementNumber vltozval, az Equal kimenet = 0 lesz, a Less s a
Greater kimenetek pedig az utols adatrtk sszehasonltskor felvett rtkket
tartjk meg. A kimenetek llapota, amikor az rtket nem tallta meg, teht az albbi:
Output = ElementNumber Equal = 0; Less =1, Greater = 0
(Less = 0, Greater = 1)
A kvetkez plda a MB23 merker bjtban trolt "7D" rtket keresi a MB27 s a
MB32 ltal hatrolt adatterleten
Pldaprogram:
PROGRAM search
VAR
search_fb : CompareArray;
SourceAddress AT %MB0.0.0.23 : ARRAY [1..1] OF BYTE := [16#7D];
(* Az MB23 7D kezdeti rtket kap *)
DestinationAddress AT %MB0.0.0.27 : ARRAY [1..1] OF BYTE;
Start AT %I0.0.0.0.0 : BOOL;
Found : UINT;
Result_greater : BOOL;
Result_equal : BOOL;
Result_less : BOOL;
END_VAR
59
Forrs: http://www.doksi.hu
CompareArray
LD Start
CALC search_fb(Mode := 0, (* keressi zemmd *)
Source := SourceAddress,
Destination := DestinationAddress,
ElementNumber := 6) (* keressi tartomny hossza: 6 bjt *)
LD search_fb.Output
ST Found (* keresett rtk helye: Destination + Output *)
LD search_fb.Greater
ST Result_greater
LD search_fb.Equal
ST Result_equal
LD search_fb.Less
ST Result_less
END_PROGRAM
sszehasonltsi zemmd
Az adatterlet sszehasonltsi zemmd kt adatterlet tartalmt hasonltja ssze.
Az adatterletek kezdeteit a Source s a SourceOffset, valamint a Destination s a
DestinationOffset bemenetek hatrozzk meg. Az sszehasonltand terlet mrett
az ElementNumber bemeneten kell megadni.
Ha a kt adatterlet tartalma azonos, akkor az Output kimeneten az ElementNumber
rtke jelenik meg, az Equal kimenet pedig 1-el jelzi az azonossgot. A kimenetek
llapota, amikor az adatterletek azonosak az albbi:
Output = ElementNumber; EQ = 1; LT = 0; GT = 0;
VAR
compare_fb : CompareArray;
SourceAddress AT %MB0.0.0.23 : ARRAY [1..7] OF BYTE := [16#7D];
DestinationAddress AT %MB0.0.0.30 : ARRAY [1..7] OF BYTE := [16#7D];
60
Forrs: http://www.doksi.hu
CompareArray
Start AT %I0.0.0.0.0 : BOOL;
Deviation : USINT;
Result_greater : BOOL;
Result_equal : BOOL;
Result_less : BOOL;
END_VAR
LD Start
CALC compare_fb(Mode := 1, (* sszehasonltsi md*)
Source := SourceAddress,
Destination := DestinationAddress,
ElementNumber := 4) (* sszehasonltsi tartomny: 4bjt *)
LD compare_fb.Output
ST Deviation (* eltrs helye: Destination" + Output *)
LD compare_fb.Greater
ST Result_greater
LD compare_fb.Equal
ST Result_equal
LD compare_fb.Less
ST Result_less
END_PROGRAM
61
Forrs: http://www.doksi.hu
COMtoSTR
COMtoSTR
ReceiveVariable ReceiveVariable
ANY_ARRAY
TextString TextString
ANY_STRING
UINT StrLen
BOOL Enable
Az operandusok jelentse:
ReceiveVariable A tmb kezdcme, ahol az adatok tallhatk
TextSring Karakterlnc, mely a tmb adataibl ltrejtt.
StrLen Az talaktand jelek szma
Enable Az talaktsi folyamat engedlyezse
Lers:
A soros vonalon vett s az adott tmbterleten elhelyezett adatokat a funkciblokk
talaktja egy STRING tpus vltozv. Az Enable bemenetre adott 1-es szinttel
indthat az talaktsi mvelet.
Az StrLen bemenetre adott szmmal lehet az talaktand karakterek szmt, azaz az
eredmnyl kapott STRING vltoz hosszt megadni. Amennyiben a deklarls
sorn a STRING vltoz karakterhossza rvidebb a tmbben elhelyezett adatok
szmnl, akkor csak a STRING vltozban definilt hosszsg adatok kerlnek
beolvassra.
Pldaprogram:
PROGRAM Str_Gen
VAR
EnableReceive AT%I0.0.0.0.0 : BOOL;
Array_to_String : COMtoSTR;
ReceiveText : STRING(20):
ReceiveArray : ARRAY[1..20] of Byte;
ReceiveLength: UINT;
ReceiveFromSerial : COM ;
END_VAR
62
Forrs: http://www.doksi.hu
COMtoSTR
CAL ReceiveFromSerial(Mode := 1;
ReceiveStrobe := ;
SlotNumber := 0; (*PS4-300 esetn mindig 0 *)
ReceiveNumber := 20 ;
ReceiveVariable := ReceiveArray;
|
ReceiveActive := ;
ReceivedBytes := ;
ReceiveError := ;
InterfaceStatus := ;
SlotError := )
ST Array_to_String.Enable
CAL Array_to_String(Enable := ;
StrLen := ReceiveFromSerial.ReceivedBytes;
TextString := ReceiveText,
ReceiveVariable := ReceiveArray)
END_PROGRAM
63
Forrs: http://www.doksi.hu
CounterAlarm
CounterAlarm
UINT SetpointValue
ANY_FUNCTION_BLOCK SubRoutine
Az operandusok jelentse:
EnableDisable Megszaktskr funkciblokk engedlyezse / tiltsa, felfut lvez.
(engedly=1, tilts=0)
Number megszaktskr csatornaszm (PS4-141/-151/-201/-341 = 0)
Predivide Szmll elosztja
SetpointValue Szmll alapjel
SubRoutine megszaktskrst kiszolgl funkciblokk neve
Error hibajelzs
CountValue aktulis szmllrtk
CallUpValue megszaktskr hvsok szma
Lers:
A funkciblokk az alapkszlk (PS4-150/200/-300) %I0.0.0.0.0 bemenethez van
hozzrendelve.
Az EnableDisable bemenet engedlyezi a szmll mkdst. A szmll indul, ha
a bemeneten pozitv l vlts (0 1) kvetkezik be. A szmll lell, s trldik, ha
ez a bemenet visszakapcsol (1 0).
A CountValue kimeneten a hardverszmll aktulis rtke lthat
A Predivide bemenet (rtktartomnya: 165535) azt hatrozza meg, hogy mennyi
impulzusnak kell a hardver bemenetre rkezni, hogy a szmll tartalma eggyel
nvekedjen. (eloszt funkci)
A SetpointValue bemenet (rtktartomnya: 165535) hatrozza meg, hogy a
szmll mely rtknl kell a megszakts, azaz mikor kell a funkciblokkot
felhvni.
64
Forrs: http://www.doksi.hu
CounterAlarm
A rendszer maximlisan megengedett kiterhelse hrom tnyez egyttestl fgg:
A Predivide, a SetpointValue rtktl s a rkapcsolt jel frekvencijtl. A nevezett
tnyezket gy kell megvlasztani, hogy milliszekundumonknt maximlisan kt
megszakts lpjen csak fel.
Az Error kimenet tartalmazza az esetleges fellp hibk kdjait:
0 nincs hiba
1 alapjel (SetpointValue) = 0
2 eloszt (Predivide) = 0
3 rvnytelen megszaktskr csatornaszm
(csak a PS4-300 estn)
4 megszaktskr csatornaszmot mr felhasznltk
(csak a PS4-300 estn)
5 a szmll csatorna nincs fel- / leszmllknt
paramterezve (csak a PS4-300 estn)
A CounUpValue kimenet (rtktartomny: 065535) jelzi, hogy az alapjel rtket
hnyszor rte el a szmll, azaz hnyszor trtnhetett megszakts.
Az SubRoutine bemenet biztostja az esemnyvezrelt programvezrls beillesztst.
Ennek rdekben ezen a bemeneten lehet a megszaktskrst kiszolgl
funkciblokk nevt megadni. Mikor az esemny bekvetkezik (a CounterValue
szmll eggyel nvekszik) s az alprogram vgrehajtdik. Ha erre a bemenetre
nincs funkciblokk kapcsolva, akkor csak a CounterValue szmll tartalma n, s
nincs megszaktskrs kiszolgls.
A megszaktskrst kiszolgl funkciblokk nem tartalmazhat sem bemen, sem
kimen paramtereket. Egy ilyen funkciblokk csak loklis vltozkat, vagy csak a
fprogramban deklarlt globlis vltozkat, mint kls vltozkat
(VAR_EXTERNAL) tartalmazhat.
Esemnyvezrelt program alkalmazsakor az albbi szempontokat kell figyelembe
venni:
Az esemny bekvetkezte a felhasznli program vgrehajtst megszaktja, a
regiszterek llapott elmenti, s a SubRoutine bemeneten megadott cmre ugorva
vgrehajtja az alprogramot. A megszaktskr funkciblokk nem szakthat meg
egy msik megszaktskr funkciblokkal (az sszes megszaktskr
funkciblokknak azonos a prioritsa).
A felhasznli program 5ms idtartamra (kb. 1000 utastssor vgrehajtsa)
korltozza a megszaktskr funkciblokk vgrehajtsi idejt, mivel a
megszaktskr funkciblokk mkdst a rendszerprogram sem tudja (mg
tpkimaradskor sem) megszaktani. Ha a vgrehajtsi id tllpi ezt a korltot,
akkor a tp kikapcsolsakor EDC hiba keletkezhet.
A megszaktskr funkciblokk vgrehajtsi ideje hozzaddik a felhasznli
program vgrehajtsi idejhez, gy a ciklusid ellenrzsbe is bekerl!
Mivel az esemnyvezrelt program futtatsakor korltozs nlkl elrhetk a
globlis vltozk is, a ciklikus felhasznli program s az esemnyvezrelt
program ltal kzsen irhat /olvashat adatokat reteszels nlkl nem szabad
65
Forrs: http://www.doksi.hu
CounterAlarm
felhasznlni. Pldul a ciklikus felhasznli programban s a megszaktskr
funkciblokkban ugyanabban a bjtban hasznlt bithozzfrst csak a
Disable_Interrupt s a Enable_Interrupt utastsokkal val szinkronizlssal
szabad korrekten vgrehajtani.
A lehet leggyorsabb reagls rdekben a megszaktskr funkciblokkban
clszer a kzvetlen perifria hozzfrst hasznlni, melyek az alapkszlken
llnak rendelkezsre (%QP0.0.0.0.x, %QPB0.0.0.0).
A megszaktskr funkciblokkok az alkalmazi programban elvileg tbbszr is
hasznlhatk, de ezt ltalban kerlni rdemes, mivel a megszaktskr
funkciblokk tpusok ugyanazzal az esemnyforrssal, s gy a programban csak
az utoljra rvnyesl funkciblokk hatrozza meg feldolgozst.
A tbbszri felhasznls azt jelenti, hogy az egyedi funkciblokk-tpus minden
egyes alkalmazshoz kln-kln adatterletet foglal le.
impulzusok max:
%I0.0.0.0.0 3kHz
Predivide=5
SetpointValue=1
CountValue 0 1 2 3 4 0 1 2 3 4 0 ... 0
CallUpNumber 0 0 0 0 0 1 1 1 1 1 2 ...
Ugrs a funkciblokkra
Predivide =65535
SetpointValue =1
CountValue 0 1 2 3 4 .. .. .. .. 65535
CallUpNumber 0 0 0 0 0 0 0 0 0 0 .. .. 0 1
Ugrs a funkciblokkra
Predivide =3
SetpointValue =2
CountValue 0 1 2 0 1 2 0 1 2 0 1 2 0 1
CallUpNumber 0 0 0 0 0 0 1 1 1 1 1 1 2 2
Ugrs a funkciblokkra
66
Forrs: http://www.doksi.hu
CounterAlarm
Pldaprogram:
PROGRAM calarm
VAR
CountAlarm : CounterAlarm;
Error : USINT;
CountValue : UINT;
END_VAR
LD CountAlarm.Error
ST Error
LD CountAlarm.CountValue
ST CountValue (* Mutatja az aktulis rtket *)
END_PROGRAM
67
Forrs: http://www.doksi.hu
DATconcat
DATconcat
UINT Minute
UINT Hour
UINT Day
UINT Month
UINT Year
Az operandusok jelentse:
MilliSecond dtum id vltoz milliszekundum rsze
Second dtum id vltoz szekundum rsze
Minute dtum id vltoz perc rsze
Hour dtum id vltoz ra rsze
Day dtum id vltoz nap rsze
Month dtum id vltoz hnap rsze
Year dtum id vltoz v rsze
OutputDAT az eredmnyl kapott dtum id vltoz
Error Hibajelzs
Lers:
A bemenetknt UINT formtumban megadott egyedi rtkeket a funkciblokk a
DAT_AND_TIME (DT) formtum vltozv alaktja.
Az egyes bemeneti rtkek a nekik megfelel rtktartomnyt nem lphetik t.
Az v megengedett tartomnya 1993.2092 kztt vltozhat.
Amennyiben a megengedett rtkeket tllpik, akkor az Error kimeneten hiba
jelenik. meg (= 1).
68
Forrs: http://www.doksi.hu
DATconcat
Pldaprogram:
PROGRAM dtgen
VAR
DateTimeConcatenation : DATconcat;
Millisecond : UINT;
Second : UINT;
Minute : UINT;
Hour : UINT;
Day : UINT;
Month : UINT;
Year : UINT;
Error : BOOL;
Date_1 : DATE_AND_TIME;
END_VAR
69
Forrs: http://www.doksi.hu
DateConcat
UINT Year
Az operandusok jelentse:
Day dtum vltoz nap rsze
Month dtum vltoz hnap rsze
Year dtum vltoz v rsze
OutputDAT az eredmnyl kapott dtum vltoz
Error Hibajelzs
Lers:
A bemenetknt UINT formtumban megadott egyedi rtkeket a funkciblokk a
DATE formtum vltozv alaktja.
Az egyes bemeneti rtkek a nekik megfelel rtktartomnyt nem lphetik t.
Az v megengedett tartomnya 1993.2092 kztt vltozhat.
Amennyiben a megengedett rtkeket tllpik, akkor az Error kimeneten hiba
jelenik. meg (= 1).
Pldaprogram:
PROGRAM dategen
VAR
Dateconcaten : DateConcat;
Datum : Date;
Day : UINT;
Month : UINT;
Year : UINT;
Error : BOOL;
END_VAR
CAL Dateconcaten(Day := Day,
Month := Month,
Year := Year
|
Datum := OutputDate,
Error := Error)
END_PROGRAM
70
Forrs: http://www.doksi.hu
DateSplit
Month UINT
Year UINT
Error BOOL
Az operandusok jelentse:
InputDAT a bemeneti dtum vltoz
Day dtum vltoz nap rsze
Month dtum vltoz hnap rsze
Year dtum vltoz v rsze
Error Hibajelzs
Lers:
A bemenetknt DATE formtumban megadott vltozt a funkciblokk UINT
formtum egyedi vltozkk alaktja t.
Az v megengedett tartomnya 1993.2092 kztt vltozhat, amennyiben az
vszm a megengedett rtkeket tllpi, akkor az Error kimeneten hiba jelenik. meg
(= 1).
Pldaprogram:
PROGRAM datetln
VAR
DateElements: DateSplit;
Datum: Date := D#1999-12-24;
Day : UINT;
Month : UINT;
Year : UINT;
Error : BOOL;
END_VAR
CAL DateElements (InputDate := Datum
|
Day := Day,
Month := Month,
Year := Year,
Error := Error)
END_PROGRAM
71
Forrs: http://www.doksi.hu
DATsplit
DATsplit
Second, UINT
Minute UINT
Hour UINT
Day UINT
Month UINT
Year UINT
Error BOOL
Az operandusok jelentse:
InputDAT a bemeneti DATE_AND_TIME dtum id vltoz
MilliSecond dtum id vltoz milliszekundum rsze
Second dtum id vltoz szekundum rsze
Minute dtum id vltoz perc rsze
Hour dtum id vltoz ra rsze
Day dtum id vltoz nap rsze
Month dtum id vltoz hnap rsze
Year dtum id vltoz v rsze
Error Hibajelzs
Lers:
A bemenetknt DATE_AND_TIME (DT) formtumban megadott vltozt a
funkciblokk UINT formtum egyedi vltozkk alaktja t.
Az v megengedett tartomnya 1993.2092 kztt vltozhat, amennyiben az
vszm a megengedett rtkeket tllpi, akkor az Error kimeneten hiba jelenik. meg
(= 1).
72
Forrs: http://www.doksi.hu
DATsplit
Pldaprogram:
PROGRAM dtspalt
VAR
DT_Elements : DATsplit;
Date_1 : DT := DT#1999-11-20-22:13:2;
Millisecond : UINT;
Second : UINT;
Minute : UINT;
Hour : UINT;
Day : UINT;
Month : UINT;
Year : UINT;
Error : BOOL;
END_VAR
END_PROGRAM
73
Forrs: http://www.doksi.hu
DE4netK
SendData SendData
ARRAY [0..11] OF BYTE
ReadData ReadData
ARRAY [0..11] OF BYTE
BOOL Enable StatusWord WORD
BOOL Start
BOOL Quickstop
BOOL DCBrake
BOOL TripReset
BOOL ParameterSet
BOOL MotorPotUp
BOOL MotorPotDown
BOOL FixedFrequency1
BOOL FixedFrequency2
BOOL FixedFrequency3
BOOL Reversal
BOOL FreezeRamp
INT ReferenceFrequency ActualFrequency INT
BYTE Command EchoCommand BYTE
UINT ParameterNumber EchoParameterNumber UINT
Busy BOOL
UINT TransmitValue ReceiveValue UINT
UINT TransmitValueOffset ReceiveValueOffset UINT
ErrorCode USINT
Az operandusok jelentse:
SendData opertorlista a kld regiszter szmra
ReadData opertorlista a fogad regiszter szmra
Enable 1: frekvenciavlt engedlyezse
0: frekvenciavlt tiltsa
Start 1: motort az alapjelre felfutatni
0: motort megadott lassulssal lelltani
Quickstop 1: motort quick-stop-lassulssal lelltani
DCBrake 1: egyenram fkezst aktivizlni
74
Forrs: http://www.doksi.hu
DE4netK
TripReset 0 -> 1 tmenettel az aktulis hibajel trlhet
ParameterSet 0: 1-es paramterkszlet aktivlsa
1: 2-es paramterkszlet aktivlsa
MotorPotUp 1: motorpoti felfel funkci aktivls
MotorPotDown 1: motorpoti lefel funkci aktivls
FixedFrequency1 1: 1. fix frekvencia kivlaszts, ha FixedFrequency2 s
FixedFrequency3 azonosan 0.
FixedFrequency2 1: 2. fix frekvencia kivlaszts, ha FixedFrequency3 = 0
FixedFrequency3 1: 3. fix frekvencia kivlaszts
Reversal motor forgsirnyvlts
FreezeRamp 0. fordulatszm felfuts engedlyezs
1. fordulatszm felfuts letilts
ReferenceFrequency motorfordulatszm alapjel
Command parancs vgrehajts, (0: nincs parancs,
1: paramter olvass, 2: paramter rs)
ParameterNumber az tveend paramter szma
TransmitValue az tveend paramter rtke
TransmitValueOffset a 65535-nl nagyobb paramterek eltolsi rtke
StatusWord frekvenciavlt status szava
ActualFrequency aktulis frekvencia kijelzs
EchoCommand vgrehajtott parancs, (0: nincs parancs,
1: paramter olvass, 2: paramter rs)
EchoParameterNumber a vgrehajtott parancs szma
Busy 1: a vgrehajts folyamatban jelzs
ReceiveValue kiolvasott parmter rtk
ReceiveValueOffset a 65535-nl nagyobb kiolvasott paramterek eltolsi rtke
ErrorCode hibajelzs
Lers:
A DE4netK funkciblokk kpezi az illeszt felletet az alkalmazi PLC program s
a frekvenciavltt a Suconet K buszra illeszt DE4-NET-K modul kztt.
Miutn a PLC s a DF4 kztt a kapcsolat felplt, minden tovbbi programozsi
rfordts nlkl a folyamatadatok folyamatosan olvashatk. A DF4 paramtereit a
Suconet K-n keresztl lehet megvltoztatni.
75
Forrs: http://www.doksi.hu
DE4netK
automatikusan rdnak illetve kiolvassra kerlnek:
Bemenetek: Enable, Start, Quickstop, DCBrake, TripReset, ParameterSet,
MotorPotUp, MotorPotDown, FixedFrequency1, FixedFrequency2,
FixedFrequency3, Reversal, FreezeRamp, ReferenceFrequency,
Kimenetek: StatusWord, ActualFrequency
A frekvenciavlt sszes tovbbi paramtert a kivlasztott paramtercsatornn
keresztl lehet rni, olvasni.
A SendData s aReadData opertorokat a mindenkori els adsi illetve vteli
adatbjthoz kell hozzrendelni. Az ezt kvet tovbbi 11bjt automatikusan a
tmbbel deklarlsra kerl.
A rendelkezsre ll paramterekrl, rtelmezsi tartomnyukrl a status szrl a
frekvenciavlt kezelsi utastsa ad felvilgostst.
Paramterek olvassa:
Az aktulis paramter szmt a ParameterNumber mezbe berni.,
Command = 1 belltani.
A Busy automatikusan tvlt 0 -> 1-re .
Vrni, amg a Busy jel visszavlt 0-ba.
ha ErrorCode = 0, akkor a ReceiveValue s az esetleges ReceiveValueOffset rtket
kiolvasni, melyek a krdses paramter rtkt adja vissza.
ha ErrorCode 0, akkor ki kell rtkelni a hibakd rtkt.
Command = 0 parancsot kiadni, s majd a indulhat a kvetkez feladat.
Paramterek rsa:
Az aktulis paramter szmt a ParameterNumber mezbe berni, a
TransmitValue s a TransmitValueOffset mezkbe a kvnt paramter rtkt berni.
Command = 2 belltani.
A Busy automatikusan tvlt 0 -> 1-re .
Vrni, amg a Busy jel visszavlt 0-ba.
ha ErrorCode = 0, a parancs helyesen vgrehajtsra kerlt.
ha ErrorCode 0, a parancs nem lett vgrehajtva, ki kell rtkelni a hibakd rtkt.
Command = 0 parancsot kiadni, s majd a indulhat a kvetkez feladat.
A lehetsges hibakdok:
0 nincs hiba
1 rvnytelen szolgltats
5 rvnytelen paramterszm
6 nem megengedett parancsparamter
10 nincs hozzfrsi jogostvny, illetve rsi ksrlet csak olvashat paramterre
14 hatrrtk tllps
254 id tllps, ha a reakciid egy rsi/olvassi megbzs esetn > 5sec.
255 egyb hiba, a megbzs jelenleg nem hajthat vgre.
76
Forrs: http://www.doksi.hu
Deserialize
Az operandusok jelentse:
Destination cl vltoz
Buffer forrstartomny
BufferOffset eltols rtke a cltartomnyon bell
DestinationLength a clvltoz hossza bjtban megadva
Error hibajelzs
Lers:
A Deserialize funkciblokk egy tetszleges tpus vltozt vlaszt ki el egy adott
forrstartomnynak egy megadott helyrl. Az elzetesen megadott helyet a Buffer
s a BufferOffset vltozkkal lehet meghatrozni.
A DestinationLength kimeneti vltoz a cladatok hosszt adja meg bjtos mretben.
A Buffer tetszleges mret tmb lehet, tpusa ANY_BIT s ANY_INT rtk lehet,
kivve a BOOL tpust.
Az Error kimenet az albbi rtkeket veheti fel:
0 nincs hiba
1 puffer tllps
2 az Offset a Bufferen kvl helyezkedik el
3 a Destination a Bufferen bell helyezkedik el
4 A DestinationLength rtke 0
77
Forrs: http://www.doksi.hu
Deserialize
Pldaprogram:
PROGRAM sendstruct
VAR
deserie_fb : Deserialize;
struct_buffer AT %RDB1.1.0.0 : ARRAY [1..30] OF BYTE;
CheckSumOffset : UINT := 0;
CheckSum : UINT;
DTOffset : UINT := 2;
ReceiveDatum : DT; (* vett adatok *)
DataOffset: UINT := 10;
ReceiveData :Array [1..20] OF BYTE; (* falhasznli adatok *)
DeserializedLength : UINT;
Error : USINT;
END_VAR
_Fail: (* hibakezels *)
78
Forrs: http://www.doksi.hu
EdgeAlarm
EdgeAlarm
BOOL EnableDisable
USINT Number
UINT RisingEdge
Az operandusok jelentse:
EnableDisable Megszaktskr funkciblokk engedlyezse / tiltsa, felfut lvez.
(engedly=1, tilts=0)
Number megszaktskr csatornaszm (PS4-141/-151/-201 = 0, PS4-341-
MM1 esetn 0 s 1)
RisingEdge l vlaszts (0 = felfut, 1 = lefut)
SetpointValue Szmll alapjel
SubRoutine megszaktskrst kiszolgl funkciblokk neve
Error hibajelzs
CallUpValue megszaktskr hvsok szma
Lers:
A funkciblokk a PS4-201-MM1 alapkszlk %I0.0.0.0.1 bemenethez van
hozzrendelve. A PS4-141-MM1 s PS4-151-MM1 esetn a hozzrendels a
%I0.0.0.1.0 bemenethez trtnik.
A PS4-341-MM1 kt lvezrelt bemenettel (%I0.0.0.1.0, s %I0.0.0.1.1) rendelkezik
Az EnableDisable bemenet engedlyezi a szmll mkdst. A szmll indul, ha
a bemeneten pozitv lvlts (0 1) kvetkezik be. A szmll lell, s trldik, ha
ez a bemenet visszakapcsol (1 0).
A RisingEdge bemenet adja meg, hogy milyen irny jelvltozst kell feldolgozni.
A SetpointValue bemenet (rtktartomnya: 165535) hatrozza meg, hogy az
elosztott szmll mely rtknl kell a megszakts, azaz mikor kell a
funkciblokkot felhvni.
A rendszer maximlisan megengedett kiterhelse kt tnyez egyttestl fgg:
A SetpointValue rtktl s a rkapcsolt jel frekvencijtl. A nevezett tnyezket
gy kell megvlasztani, hogy milliszekundumonknt maximlisan kt megszakts
79
Forrs: http://www.doksi.hu
EdgeAlarm
lpjen csak fel.
Az Error kimenet tartalmazza az esetleges fellp hibk kdjait:
0 nincs hiba
1 alapjel (SetpointValue) = 0
3 rvnytelen megszaktskr
4 megszaktskr csatornaszmot mr felhasznltk
(csak a PS4-300 estn)
A CallUpNumber kimenet (rtktartomny: 065535) jelzi, hogy az alapjel rtket
hnyszor rte el a szmll, azaz hnyszor trtnhetett megszakts.
Az SubRoutine bemenet biztostja az esemnyvezrelt programvezrls beillesztst.
Ennek rdekben ezen a bemeneten lehet a megszaktskrst kiszolgl
funkciblokk nevt megadni. Mikor az esemny bekvetkezik (a CounterValue
szmll eggyel nvekszik) s az alprogram vgrehajtdik. Ha erre a bemenetre
nincs funkciblokk kapcsolva, akkor csak a CounterValue szmll tartalma n, s
nincs megszaktskrs kiszolgls.
Esemnyvezrelt program alkalmazsakor az albbi szempontokat kell figyelembe
venni:
Az esemny bekvetkezte a felhasznli program vgrehajtst megszaktja, a
regiszterek llapott elmenti, s a SubRoutine bemeneten megadott cmre ugorva
vgrehajtja az alprogramot.
A megszaktskrst kiszolgl funkciblokk nem tartalmazhat sem bemen, sem
kimen paramtereket. Egy ilyen funkciblokk csak loklis vltozkat, vagy kvl
deklarlt globlis vltozkat, mint kls vltozkat (VAR_EXTERNAL)
tartalmazhat.
A megszaktskr funkciblokk nem szakthat meg egy msik megszaktskr
funkciblokkal (az sszes megszaktskr funkciblokknak azonos a prioritsa).
A felhasznli program 5ms idtartamra (kb. 1000 utastssor vgrehajtsa)
korltozza a megszaktskr funkciblokk vgrehajtsi idejt, mivel a
megszaktskr funkciblokk mkdst a rendszerprogram sem tudja (mg
tpkimaradskor sem) megszaktani. Ha a vgrehajtsi id tllpi ezt a korltot,
akkor a tp kikapcsolsakor EDC hiba keletkezhet.
A megszaktskr funkciblokk vgrehajtsi ideje hozzaddik a felhasznli
program vgrehajtsi idejhez, gy a ciklusid ellenrzsbe is bekerl!
Mivel az esemnyvezrelt program futtatsakor korltozs nlkl elrhetk a
globlis vltozk is, a ciklikus felhasznli program s az esemnyvezrelt
program ltal kzsen irhat /olvashat adatokat reteszels nlkl nem szabad
felhasznlni. Pldul a ciklikus felhasznli programban s a megszaktskr
funkciblokkban ugyanabban a bjtban hasznlt bithozzfrst csak a
Disable_Interrupt s a Enable_Interrupt utastsokkal val szinkronizlssal
szabad korrekten vgrehajtani.
A lehet leggyorsabb reagls rdekben a megszaktskr funkciblokkban
clszer a kzvetlen perifria hozzfrst hasznlni, melyek az alapkszlken
llnak rendelkezsre (%QP0.0.0.0.x, %QPB0.0.0.0).
A megszaktskr funkciblokkok az alkalmazi programban elvileg tbbszr is
80
Forrs: http://www.doksi.hu
EdgeAlarm
hasznlhatk, de ezt ltalban kerlni rdemes, mivel a megszaktskr
funkciblokk tpusok ugyanazzal az esemnyforrssal, s gy a programban csak
az utoljra rvnyesl funkciblokk hatrozza meg feldolgozst.
A tbbszrs alkalmazsnak csak akkor van rtelme, ha a funkciblokkot a
kiszolgl rutinon bell jra kell paramterezni, s l-figyelsi reteszelst kell
megoldani.
A tbbszri felhasznls azt jelenti, hogy az egyedi funkciblokk-tpus minden
egyes alkalmazshoz kln-kln adatterletet foglal le.
RisingEdge=0
SetpointValue=1
CallUpVAlue 0 1 2 3 4 5 6 7 8 9 10 ...
Ugrs a funkciblokkra
RisingEdge =0
SetpointValue =5
CallUpVAlue 0 0 0 0 0 1 1 1 1 1 2 2 2 2
Ugrs a funkciblokkra
81
Forrs: http://www.doksi.hu
EdgeAlarm
Pldaprogram:
PROGRAM alarm
VAR
Flankenalarm : EdgeAlarm;
Error : USINT;
CountValue : UINT;
Pump : reakt_fb; (*Az FB deklarlsa, melyet aktvlni
(* kell, ha az alarm fellp *)
END_VAR
LD EdgeAlarm.Error
ST Error
LD EdgeAlarm.CallUpNumber
ST CountValue (* Az alarmok szmt jelzi *)
END_PROGRAM
82
Forrs: http://www.doksi.hu
FifoBx
Az operandusok jelentse:
FillPulse betlt impulzus, felfut l
ReadOutPulse kiolvas impulzus, felfut l
ReSet visszallts, trls
DataInput adatbemenet
Full regiszter tele jelzs
Empty regiszter res jelzs
DataOutput adatkimenet
Lers:
A * helyn az adott prototpus funkciblokk neve rand be.
A lehetsges nevek a kvetkezk: FifoB1, FifoB2, FifoB128, ahol az egyes
szmok a 8-bites regisztermez hosszt adjk meg.
A DataInput bemeneten lev rtk a FillPulse bemeneten megjelen felfut l
hatsra belp az els legmlyebb szabad regiszter helyre. A regisztert FillPulse
impulzussal lehet tlteni, amg a teljes regiszter tele nem lesz. A regiszter tele
llapott a Full kimenet 1 rtkkel jelzi.
ReadOutPulse FillPulse
DataOutput DataInput
7 6 5 4 3 2 1 0
x 019 255 035 095 014
ReadOutPulse FillPulse
DataOutput DataInput
7 6 5 4 3 2 1 0
x 019 255 035 095 014
83
Forrs: http://www.doksi.hu
FifoBx
A ReadOutPulse bemeneten megjelen felfut l hatsra a DataOutput kimeneten
megjelenik az elszr, a legmlyebb szintre bert rtk. Minden tovbbi
ReadOutPulse impulzus hatsra jabb egyre magasabban lev rtkek kerlnek
kiolvassra. Az utols kiolvasst kveten, a regiszter res llapott az Empty
kimenet 1 rtkkel jelzi.
ReadOutPulse FillPulse
DataOutput DataInput
7 6 5 4 3 2 1 0
x 019 255 035 095 x
ReadOutPulse FillPulse
DataOutput DataInput
7 6 5 4 3 2 1 0
019 255 035 095 014 x
Pldaprogram:
PROGRAM fifo8_1
VAR
Queue_32_byte : FifoB32;
Pulse1 : BOOL;
Pulse2 : BOOL;
Reset : BOOL;
QueueData : USINT;
full : BOOL;
empty : BOOL;
Outputdata : USINT;
END_VAR
84
Forrs: http://www.doksi.hu
FifoBx
LD Queue_32_byte.Full
ST full
LD Queue_32_byte.Empty
ST empty
LD Queue_32_byte.DataOutput
ST Outputdata
END_PROGRAM
85
Forrs: http://www.doksi.hu
FifoWx
Az operandusok jelentse:
FillPulse betlt impulzus, felfut l
ReadOutPulse kiolvas impulzus, felfut l
ReSet visszallts, trls
DataInput adatbemenet
Full regiszter tele jelzs
Empty regiszter res jelzs
DataOutput adatkimenet
Lers:
A * helyn az adott prototpus funkciblokk neve rand be.
A lehetsges nevek a kvetkezk: FifoW1, FifoW2, FifoW128, ahol az egyes
szmok a 16-bites regisztermez hosszt adjk meg.
A DataInput bemeneten lev rtk a FillPulse bemeneten megjelen felfut l
hatsra belp az els legmlyebb szabad regiszter helyre. A regisztert FillPulse
impulzussal lehet tlteni, amg a teljes regiszter tele nem lesz. A regiszter tele
llapott a Full kimenet 1 rtkkel jelzi.
ReadOutPulse FillPulse
DataOutput DataInput
7 6 5 4 3 2 1 0
x 00197 02555 18637 00023 13657
ReadOutPulse FillPulse
DataOutput DataInput
7 6 5 4 3 2 1 0
x 00197 02555 18637 00023 03657
86
Forrs: http://www.doksi.hu
FifoWx
A ReadOutPulse bemeneten megjelen felfut l hatsra a DataOutput kimeneten
megjelenik az elszr, a legmlyebb szintre bert rtk. Minden tovbbi
ReadOutPulse impulzus hatsra jabb egyre magasabban lev rtkek kerlnek
kiolvassra. Az utols kiolvasst kveten, a regiszter res llapott az Empty
kimenet 1 rtkkel jelzi.
ReadOutPulse FillPulse
DataOutput DataInput
7 6 5 4 3 2 1 0
x 00197 02555 18637 00023 x
ReadOutPulse FillPulse
DataOutput DataInput
7 6 5 4 3 2 1 0
00197 02555 18637 00023 x
Pldaprogram:
PROGRAM fifo16_1
VAR
Queue_16_word : FifoW16;
Pulse1 : BOOL;
Pulse2 : BOOL;
Reset : BOOL;
QueueData : UINT;
full : BOOL;
empty : BOOL;
Outputdata : UINT;
END_VAR
LD Queue_16_word.Full
ST full
LD Queue_16_word.Empty
87
Forrs: http://www.doksi.hu
FifoWx
ST empty
LD Queue_16_word.DataOutput
ST Outputdata
END_PROGRAM
88
Forrs: http://www.doksi.hu
GetRealTimeClock
GetRealTimeClock
Year USINT
Month USINT
Day USINT
Weekday USINT
Hour USINT
Minute USINT
Second USINT
Az operandusok jelentse:
Year az aktulis vszm, ktjegyen
Month hnap
Day nap
Weekday htnap sorszma (0 = vasrnap)
Hour ra
Minute perc
Second msodperc
Lers:
A funkciblokk hvsval a valsidej rbl folyamatosan a kimeneti paramterekre
rdik az aktulis dtum s id rtke. Nincs szksg kln engedlyez jelre, a
hvssal egyidejleg a funkciblokk biztostja az rtkeket.
89
Forrs: http://www.doksi.hu
LifoBx
Az operandusok jelentse:
FillPulse betlt impulzus, felfut l
ReadOutPulse kiolvas impulzus, felfut l
ReSet visszallts, trls
DataInput adatbemenet
Full regiszter tele jelzs
Empty regiszter res jelzs
DataOutput adatkimenet
Lers:
A * helyn az adott prototpus funkciblokk neve rand be.
A lehetsges nevek a kvetkezk: LifoB1, LifoB2, LifoB128, ahol az egyes
szmok a 8-bites regisztermez hosszt adjk meg.
A DataInput bemeneten lev rtk a FillPulse bemeneten megjelen felfut l
hatsra belp az els legmlyebb szabad regiszter helyre. A zskregisztert FillPulse
impulzussal lehet tlteni, amg a teljes regiszter tele nem lesz. A regiszter tele
llapott a Full kimenet 1 rtkkel jelzi.
FillPulse
DataInput
0 1 2 3 4 5 6 7
255 033 025 047 062
FillPulse
DataInput
0 1 2 3 4 5 6 7
255 033 025 047 062
90
Forrs: http://www.doksi.hu
LifoBx
A ReadOutPulse bemeneten megjelen felfut l hatsra a DataOutput kimeneten
megjelenik az utoljra, a legmagasabb szintre bert rtk. Minden tovbbi
ReadOutPulse impulzus hatsra jabb egyre mlyebben lev rtkek kerlnek
kiolvassra. Az utols kiolvasst kveten, a regiszter res llapott az Empty
kimenet 1 rtkkel jelzi.
ReadOutPulse
DataOutput
0 1 2 3 4 5 6 7
255 033 025 047 062
ReadOutPulse
DataOutput
0 1 2 3 4 5 6 7
255 033 025 047 062
91
Forrs: http://www.doksi.hu
LifoWx
Az operandusok jelentse:
FillPulse betlt impulzus, felfut l
ReadOutPulse kiolvas impulzus, felfut l
ReSet visszallts, trls
DataInput adatbemenet
Full regiszter tele jelzs
Empty regiszter res jelzs
DataOutput adatkimenet
Lers:
A * helyn az adott prototpus funkciblokk neve rand be.
A lehetsges nevek a kvetkezk: LifoW1, LifoW2, LifoW128, ahol az egyes
szmok a 16-bites regisztermez hosszt adjk meg.
A DataInput bemeneten lev rtk a FillPulse bemeneten megjelen felfut l
hatsra belp az els legmlyebb szabad regiszter helyre. A zskregisztert FillPulse
impulzussal lehet tlteni, amg a teljes regiszter tele nem lesz. A regiszter tele
llapott a Full kimenet 1 rtkkel jelzi.
FillPulse
DataInput
0 1 2 3 4 5 6 7
12764 00346 01283 00034 02384
FillPulse
DataInput
0 1 2 3 4 5 6 7
12764 00346 01283 00034 02384
92
Forrs: http://www.doksi.hu
LifoWx
A ReadOutPulse bemeneten megjelen felfut l hatsra a DataOutput kimeneten
megjelenik az utoljra, a legmagasabb szintre bert rtk. Minden tovbbi
ReadOutPulse impulzus hatsra jabb egyre mlyebben lev rtkek kerlnek
kiolvassra. Az utols kiolvasst kveten, a regiszter res llapott az Empty
kimenet 1 rtkkel jelzi.
ReadOutPulse
DataOutput
0 1 2 3 4 5 6 7
12764 00346 01283 00034 02384
ReadOutPulse
DataOutput
0 1 2 3 4 5 6 7
12764 00346 01283 00034 02384
VAR
Stackregister_32_word : LifoW32;
Pulse1 : BOOL;
Pulse2 : BOOL;
Reset : BOOL;
StackData : UINT;
full : BOOL;
empty : BOOL;
OutputData : UINT;
END_VAR
END_PROGRAM
93
Forrs: http://www.doksi.hu
MI4netK
MI4netK
RDB_Start
ANY_ARRAY
SDB_Start
ANY_ARRAY
Status BYTE
Az operandusok jelentse:
RDB_Start A Suconet K adattadsi terlet bemeneti puffer (RDB),
pl. ha az MI4-s kijelznek az 1-es vonalon az 1-es cme van, s a
puffer nagysg 20bjt, akkor:
ARRAY [1..20] of BYTE AT %RDB1.1.0.0
SDB_Start A Suconet K adattadsi terlet kimeneti puffer (SDB),
pl. ha az MI4-s kijelznek az 1-es vonalon az 1-es cme van, s a
puffer nagysg 20bjt, akkor:
ARRAY [1..20] of BYTE AT %SDB1.1.0.0
Status MI4 kommunikcis sttusa
Lers:
Az MI4netK a Suconet K hlzaton illeszti az MI4 kszlkcsaldot a PLC-hez.
A Status a kvetkez informcikat s kommunikcis hibajelzseket adja:
01h PLC kld adatcsomagot az MI4-nek
02h PLC fogad adatcsomagot az MI4-tl
04h nincs adatkrs
C0h paramterezsi hiba a bemeneti paramterekben
80h Az MI4 rvnytelen mveleti kdot kldtt / kommunikcis hiba
81h Memriatartomny tllps / tvirathossz hiba a PLC-merkerek olvassa sorn.
82h Memriatartomny tllps / tvirathossz hiba a PLC-merkerek rsa sorn.
A funkciblokk rszletes lersa aKommunikci MI4 <->PLC kziknyvben
tallhat (AWB27-1303).
94
Forrs: http://www.doksi.hu
MS_TimeFalling
MS_TimeFalling
UINT PresetTime
Az operandusok jelentse:
Set indtsi felttel, pozitv llel
ReSet visszallts
Hold idztsi futs lelltsa
PresetTime Idztsi alapjel milliszekundumban
OutputControl idzt kimenete
ElapsedTime idzts aktulis ideje
Iddiagramok:
(1) (2) (3) (4) (5)
Set
ReSet
Hold
TH TH
OutputControl
T T+TH T+TH T T
95
Forrs: http://www.doksi.hu
MS_TimeFalling
Lers:
Ha a Set bemenetre felfut l jut, akkor a kimenet azonnal magasba vlt. Ha a Set
bemenet alacsonyra vlt, a kimenet T idvel ksbb kveti. (1)
A belltott ksleltetsi idnek a ciklusidnl mindig nagyobbnak kell lenni, hogy
biztostva legyen a ksleltets nyomon kvetse. Az ElapsedTime kimenet a
milliszekundumban mutatja a mg htra lev ksleltetsi idt.
A ksleltetsi id visszaszmllsa felfggeszthet a bemenetre adott magas szinttel.
A ksleltets megn azzal az idvel, amg a Hold bemenet magas, mikzben Set
bemenet mr alacsony. (2), (3)
Az OutputControl kimenet csak akkor kveti a Set bemenetet a belltott idztssel,
ha a Hold bemenet alacsony (4), (5).
Az idzt alaphelyzetbe kerl (kimenetei nullk), ha a ReSet bemenetet logikai 1-re
kapcsoljuk. Ebben az esetben az idzts indtsa nem lehetsges. A Set bemeneten
lev pozitv l vlts csak a ReSet bemenet 1->0 vltsa utn vlik hatsoss. (5).
Pldaprogram:
PROGRAM time4
VAR
Timer4 : MS_TimeFalling;
Start AT %I0.0.0.0.0 : BOOL;
Halt AT %I0.0.0.0.1 : BOOL;
TimeValue4 : UINT := 25; (* TimeValue4 = 25 milliszekundum *)
Output4 AT %Q0.0.0.0.0 : BOOL;
END_VAR
LD Timer4.OutputControl
ST Output4
END_PROGRAM
96
Forrs: http://www.doksi.hu
MS_TimeRising
MS_TimeRising
BOOL Hold
UINT PresetTime
Az operandusok jelentse:
Set indtsi felttel, pozitv llel
ReSet visszallts
Hold idztsi futs lelltsa
PresetTime Idztsi alapjel milliszekundumban
OutputControl idzt kimenete
ElapsedTime idzts aktulis ideje
Iddiagramok:
(1) (2) (3) (4) (5)
Set
ReSet
HOLD
TH
OutputControl
T T+TH T T
97
Forrs: http://www.doksi.hu
MS_TimeRising
Lers:
Ha a Set bemenetre felfut l jut, az OutputControl kimenet T idvel ksbb kveti a
bemenetet (A T ksleltetsi d belltsa a PresetTime bemeneten megadott rtkkel
trtnhet.) A Set bemenet lefut le a kimeneten azonnal rvnyre jut.(1)
A belltott ksleltetsi idnek a ciklusidnl mindig nagyobbnak kell lenni, hogy
biztostott legyen a ksleltets kvetse. Az ElapsedTime kimenet milli-
szekundumban mutatja a htra lev ksleltetsi idt.
A ksleltetsi id visszaszmllsa felfggeszthet a Hold bemenetre adott magas
szinttel. A ksleltets megn azzal az idvel, amg a Hold bemenet magas. (2)
Ha a Hold bemenet magas szinten van, mikzben a Set-en pozitv lvlts trtnik,
akkor az indtsi folyamat a Hold bemenet 1-es szint llapotig ksleltetik. (4).
Amennyiben a ksleltetsi id lefutst kveten a vlt a Set bemeneten a jel 0-ba,
mikzben a Hold bemenet 1-ben van, az OutputControl csak akkor vlt vissza, ha a
Hold bemenet visszavlt 0-ba (3).
Az idzt alaphelyzetbe kerl (kimenetei nullk), ha a ReSet bemenetet logikai 1-re
kapcsoljuk. Ebben az esetben az idzts indtsa nem lehetsges. A Set bemeneten
lev pozitv lvlts csak a ReSet bemenet 1->0 vltsa utn vlik hatsoss. (5).
Pldaprogram:
PROGRAM time3
VAR
Timer3 : MS_TimeRising;
Start AT %I0.0.0.0.0 : BOOL;
Halt AT %I0.0.0.0.1 : BOOL;
Reset AT %I0.0.0.0.2 : BOOL;
TimeValue3: UINT := 7; (* TimeValue= 7 Milliseconds *)
ActTime3 AT %QW0.0.0.2 : BOOL;
Output3 AT %Q0.0.0.0.0 : BOOL;
END_VAR
LD Timer3.OutputControl
ST Output3
LD Timer3.ElapsedTime
ST ActTime3
END_PROGRAM
98
Forrs: http://www.doksi.hu
ReadMC
ReadMC
Az operandusok jelentse:
DestinationAddress a cltmb a visszaolvasand adatok szmra
Strobe visszaolvassi folyamat indtsa
SegmentNumber a szegmens szma (megengedett: 0n)
DataLength a visszaolvasand adatbjtok szma
MaxSegmentNumber a fjl utols lehetsges szegmensszma
Error hibajelzs
Lers:
A ReadMC funkciblokk segtsgvel a memriamodulbl lehet adatokat a CPU
memriaterletre visszaolvasni.
Ez a funkciblokk a WriteMC blokkal egytt fontos alkalmazsi terlete a remanens
adattrolsnak, receptura-kezelsnek, illetve vltozk letrolsnak egy program
aktualizlst megelzen.
99
Forrs: http://www.doksi.hu
ReadMC
Az Error kimenet a kvetkez llapotokat veheti fel:
0 nincs hiba
1 nincs memriamodul beptve
2 online kapcsolat miatt nem lehetsges a hozzfrs (csak PS4-200 esetn)
3 nem lehetsges a hozzfrs egyidej WriteMC hvs miatt
(csak PS4-200 esetn)
4 rvnytelen SegmentNumber (PS4-200 esetn a megengedett: 0.511; PS4-
300 esetn a modultl fggen: 0.1023)
5 rvnytelen adathossz (megengedett DataLength rtk: 1.128)
6 -
7 nem lehetsges a hozzfrs, mert a memriamodul , mint forrskd httr van
felhasznlva (csak PS4-200 esetn)
8 a memriamodul formzsa nem engedi meg az adattrolsi tartomny
hasznlatt (csak PS4-300 esetn)
Csak a PS4-200 esetn: Az Active kimenet a PS4-150/-200 esetn mindig 0. A
funkciblokk aktulis llapota csak egy ismtelt hvs mellett az Error kimenet
lekrdezsvel oldhat meg. Ha az Error 0-t ad, akkor a mvelet hiba nlkl
vgrehajtdott. Ha a kimenet rtke 3, akkor a funkciblokk mg dolgozik.
Az Error kimenet aktualizlshoz a Strobe bemeneten egy jabb pozitv let kell
generlni.
Pldaprogram:
PROGRAM RELOAD
VAR
StrobeReload AT %I0.0.0.0.0 :BOOL;
ActiveReload AT %Q0.0.0.0.0 :BOOL;
ErrorReload : USINT;
FBReloadData : ReadMC;
SegmentNumber : UINT;
DataLength : USINT;
LastSegmentNumber : UINT;
DataArea : ARRAY[0..15] of USINT;
END_VAR
LD 8
ST SegmentNumber
LD 16
ST DataLength
100
Forrs: http://www.doksi.hu
ReadMC
(* 16 bjt olvassa a 8.szegmensbl, cltartomny: DataArea nev tmb *)
CAL FBReloadData(Strobe := StrobeReload,
SegmentNumber := SegmentNumber,
DataLength := DataLength,
DestinationAddress := DataArea
|
ActiveReload := Active,
LastSegmentNumber := MaxSegmentNumber,
ErrorReload := Error)
LD ActiveReload
JMPC CONTINUE
LD ErrorReload
EQ 0
JMPCN ERRORHANDLING
(* az adatfeldolgozs folytatsa *)
JMP CONTINUE
ERRORHANDLING:
(* hibakezelsi rutin *)
CONTINUE:
(* felhasznli program tovbbi rsze *)
END_PROGRAM
101
Forrs: http://www.doksi.hu
ReloadData
BOOL Strobe
ADDRESS DestinationAddress Active BOOL
UINT SegmentNumber MaxSegmentNumber UINT
USINT DataLength Error USINT
Az operandusok jelentse:
Strobe visszatltsi folyamat indtsa
DestinationAddress visszatltend cladatok kezd cme (tpusa ADDRESS)
SegmentNumber szegmensszm (0.n)
DataLength a visszatltend adatmezk szma (1.128)
Active 1, ha a visszatltsi folyamat fut
MaxSegmentNumber a fjl utols lehetsges szegmensszma
Error hibajelzs
Lers:
A ReloadData funkciblokk segtsgvel a memriamodulbl lehet adatokat a CPU
memriaterletre visszatlteni.
A memriamodul logikailag 512, egyenknt 128bjt hosszsg szegmensre van
felosztva. Egyszeri hvssal maximum 128bjt olvashat vissza.
A funkciblokk egyik legfontosabb alkalmazsi terlete a remanens
memriaterletnek (pl. a receptura terletnek), mely a compiler konfigurci sorn a
kdgenerlskor kerl meghatrozsra, kzbens letrolsa s ezen adatok
visszaolvassa egy kszlkkonfigurci megvltoztatsa sorn.
Az Error kimenet a kvetkez llapotokat veheti fel:
0 nincs hiba
1 nincs memriamodul beptve
2 online kapcsolat miatt nem lehetsges a hozzfrs
3 nem lehetsges a hozzfrs egyidej SaveData hvs miatt
4 rvnytelen SegmentNumber (megengedett: 0.511)
5 rvnytelen adathossz (megengedett DataLength rtk: 1.128)
6 a kezdcm rvnytelen
7 csak a PS4-200 esetn: nem lehetsges a hozzfrs, mert a memriamodul ,
mint forrskd httr van felhasznlva
102
Forrs: http://www.doksi.hu
ReloadData
8 csak a PS4-300 esetn: a memriamodul formzsa nem engedi meg az
adattrolsi tartomny hasznlatt
Csak a PS4-200 esetn: Az Active kimenet a PS4-150/-200 esetn mindig 0. A
funkciblokk aktulis llapota csak egy ismtelt hvs mellett az Error kimenet
lekrdezsvel oldhat meg. Ha az Error 0-t ad, akkor a mvelet hiba nlkl
vgrehajtdott. Ha a kimenet rtke 3, akkor a funkciblokk mg dolgozik.
Az Error kimenet aktualizlshoz a Strobe bemeneten egy jabb pozitv let kell
generlni.
Pldaprogram:
PROGRAM R_Card
VAR
ReadData : ReloadData;
Start AT %I0.0.0.0.2 : BOOL;
Mem_start AT %MB0.0.0.100 : BYTE;
Segment_NR : UINT;
DataLength : USINT;
ErrorMessage : USINT;
END_VAR
LD ReadData.Error
ST ErrorMessage
NE 0 (* ha nem egyenl 0, akkor hiba! *)
JMPC ErrorEvaluation
(*...*)
(*...*)
END_PROGRAM
103
Forrs: http://www.doksi.hu
RealTimeClock
RealTimeClock
UINT VariableDate
UINT VariableTime
Az operandusok jelentse:
Set az sszehasonlts engedlyezse
RealTime a valsidej rval sszehasonltand konstans id (ra, perc),
melyet a programozs sorn lehet megadni, s az a programfuts
alatt mr nem vltozik
WeekDay a valsidej rval sszehasonltand konstans htnap sorszm,
melyet a programozs sorn lehet megadni, s az a programfuts
alatt mr nem vltozik
A DAY_OF_WEEK gynevezett Moeller adattpus, melynek
rtelmezse a kvetkez:
TYPE DAY_OF_WEEK:
(Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday):= Monday;
END_TYPE
RealDate a valsidej rval sszehasonltand konstans dtum (nap, hnap,
v), melyet a programozs sorn lehet megadni, s az a
programfuts alatt mr nem vltozik
VariableDate a valsidej rval sszehasonltand vltozrtk (nap s hnap),
ahol a nap a magasabb bjtban, a hnap az alacsonyabb bjtban
kerl kdolsra
VariableTime a valsidej rval sszehasonltand vltozrtk (ra s perc),
ahol az ra a magasabb bjtban, a perc az alacsonyabb bjtban
104
Forrs: http://www.doksi.hu
RealTimeClock
kerl kdolsra idzts aktulis ideje
Greater 1, ha a megadott sszehasonltand rtk nagyobb, mint a
valsidej ra rtke
Equal 1, ha a megadott sszehasonltand rtk azonos a valsidej ra
rtkvel
Less 1, ha a megadott sszehasonltand rtk kisebb, mint a valsidej
ra rtke
Error 1, ha a megadott sszehasonltand rtk rvnytelen
Lers:
A funkciblokk sszehasonltja a valsidej ra rtkt a megadott bemeneti
rtkkel. Az sszehasonlts engedlyezse a Set = 1 bemenet lltsv trtnhet.
Set = 0 esetn az sszehasonlts letiltdik, a kimenetek mindegyike 0-t vesz fel.
Az adatok megadsra kt lehetsg knlkozik
1. A funkciblokk hvsa RealTime, WeekDay, RealDate bemenetek megadsval
Az adatokat programozs sorn kell megadni. Ezek a konstans rtkek
programfutats kzben nem vltoztathatk meg. A funkciblokk a konstans
rtkeket csak akkor veszi figyelembe, ha a VariableDate s a VariableTime
bemenetek nincsenek paramterezve.
A paramterezsi pldk:
RealTime: TOD#20:35:10 WeekDay: - RealDate: -
RealTime: TOD#20:35:10 WeekDay: Monday RealDate: -
RealTime: TOD#20:35:10 WeekDay: - RealDate: D#2000-03-15
Set
Less
Equal
Greater
aktv
105
Forrs: http://www.doksi.hu
RealTimeClock
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 17 35 VariableTime
ra perc
0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 18 3 VariableDate
nap hnap
1 sz
Set
1)
VariableDate, V1 V2
VariableTime
Less
Equal
Greater
aktv aktv
106
Forrs: http://www.doksi.hu
RealTimeClock
Pldaprogram:
PROGRAM clock
VAR
R_Time : RealTimeClock;
Clock_free : BOOL;
T_Day : TIME_OF_DAY := TOD#12:00:00;
Datum : Date :=D#1999-12-12 ;
Midday AT %Q0.0.0.0.0 : BOOL;
END_VAR
(* id sszehasonlts *)
CAL R_Time (Set := Clock_free,
RealTime := T_Day,
RealDate :=Datum,
WeekDay := Monday)
LD R_Time.Equal
ST Midday
END_PROGRAM
107
Forrs: http://www.doksi.hu
RTC
RTC
BOOL EN Q BOOL
DATE_AND_TIME PDT CDT DATE_AND_TIME
Az operandusok jelentse:
EN indtsi felttel, pozitv llel
PDT belltand dtum s id ( rvnyes vszmok: 1993.20092)
Q CDT-n val id helyessgt jelz bit
CDT aktulis dtum s id
Lers:
Az EN-re adott felfut llel lehet a PDT-re adott dtum s id rtket a PLC vals
idej rjba berni. A bert rtk helyessgt a Q jelzi. Az aktulis rtkeket a CDT-
n lehet leolvasni, EN-tl fggetlenl.
Pldaprogram:
PROGRAM clock
VAR
Set_Clock : RTC;
Set_Input AT %I0.0.0.1.3 : BOOL;
Date_and_Time: DATE_AND_TIME := DT#1995-01-01-00:00:00;
Clock_Set : BOOL;
Clock_Status : DATE_AND_TIME;
END_VAR
END_PROGRAM
108
Forrs: http://www.doksi.hu
S_TimeFalling
S_TimeFalling
UINT PresetTime
Az operandusok jelentse:
Set indtsi felttel, pozitv llel
ReSet visszallts
Hold idztsi futs lelltsa
PresetTime Idztsi alapjel szekundumban
OutputControl idzt kimenete
ElapsedTime idzts aktulis ideje
Iddiagramok:
(1) (2) (3) (4) (5)
Set
ReSet
Hold
TH TH
OutputControl
T T+TH T+TH T T
109
Forrs: http://www.doksi.hu
S_TimeFalling
Lers:
Ha a Set bemenetre felfut l jut, akkor a kimenet azonnal magasba vlt. Ha a Set
bemenet alacsonyra vlt, a kimenet T idvel ksbb kveti. (1)
A belltott ksleltetsi idnek a ciklusidnl mindig nagyobbnak kell lenni, hogy
biztostva legyen a ksleltets nyomon kvetse. Az ElapsedTime kimenet a
szekundumban mutatja a mg htra lev ksleltetsi idt.
A ksleltetsi id visszaszmllsa felfggeszthet a bemenetre adott magas szinttel.
A ksleltets megn azzal az idvel, amg a Hold bemenet magas, mikzben Set
bemenet mr alacsony. (2), (3)
Az OutputControl kimenet csak akkor kveti a Set bemenetet a belltott idztssel,
ha a Hold bemenet alacsony (4), (5).
Az idzt alaphelyzetbe kerl (kimenetei nullk), ha a ReSet bemenetet logikai 1-re
kapcsoljuk. Ebben az esetben az idzts indtsa nem lehetsges. A Set bemeneten
lev pozitv l vlts csak a ReSet bemenet 1->0 vltsa utn vlik hatsoss. (5).
Pldaprogram:
PROGRAM time4
VAR
Timer2 : S_TimeFalling;
Start AT %I0.0.0.0.0 : BOOL;
Halt AT %I0.0.0.0.1 : BOOL;
TimeValue2 : UINT := 25; (* TimeValue2 = 25 szekundum *)
Output2 AT %Q0.0.0.0.0 : BOOL;
END_VAR
LD Timer2.OutputControl
ST Output2
END_PROGRAM
110
Forrs: http://www.doksi.hu
S_TimeRising
S_TimeRising
UINT PresetTime
Az operandusok jelentse:
Set indtsi felttel, pozitv llel
ReSet visszallts
Hold idztsi futs lelltsa
PresetTime Idztsi alapjel milliszekundumban
OutputControl idzt kimenete
ElapsedTime idzts aktulis ideje
Iddiagramok:
(1) (2) (3) (4) (5)
Set
ReSet
HOLD
TH
OutputControl
T T+TH T T
111
Forrs: http://www.doksi.hu
S_TimeRising
Lers
Ha a Set bemenetre felfut l jut, az OutputControl kimenet T idvel ksbb kveti a
bemenetet (A T ksleltetsi d belltsa a PresetTime bemeneten megadott rtkkel
trtnhet.) A Set bemenet lefut le a kimeneten azonnal rvnyre jut.(1)
A belltott ksleltetsi idnek a ciklusidnl mindig nagyobbnak kell lenni, hogy
biztostott legyen a ksleltets kvetse. Az ElapsedTime kimenet msodpercben
mutatja a htra lev ksleltetsi idt.
A ksleltetsi id visszaszmllsa felfggeszthet a Hold bemenetre adott magas
szinttel. A ksleltets megn azzal az idvel, amg a Hold bemenet magas. (2)
Ha a Hold bemenet magas szinten van, mikzben a Set-en pozitv lvlts trtnik,
akkor az indtsi folyamat a Hold bemenet 1-es szint llapotig ksleltetik. (4).
Amennyiben a ksleltetsi id lefutst kveten a vlt a Set bemeneten a jel 0-ba,
mikzben a Hold bemenet 1-ben van, az OutputControl csak akkor vlt vissza, ha a
Hold bemenet visszavlt 0-ba (3).
Az idzt alaphelyzetbe kerl (kimenetei nullk), ha a ReSet bemenetet logikai 1-re
kapcsoljuk. Ebben az esetben az idzts indtsa nem lehetsges. A Set bemeneten
lev pozitv lvlts csak a ReSet bemenet 1->0 vltsa utn vlik hatsoss. (5).
Pldaprogram:
PROGRAM time1
VAR
Timer1 : S_TimeRising;
Start AT %I0.0.0.0.0 : BOOL;
Halt AT %I0.0.0.0.1 : BOOL;
TimeValue1 : UINT := 12; (* TimeValue1 = 12 msodperc *)
Output1 AT %Q0.0.0.0.0 : BOOL;
END_VAR
LD Timer1.OutputControl
ST Output1
END_PROGRAM
112
Forrs: http://www.doksi.hu
SaveData
BOOL Strobe
ADDRESS SourceAddress Active BOOL
UINT SegmentNumber MaxSegmentNumber UINT
USINT DataLength Error USINT
Az operandusok jelentse:
Strobe letroland folyamat indtsa
SourceAddress letroland cladatok kezd cme (tpusa ADDRESS)
SegmentNumber szegmensszm (0.n)
DataLength a letroland adatmezk szma (1.128)
Active 1, ha a letrolsi folyamat fut
MaxSegmentNumber a fjl utols lehetsges szegmensszma
Error hibajelzs
Lers:
A SaveData funkciblokk segtsgvel a memriamodulba lehet adatokat a CPU
memriaterletrl letrolni.
A memriamodul logikailag 512, egyenknt 128bjt hosszsg szegmensre van
felosztva. Egyszeri hvssal maximum 128bjt olvashat vissza.
A funkciblokk egyik legfontosabb alkalmazsi terlete a remanens
memriaterletnek (pl. a receptura terletnek), mely a compiler konfigurci sorn a
kdgenerlskor kerl meghatrozsra, kzbens letrolsa s ezen adatok
visszaolvassa egy kszlkkonfigurci megvltoztatsa sorn.
Az Error kimenet a kvetkez llapotokat veheti fel:
0 nincs hiba
1 nincs memriamodul beptve
2 online kapcsolat miatt nem lehetsges a hozzfrs
3 nem lehetsges a hozzfrs egyidej ReloadData hvs miatt
4 rvnytelen SegmentNumber (PS4-200 esetn a megengedett: 0.511; PS4-
300 esetn a modultl fggen: 0.1023)
5 rvnytelen adathossz (megengedett DataLength rtk: 1.128)
6 a kezdcm rvnytelen
7 csak a PS4-200 esetn: nem lehetsges a hozzfrs, mert a memriamodul ,
mint forrskd httr van felhasznlva
113
Forrs: http://www.doksi.hu
SaveData
8 csak a PS4-300 esetn: a memriamodul formzsa nem engedi meg az
adattrolsi tartomny hasznlatt
Csak a PS4-200 esetn: Az Active kimenet a PS4-150/-200 esetn mindig 0. A
funkciblokk aktulis llapota csak egy ismtelt hvs mellett az Error kimenet
lekrdezsvel oldhat meg. Ha az Error 0-t ad, akkor a mvelet hiba nlkl
vgrehajtdott. Ha a kimenet rtke 3, akkor a funkciblokk mg dolgozik.
Az Error kimenet aktualizlshoz a Strobe bemeneten egy jabb pozitv let kell
generlni.
Pldaprogram:
PROGRAM S_Card
VAR
SendData : SaveData;
Start AT %I0.0.0.0.2 : BOOL;
Mem_start AT %MB0.0.0.100 : BYTE;
Segment_NR : UINT;
DataLength : USINT;
ErrorMessage : USINT;
END_VAR
LD SendData.Error
ST ErrorMessage
NE 0 (* ha nem egyenl 0, akkor hiba! *)
JMPC ErrorEvaluation
(*...*)
(*...*)
END_PROGRAM
114
Forrs: http://www.doksi.hu
SCO
SCO
BOOL Strobe
USINT Command
115
Forrs: http://www.doksi.hu
SCO
Az operandusok jelentse:
Strobe engedly (pozitv llel vezrelve)
Command parancs fajtja (14)
CardAddress interfsz vlaszts (0=RS 232, 1=RS 485)
MemoryAddress A vteli ill. az adsi terlet kezdcme
DataSize A vteli ill. az adsi terlet nagysga
116
Forrs: http://www.doksi.hu
SCO
0-ba vlt.
4. Az SCO funkciblokkon keresztl a soros kommunikci kikapcsolsa (SUCOM
aktivls)
Megjegyzs!
Ha az RS 232 interfszen keresztl tbb, mint 63 adatbjt rkezik, akkor az
automatikusan tkapcsol a SUCOM mdra.
0: RS 232
1: RS 485
MemoryAddress Kezd cm
Az adsi, illetve a vteli tartomny kezd cmt lehet megadni ezen a bemeneten. A
vett adatok kzvetlenl berdnak a megadott terletre. Az %MB, %SDB, %RDB
tartomnyokat bjt mretben kell megadni.
A funkciblokk kimenetei
BUSY Az SCO funkciblokk llapota
A funkciblokk visszajelzse:
0: A funkciblokk inaktv
1: A funkciblokk aktv
Ha egy adsi feladat lett indtva, vagy a vtelksz llapot lett aktivlva, akkor a
funkciblokk aktv llapott a BUSY kimenet 1 rtke jelzi.
BUSY = 1.
Az ads vgrehajtsa utn a BUSY kimenet alacsony szintre kapcsol.
BUSY = 0.
Ha a vteli puffer teljesen megtelik, a BUSY kimenet szintn nullra vlt.
BUSY = 0.
117
Forrs: http://www.doksi.hu
SCO
ElementNumber Az adatbjtok szma
A mr elkldtt, vagy a vett adatbjtok szmt jelzi ez a kimenet.
118
Forrs: http://www.doksi.hu
SCO
RS 485
Az RS 485 interfsz paramtereit a Sucosoft S40 "Topolgia konfigurtor" menben
lehet kivlasztani. Vlassza a Topolgia konfigurtorban az Edit -> Set Parameters
-> Bus status (Transparens modus) ->Interface Parameters
A szoftver a nem megengedett kombincikat felismeri, s lehetetlenn teszi a
belltsukat.
Pldk:
Az SCO funkciblokk alkalmazst kt pldn bemutatjuk be.
Adatforgalom (kommunikci) PLC s nyomtat kztt soros vonalon.
Az RS 485, vagy az RS 232 interfszen keresztl a PLC adatot kld a nyomtatnak.
Kszlk csatlakozsok.
Programoz kszlk PLC Nyomtat
RS485
A plda kiprblshoz szksges hardver:
PLC (pl. PS4-201-MM1 a 04 verziszmtl )
Digitlis szimultor
Nyomtat soros vonallal (pl. IPP 144-40E, Metrix)
RS 485 / RS 232 nyomtat kbel
A plda kiprblshoz szksges szoftver:
Sucosoft S40 a 2.0 verzitl
A nyomtat kbel lb ( pin ) kiosztsa
PLC ( RS-485 ) IPP 144-40E
5 plus kerek apa 9 plus SUB-D apa
1 Adatkbel ( T / RB ) 2
3 0V 1
4 Adatkbel ( TA / RA ) 5
PLC ( RS-232 ) IPP 144-40E
9 plus kerek apa 9 plus SUB-D apa
3 0V 5
5 Tx D 2
119
Forrs: http://www.doksi.hu
SCO
A plda kiprblshoz szksges interfszek
Az RS-485 paramterei a Sucosoft S40 "Topolgia konfigurtor" menben
llthatk.
A nyomtat interfsz paramtereinek belltsa megtallhat a nyomtat
gpknyvben, amely tjkoztat az ignyelt specilis karakterekrl is.
Pldaprogram:
A PLC a "Sendchar" program felhasznlsval kld adatot a nyomtatnak.
A " 'Machine 1 ready to start " szveg kldend a PLC-tl a soros nyomtatra. A karakterek a
STRING vltozban vannak letrolva, s a "STRtoCOM" funkciblokk kszti el az SCO
funkciblokkal val kldshez. A szveges vltoz tartalmazza a soremels vezrl karaktert
is, azaz 23 karakterig lehet a nyomtatra adatokat kldeni.
A %I0.0.0.0.7 bemenet vlasztja ki a RS232-es vagy a RS485-as interfszt.
%I0.0.0.0.7 = 0 => RS232
%I0.0.0.0.7 = 1 => RS485
A %I0.0.0.0.0 bemenet felfut le indtja az adsi mveletet. Mivel az ads alatt a Busy
kimenet 1, azaz a %Q0.0.0.0.0 kimenet rvid idre felvillan, a szveg pedig kinyomtatsra
kerl.
PROGRAM Sendchar
VAR
Start AT %I0.0.0.0.0 : BOOL;
Interface AT %I0.0.0.0.7 : BOOL;
Active AT %Q0.0.0.0.0 : BOOL;
Error AT %Q0.0.0.0.3 : BOOL;
SendText : STRING ; (* szveges vltoz a soremels
(*(0Dh) vezrl karakterrel *)
SendBuffer AT %MB0.0.0.100 : BYTE; (* A puffer startcme *)
Convert : STRtoADR; (* Stringet adott memriaterletre
(* tviv FB *)
DataVolume : USINT; (* szveg hossza *)
Send : SCO;
END_VAR
CAL Convert(Enable := 1,
TextString := SendText,
TransmitVariable := &SendBuffer)
LD Convert.StrLen
UINT_TO_USINT (* formtum adaptls az
ST DataVolume (* SCO funkciblokkhoz *)
120
Forrs: http://www.doksi.hu
SCO
(* A szveg kikldse a nyomtatra *)
CAL Send(Strobe := Start,
Command := 1, (* Ads *)
CardAddress := (Interface
BOOL_TO_USINT
),
MemoryAddress := &SendBuffer,
DataSize := DataVolume)
LD Send.Busy
ST Active (*kimenet status a %Q0.0.0.0.0*)
LD Send.Error
NE 0
ST Error (* hibakijelzs *)
END_PROGRAM
121
Forrs: http://www.doksi.hu
SCO
Pldaprogram:
Az adatcsere a vezrl s a terminl kztt a COM9600A program segtsgvel trtnik.
Adsi folyamat
A szveg kldst a terminl fel a %I 0.0.0.0.1 bemeneten megjelen felfut l vltja ki.
A text 1, s a text 2 kztti vlaszts az %I0.0.0.0.0 rtktl fgg:
%I0.0.0.0.0 = 0 : "Start condition 1 fulfilled" (az indtsi felttel teljeslt)
%I0.0.0.0.0 = 1 : "Limit switch 2 activated" (a hatrol kapcsol 2 aktv)
Az elkldend adatok a %MB0.0.0.200 merkerbjttal kezdd terleten tallhatk.
Vtel
A %I0.0.0.0.6 bemenetre adott rtkkel lehet a mode 2 vagy a mode 3 zemmdok kztt
vlasztani.
%I0.0.0.0.6 = 0, mode 2 -- 2. zemmd (vtel puffer trlssel egytt)
A DataSize adja meg a vett adatok rszre lefoglalt puffer mrett.
A %I0.0.0.0.2 bemenetre tett rtk kapcsolja az SCO funkciblokkot vteli llapotba, s a
funkciblokk BUSY kimenet magas szintje jelzi a funkciblokk aktv llapott.
A vett adatok kzvetlenl berdnak a funkciblokk MemoryAddress bemenetn definilt
kezdcmtl (jelen pldban %MB0.0.0.0.400) kezdd memriaterletre.
Az ElementNumber kimenet a mr vett adatok szmt mutatja. A BUSY kimenet nullba vlt,
ha a fogad puffer teljesen betelt (ElementSize = DataSize). Ha a %I0.0.0.0.2 bemenet ismt
aktv, a funkciblokk fogadja az j adatokat. A funkciblokk ElementNumber kimenetn
megjelen 0 jelzi, hogy a vteli puffer trldtt.
%I0.0.0.0.6 = 1 mode 3 -- 3. zemmd (vtel puffer trls nlkl)
Ez a eljrs megegyezik a 2. zemmd eljrsval. Az egyetlen klnbsg az, hogy a fogad
puffer nem trldik. Csak annyi adatbjtot kpes fogadni, amennyit a fogad puffer trolni
kpes. Ha a fogad puffer betelt, ebben az zemmdban tovbbi adat nem fogadhat
mindaddig, amg nem trli a fogad puffer terlett a 2. zemmdban.
Ebben a pldban kt fggetlen funkciblokk vgzi az ads s a vtel mveleteit. A
funkciblokkok egymst klcsnsen reteszelik, gy az egyidej mkds nem lehetsges
(half-duplex zemmd).
PROGRAM COM9600A
VAR
(* Vltozdeklarls az adott fizikai be-/kimenetekhez *)
TextSelection : BOOL AT %I0.0.0.0.0; (* 0 = Text1; 1 = Text2 *)
SendJob : BOOL AT %I0.0.0.0.1;
ReceiveJob : BOOL AT %I0.0.0.0.2;
ReceiveMode : BOOL AT %I0.0.0.0.6;
ReceiveVolume : BYTE AT %QB0.0.0.0;
SendBuffer : BYTE AT %MB0.0.0.200;
ReceiveBuffer : BYTE AT %MB0.0.0.400;
122
Forrs: http://www.doksi.hu
SCO
Text1 : STRING;
Text2 : STRING := 'Limit switch 2 activated'; (* Text 2 kezdeti rtkadssal *)
(*kap rtket *)
ReceiveText : STRING;
DataVolume : USINT;
Send_active : BOOL;
Receive2_active : BOOL;
Receive3_active : BOOL;
Error_SD : BYTE;
Error_RD : BYTE;
(* FB-k deklarlsa *)
SendFB : SCO;
ReceiveFB : SCO;
SendConverter : STRtoADR ;
ReceiveConverter : ADRtoSTR ;
END_VAR
LD Receive2_active
OR Receive3_active
JMPC Not_send
LD TextSelection
JMPC Second_Text
CAL SendConverter(Enable := 1,
TextString := Text1,
TransmitVariable := &SendBuffer)
LD SendConverter.StrLen
UINT_TO_USINT
ST DataVolume (*formtum adaptls az SCO-hoz *)
(* kzvetlenl is trolhat: ST SendFB.DataSize *)
LD SendFB.Busy
ST Send_active
123
Forrs: http://www.doksi.hu
SCO
Second_Text:
CAL SendConverter(Enable := 1,
TextString := Text2,
TransmitVariable := &SendBuffer)
LD SendConverter.StrLen
UINT_TO_USINT
ST DataVolume (*formtum adaptls az SCO-hoz *)
LD SendFB.Busy
ST Send_active
Not_send:
LD Send_active
JMPC Not_Receive
LD ReceiveMode
JMPC ReceiveMode_3
LD ReceiveFB.Busy
ST Receive2_active
ReceiveMode_3:
CAL ReceiveFB(Strobe := ReceiveJob,
Command := 3,
CardAddress := 0, (*RS232*)
MemoryAddress := &ReceiveBuffer,
DataSize := 63)
LD ReceiveFB.Busy
ST Receive3_active
Not_Receive:
END_PROGRAM
124
Forrs: http://www.doksi.hu
Serialize
Az operandusok jelentse:
Source forrs vltoz
Buffer cltartomny
BufferOffset eltols rtke a cltartomnyon bell
SourceLength a forrsvltoz hossza bjtban megadva
Error hibajelzs
Lers:
A Serialize funkciblokk egy tetszleges tpus vltozt msol t egy adott
cltartomnyba. Az adott cltartomnyt a Buffer s a BufferOffset vltozkkal lehet
meghatrozni. Az tmsolt akr egymstl is klnbz tpus adatok, mint tmb
ms PLC-be tkldhet, s ott a Deserialize funkciblokkal ismt kicsomagolhat.
A SourceLength kimeneti vltoz a forrsadatok hosszt adja meg bjtos mretben.
A Buffer tetszleges mret tmb lehet, tpusa ANY_BIT s ANY_INT rtk lehet,
kivve a BOOL tpust.
Az Error kimenet az albbi rtkeket veheti fel:
5 nincs hiba
6 puffer tllps
7 az Offset a Bufferen kvl helyezkedik el
8 a Source a Bufferen bell helyezkedik el
9 A SourceLength rtke 0
125
Forrs: http://www.doksi.hu
Serialize
PLC-ben klnbzkppen kerlnek brzolsra.
A fenti korltozsok azonos tpus PLC-k kzti adatcserre nem vonatkoznak.
VAR
serie_fb : Serialize;
struct_buffer AT %SDB1.1.0.0 : ARRAY [1..30] OF BYTE;
CheckSumOffset : UINT := 0;
CheckSum : UINT;
DTOffset : UINT := 2;
TransDatum : DT; (* adsi dtum *)
DataOffset: UINT := 10;
TransmitData : Array [1..20] OF BYTE; (* felhasznli adatok *)
SerializedLength : UINT;
Error : USINT;
END_VAR
LD serie_fb.Error
USINT_TO_BOOL (* volt-e hiba? *)
JMPC _Fail (* hibakezelsi rutin *)
LD serie_fb.Error
USINT_TO_BOOL (* volt-e hiba? *)
JMPC _Fail (* hibakezelsi rutin *)
126
Forrs: http://www.doksi.hu
Serialize
LD serie_fb.Error
USINT_TO_BOOL (* volt-e hiba? *))
JMPC _Fail (* hibakezelsi rutin *)
127
Forrs: http://www.doksi.hu
SetRealTimeClock
SetRealTimeClock
Az operandusok jelentse:
Set engedlyez jel (felfut l) az adatcmek
DataAddress a memriaterlet kezdcme,
ahol a dtum s idrtkek tallhatk
Error hibajelzs
Lers:
A Set bemeneten 0 1 felfut llel lehet a validej ra rtkt trni. Az j rtkek
trsa kzvetett mdon trtnik. A DataAddress ltal meghatrozott memria
kezdcmtl kezdve ht egymst kvet adatbjt tartalmazza a berand j validej
dtum s id rtkeket. A bjtok sorrendje v, hnap, nap, htnap sorszma, ra,
perc, msodperc.
A felfut l hatsra a teljes rtk trdik, azaz a teljes memriaterletnek a helyes
informcit kell tartalmazni. Rszinformcik kln- kln nem kezelhetk.
A deklarlt adattpusok bjt szlessgnek kell lenni, teht BYTE, SIINT, vagy
USINT. Clszer az USINT alkalmazsa.
Hibazenetek
Az ERR kimenet tartalmazza a lehetsges hibk kdjt
1: Helytelen DataAddress paramter
2: Helytelen v paramter ( 0 99 )
3: Helytelen hnap paramter ( 1 12 )
4: Helytelen nap paramter ( 1 31 )
5: Helytelen htnap paramter ( 0 6, 0 = vasrnap )
6: Helytelen ra paramter ( 0 23 )
7: Helytelen perc paramter ( 0 59 )
8: Helytelen msodperc paramter ( 0 59 )
128
Forrs: http://www.doksi.hu
SetRealTimeClock
Pldaprogram:
PROGRAM Clock
VAR
Year AT %MB0.0.0.0 : USINT := 97;
Month AT %MB0.0.0.1 : USINT := 1;
Day AT %MB0.0.0.2 : USINT := 1;
Weekday AT %MB0.0.0.3 : USINT := 2; (*2 = kedd*)
Hour AT %MB0.0.0.4 : USINT:= 12;
Minute AT %MB0.0.0.5 : USINT ;
Second AT %MB0.0.0.6 : USINT ;
(* Default rtk kedd, 1.1.1997 12.00h *)
Set_time : SetRealTimeClock; (* FB deklarci*)
Set AT %I0.0.0.0.0 : BOOL ;
END_VAR
LD 98
ST Year (* v bellts: 1998 *)
LD 9
ST Month (* hnap bellts: szeptember *)
LD 12
ST Day (* nap bellts: 12. *)
LD 6
ST Weekday (* htnap sorszm bellts: szombat *)
LD Set_time.Error
NE 0 (* hiba figyels *)
JMPC Hiba_kiertekeles
.
.
.
.END_PROGRAM
129
Forrs: http://www.doksi.hu
SR_x
Az operandusok jelentse:
ForwardPulse lptet impulzus elre, felfut l
BackwardPulse lptet impulzus vissza, felfut l
ReSet visszallts, trls
ForwardData adatbemenet, elre
BackwardData adatbemenet, vissza
Output_ adatkimenet 1
Output_n utols adatkimenet
Lers:
A * helyn az adott prototpus funkciblokk neve rand be.
A lehetsges nevek a kvetkezk: SR_1, SR_2, SR_128, ahol az egyes szmok az
1-bites regisztermez hosszt adjk meg.
A ForwardData bemeneten lev rtk a ForwardPulse bemeneten megjelen felfut
l hatsra belp az els regiszter helyre. A regiszter eredeti tartalma egy lpssel
elre lp.
BackwardPulse ForwardPulse
BackwardPulse ForwardPulse
lptets irnya
8 bit hossz lptet regiszter a ForwardData bemenet figyelembevtelvel egyet elre lp.
130
Forrs: http://www.doksi.hu
SR_x
A BackwardData bemeneten lev rtk a BackwardPulse bemeneten megjelen
felfut l hatsra belp az utols regiszter helyre. A regiszter eredeti tartalma egy
lpssel vissza lp.
BackwardPulse ForwardPulse
BackwardPulse ForwardPulse
lptets irnya
VAR
Shiftregister_4_bit : SR_4;
Pulse1 : BOOL;
Pulse2 : BOOL;
Reset : BOOL;
Data_bit1 : BOOL;
Data_bit2 : BOOL;
Output1 : BOOL;
Output2 : BOOL;
Output3 : BOOL;
Output4 : BOOL;
END_VAR
131
Forrs: http://www.doksi.hu
SR_x
CAL Shiftregister_4_bit(ForwardPulse := Pulse1,
BackwardPulse := Pulse2,
ReSet := Reset,
ForwardData := Data_bit1,
BackwardData := Data_bit2)
LD Shiftregister_4_bit.Output_1
ST Output1
LD Shiftregister_4_bit.Output_2
ST Output2
LD Shiftregister_4_bit.Output_3
ST Output3
LD Shiftregister_4_bit.Output_4
ST Output4
END_PROGRAM
132
Forrs: http://www.doksi.hu
SRB_x
Az operandusok jelentse:
ForwardPulse lptet impulzus elre, felfut l
BackwardPulse lptet impulzus vissza, felfut l
ReSet visszallts, trls
ForwardData adatbemenet, elre
BackwardData adatbemenet, vissza
Output_ adatkimenet 1
Output_n utols adatkimenet
Lers:
A * helyn az adott prototpus funkciblokk neve rand be.
A lehetsges nevek a kvetkezk: SRB_1, SRB_2, SRB_128, ahol az egyes
szmok a 8-bites regisztermez hosszt adjk meg.
A ForwardData bemeneten lev rtk a ForwardPulse bemeneten megjelen felfut
l hatsra belp az els regiszter helyre. A regiszter eredeti tartalma egy lpssel
elre lp.
BackwardPulse ForwardPulse
BackwardPulse ForwardPulse
lptets irnya
8 bit hossz lptet regiszter a ForwardData bemenet figyelembevtelvel egyet elre lp.
133
Forrs: http://www.doksi.hu
SRB_x
A BackwardData bemeneten lev rtk a BackwardPulse bemeneten megjelen
felfut l hatsra belp az utols regiszter helyre. A regiszter eredeti tartalma egy
lpssel vissza lp.
BackwardPulse ForwardPulse
BackwardPulse ForwardPulse
lptets irnya
8 bit hossz lptet regiszter a BackwardData bemenet figyelembevtelvel egyet vissza lp.
VAR
Shiftregister_2_byte : SRB_2;
Pulse1 : BOOL;
Pulse2 : BOOL;
Reset : BOOL;
Data1 : USINT;
Data2 : USINT;
Output1 : USINT;
Output2 : USINT;
END_VAR
134
Forrs: http://www.doksi.hu
SRB_x
CAL Shiftregister_2_byte(ForwardPulse := Pulse1,
BackwardPulse := Pulse2,
ReSet := Reset,
ForwardData := Data1,
BackwardData := Data2)
LD Shiftregister_2_byte.Output_1
ST Output1
LD Shiftregister_2_byte.Output_2
ST Output2
END_PROGRAM
135
Forrs: http://www.doksi.hu
SRW_x
Az operandusok jelentse:
ForwardPulse lptet impulzus elre, felfut l
BackwardPulse lptet impulzus vissza, felfut l
ReSet visszallts, trls
ForwardData adatbemenet, elre
BackwardData adatbemenet, vissza
Output_ adatkimenet 1
Output_n utols adatkimenet
Lers:
A * helyn az adott prototpus funkciblokk neve rand be.
A lehetsges nevek a kvetkezk: SRB_1, SRB_2, SRB_128, ahol az egyes
szmok a 16-bites regisztermez hosszt adjk meg.
A ForwardData bemeneten lev rtk a ForwardPulse bemeneten megjelen felfut
l hatsra belp az els regiszter helyre. A regiszter eredeti tartalma egy lpssel
elre lp.
BackwardPulse ForwardPulse
BackwardPulse ForwardPulse
lptets irnya
8 bit hossz lptet regiszter a ForwardData bemenet figyelembevtelvel egyet elre lp.
136
Forrs: http://www.doksi.hu
SRW_x
A BackwardData bemeneten lev rtk a BackwardPulse bemeneten megjelen
felfut l hatsra belp az utols regiszter helyre. A regiszter eredeti tartalma egy
lpssel vissza lp.
BackwardPulse ForwardPulse
BackwardPulse ForwardPulse
lptets irnya
8 bit hossz lptet regiszter a BackwardData bemenet figyelembevtelvel egyet vissza lp.
VAR
Shiftregister_2_wort : SRW_2;
Pulse1 : BOOL;
Pulse2 : BOOL;
Reset : BOOL;
Data1 : UINT;
Data2 : UINT;
Output1 : UINT;
Output2 : UINT;
END_VAR
137
Forrs: http://www.doksi.hu
SRW_x
CAL Shiftregister_2_wort(ForwardPulse := Pulse1,
BackwardPulse := Pulse2,
ReSet := Reset,
ForwardData := Data1,
BackwardData := Data2)
LD Shiftregister_2_wort.Output_1
ST Output1
LD Shiftregister_2_wort.Output_2
ST Output2
END_PROGRAM
138
Forrs: http://www.doksi.hu
STRtoADR
STRtoADR
TextSring TextSring
ANY_STRING
ADDRESS TransmitVariable
Az operandusok jelentse:
TextSring Karakterlnc, melyet a memriaterletre kell bemsolni.
TransmitVariable A memriaterlet kezdcme, ahov az adatok bemsoldnak
Enable Az talaktsi folyamat engedlyezse
StrLen Az talaktott jelek szma
Lers:
A soros vonalra kldend adatokat elzetesen a soros vonali funkciblokk (pl.SCO)
adsi terletre kell bemsolni. Az STRtoADR blokk erre a clra hasznlhat. Az
Enable bemenetre adott 1-es szinttel indthat az talaktsi mvelet.
Az StrLen kimeneten az tmsolt adatok szma olvashat le. Amennyiben a
STRING vltoz karakterhossza hosszabb a letrolsi hely mretnl, akkor a
STRING vltoz vge rtelemszeren lemarad, azaz nem kerl bemsolsra.
Pldaprogram:
PROGRAM Textcopy
VAR
String_to_Marker : STRtoADR;
SendText : STRING := 'Small Example';
StartAddress AT %MB0.0.0.100 : BYTE;
SendLength : UINT;
END_VAR
LD String_to_Marker.StrLen
ST SendLength
END_PROGRAM
139
Forrs: http://www.doksi.hu
STRtoCOM
STRtoCOM
TextString TextString
ANY_StTRING
TransmitVariaable TransmitVariaable
ANY_ARRAY
BOOL Enable
Az operandusok jelentse:
TextSring Karakterlnc, melyet a tmb adataiba kell bemsolni.
TransmitVariable A tmb, ahov a karakterlncot be kell msolni
Enable Az talaktsi folyamat engedlyezse
StrLen Az talaktand jelek szma
Lers:
A soros vonalra kldend adatokat elzetesen a soros vonali funkciblokk (pl.SCO)
adsi terletre kell bemsolni. Az STRtoCOM blokk erre a clra hasznlhat. Az
Enable bemenetre adott 1-es szinttel indthat az talaktsi mvelet.
Az StrLen kimeneten az tmsolt adatok szma olvashat le. Amennyiben a
STRING vltoz karakterhossza hosszabb a letrolsi hely mretnl, akkor a
STRING vltoz vge rtelemszeren lemarad, azaz nem kerl bemsolsra.
Pldaprogram:
PROGRAM Textsend
VAR
String_to_Array : STRtoCOM;
SendText : STRING := 'Small Example';
SendArray : ARRAY [1..100] OF BYTE;
SendLength : UINT;
END_VAR
END_PROGRAM
140
Forrs: http://www.doksi.hu
TimeConcat
TimeConcat
UINT Minutes
UINT Hours
UINT Days
UINT Sign
Az operandusok jelentse:
MilliSeconds idtartam vltoz milliszekundum rsze
Seconds idtartam vltoz szekundum rsze
Minutes idtartam vltoz perc rsze
Hours idtartam vltoz ra rsze
Days idtartam vltoz nap rsze
Sign az idtartam eljele
OutputTime az eredmnyl kapott id vltoz
Overflow Tlcsorduls
Lers:
A bemenetknt UINT formtumban megadott egyedi idtartam rtkeket a
funkciblokk a TIME formtum vltozv alaktja.
A funkciblokk az egyes rtkeket tszmtja az idtartam vltoz megfelel
rszeiv, s szksg esetn tlcsordulst kpez.
A bemeneti vltozk minden megengedett UINT tpus rtket felvehetnek, amg az
sszrtk tl nem lpi a T#63d23h59m59s999ms rtket. Amennyiben megtrtnik a
tllps, akkor az Overflow kimeneten tlcsorduls jelzs ( = 1) jelentkezik.
A bemeneti rtkek eljelbitje az eredmnyrtkben is megjelenik. A Sign = 0
pozitv, a Sign = 1 rtk negatv kimeneti operandust eredmnyez.
141
Forrs: http://www.doksi.hu
TimeConcat
Pldaprogram:
PROGRAM time_gen
VAR
TimeConcaten : TimeConcat;
Milliseconds : UINT;
Seconds : UINT;
Minutes : UINT;
Hours : UINT;
Days : UINT;
Sign: BOOL := 0;
TimeStructure : TIME;
Overflow : BOOL;
END_VAR
END_PROGRAM
142
Forrs: http://www.doksi.hu
TimeGenerator
TimeGenerator
UINT Period
Az operandusok jelentse:
Set indtsi felttel, pozitv llel
Period Peridusid milliszekundumban
PulseOutput impulzus kimenete
Iddiagramok:
Set
PulseOutput
T
Lers
Ha a Set bemenet magasba vlt a PulseOutput kimeneten (a Period bemeneten,
milliszekundumban definilt peridusidvel) 1:1 kitltsi tnyezj pulzussorozat
generldik mindaddig, amg az Set bemenet magas.
A peridusidnek mindig nagyobbnak kell lennie a ciklusid ktszeresnl, hogy az
impulzus alacsony, s magas szintje tisztn elklnljenek.
Ha a peridusidt meghatroz Period bemenetre tett rtk vltozik, ez csak akkor
mdostja a peridusidt, ha a Set bemenetre egy felfut l jut.
A megadott peridusid pontossgt az alkalmazi program ciklusideje s az
opercis rendszer futsi ideje befolysolhatja. A funkciblokk programcikluson
belli tbbszri hvsa (klnsen a peridusid s a program ciklusid azonos
nagysgrendbe esse esetn) a pontatlansgot cskkenti.
A peridusid pratlan rtkt a bels szoftver a kvetkez pros rtkre lefel
kerekti.
143
Forrs: http://www.doksi.hu
TimeGenerator
Pldaprogram:
PROGRAM frequency
VAR
ClockGenerator : PulseGenerator;
Start AT %I0.0.0.3.6 : BOOL;
PeriodTime: UINT := 320; (* A peridusid milliszekundumban *)
Clock : BOOL;
END_VAR
LD ClockGenerator.PulseOutput
ST Clock
END_PROGRAM
144
Forrs: http://www.doksi.hu
TimePulse
TimePulse impulzuskpz
TimePulse
UINT PresetTime
Az operandusok jelentse:
Set indtsi felttel, pozitv llel
ReSet visszallts, trls
PreSetTime impulzus idrtk milliszekundumban
PulseOutput impulzus kimenete
ElapsedTime tnylegesen eltelt impulzus id milliszekundumban
Iddiagramok:
Set
ReSet
PulseOutput
T T T <T
Lers
A Set bemenet felfut lvel indtva PulseOutput kimenet a PresetTime bemeneten
(milliszekundumban ) definilt idtartamra magas rtket vesz fel. A Set llapottl
fggetlenl az adott hosszsg impulzus a PulseOutput kimeneten fennmarad, s
csak a pulzusid letelte utn lesz ismt alacsony a P kimenet rtke.
Az ElapsedTime kimenet milliszekundumban kijelzi a idszmll aktulis rtkt.
A ReSet bemenet magas szintje, alaphelyzetbe lltja az idtagot. Alaphelyzetben a
kimenetek rtke nulla.
145
Forrs: http://www.doksi.hu
TimePulse
Pldaprogram:
PROGRAM pulse
VAR
Timer1 : TP;
Start AT %I0.0.0.2.6 : BOOL;
PulseDuration: TIME := T#125ms;
OutputPulse : BOOL;
ActualTime : TIME;
END_VAR
LD Timer1.Q
ST OutputPulse
LD Timer1.ET
ST ActualTime
END_PROGRAM
146
Forrs: http://www.doksi.hu
TimerAlarm
TimerAlarm
BOOL EnableDisable
USINT Mode
UINT Predivide
Az operandusok jelentse:
EnableDisable Megszaktskr funkciblokk engedlyezse / tiltsa, felfut lvez.
(engedly=1, tilts=0)
Number zemmd (1 = timer funkci, 2 = impulzusgenertor funkci)
RisingEdge eloszt
SetpointValue Impulzusszm alapjel
SubRoutine megszaktskrst kiszolgl funkciblokk neve
Error hibajelzs
CallUpValue megszaktskr hvsok szma
Lers:
A funkciblokk a PS4-201-MM1 alapkszlk %I0.0.0.0.1 bemenethez van
hozzrendelve. A PS4-141-MM1 s PS4-151-MM1 esetn a hozzrendels a
%I0.0.0.1.0 bemenethez trtnik.
A PS4-341-MM1 kt lvezrelt bemenettel (%I0.0.0.1.0, s %I0.0.0.1.1) rendelkezik
Az EnableDisable bemenet engedlyezi a funkciblokk mkdst. Ha a bemeneten
pozitv lvlts (0 1) kvetkezik be, a funkciblokk indul, valamint tveszi
aSubRoutine bemenetre adott megszaktskr funkciblokk nevet, a Predivide s a
SetpointValue bemenetekre adott rtkeket s kzbensleg letrolja azokat. A
CallUpNumber kimenet egyidejleg trldik. A bemenet 1 -> 0 tmenete esetn a
funkciblokk lell, s egyttal trldik is.
A funkciblokk az 1. zemmdban egy idztt valst meg.. Az idalap = (a
Predivide bemeneten lev rtk) s-ban, a megengedett legrvidebb idalap 512s.
Az alaprtk = (a SetpointValue bemeneten lev rtk). Ha az alaprtknek
megfelel szm, egyenknt az idalap hosszsg id teljesen letelt, akkor a
147
Forrs: http://www.doksi.hu
TimerAlarm
CallUpNumber tartalma eggyel n, s ha a SubRoutine bemenet nem res, akkor
behvja a bemeneten feltntetett megszaktst kiszolgl funkciblokkot.
A funkciblokk a 2. zemmd llsban egy jelgenertor valst meg. A jelgenertor
az alapkszlk (PS4-150/-200-/300-MM1) %Q0.0.0.0.0 kimenethez csatlakozik. A
genertor peridus ideje = (a Predivide bemeneten lev rtk) s-ban. A
SetpointValue bemeneten a %Q0.0.0.0.0 kimeneten megjelen sszes le- s felfut l
sszegt kell megadni. Ha a SetpointValue alaprtk felnek megfelel szm,
egyenknt az idalap hossz impulzus teljesen letelt, akkor a CallUpNumber
tartalma eggyel nvekszik.
Az ERR kimenet tartalmazza a hibk kdjait:
0 = nincs hiba
1 = alaprtk (SetpointValue) bemeneten 0 van
2 = eloszt (Predivide) bemeneten az rtk < 512.
3 = a Mode bemeneten nincs megfelel rtk (nem 1, vagy 2)
A SubRoutie bemenet lehetv teszi egy esemnyvezrelt program beillesztst.
Ennek rdekben ezen a bemeneten a kiszolgl funkciblokk cmt kell megadni.
Mikor az esemny bekvetkezik (a CallUpValue szmll eggyel n) a funkciblokk
meghvsra kerl.
Ha ezen a bemeneten nincs cm, akkor csak a CallUpValue szmll tartalma n.
A megszaktskrst kiszolgl funkciblokk nem tartalmazhat sem bemen, sem
kimen paramtereket. Egy ilyen funkciblokk csak loklis vltozkat, vagy csak a
fprogramban deklarlt globlis vltozkat, mint kls vltozkat
(VAR_EXTERNAL) tartalmazhat.
Esemnyvezrelt program alkalmazsakor az albbi szempontokat kell figyelembe
venni:
148
Forrs: http://www.doksi.hu
TimerAlarm
szabad korrekten vgrehajtani.
A lehet leggyorsabb reagls rdekben a megszaktskr funkciblokkban
clszer a kzvetlen perifria hozzfrst hasznlni, melyek az alapkszlken
llnak rendelkezsre (%QP0.0.0.0.x, %QPB0.0.0.0).
A megszaktskr funkciblokkok az alkalmazi programban elvileg tbbszr is
hasznlhatk, de ezt ltalban kerlni rdemes, mivel a megszaktskr
funkciblokk tpusok ugyanazzal az esemnyforrssal, s gy a programban csak
az utoljra rvnyesl funkciblokk hatrozza meg feldolgozst.
A tbbszri felhasznls azt jelenti, hogy az egyedi funkciblokk-tpus minden
egyes alkalmazshoz kln-kln adatterletet foglal le.
A kvetkez pldban aTimerAlarm, mint impulzusgenertor (mode = 2) mkdik.
Az idalap 1ms,( Predivide = 1000). Mivel a SetpointValue = 100, a %Q0.0.0.0.0
kimeneten 50db impulzus jelenik meg 1:1 kitltssel.
Predivide=512
Mode=1
SetpointValue=1
CallUpNumber 0 1 2 3 4 5 6 7 8 9 - - 65534 0
Ugrs a funkciblokkra
512 1024
Predivide =512
Mode =1
SetpointValue=3
CallUpNumber 0 0 0 1 1 1 2 2 2 3 3 3 4 4
Ugrs a funkciblokkra
kimenet
512 1024
Predivide =512
Mode =2
SetpointValue=4
CallUpNumber 0 0 0 0 1 1 1 1 2 2 2 2 3 3
Ugrs a funkciblokkra
149
Forrs: http://www.doksi.hu
TimeSplit
TimeSplit
Seconds UINT
Minutes UINT
Hours UINT
Days UINT
Sign BOOL
Az operandusok jelentse:
InputTime a bemeneti TIME idtartam vltoz
MilliSeconds idtartam vltoz milliszekundum rsze
Seconds idtartam vltoz szekundum rsze
Minutes idtartam vltoz perc rsze
Hours idtartam vltoz ra rsze
Days idtartam vltoz nap rsze
Sign az idtartam eljele
Lers:
A bemenetknt TIME formtumban megadott vltozt a funkciblokk UINT
formtum egyedi vltozkk alaktja t.
A Sign kimenet adja meg az idtartam vltoz eljelt. 0 a pozitv idtartamot, 1 a
negatv idtartamot jelkpezi.
Pldaprogram:
PROGRAM zt_split
VAR
TimeElements : TimeSplit;
Duration : TIME := T#20d22h13m12s800ms;
Milliseconds : UINT;
Seconds : UINT;
Minutes : UINT;
Hours : UINT;
Days : UINT;
Sign : BOOL;
END_VAR
150
Forrs: http://www.doksi.hu
TimeSplit
END_PROGRAM
151
Forrs: http://www.doksi.hu
TODsplit
Az operandusok jelentse:
Millisecond id vltoz nap rsze
Second id vltoz hnap rsze
Minute id vltoz v rsze
Hour id vltoz ra rsze
OutputTOD az eredmnyl kapott dtum vltoz
Error Hibajelzs
Lers:
A bemenetknt UINT formtumban megadott egyedi rtkeket a funkciblokk a id
(TIME_OF_DAY) formtum vltozv alaktja.
Az egyes bemeneti rtkek a nekik megfelel rtktartomnyt nem lphetik t.
Amennyiben a megengedett rtkeket tllpik, akkor az Error kimeneten hibajelzs
lp fel (= 1).
Pldaprogram:
PROGRAM time2
VAR
TimeOfDay : TODconcat;
Millisecond : UINT;
Second : UINT;
Minute : UINT;
Hour : UINT;
TODStructure : TIME_OF_DAY;
Error : BOOL;
END_VAR
CAL TimeOfDay(MilliSecond := Millisecond,
Second := Second,
Minute := Minute,
Hour := Hour
|
TODStructure:= OutputTOD,
Error:= Error)
END_PROGRAM
152
Forrs: http://www.doksi.hu
TODsplit
Az operandusok jelentse:
InputTOD a bemeneti TIME id vltoz
MilliSecond id vltoz milliszekundum rsze
Second id vltoz szekundum rsze
Minute id vltoz perc rsze
Hour id vltoz ra rsze
Lers:
A bemenetknt TIME_OF_DAY formtumban megadott vltozt a funkciblokk
UINT formtum egyedi vltozkk alaktja t.
Pldaprogram:
PROGRAM time1
VAR
Split_time : TODsplit;
TimeOfDay : TOD := TOD#12h13m12s800ms;
Milliseconds : UINT;
Seconds : UINT;
Minutes : UINT;
Hours : UINT;
END_VAR
END_PROGRAM
153
Forrs: http://www.doksi.hu
TransferArray
TransferArray
Source Source
ANY_ARRAY
Destination Destination
ANY_ARRAY
BOOL Mode
UINT SourceOffset
UINT DestinationOffset
UINT ElementNumber Error USINT
Az operandusok jelentse:
Source a forrstmb
Destination cltartomny
Mode zemmd: (0 = inicializls, 1 = msols)
SourceOffset a forrstmbn belli eltols rtke
DestinationOffset a cltmbn belli eltols rtke
ElementNumber msoland bjtok szma
Error hibajelzs
Lers:
A funkciblokknak ktfle zemmdja van (adatok inicializlsa, s adatterlet
msolsa).
Az zemmd vlaszts a Mode bemenetre adott rtkkel trtnhet.
A forrs s a cl-tmb tetszleges nagysg tmb lehet. A tmb tpusa ANY_INT
vagy ANY_BIT lehet, kivve a BOOL (bites) tmbket.
Az Error kimeneten az esetleges hibakd jelenik meg:
0 nincs hiba,
1 az elemek szma (ElementNumber) nulla.
2 A SourceOffset rtke nagyobb, mint a Source tartomny rtke
3 Az elemek szma tllpi a a forrstartomny rtkt
4 A DestinationOffset rtke nagyobb, mint a Destination tartomny
rtke
5 Az elemek szma tllpi a cltartomny rtkt
6 forrscm s a clcm azonos
154
Forrs: http://www.doksi.hu
TransferArray
Inicializlsi zemmd
Az inicializlsi zemmdban a Source s a SourcsOffset ltal meghatrozott
tmbelemet msol a Destination s a DestinationOffset ltal meghatrozott
tmbterletre. A forrs s a cl egy tmbn bell is lehet.
A fellrt tmbelemek szmt az ElementNumber adja meg.
Msolsi zemmd
A msolsi zemmdban egy tmb, vagy annak egy rsze (Source + SourceOffset)
kerl tmsolsra a (Destination + DestinationOffset) ltal meghatrozott terletre. A
msoland bjtok szmt az ElementNumber hatrozza meg.A forrs s a cl egy
tmbben is elhelyezkedhetnek, azaz blokkeltols is lehetsges.
A TransferArray-re vonatkoz plda a BlockTransfer funkciblokk alatt tallhat,
mivel a kt funkciblokk egymssal azonos, csupn a deklarcis eljrs klnbzik.
(A cl- s forrscmeket a cl- s forrstmb deklarcikkal kell helyettesteni.)
155
Forrs: http://www.doksi.hu
WriteMC
WriteMC
Az operandusok jelentse:
SourceAddress a forrstmb, mely tartalmazza a mentend adatokat
Strobe letrolsi folyamat indtsa
SegmentNumber a szegmens szma (megengedett: 0n)
DataLength a troland adatbjtok szma
MaxSegmentNumber a fjl utols lehetsges szegmensszma
Error hibajelzs
Lers:
A WriteMC funkciblokk segtsgvel a memriamodulba lehet adatokat a CPU
memriaterletrl letrolni.
Ez a funkciblokk a ReadMC blokkal egytt fontos alkalmazsi terlete a remanens
adattrolsnak, receptura-kezelsnek, illetve vltozk letrolsnak egy program
aktualizlst megelzen.
156
Forrs: http://www.doksi.hu
WriteMC
Az Error kimenet a kvetkez llapotokat veheti fel:
0 nincs hiba
1 nincs memriamodul beptve
2 online kapcsolat miatt nem lehetsges a hozzfrs (csak PS4-200 esetn)
3 nem lehetsges a hozzfrs egyidej WriteMC hvs miatt
(csak PS4-200 esetn)
4 rvnytelen SegmentNumber (PS4-200 esetn a megengedett: 0.511; PS4-
300 esetn a modultl fggen: 0.1023)
5 rvnytelen adathossz (megengedett DataLength rtk: 1.128)
6 -
7 nem lehetsges a hozzfrs, mert a memriamodul , mint forrskd httr van
felhasznlva (csak PS4-200 esetn)
8 a memriamodul formzsa nem engedi meg az adattrolsi tartomny
hasznlatt (csak PS4-300 esetn)
Csak a PS4-200 esetn: Az Active kimenet a PS4-150/-200 esetn mindig 0. A
funkciblokk aktulis llapota csak egy ismtelt hvs mellett az Error kimenet
lekrdezsvel oldhat meg. Ha az Error 0-t ad, akkor a mvelet hiba nlkl
vgrehajtdott. Ha a kimenet rtke 3, akkor a funkciblokk mg dolgozik.
Az Error kimenet aktualizlshoz a Strobe bemeneten egy jabb pozitv let kell
generlni.
Pldaprogram:
PROGRAM SAVE
VAR
StrobeSave AT %I0.0.0.0.0 : BOOL;
ActiveSave AT %Q0.0.0.0.0 : BOOL;
ErrorSave : USINT;
FBSaveData : WriteMC;
SegmentNumber : UINT;
DataLength : USINT;
LastSegmentNumber : UINT;
DataArea : ARRAY[0..31] of USINT;
END_VAR
LD ActiveSave
JMPCN CONTINUE
(* adatok elksztse a trolsra *)
157
Forrs: http://www.doksi.hu
WriteMC
CONTINUE:
LD 47
ST SegmentNumber
LD 32
ST DataLength
LD ErrorSave
EQ 0
JMPC NO_ERROR
(* hiba kezelsi rutin *)
NO_ERROR:
(* tovbbi programrszek *)
END_PROGRAM
158
Forrs: http://www.doksi.hu
Sucosoft hatrrtkek
7. Sucosoft hatrrtkek
PS4-200 PS4-300 PS416
A Project Manager hatrrtkei
a POU-k max. szma egy projektben 256 256 256
a projektnv max. hossza. 32 karakter 32 karakter 32 karakter
a neveknek az els 8 karakterben
klnbzknek kell lenni!
A program szerkeszt (Editor) korltai
a sorok max. szm egy POU-ban 65 535 65 535 65 535
a vltoznevek max. hossza 64 karakter 64 karakter 64 karakter
a POU nv max. hossza 32 karakter 32 karakter 32 karakter
llapotkijelzs (Status Display) hatrrtkei
1)
egyszerre kijelezhet vltozk szma ca. 50 - -
A konfigurtor (Topology Configurator) hatrrtkei
konfigurciban a max. komponensek 175 630 753
szma 2)
az I/O monitorban a kivlaszthat 10 10 10
komponensek max. szma
Korltok a CPU s a fordt (compiler) fggvnyben
max. programmret belertve az sszes FB-t
max. programmret belertve az sszes FB-t 63 kbjt 512 kbjt CPU200: 256kB
(adat + programkd egyttesen) CPU300: 512kB
CPU400:1MB
egy POU max. programkd mrete 56 kbjt 64 kbjt 64 kbjt
az sszes vltoz max mrete 32000 global 16000 global 16000 global
(fprogram + sszes FB) 32000/POUloc. 16kB/POUloc. 16kB/POUloc.
a fastruktra max. mrete (sszekapcsolt 8 16 16
funkciblokkok szma)
a funkciblokkok hvsnak max. mlysge 16 16 16
programonknti instanclsok szma 2) 4000 4000 4000
az AT deklarlsok max szma 2) 16 kbjt 16 kbjt 5450
egy tmb max. mrete 8 kbjt 16 kbjt 16 kbjt
egy tmb max dimenzija 3 4 4
index tartomny megengedett rtke 0...255 -2147483648 -2147483648
.+2147483647 ...+2147483647
felsorols tpus vltozk max. elemszma 255 65000 65000
159
Forrs: http://www.doksi.hu
Sucosoft hatrrtkek
160