Zalotay Péter
Programozható irányítások I.
Elektronikus jegyzet Kandó Kálmán Villamosmérnöki Kar
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ta r ta l o m je g y zé k Bevezetés..................................................................................................................................4 I. R É S Z..................................................................................................................................6 Az irányítástechnika rendszertechnikai összefoglalása. .............................................................6 1. Alapismeretek ...................................................................................................................7 1.1. Alapfogalmak ............................................................................................................7 1.2. Az irányító rendszer és feladatai ................................................................................7 1.2..1. Vezérlés .........................................................................................................8 1.2..2. Szabályozás ...................................................................................................9 1.2..3. Adatok gyűjtése – tárolása............................................................................12 1.3. Irányítási rendszerek felépítése ................................................................................13 1.3..1. Egyedi irányítások........................................................................................13 1.3..2. Csoportos irányítások...................................................................................14 1.3..3. Strukturált irányítások ..................................................................................14 1.3..4. Az irányított rendszer felosztási módozatai ..................................................16 1.3..5. Irányítások megvalósítása ............................................................................17 II. R É S Z...............................................................................................................................18 Az irányítástechnikában alkalmazott programozható hardver készülékek ................................18 2. Programozható logikai áramkörök (PLD) ........................................................................19 2.1. Egyszerű programozható logikai eszközök...............................................................19 2.2. Komplex programozható logikai eszközök...............................................................21 2.3. Felhasználó által programozható kapu mátrix ..........................................................21 2.4. GAL eszközök.........................................................................................................21 3. Mikroprocesszoros irányító berendezések........................................................................23 3.1. Általános célú mikrogépek és a mikrokontroller.......................................................23 3.2. MCS51 és a PIC mikrokontrollerek felépítésének összehasonlítása ..........................24 3.3. Digitális perifériák...................................................................................................25 3.3..1. Portok ..........................................................................................................25 3.3..2. Oszcillátor....................................................................................................28 3.3..3. Időzítők-számlálók.......................................................................................28 3.3..4. Számlálók alkalmazásai ...............................................................................31 3.4. Analóg perifériák.....................................................................................................33 3.5. Soros kommunikáció................................................................................................38 4. A programozható logikai vezérlők (PLC) alkalmazása ....................................................50 4.1. Történeti áttekintés ..................................................................................................50 4.2. Az alkalmazott három PLC típus összehasonlítása ...................................................53 4.2..1. Hardver kialakítás ........................................................................................54 4.2..2. A tápegység .................................................................................................55 4.2..3. A CPU .........................................................................................................55 4.2..4. Diszkrét I/O illesztők ...................................................................................57 4.2..5. Analóg illesztők ...........................................................................................58 4.2..6. A memória ...................................................................................................59 III. R É S Z .............................................................................................................................60 Irányítástechnikai programok tervezése, fejlesztése.................................................................60 5. Programfejlesztés ............................................................................................................61 5.1. A programozás célja ................................................................................................61 5.2. A programfejlesztés lépései .....................................................................................61 5.3. A programfejlesztés eszközei...................................................................................62 5.4. Programszerkezetek.................................................................................................63 5.5. A PLD -k programozása ..........................................................................................72 2.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
6.
Az I8051 mikrokontroller család C - nyelvű programozásának alapjai .............................75 6.1. Változók és deklarálásuk: ........................................................................................75 6.2. Operátorok: .............................................................................................................76 6.3. Utasítások:...............................................................................................................78 6.3..1. Ciklusszervező utasítások: ...........................................................................78 6.3..2. Elágazást vezérlő utasítások .........................................................................80 6.3..3. Ciklust módosító utasítások..........................................................................83 6.4. Az élőfeldolgozó (preprocesszor) utasításai .............................................................84 6.5. Függvények .............................................................................................................86 6.5..1. Függvények definíciója és deklarációja ........................................................86 6.1. Példa: ......................................................................................................................88 6.2. Programfejlesztői környezetek.................................................................................91 6.2..1. A 8051/31 család programfejlesztői környezete............................................92 6.2..2. CX-Programmer...........................................................................................96 6.2..3. Schneider Electric Unity Pro XL ................................................................100 6.2..4. Siemens Step 7...........................................................................................104 6.3. A PLC –k programozási nyelvei ............................................................................108 6.3..1. A PLC típusonkénti programozás...............................................................108 6.3..2. A PLC programozási nyelvek szabványosítása ...........................................109 6.3..3. A létradiagram az LD (Ladder Diagram) nyelv...........................................110 6.3..4. Az FBD (Function Block Diagram) nyelv. .................................................113 6.3..5. Utasítás listás IL (Instruction Logic) nyelv .................................................114 6.3..6. Az SFC (Sequential Function Chart) nyelv.................................................115 IV. R É S Z ...........................................................................................................................126 Kombinációs és sorrendi vezérlések programozása ...............................................................126 7. Vezérlések programozása ..............................................................................................127 7.1. A tervezés lépései ..................................................................................................127 7.2. Kombinációs vezérlések ........................................................................................128 7.2..1. A feladat változóinak meghatározása .........................................................128 7.2..2. A kiinduló adatok, megadása, felvétele.......................................................128 7.2..3. A legegyszerűbb logikai függvény meghatározása ......................................128 7.2..4. A numerikus eljárás bemutatása .................................................................129 7.2..5. Grafikus egyszerűsítés (ellenőrzés!) ...........................................................133 7.3. Kombinációs vezérlési feladatok programozásának tervezése ................................134 A lehetséges programozási algoritmus meghatározása ...................................................134 7.3..1. Bit műveletekkel ........................................................................................134 7.3..2. Táblázatos módszer....................................................................................138 7.4. Sorrendi vezérlési feladatokat megoldó program tervezése ....................................147 7.4..1. Állapotgráf.................................................................................................151 7.4..2. Állapottáblázat ...........................................................................................152 7.4..3. A kimeneti-, és vezérlő táblázat..................................................................153 7.4..4. A tervezés ..................................................................................................154 7.4..5. A tervezés lépései: .....................................................................................155 7.4..6. Általános célú mikrogépek programozása ..................................................160 7.4..7. A sorrendi vezérlések programozása adatbázis alapján ...............................160 7.4..8. PLC programozása.....................................................................................168 7.4..9. A programírás ............................................................................................168 7.5. Példák sorrendi vezérlések programozására ...........................................................169 7.5..1. Forgalomirányító lámpák vezérlése ............................................................169 7.5..2. Folyadéktároló tartályok töltésének, ürítésének vezérlése ...........................179
3.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
B e v e ze té s A jegyzet az Automatika szak, Programozható irányítások és Járműelektronika modul egyik államvizsga tantárgy szükséges ismeretanyagának első részét (Programozható irányítások I.) tartalmazza. Az írott anyag célja az előadási témák összefoglalása, valamint laboratóriumi gyakorlatok eredményes elvégzését segíteni. A tanév során megismertetjük a hallgatókat a korszerű irányítási feladatokra alkalmas berendezések hardvereivel. Párhuzamosan jártasságot kívánunk kialakítani a megismert eszközök működtető programjainak fejlesztésében. A mérések és a példák jellemző irányítási feladatok. Az írásos anyag négy fő részre tagolt. Az I. rész ismétlésszerűen összefoglalja az irányítástechnikai alapfogalmakat. Az első fejezet az irányítástechnika rendszertechnikai alapjait összefoglaló ismétlés. A II. részben foglalkozunk az irányítástechnikában használt hardverek ismertetésével. A második fejezetben – a teljesség igénye nélkül – foglalja össze a programozható hardverek (PAL, GAL) legfontosabb jellemzőit. A harmadik fejezet foglalkozik a 8051 család mai mikrokontrollereiben, ugyanakkor más mikrovezérlőkben is alkalmazott digitális és analóg illesztő
áramköreivel.
Áttekintést
nyújt
az
osztott
intelligenciájú
rendszerekben
nélkülözhetetlen és legjobban elterjedt soros kommunikációs megoldásokról. A negyedik fejezet bővebben foglalkozik az automatizálás mind szélesebb területein alkalmazott PLC –k (Programozható Logikai Vezérlők) működésével, konfigurációival. A II. tanév során az Automatika II tantárgyban megismert Siemens S7 300 család mellett az Omron CJ1M, valamint a Schneider Electric M340 típusú vezérlőivel. A III. rész tartalmazza az irányítási feladatok programozási ismereteit. Az ötödik fejezet szolgál a szisztematikus programfejlesztés módszereivel. Összefoglalást nyújt a programozásokban alkalmazott tipikus programszerkezetekről. A javasolt eljárások alkalmazhatók a mérésekben alkalmazott modellek működtető programjainak fejlesztésénél. A hatodik fejezetben a 8051 mikrokontroller (mikrovezérlő) család C -nyelvű programozásának alapjait foglalja össze. Az anyag alapoz a korábbi tanulmányok során megismert C nyelvi programozási ismeretekre. Az assembly és C -nyelvű példák melletti folyamatábrák alapján a PLC programozás is elvégezhető. A fejezetben foglalkozunk programozásokhoz használt Programfejlesztői Környezetükkel. Mindhárom PLC család tagjainál az IEC1131-3 szabványajánlás szerintő öt programozási nyelv használható.
4.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A IV. rész témaköre a vezérlések programozása. A befejező hetedik fejezet a kombinációs-, és sorrendi vezérlések programfejlesztésének módszereit, eljárásait ismerteti példák alapján. A példák mikrogépekre és PLC -kre mutatják be a programokat.
5.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
I. R É S Z A z i r á ny í tá s te c hni ka re nds ze r te c hni ka i ö s s ze f og l a l á s a .
6.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1.
1. félév
Al a pis mere te k
Bevezető fejezetként összefoglaljuk a technológiai folyamatok automatikus irányításával kapcsolatos alapismereteket, a különböző
irányítási megoldások rendszertechnikai
felépítését. 1. 1.
•
A lap f og a l m a k Irányítás:
Műszaki berendezések (gépek, gyártó sorok, szállító eszközök, vegyi-, hőtechnikai folyamatokat előállító rendszerek stb.) meghatározott feladatok ellátására történő működtetése (indítás, változtatás, leállítás).
•
Irányítási rendszer:
Az irányított-, (folyamat) és az irányító rendszer együtt (1. ábra).
1. ábra
•
Irányító rendszer:
Mindazon szervek, készülékek összessége, amelyek együttműködése révén a folyamat irányítása megvalósul. 1. 2.
A z i rá n yí t ó ren d s ze r és f e l ad at ai
A folyamat jellemzőinek a technológiai előírásoknak megfelelő változtatását végzik az irányító rendszerek. Alapvetően vezérlést, szabályozást és mérés-adatgyűjtést végeznek.
7.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
1.2..1. Vezérlés Műszaki folyamatok, technológiák automatikus irányításának viszonylag egyszerűbb változata a vezérlés. Ennél az irányításnál az irányított folyamat jellemzőit (paramétereit) csak a parancsok, és a feltételek meghatározott logikai kapcsolata, valamint időbeli változása módosítja. A vezérlés elemei közötti kapcsolatot az irányítás hatáslánca (2. ábra) szemlélteti, amely nyitott. Ez azt mutatja, hogy a változtatott jellemző értéke nem módosítja a vezérlés működését.
Rendelkező jel
beavatkozó jel
xb
xr Feltétel-, és parancsadók
Vezérlő egység
Anyag, energia
módosító jel
xm Beavatkozó szerv
Vezérelt szakasz
xz Zavaró jelek
Anyag, energia
2. ábra A vezérlés legfontosabb elemei: Ø Parancs-, és feltét eladók: Azok az elemek -
kezelő szervek (kapcsolók, nyomógombok stb.),
-
jeladók (végállás kapcsolók, szintadók stb.)
amelyek működtetése, vagy állapota indítja el az irányított jellemző módosítását, állapotváltozását. Ezek szolgáltatják a vezérlő bemeneti-, vagy rendelkező jeleit (X r). Ø Vezérlő egység: Ez az egység határozza meg a vezérlés működését. A működés mindig leírható a be-, és kimeneti jelek közötti logikai kapcsolatokkal (logikai függvényekkel).
8.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A vezérlő egység tehát egy logikai áramkör, amelynek bemeneti jelei a rendelkező jelek és kimeneti jelei a beavatkozó jelek (X b). Ø Beavatkozó szervek: A vezérlőben előállított jelek rendszerint alacsonyabb energiájú, vagy más fizikai jelek, mint amelyekkel módosítani lehet az irányított jellemzőt. Pl. ahhoz, hogy egy villamos motor tengelye forogjon (mozgási energia), feszültséget (villamos jel) kell kapcsolni a tekercsire. A beavatkozó szerv feladata a beavatkozó jelek energiájának változtatása, vagy fizikai jelátalakítás után – a beavatkozó jellel arányos - módosító jel
( Xm ) előállítása.
Ø Vezérelt szakasz: Az irányított folyamatnak rendszerint csak egy részét, néhány paraméterét kell a vezérlés segítségével változtatni, módosítani. Ezt a paraméter csoportot nevezik vezérelt szakasz – nak. Például: egy lift vezérlése az irányított folyamat. A kabin emeléséhez, vagy leeresztéséhez a hajtó motort kell működtetni. Itt tehát a motor a vezérelt szakasz. 1.2..2. Szab ályozás Az irányításokban a szabályozás feladata, hogy az irányított folyamat valamelyik, vagy több jellemzőjét az un. alapjel által meghatározott értéken tart sa. A szabályozás elemei közötti kapcsolatot az irányítás hatáslánca (3. ábra) szemlélteti.
3. ábra 9.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ez a hatáslánc visszacsatolt (zárt). A visszacsatolás révén határozható meg a mindenkori szabályozott jellemző és az alapjel eltérése. Ez az eltérés szabja meg, hogy milyen mértékben, és irányban kell beavatkozni a folyamatba. Azon egységek (szervek) összességét, amelyek a vázolt feladatot egy irányításon belül ellátják, nevezik szabályozó – nak. A szabályozó működésének lényege leegyszerűsítve az, hogy a szabályozott jellemző nem kívánt változását megszünteti. Ezt oly módon hajtja végre, hogy a változással ellentétes irányú beavatkozó jelet állít elő, amely hatására a szabályozott jel eredeti értéke helyre áll. Természetesen a valós környezetben nagyon sok olyan zavaró hatás van, amely véletlenszerűen vagy állandó jelleggel változtathatja az irányított szakasz jellemzőit. Ezért csak elméletileg lehet valamely fizikai, műszaki paramétert előre meghatározott pontos értéken tartani. A szabályozás mindig valamilyen hibával, illetve késéssel képes a külső zavaró jel hatását kiküszöbölni. Mind a maradó hiba abszolút nagysága mind, pedig a hiba mértékének változása függ a szabályozó működésének jellegétől, illetve a szabályozott szakasz tulajdonságától. A műszaki gyakorlatban, egy berendezés automatikus irányításánál a feladat mindig úgy fogalmazódik meg, hogy egy működési jellemző zavaró jel hatására bekövetkező változását lehetőleg minél kisebb hibával, minél gyorsabban kell megszüntetni. Természetesen a szabályozási hiba csökkentésének, illetve a szabályozási sebesség növelésének műszaki és gazdaságossági korlátai vannak. A leírtakból következik, hogy egy szabályozás helyes tervezéséhez a szabályozási kör minden elemének tulajdonságait ismerni, és figyelembe kell venni. Egy jól működő szabályozás megtervezése, megvalósítása komoly műszaki feladat, és csak a szabályozáselmélet alapos ismeretének birtokában, illetve mérési, üzembe helyezési gyakorlattal végezhető el. A szabályozó elemei (szervei), és azok feladata: Ø Alapj el kép ző szerv: Az alapjel-adó állítja elő az Xa alapjelet, amely meghatározza, hogy a szabályozónak milyen értékre kell beállítania az Xs szabályozott jelet. Miután a szabályozó az alapjelhez viszonyítottan avatkozik be a folyamatba, ezért biztosítani kell e jel zavarmentességét.
10.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø Érzékelő: Ez az egység állítja elő a szabályozott jellemző mindenkori értékével arányos xe ellenőrző jelet. Az ipari szabályozási körökben alkalmazott érzékelők legtöbbje tulajdonképpen olyan egység, amely az érzékelt fizikai mennyiséggel arányos szabványos villamos jelet állít elő. Ezeket nevezik távadónak. A távadók egyik csoportjánál a kimeneti feszültség, míg másik részüknél a kimeneti áram arányos a mért jellemző értékével. Feszültség kimenet esetében a 0 – 10 V, -10 V – 10 V, míg áramkimenetnél a 4 - 20 mA a leggyakrabban használt szabványos érték. Ø K ülönbségkép ző szerv: A szabályozás végrehajtásához meg kell állapítani azt, hogy milyen mértékben tér el a szabályozni kívánt jellemző a névleges értéktől. A különbségképző szerv az alapjel (xa ), és az ellenőrző jel (xe ) előjeles kü lönb ségét állítja elő az xh hib ajel -et . Ø K ompen záló szerv: A szabályozás minőségét, jellegét meghatározó egység a kompenzáló szerv. A megfelelő jelmódosításhoz nem csupán a pillanatnyi hibát, hanem a szabályozott szakasz fizikai tulajdonságait is figyelembe kell venni a módosító jelbe. Ezek együtt határozzák meg, hogy milyen gyors, pontos, illetve stabilis lesz az irányított rendszer. A kompenzáló szerv által előállított xb beavatkozó jel változása fogja meghatározni a módosítás szükséges jellegét, és mértékét. Ø Beavatkozó szerv: A szabályozó jelei rendszerint alacsonyabb energiájú, vagy más fizikai jelek mint amelyekkel módosítani lehet az irányított jellemzőt. Pl. ahhoz, hogy egy villamos motor tengelyének forgása – a szabályozott jellemző - ( mozgási energia ) változzon, a tekercsein folyó áramot ( villamos jel ) kell módosítani. A beavatkozó szerv feladata a beavatkozó jelek energiájának változtatása, vagy fizikai jelátalakítás után – a beavatkozó jellel arányos - módosító jel ( xm ) előállítása.
11.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø Szab ályozott szakasz: Az irányított folyamatnak rendszerint csak egy részét, néhány paraméterét kell a szabályozó révén változtatni, módosítani. Ezt a paraméter csoportot nevezik szabályozott szakasz – nak. Például egy daru gémjének állandó sebességű mozgatása az irányított folyamat. A teher emeléséhez, vagy leeresztéséhez a hajtó motor fordulatszámát kell – a terhelés nagyságától függetlenül – állandó értéken tartani. Itt tehát a motor a szabályozott szakasz. 1.2..3. Adatok gyűjtése – tárolása. Mérésadatgyűjtésnek azt az automatikus méréssorozatot nevezzük, amely az irányított folyamat kiválasztott jellemzőinek értékét - meghatározott idő-pontokban (mintavételezés időpont) - leméri és azokat egy adatbázisba, írja.
4. ábra A mintavételezés általában minden mért jellemzőnél azonos. Akkor, ha az egyes jellemzők változási sebessége nagyságrendekkel különbözik a mérési időpontok gyakoriságát is célszerű eltérőnek választani. A mérésadatgyűjtő elvi felépítését mutatja a 4. ábra. Ø Érzékelők-távadók: Ezek állítják elő a mért jellemzők mindenkori értékével arányos jeleket. A mért értékek egy - egy része lehet analóg, vagy digitális.
12.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø Méréspont váltó: Ez az egység választja ki, hogy melyik a mért érték kerül tárolásra, további feldolgozásra. Ø A/D átalakító: Az analóg értékeket alakítja a tároláshoz szükséges digitális formájúvá. Ø Illesztők: Ezek az egységek illesztik a további feldolgozáshoz, kijelzéshez a mért adatokat. Ø Tárolók: Az automatikus adatgyűjtés eredményét, az adatbázist tárolják. A tárolási feladattól függően használnak különböző adathordozókat. Az osztott intelligenciájú irányítási rendszerekben a mérésadatgyűjtés szolgáltatja az alapadatokat - az irányítási stratégia meghatározásához, - az irányítás végrehajtásához, - a naplózáshoz, - az ellenőrzéshez, - a hibadiagnózishoz, stb. 1. 3.
I rán yí t á si re n d s ze re k f e l ép í t é s e
A fejezetben tömören tárgyaljuk az irányítási rendszerek felépítésének lehetséges megoldásait. A csoportosítás egyik szempontja, hogy a rendszer elemei milyen módon kapcsolódnak egymáshoz. Természetesen a tárgyalt megoldások kevert változatai is megtalálhatók a műszaki gyakorlatban. A leírtak elsősorban a rendszer-szemlélet alakítását szolgálják. 1.3..1. Egyedi i rán yítások A gyártósorba szervezett gépek mindegyikét önálló egység (5. ábra) irányítja. Az egyes gépek, gépcsoportok között nincs adatkapcsolat. Ugyanakkor laza kommunikációs kapcsolat segítheti a gyártósor működésének összehangolását.
13.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
5. ábra 1.3..2. Csoport os i rán yítások A gyártósorba szervezett gépek irányításának fejlettebb változata. A gépcsoport egyes egyedi irányító egységek egy központi csoportirányító - val tartanak kapcsolatot (6. ábra). A csoportirányító felügyeli az üzemelést, és szükség esetén tartalék egységként is működhet.
6. ábra 1.3..3. Stru ktu rált i rán yítások A strukturáltság az önálló egységekből épített rendszert jelöli. Ø Összetett irányító rendszerek Az automatizálás térbeli és funkcionális komplexitásának növekedése csak rendszerszemléletű tervezéssel és kialakítással elégíthető ki. Egy összetett irányítási rendszer hierarchikus szintekre (7. ábra) bontható. A folyamatirányító számítógépekkel valósították meg az ilyen rendszereket. 1. szint: Az irányítandó folyamat és a technológiához közvetlenül csatlakozó mérő, jelátvivő és beavatkozó szervek. (Process).
14.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
2. szint: A jelek kondicionálását, erősítését és átalakítását (pl. A/D és D/A) végző szervek, az energiaellátó egységek, és a különleges biztonsági elemek. 3. szint: A hagyományos irányítás funkcionális alrendszerei (kézi irányítás, vezérlés, szabályozás, felügyelő - jelző - naplózó egységek). 4. szint: Rendszeroptimalizálás, központi beavatkozások és jelzőrendszer kezelése (Számítógép). Ø Osztott intelligenciájú irányító rendszerek A mikroprocesszoros kis-, és mikroszámítógépek megjelenése és gyors fejlődése eredménye a feladatok megosztása. A hierarchikus szint felépítés feladatai módosulnak. 1. szint: Változatlanul a folyamat és tartozékai (Process). 2. szint: A folyamat egyes részeinél önálló intelligens egységek (mikrogépek) látják el a helyi irányítást, mérésadatgyűjtést, naplózást, megjelenítést (gépközeli szint). 3. szint: Biztosítja a helyi állomások közötti kommunikációs kapcsolatot (adatátviteli alrendszer), és csoportszintű irányítást végez (koordinációs szint). 4. szint: A központi beavatkozó rendszer a felügyelethez, az optimalizációhoz és az operátor állomások kiszolgálásához (felügyeleti szint).
7. ábra
15.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
1.3..4. Az i rányított rend szer feloszt ási módozatai Az irányított rendszer egységei különböző formában oszthatók el. Az egyes változatok az alábbiak lehetnek. Ø Hely szerinti csoportosítás Az alsó szinten elhelyezkedő készülékek hatásköre csak egy folyamat-egységre vonatkozik, de ott minden feladatot ellátnak (8. ábra).
8. ábra Ø Funkció szerinti csoportosítás). az alsó szinten elhelyezkedő készülékek hatásköre a folyamat egészére kiterjed, de a három fő funkció (szabályozás, vezérlés, felügyelet ) közül csak az egyiket látják el (9. ábra).
9. ábra
16.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø K omplex (összetett) csoportosítás. A térbeli és a funkcionális elosztás általában összetetten (10. ábra) valósul meg.
10. ábra 1.3..5. Irányítások megvalósítása Fajtái: Ø Folytonos rendszerek amelyeknél a jelfeldolgozás idejét csak az alkalmazott áramkörök késleltetése határozza meg. A hagyományos elektronikus (digitális) és relés vezérlések, valamint az analóg szabályozások. Ø Mintavételes rendszerek amelyeknél a jelek frissítése, feldolgozása diszkrét időközönként történik. A mikroprocesszoros irányítások (PLC -k, DDC -k stb.) mindegyike ilyen működésű.
17.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
II. R É S Z A z i r á n y í t á s t e c h ni k á b a n a l k a l m a z o t t p ro g r a m o z h a t ó ha r d v e r készülékek
18.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
2.
1. félév
Prog ra mo zha tó l ogi ka i ár a mkör ö k (PL D)
Viszonylag új technológiának számítanak, amelyből számtalan típus jelent meg rövid idő alatt. Már a rendelkezésre álló architektúrák (architektúra alatt értve az eszközök azon tulajdonságait, amelyek a logikai felépítést - ki-és bemenetek száma, programozható tömbök mérete stb.) száma is százas nagyságrendű, ha pedig a különféle technológiai megoldásokat (áramkör-technikai megoldások, sebesség, újraírhatóság, tokozás stb.) is figyelembe véve szeretnénk csoportosítani, akkor a választék már több ezres. Megjegyezendő, hogy nem csak PLD -k segítségével készíthetünk logikai hálózatokat, hanem memória áramkörökkel (PROM, EPROM stb.) is. Ilyenkor a memóriában eltároljuk a megvalósítandó hálózat igazságtáblázatát úgy, hogy az egyes bemeneti kombinációknak megfelelő címeken hivatkozva a memória kimenetén a logikai hálózat adott bemenetre adott válaszát kapjuk. A memória áramkörök használatának több hátránya van: általában nem túl hely- és eszköztakarékos megoldás, különösen sokváltozós függvények esetén, valamint sebességben is elmaradnak a PLD -ktől. A memóriáktól eltérően a PLD -k nem az igazságtáblázatot, hanem magát a logikai egyenletet tárolják programozható mátrixaikban, mivel megfelelően nagy ÉS illetve VAGY mátrixokkal (léteznek PLD -k, amelyek ÉSNEM / ÉSNEM esetleg VAGYNEM / VAGYNEM mátrixokat használnak) bármely logikai függvény megvalósítható. 2 . 1 . Eg ys ze rű p rog ra m o zh at ó l og i ka i e s zk ö zö k (SPLD - Simple Programmable Logic Device) Ezek az eszközök általában kétszintű logikai hálózatot tartalmaznak, kevesebb, mint 1000 kapuval. Az SPLD -k (és a programozható logikák) első képviselője a PLA (Programmable Logical Array - Programozható Logikai Tömb) volt, sematikus rajza a 11. ábrán látható. Az ÉS illetve a VAGY kapuk egy-egy mátrixon keresztül kapcsolhatóak össze. Léteznek PLA -k, melyek a kimeneteknél beépített flip-flop - kat tartalmaznak, ezáltal felhasználhatóak sorrendi hálózatok megvalósításához is. A PLA eszközök fő hátránya, hogy a két programozható mátrix beépítése egyrészt megdrágítja a gyártást, másrészt az eszköz sebességét is csökkenti, hiszen a jeleknek két mátrixon kell végighaladnia.
19.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
11. ábra Ezen problémák kiküszöbölésére születtek meg a PAL -ok (Programmable Array Logic Programozható Tömblogikák), melyekben csupán az ÉS mátrix programozható, a VAGY mátrix nem, emiatt előállításuk olcsóbb, programozásukhoz egyszerűbb hardver szükséges, és sebességük nagyobb. Ezen tulajdonságaiknak köszönhetően, bár kevésbé rugalmasan használhatók, jóval elterjedtebbé váltak a PLA logikáknál. A PAL -ok sematikus rajza az 12. ábrán látható.
12. ábra
20.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
2 . 2 . K omp l e x p rog ra mo zh at ó l og i kai e s zk ö zö k (CPLD - Complex Programmable Logic Device) Ezek az eszközök gyakorlatilag több, egy tokba integrált, SPLD -nek felelnek meg. Ez a fejlesztési irány meglehetősen új, és számos különféle, nehezen csoportosítható architektúra létezik. A Lattice által gyártott ispLSI eszközöknél például az SPLD -nek megfelelő elemeket általános logikai tömbnek (GLB - Generic Logic Block) nevezik, melyek mega-tömböknek nevezett csoportokat alkotnak. Ezen mega-tömbök működését a Globális Vezérlő Áramkör (GRP - Global Routing Pool) hangolja össze. 2 . 3 . F e lh a s zn á ló á lt a l p rog ra m o zh at ó kap u mát ri x (FPGA - Field Programmable Gate Array) Az FPGA -k az eddig említett eszközöknél is rugalmasabban programozhatóak. Itt ugyanis (pl. a Xilinx cég FPGA -inál) úgynevezett Programozható Logikai Blokkok (CLB Configurable Logic Block) alkotnak mátrixot, amelyen belül teljesen szabadon köthetőek össze egymással programozható kapcsolók segítségével. A CLB -k elrendezése típustól függően többféle is lehet, a hierarchikus FPGA -knál például az előbb említett megatömbök -höz hasonlóan SCLB -kbe (Super Configurable Logic Block) csoportosítják a logikai tömböket. 2 . 4 . G A L e s zk ö zö k A GAL eszközöket (GAL - Generic Array Logic; Általános Tömb Logika) a Lattice Semiconductor fejlesztette ki 1985-ben. Felépítésben a PAL -ok továbbfejlesztésének tekinthetőek, ugyanis a kimeneteken programozható kimeneti áramköröket, más néven kimeneti logikai makrocellákat (OLMC) helyeztek el, (13. ábra) amelynek a VAGY kapuk is részei.
Ezek segítségével egyrészt emulálhatóak az egyes PAL típusok különféle
kimeneti regiszterei, másrészt az eszköz jóval sokoldalúbban programozhatóvá válik. Ennek eredményeképpen számos PAL típus kiválthatóvá válik az azonos lábszámú GAL IC-k felhasználásával (a gyártó szerint 5 standard GAL típus; a 16V8, 20V8, 22V10, 20RA10 és a 20XV10 képes helyettesíteni a kereskedelemben kapható bipoláris PAL-ok 98%-át), a hozzájuk készült JEDEC biztosíték térkép ugyanis átalakítható a GAL eszköz formátumára. Bizonyos programozó hardverek automatikusan képesek arra, hogy a meglevő PAL JEDEC fájlból közvetlenül felprogramozzák az adott eszközzel felülről kompatíbilis GAL -t.
21.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
13. ábra Egy makrocella általános felépítése látható a 14. ábrán.
14. ábra A GAL eszközöket főleg TTL logikai áramkörök helyett használják, amelyekből akár 5-10 darabot is kiválthat egyszerre. Tipikus felhasználási területei lehetnek például a busz interfész áramkörök, memóriavezérlők, számlálók stb.
22.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A továbbiakban ugyan említem az egyes típusok makrocelláinak kialakítását, üzemmódjait, vezérlő biteket, ezek azonban csak az eszközök működési elvének megismeréséhez szükségesek; ha az isp Design EXPERT fejlesztőprogrammal dolgozunk, akkor ezeknek a beállítását a program önállóan elvégzi. Megjegyezendő, hogy bár a GAL eszközöket a Lattice fejlesztette ki, néhány más cég, például a National Semiconductor vagy az Intel is készít GAL -okat illetve azokkal kompatíbilis logikákat. A továbbiakban kizárólag a Lattice típusairól esik szó.
3.
M i kroprocess zoros ir á ny ító bere nde zé se k
Az ipari folyamatok számítógéppel történő megvalósítása, már az 1960-as években kezdődött. Ekkor fejlesztették, ki az un. folyamatirányító számítógépeket. A nagy számítógépek nem tudták megoldani az automatizálás korszerű követelményeit. A környezeti hatások kiküszöbölése, az irányítás sebessége nem valósítható meg ilyen módon. Az évtized végén jelent meg az ipari környezetben jól alkalmazható irányító berendezés a PLC (Programabble Logic Controller, azaz a programozható logikai vezérlő). Az első változatot a MODICON cég fejlesztette ki (Modicon 084). Rövid időn belül számos cég készített PLC -t. A mikroprocesszor megjelenése gyorsította fel az ipari számítógépek, PLC –k, DDC –k (mikrogépek) fejlesztését, és alkalmazását. A mikrogépek segítségével lehetett megvalósítani – a korábban már elméletileg tárgyalt, és javasolt – osztott intelligenciájú irányítási rendszereket. 3 . 1 . Ál t al án o s cél ú m i kr og ép ek é s a m i k ro k on t ro l l e r Az általános célú mikrogépek csoportját alkotják azok a mikroprocesszoros digitális számítógépek, amelyek mind számítástechnikai, mind irányítási, vagy egyéb feladatok – szoftvertől függő – megvalósítására alkalmasak. Az integrálási technológia gyors fejlődése lehetővé tette, hogy egyetlen lapkán (chip) egyre több funkcionális elemet lehessen megvalósítani. A mikroprocesszorok megjelenését követően
csökkentett
konfigurációjú
mikrogépet
–
más
néven
mikrokontroller
(mikrovezérlő) - is gyártottak. 1977 -79 között mind az Intel, mind a Motorola elkészíti a saját mikrokontroller családját. Az Intel által kifejlesztett 8031/51 mikrokontroller családdal kompatibilis mikro-
23.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
kontrollereket mindmáig sok gyártó készít. Az alapokat a Digitális technika tantárgyban tanulták. Az 1990-es évtizedben jelentek meg a piacon a Micro Chip mikrovezérlő családja a PIC. A gyártmányaiban alkalmazták először a Flash memóriát, amely akkor lépéselőnyt jelentett a többi kontrollerrel szemben. A jegyzetben elsődlegesen a 8031/51 család legújabb fejlesztési eredményekről adunk áttekintést. A következő fejezetben összehasonlítjuk a két kontroller család jellemzőit A továbbiakban összefoglaljuk a chipbe integrált digitális és analóg perifériák működését, és az alkalmazási lehetőségeket. Ugyanakkor tárgyaljuk a perifériák programozásának módozatait is. 3 . 2 . M CS 5 1 é s a P I C m i k ro kon t r ol l e re k f e l é pí t és én ek ö ss z eh aso n l í t á sa A processzorok felépítése alapvetően különbözik. A MCS51-es processzor mag Neumann felépítésű, ami azt jelenti, hogy mind az adat- mind a program memória közös buszra csatlakozik, és ezen keresztül érhetők el. A PIC különálló program- és adatmemóriával rendelkezik. (Harvard felépítés.) 1. Mindkét típus adatmemóriája 8 bites. Az MCS51-es programmemóriája szintén 8 bites, míg a PIC- é 12-14-16 bit széles, a családtól függően. 2. Az utasítások hossza az MCS51-es rendszernél egy és három bájt között változik. Az első bájt a műveleti kód, a második bájt az operandus, a harmadik bájt a 16 bites cím operandus második bájtja. A PIC -nél minden utasítás egyszavas, kivéve a 18-as családot, ahol megjelenik négy kétszavas utasítás. Címzési módok: Ø Közvetlen (direkt) címzés: mindkét család támogatja ezt, ahol egy 8 bites cím jelöli ki az operandus - t. Az MCS51-es rendszerben csak a RAM alsó 128 bájtja és az SFR regiszterek címezhetők ilyen módon, míg a PIC -eknél a teljes adatmemória elérhető ilyen módon. Ø Közvetett (indirekt) címzés: mindkét család támogatja ezt a módot, ahol egy regiszter tartalma határozza meg annak a regiszternek a címét, amivel a műveletet el kell végezni. Az SFR memóriaterület az MCS51-nél így nem érhető el, de különben mind a külső és mind a belső memóriaterület elérhető. Három mutató segítségével történik ez a fajta címzés: R0, R1, DPTR.A PIC eszközök mutatóként egy vagy több (3) File Select
24.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Regisztert használják erre a célra. (A PIC18-as családnál mutató és elemművelet együttes végrehajtása is lehetséges. Ø Regiszteres utasítások: csak az MCS51-es rendszerben: R0-R7 regiszterek használata, rövidebb utasítások a lokalitás elvének felhasználásával. Ø Regiszter-specifikus utasítások: Az MCS51-es rendszerben számos utasítást csak az akkumulátorban lévő adaton hajthatunk végre (pl. CPL A). A PIC -eknél az utasítások legtöbbje bármelyik regisztert használhatja. Ø Állandó mint operandus (immadiate): mindkettő támogatja Ø Indexelt címzés: MCS51: csak a program memória kezelhető így. A PIC- eknél a program memóriát címző SFR regiszterekkel történik (PCL, PCLATH). A PIC18-as családnál a TBLRD utasítással a programmemória olvasható, illetve a TBLWR utasítással írható. Bitcímzés: az MCS51-es rendszerben maximum 256 a memóriában meghatározott bit címezhető (128 felhasználói, 128 SFR regiszterekben). A PIC -eknél minden bit címezhető. A klasszikus MCS51-es rendszerben csak 384 regiszter lehetett a belső RAM - területen, de ezt a továbbfejlesztésekben megnövelték. Jelenleg a PIC18-as családnál a legnagyobb adatmemória 4 Kbájt lehet. 3 . 3 . Di g i t á l i s p e ri f é ri á k A fejezetben megismerkedünk - családtól független tárgyalásban -
a kontrollerek- ben
megtalálható digitális funkciókat, megvalósító perifériákat. Első nagy csoportjuk a „Port”ok, amelyek a microchip és a külvilág be-, és kimeneti jeleit illesztik. A második nagy csoport a számlálók és ezekhez csatlakozó funkciók (capture, compare, PWM konverzió stb.) A működés megismerése mellett az alkalmazási lehetőségekről is foglalkozunk. 3.3..1. Portok A mikrokontrollerek és a külvilág között a Port-okon keresztül történik az adatforgalom. A fejlesztések során különböző illesztő áramköröket alakítottak ki. Legfontosabb közös jellemző, hogy bármelyik port ki-, vagy bementként is használható legyen. A 8031/51 mikrokontroller család első változataiban a 15. ábra szerinti megoldást találjuk. Minden port-bithez egy D tároló tartozik. A Port írásakor a tároló Cp beíró jele aktiválódik. Olvasáskor viszont a lábhoz csatlakozó tri-state áramkör(ök) nyitását vezérli az utasítás. Ennek eredményeként a belső adatbuszra a külső jel kerül. Betartandó feltétel, hogy a 25.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
bemenetként használt bit tárolójában 1 érték kell legyen. Ugyanez a feltétel a port másodlagos funkciójának használatakor is. „Read modify” olvasás
Másodlagos kimenet Ucc
Belső adat busz
P3.x D
Port írás
T &
Cp
Port olvasás Másodlagos bemenet
15. ábra A 16. ábra a közelmúltban fejlesztett kontroller illesztő áramkörét mutatja. A külső terhelés jellegétől függően mód van Open collector, Push-pull és Weak-pullup (lágy vagy csökkentett impedanciájú) kimenet beállítására. VDD
WeakPullup ≥1
Push-Pull Portkimenet Eng.
VDD
Port bit
&
Portkimenet ≥1 Analóg választ
DGND
Analóg bemenet Portbemenet
16. ábra A gyártástechnológia gyors fejlődése egyre növekvő elemsűrűségű chip- ek készítését tette lehetővé. A nagy elemsűrűség lehetősége, hogy sok funkcionális egység kerül egyetlen tokba. Egy-egy alkalmazásnál nem szükséges mindegyik egységet használni. Így felesleges 26.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
minden egységhez fix lábkiosztást rendelni. A nagyon költséges kivezetések (lábak) csökkentésére mutat példát a 17. ábra szerinti megoldás. A Digital Crossbar egy kapcsoló mátrix. A kapcsolatok programozásával oldható meg, hogy lehetőleg optimálisan használhassuk a ki-, bemeneti port-biteket.
17. ábra A 18. ábra a PIC család port kialakítását mutatja. A három tároló közül a „Data Latch” tárolja kiviendő bitet. A „TRIG Latch” vezérli az írás, vagy olvasás pillanatát. A beolvasott érték pedig a legalsó tárolóba kerül. A port vezérlésekor külön kell megadni az irányt
18. ábra
27.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
3.3..2. Oszci llátor A korszerű kontrollerek működésének szinkronozása belső, vagy külső oszcillátorral történhet. A 19. ábrán bemutatott áramkörben a rendszer az órajelet (SYSCLK) vagy a tokba
19. ábra épített oszcillátorból, vagy a „bemenet illesztő”-vel csatolt külső különböző rezgőkörtől kapja. A belső oszcillátor frekvenciája és ki-, bekapcsolása OSC-ICN jelű SFR regiszter bitjeivel vezérelhető. A külső oszcillátor lehet rezonátor, kristály, kondenzátor, vagy RC hálózat, amelyet az XTAL1/XTAL2 pontokhoz kell csatlakoztatni. A külső CMOS óragenerátor alkalmazásakor az XTAL1 láb a bemenet. A reset jel után a belső oszcillátor adja rendszer órajelét. Az RST láb alacsony szintjénél mindkét oszcillátor tiltott. Külső jelgenerátorra vezérléssel lehet átváltani. 3.3..3. Időzítők- számlálók A digitálisan megoldható feladatok legnagyobb részében alkalmazható az időzítés, vagy események számlálása. A mikrokontrollerek mindegyikében megtalálhatók a programozható időzítő/számláló egységek. Az utóbbi 10 – 15 évben fejlesztett mikrokontrollerek többségében van olyan többfunkciós vezérlő tömb, amelyben egy számlálóhoz programmal hozzárendelhető, a következőkben ismertetett üzemmódok közül több, egyidejűleg működő funkció. Az ilyen egységet nevezzük Programozható Számláló Tömb -nek (PCA). A következőkben tömören áttekintjük a különböző megoldásokat.
28.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø Általános felépítés A 20.ábrán tekinthetjük meg a számláló egységek közös elemeit. A számlálás aktuális értékét, az SFR memória egy-egy szavában (CT_L – CT_H) tárolja. A számlálandó jelet több forrásból egy multiplexer (MX) választja ki. Programból vezérelhető a számlálás engedélyezése és a jelforrás. A vázolt felépítés (az üzemmód) esetenként ugyancsak programból változtatható. A számláló vezérlése és státuszai (engedélyezés, túlcsordulás (Cy), megszakítás kérés, jeforrás választás stb.) a megfelelő vezérlő-, és státusz regisztereken keresztül programozhatók.
20. ábra A 8051 mikrokontroller család minden tagjában egyforma a T0 és a T1 jelű programozható időzítőí6számláló. A T2 és további számozású egységek típusonként eltérőek. Rendszerint ezekhez kapcsolódnak kiegészítő regiszterek és különböző logikai egységek, pl. komparátorok. Ø Beírás-ismétlés (Download) A leggyakoribb felhasználás egyike a frekvenciaosztás. A bináris számlálás csak a 2 egész számú hatványának megfelelő értékkel oszthat. A modulus változtatásának egyik megoldása, amikor a kezdő értéket programozással változtatjuk, és a számláló túlcsordulásakor erről az értékről kezdődik újra a számlálás. Amennyiben állandó frekvenciájú jel alkalmazásával állíthatunk elő különböző frekvenciájú jelgenerátort. A 21. ábra szerinti felépítésben az MT_L és MT_H regiszterekbe írjuk be a kívánt kezdő számot, amely a túlcsorduláskor - Cy =1 nél – átíródik a számláló regiszterbe.
29.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév Jelforrás kiválasztás
Számlálandó jelforrások
Engedélyezés
MX
Számláló regiszter(ek) CT_H
CT_L
&
Modulus regiszter(ek)
Túlcsordulás Cy
MT_H
MT_L
Kezdő érték
21. ábra Ø Külső vezérlésű lekérdezés (Capture) A megoldandó feladatok között gyakran kell mérni az események között eltelt időt, vagy egy harmadik esemény bekövetkeztének számát. Frekvencia, kitöltési tényező meghatározása is előfordul a technológiai folyamatok irányításában. A Capture (lekérdezés) funkció alkalmazásával. Jelforrás kiválasztás Számlálandó jelforrások
MX
Számláló regiszter(ek) CT_L
&
Engedélyezés
CT_H
Túlcsordulás
&
Mintavételező jelek
Cy
MX
CP_L Jel kiválasztás
CP_H
Mintavételező (capture) regiszter(ek)
22. ábra oldható meg a feladat. A 22. ábra szemlélteti az áramkör egy lehetséges változatát. Az alapszámláló (CT_L, CT_H) regisztereinek tartalma a tri-state csatolókapukon átírható a mintavételező regiszterekbe (CP_L, CP_H). Programmal választható ki a számlálás, a mintavételező jel forrása, az élvezérlés iránya, valamint engedélyezhető a működés. Ø Összehasonlítás (Compare) Változtatható frekvenciájú, kitöltési tényezőjű és fázisú, valamint PWM (impulzus-szélesség modulált) négyszögjelek állíthatók elő az összehasonlító funkció alkalmazásával. A 23.
30.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
ábrán, látható blokkvázlaton a számláló regiszterek (CT_L, CT_H) tartalmát egy komparátor hasonlítja össze a CR_L, CR_H regiszterek tartalmával. Jelforrás kiválasztás Számlálandó jelforrások
MX
Számláló regiszter(ek) CT_H
CT_L
&
Túlcsordulás Cy
Komparátor CR_L
Összehasonlító (compare) regiszter(ek)
CR_H
Jf
Megszakítás kérő bit
23. ábra Amikor a két számtartalom egyforma, egy jelző flag (Jf) 1-be íródik. A flag lekérdezhető, vagy megszakítást generálhat. A compare regiszterek tartalma programból írható. Az egyezőség jelzésekor programból változtathatók a kimenetként használt port bitek 1-be, vagy 0-ba. A jelsorozatok előállításához az aktuális megszakítás rutinban kell beírni a compare regiszterekbe a következő jelváltáshoz szükséges értéket. Gyártanak olyan kontrollereket is, amelyeknél az összehasonlító funkció közvetlen vezérli a hozzá rendelt port biteket. Ilyen a PCB80C552 típusú mikrovezérlő. (A mérési utasításokban részletesen olvasható a működés és használata.) 3.3..4. Számlálók alkalmazásai Az alfejezetben a számlálók leggyakoribb alkalmazását foglaljuk össze. Ø Beépített ellenőrző áramkör a Watch dog A kontrollerrel vezérelt irányítások zavartalan működését biztosítani kell a külső-, illetve belső zajok hatásának jelzésével, vagy kiküszöbölésével. A zaj hatására létrejött programtévesztés, vagy zárt programhurok megszüntetésének egyik megoldása az un. Watch-dog számláló alkalmazása. Ilyen beépített egység már a legtöbb mikrovezérlőben van. A 24. ábrán a 80C552 típusú mikrokontroller Watch dog áramkör blokkvázlata látható. Az rendszer órajelet (foszc) a nagy kapacitású időzítő (az ábrán az előosztó + timer) számlálja. Ha a számláló túlcsordul, akkor a csatlakozó tranzisztor a kontrollert reset-eli. Ez a program újbóli indulását vezérli. A program inicializáló részében program döntheti el, hogy hibából történt-e az új indítás, vagy nem. Hiba esetén jelzést lehet generálni.
31.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
24. ábra Az irányító program, amely mindig ciklikus normál működésekor egy programponthoz adott időtartamon belül mindig visszatér. Ezen a helyen mindig újra kell írni az időzítő regisztereket, és ezzel elkerülhető a túlcsordulás, az automatikus reset. A működést külső lábról lehet engedélyezni. A regiszterek újratöltését a PCON SFR regiszter vezérli. Ø Impulzus szélesség moduláció (PWM) A PWM áramkör tulajdonképpen Digitál / Analóg átalakító. A 16 bites változat elvi felépítését szemlélteti a 25. ábra. Az ábra szerinti CT_L – CT_H jelű regiszterpár – az engedélyezés ideje alatt – binárisan számlálja a Cs impulzussorozatot. Minden túlcsorduláskor előkészíti a belső órajel-lel billentett RS tároló törlését. A PWM_L – PWM_H modulációs regiszterpárba, a programból írt m modulációs értéket a 16 bites komparátor összehasonlítja a számláló aktu-ális tartalmával, és amikor a két érték megegyezik, akkor az RS tárolót belső órajel 1 – be billen. A kimeneti Port-biten
216 T= periódusidejű négyszögjel-sorozat jelenik meg. A jelsorozat kitöltési f Cs tényezője: k =
m 16 ×100 % lesz, ahol a moduláció érték 0 £ m £ 2 közötti. 16 2 számláló regiszterpár
Cs Számlálandó jel
En
&
CT_H
CT_L
R Cp S
engedélyezés 16 bites komparátor egyezés A modulációt tároló regiszterek
PWM_H
PWM_L
m modulációs érték
25. ábra
32.oldal
Port bit
túlcsordulás T
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø Programozható frekvenciaosztó, időzítő A Download üzemmód (20. ábra) alkalmazásával hozható létre a programozható frekvenciaosztás, vagy az időzítés. Mindkét alkalmazási típusnál a fő szempont, hogy hardver sebességgel működjön a funkció döntő része, minimális legyen a szükséges szoftver-idő. Az alkalmazások többségénél a megszakítás (interrupt) alkalmazása is csökkenti a szoftverigényt. Programból csupán a modulus és a számlálandó jelforrás beállítását, esetenként az indítást, valamint a megszakítási rutint kell végrehajtani. A számlálást, valamint az újra-írást a hardver végzi. A 26. ábrán 8 bites programozható modulusú számláló-időzítő logikai vázlata látható. V fq Cs In
számláló regiszter
Mx &
CT_L
Cy
megszakítás
indítás
modulus tároló regiszter
CT_H
m
26. ábra Az üzemmód kiválasztása és az alapadatok, a modulus (m) beírása, a megszakítás engedélyezése és a jelforrás kiválasztása a V jellel az alkalmazói program inicializáló részében történhet. A számlálás indítását-leállítását az In jel végzi, amely a futó program közben is változtatható. Az időzítés befejezése utáni szükséges műveletek a megszakítás rutinban kell megadni. Programozott késleltetésnek, vagy beállítható frekvenciájú jelgenerátornak nevezzük, ha az állandó értékű belső órajelet (fq) választjuk ki. A Cs külső jelforrás jelének kiválasztásakor eseményszámlálásról (frekvenciaosztásról) beszélünk. A leírtak szerint működnek a 8051-es mikrokontroller család T0, T1 számlálók a 2. üzemmódban. 3 . 4 . An a l ó g pe r i f é ri ák A környezet jeleinek többségét mérő eszközök analóg jeleket szolgáltatnak. Ezek nagy hányada feszültség, vagy áram. Az irányítás, e jeleket használja a működés, vagy a beavatkozás hatásának ellenőrzésére. Az ipari szabályozások jelentős hányadánál is az ellenőrző jel analóg.
33.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A korábbiakban egyedi eszközök, majd integrált áramkörök szolgáltatták a mért analóg jelekkel arányos digitális információt. Egyre több mikrokontrollerbe integrálnak különböző sebességű, felbontású Analóg - Digitális ( A/D) illetve Digitális - Analóg ( D/A ) átalakítókat, illetve analóg komparátorokat. A fejezetben röviden áttekintjük a megoldások néhány változatát. Ø Analóg-Digitál (A/D) átalakítók A mikrokontrollerekbe többcsatornás, nagyságrendi közelítés (successive-approximation) elven működő A/D átalakítókat integrálnak. A 27. ábrán egy korszerű – 12 bites - A/D átalakító felépítését mutatjuk be. A 8 külső analóg jel (AIN0 – AIN7), valamint a chip hőmérsékletét mérő érzékelő (TEMP SENZOR) jele kapcsolódik a multiplexerre (ANMUX). Az üzemmód, és a csatornaválasztó jelek megfelelő kombinációja vagy egy, vagy a külső jelek közül egy összetartozó pár-t választ ki. A kiválasztott jel(ek) a programozható erősítő (PGA) bemeneteire jutnak. Az áramkör ezzel a kialakítással egyetlen analóg érték, vagy két jel értékeinek különbségét digitalizálja,
27. ábra Az A/D átalakítás az alábbi módokon indítható. 1. Szoftverből a vezérlő regiszter egy bitjének (AD0BUSY) 1-be írásával, 2. Folytonos mérési sorozat vezérelhető a Timer2, vagy a Timer3 belső időzítő/számláló túlcsordulásával. 3. A CNVSTR lábra adott külső jellel.
34.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az átalakítás végét az AD0BUSY=0 értéke jelzi. E bit értékének figyelése történhet lekérdezéssel (polling), megszakítás elfogadásának engedélyezésével. A konverzió befejezése után olvashatók ki a digitális eredmény felső-, és alsó bájtjai. A legújabb fejlesztésű A/D átalakítóknál lehetőség van – üzemmód beállítással – az eredmény jobbra, vagy balra igazítására is. Van olyan megoldás is, ahol az értéktartományon belül un. ablak jelölhető ki, amelyen belül, vagy csak azon kívül történik megszakításkérés. Ez a megoldás lehetőséget nyújt egy adott értéktartományba eső jel figyelésére, feldolgozására. Ø Digitál-Analóg átalakítók Az automatizálási feladatok között egyre gyakoribb feladat a különböző időfüggvény szerint változó analóg jelek előállítása. Ilyen feladat, pl. a precíziós mozgásvezérlés, vagy jelkompenzálás stb. A 28. ábrán szemléltetett, nagy sebességű Digitál-Analóg (DAC) jelátalakítóval viszonylag egyszerűen hozhatunk létre különböző lefolyású analóg feszültséget.
28. ábra A jelelőállítás alapja, hogy egy tömbbe foglaljuk, a felbontásnak megfelelő számú digitális értéket, amelyek az előállítani kívánt analóg jel - egyes időpontokhoz tartozó – értékei. Az adattömbből, az egymás utáni értékeket átírjuk a D/A átalakító adatregisztereibe (DACH, DACL). Az írást az LSB bájttal kell kezdeni. A beírt értéket az ütemező jel írja át az átmeneti tárba (Latch). E regiszterek tartalmát alakítja analóg jellé a DAC áramkör, amelynek kimenetéhez egy admittancia-illesztő követő erősítő csatlakozik.
35.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az előállított jel analóg értékét a digitális jel, míg az időbeli változást az ütemező jel frekvenciája határozza meg. Az ábra szerinti áramkörben négy különböző ütemező jel alkalmazható. Három időzítő (Timer 1, 2, 3) valamelyikének túlcsordulása, vagy az MSB bájt beírása a DACH jelű adatregiszterbe. Az időzítőkkel valós idejű jelátalakítás, míg a beírással szoftver-vezérelt jelváltozást valósítunk meg. Az ismertetett DAC áramkör 8, vagy 12 bites digitális információból állít elő az AV+ AGND feszültségtartományba eső analóg értéket. A működés tiltásakor a kimenet nagy impedanciájú lesz. Ø Komparátorok Az irányítástechnikában sokszor alkalmazott két-, vagy háromállásos szabályozásoknál a hibajel adott értékénél kell a beavatkozó elemet „ki-, vagy bekapcsolni”. Az átkapcsolás hiszterézis -es kell, legyen. A 29. ábrán szemléltetett komparátor alkalmas a feladat ellátására. Az áramkör bemeneteinek (IN+ , IN- ) feszültsége határozza meg a kimenet állapotát. A két D tároló biztosítja a működés szinkronját.
29. ábra
Programozással állítható be kívánt hiszterézis. A 30. ábrán látható a kimeneti jelalak.
36.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
30. ábra
37.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
3 . 5 . S o ro s k om m u n i kác i ó A soros információcsere a telefonnal kezdődik, amelynél két vezetéken keresztül – a hanggal arányos – analóg feszültségátvitel történik két pont között. A telefontechnika fejlődésének eredménye, hogy a 20. század közepén már kódolt (digitális) szöveg átvitelt is megvalósít a TELEX. Ekkor születik meg a V24 jelű szabvány, amelynek része a még ma is használt RS232 szabvány szerint megvalósított soros vonali kommunikáció. Az integrálási technológia fejlődésének eredménye, hogy egyetlen chip -ben, egy mikrokontrollerben megvalósítják az önálló soros kommunikációs hardvert is (I8051/31 család). Ekkor még csak az RS232 szabványnak megfelelő a kialakítás UART (Unit Asyinchron Recevie Transmit). A fejlesztések eredménye, hogy további kommunikációs protokollok szerint működő soros vonali illesztőket alakítanak ki. Ilyenek az I2C (System Management Bus SMB), vagy az SPI (Serial Peripheral Interface) busz. Ma már több olyan mikrokontrollert is gyártanak, amelyekben a felsorolt kommunikációs illesztők közül többet, vagy mindegyiket kialakították. A felhasználó dönti el, hogy a fejlesztett rendszerében mely kommunikációkat használja. A továbbiakban a megemlített három változat ismertetésére kerül sor. Ø UART (Unit Asyinchron Recevie Transmit) A klasszikus RS232 szabványnak megfelelő működésű UART portokkal két adat-vezetéken keresztül Tx (Transmit – adó), Rx (Recevie – vevő) full-duplex (teljes kétirányú) kommunikációt valósítható meg. Megjegyzés: természetesen egy közös null-vezetőt is kell használni. Az UART - soros vonali illesztő – blokkvázlata látható a 31. ábrán. Az illesztő áramkör két, működésében egymástól független egységből, az adó-, és a vevő áramkörökből áll. (A működést, ütemező jelet szolgáltató Baud-Rate generátor nem része az UART -nak.) Az SCON sfr regiszterben vannak a soros illesztő egység üzemmód beállító-, vezérlő-, és státusz-bitjei.
38.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Adó
Vev
31. ábra Először az adás működését elemezzük. Az indítás elött a Tx kimenet H szinten van. Az adást az SBUF jelű léptetőregiszterbe történő írás kezdeményezi. A 8 bites információ mellett a TQ jelű tárolóba 1 a Stop-bit íródik . Az adatbeírás egyúttal a Tx Control (adást-vezérlő) Start bemenetén keresztül elindítja az alábbi lépések vezérlését. a Tx Clock bemenetre érkező első ütemező impulzus (órajel) ideje alatt a Send =1, a Data=0, ezért a Tx kimenet L szintű lesz. Ez az un. Start-bit, amely jelzi egy bájt adásának kezdetét. A következő órajeltől kezdve a Data kimenet is 1-be vált, és ezzel engedélyezi a beírt adat LSB bitjének kilépését a Tx vonalra. A következő 8 ütemben az SBUF tartalmát a kimenetre lép, és a TQ tárolóba 0-t ír és ez által a regiszter utolsó (9.) bitje lesz csak 1. A 9. léptetés után kiürül a regiszter, és a Zero Detector egység leállítja a vezérlést. Ekkor vált 1-be a TI jelű (Transmit Interrupt) bit. A bit értéke megszakítást is kezdeményezhet, ha az engedélyezett, vagy lekérdezhető (polling).
39.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az adatközlés tehát bájtonként automatikusan hajtódik végre. Az adatátvitelt kezelő szoftver feladata csak a következő bájt írása, amikor a TI bit=1. Az alapműködést szemlélteti a 32. ábra Az RS232 szabványú kommunikáció időzítése az M1 üzemmódban
32. ábra Másodszor elemezzük a vevő egység működését Az Rx vonalon érkező adatsorozat a bemeneti információ. A vevő egység Start bemenetére az „éldetektor” ad indító jelet akkor, ha a vonalon 1-0 átmenet (adat kezdet) van. Ettől kezdve, az órajel (Rx Clock) a jelsorozatot - a kerethiba jelző (Frame Error Detector) áramkörön keresztül – a 9 bites bemeneti regiszterbe (Input Shift Regiszter) lépteti. A kilencedik léptetés után - ha nincs hiba – a vett adat átíródik az SBUF vevő regiszterbe, és RI (Recevie Interrupt) bit 1 értékre vált. Ekkor lehet kiolvasni és feldolgozni a beérkezett információt. Az un. pont – pont kapcsolatot, - vagyis amelynél csak két állomás kommunikál szemlélteti a 33. ábra.
33. ábra Az előzőekben említett hibafigyelő áramkör hiba bitekkel ad jelzést a hibás működésről, vagy vezérlésről. A teljesség igénye nélkül kerethiba lehet például, ha a jelkezdettől ½ bit
40.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
idő múlva a jel újból 1 szintű (zaj indította vételt), vagy ha a 9. bit után sem érkezik Stop-bit ( pl. vonalhiba is okozhatja) stb. Az UART üzemmódjai: A mikrokontrollerek UART egységei rendszerint több üzemmódban is működhetnek. a. A 8 bites, az előzőekben leírt adás-vétel a leggyakrabban használt üzemmód. b. Több- (multi-) processzoros kommunikáció a 9 bites adatátvitellel alakítható ki. A 34. ábrán szemléltetett megoldással több állomás között is kialakítható kommunikáció. A kommunikáció 9 bites „szavakkal” történik. A 9. bit határozza meg, hogy az előtte lévő nyolc bit cím (1), vagy adat (0). A résztvevők közül mindig egyik a master, a többiek a slave -k.
34. ábra Az adatátvitelt mindig a master áramkör kezdeményezi. A slave egységek is fogadják az első adatot. A kezdő bájt annak az egységnek (slave -nek) a címe, amelyhez információt kíván küldeni. Amelyik egységnél MATCH Detect azonosítja a címet, az engedélyezi a további kommunikációban való részvételt. A többi áramkör lekapcsolódik a buszról. A további bájtok adatok, amelyeknél a 9. bit 0. Amennyiben válasz is kell, akkor megcserélődnek a szerepek és a válaszadó lesz a master. c. A szinkron üzemmód A 35. ábrán látható, hogy az egyik vonalon (Rx) érkezik az adat és másikon (Tx) az ütemező órajel.
a. Az adás-vétel időzítései az üzemmódban
41.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
b. 35. ábra További változatot jelent, hogy lehet az adás-vétel fix-, illetve változtatható ütemezésű. Az órajelet rendszerint a kontroller valamelyik időzítő/számlálója szolgáltatja. Ø I2C (System Management Bus SMB) busz Az I2C, Inter IC azaz IC-k közötti busz. Az I2C busz nagybonyolultságú integrált áramkörök közötti soros információcserét biztosító megvalósító sínrendszer. Az átviteli half-duplex módon történik, sebessége kb. 100-400 kb/s értékig növelhető. A kommunikáció kétirányú adatvonalon (SDA = Serial Data) keresztül történik, és egy külön órajel (SCL = Serial Clock) szinkronizálja az adatvezetéken az adatokat. Mindkét buszvonalhoz csatlakozó hardver elemek nyitott (open) kollektoros kialakításúak. A busz elvi felépítése a 36. ábrán látható.
36. ábra
42.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Alaphelyzetben nincs adatátvitel, a vonalak magas állapotban vannak (minden csatlakozó elem kimeneti tranzisztora zárt). Ha bármelyik tranzisztor kinyit, akkor az a vezetéket alacsony szintre kapcsolja. Ezt a megoldást az elektronikában huzalozott vagy kapcsolatnak hívják. A buszon az információáramlás iránya alapján megkülönböztetünk Adó ill. Vevő egységeket. Az átvitel vezérlését a Master eszköz végzi, irányítva a Slave egységeket A funkciók:
TRX = Transmitter (adó) egység, küldi az adatot a buszra. RCV = Recivier (vevő) egység, adatot fogad a buszról.
A szerepek:
MST = Master (mester) egység, kezdeményezi az átvitelt, generálja az órajelet, és leállítja az átvitelt. SLV = Slave (szolga): A mester által megcímzett egység.
A mikrokontroller I2C egysége mindegyik szerepre és funkcióra képes. Természetesen, ha ez az egység vezérli a perifériákat (és a gyakorlatban ez a leggyakoribb eset), akkor szerepe: mester és a perifériák a szolgák. A busz multi-master kialakítású. Ez azt jelenti, hogy buszra kapcsolódó eszközök közül nem csak egy, hanem több is átveheti az átvitel vezérlését. Ezzel kapcsolatos fontos tulajdonság az arbitration, vagy döntés. Ez egy eljárás, ami biztosítja, ha egynél több mester akarja a buszt vezérelni, akkor ezt csak egyetlen egy tudja megtenni, így adatvesztés nem léphet fel. A 37. ábrán látható az áramkör elvi felépítése. Az Interface működését az 5 SFR regiszteren az SMBCN
vezérlő,
SMBCR
órajel beállító,
SMBADR
cím,
SMBDAT
adat,
SMBSTA
állapot (státusz)
keresztül működtethető Az információ átvitel bájtos szervezésű. Minden bájt befejezése megszakítást kezdeményezhet.
43.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
37. ábra Az adatközlés felépítését a 38. ábra alapján követhetjük. Az átviteli szekvencia a következő: Ø Alaphelyzet a busz két vonala magas szintű. Ø Az adatátvitelt a master az un. START feltétellel kezdi azzal, hogy az SCL vonalon kiadott impulzus magas szintjénél az SDA vonalon egy H-L átmenet hoz létre. Ø Ezután válnak aktívvá a vonalak.
38. ábra Ø A következő lépésben a Slave címe kerül az SDA vonalra. A cím 7 bites, és a nyolcadik bit határozza meg az adatátvitel irányát. Írás (W) 0 szint, olvasás (R) 1 szint. Ø A következő, 9. órajel alatt az adó egység elengedi az SDA vonalat, és - a címzett vevő – azt 0 szintre húzza, ami az adat elfogadását acknowledge (ACK) jelzi.
44.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø A következőkben történik az adatok küldése, amelyek száma nincs korlátozva. Minden bájt vétele után következik az ACK jelzés. Ø Az adatátvitel befejezését a mester az un. STOP feltétellel zárja le azzal, hogy az SCL magas állapotában az SDA vonalon egy L-H átmenetet állít elő. Ezt követően válnak a vonalak inaktívvá. Ha a vevő nem képes adatot venni, akkor az ACK bit küldése helyett az SCL vonalat húzza le 0 szintre. Ezt nevezzük várakozó állapotnak. A "minden bájt nyugtázása" szabály alól két kivétel van: Ø Amikor a master a vevő (MST/RCV). Ilyenkor az adónak valahogy jelezni kell az adássorozat végét.. Az ACK jelhez kapcsolódó órajelet a mester természetesen generálja, de az SDA vonalat nem húzza le L szintre. Ez a negatív nyugtázás (NACK). Ø A másik kivétel: a szolga akkor nem küld ACK jelet, ha nem képes újabb adatbájtokat elfogadni. Ez akkor lép fel, ha olyan átvitelt kezdeményezünk, amit nem képes fogadni. A buszra kapcsolódó eszközök címei két csoportba sorolhatók: Ø Az egyikben a cím programozható, ezek általában a mikrokontrollerek. Ø A másik csoport a különféle funkciókat megvalósító periféria áramkörök. Ezeknél az eszközöknél a cím két részből áll: a 4 bites típuscímből, és a bites hardver címből. A típus cím az azonos funkciójú tokoknál mindig megegyezik. A hardver címet az adott tok megfelelő lábaira kötött logikai szintekkel állítható be. Amennyiben a master több szolgával végez – egymást követően - adatcserét, akkor a minden átvitelt lezáró STOP, majd az újabb START állapot sokat lassít az átvitelen. Az átvitel azzal gyorsítható, hogy a STOP helyett ismételt START állapot, majd az újabb slave cím következik. Ezt nevezzük ismételt START állapotnak. Az információátvitel mindig két résztvevő – az aktuális master és slave – egység között történik. Ennek megfelelően négy változat lehetséges. A 39. a,b,c,d ábrákon szemléltetjük a változatok időbeli lefolyását. Az ábrákon használt jelölések az alábbi jelentésűek:
45.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
a. master adás
b. master vétel
c. slave adás
d. slave vétel 39. ábra
46.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø SPI (Serial Peripheral Interface) busz Az SPI soros vonali kommunikációs egység négy vezetéken keresztül valósít meg full-duplex adatátvitelt. A működési mód master-slave jellegű, ahol a kapcsolódó egységek bármelyike lehet a master áramkör. A működés egyszerű, amely a 40. ábrán bemutatott, pont-pont kapcsolaton követhető.
40. ábra A négy csatlakozás funkciója: A MOSI (Master Out, Slave In) pontokat összekötő vezetéken küldi a master az adatokat a slave –nek. A MISO (Master In, Slave Out) pontokat összekötő vezetéken küldi a slave az adatokat a master –nek. Az NSS (Slave Select) csatlakozó pontra kapcsol H szint, választja ki a slave -t. A bemutatott ábrán a master mikrovezérlő egyik Port-bitje (Px.y) adja a kiválasztást. Az SCK (Serial Clock) vezetékre a master adja a kommunikáció sebességét meghatározó órajelet. Maximális értéke a rendszer-órajel (SYSCLK) tizede. Az SPI kommunikációs áramkör elvi blokk-vázlatát szemlélteti 41. ábra. A leírtak szerinti működés üzemmódját az SPICFG, vezérlését a SPICN, az órajelet a SPICKR, és az adatot SPIDAT SFR regiszterek felhasználásával programozható. A működtető szoftvernél a megszakítás (SPI IRQ) is felhasználható! 47.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
41. ábra Az SPI áramkörökkel is megvalósítható a több állomásos kommunikációs hálózat. Az állomások közül az éppen kijelölt master szolgáltatja az ütemező jelet. A slave kiválasztás a mikrovezérlő valamelyik port -ján keresztül, esetleg külső áramkörrel kiegészítve történhet. Az elvi felépítést mutatja a 42. ábra.
42. ábra
48.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az SPCKR regiszter bitjeivel különböző fázishelyzetű szinkronozás valósítható meg. A 43. ábrán láthatók a variációk.
43. ábra Az ismertetett kommunikációs interface -k elvi működését tárgyaltuk. Konkrét alkalmazásuk az adott mikrokontroller katalógusi adatai alapján történhet.
49.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
4. A prog ra mo zha tó l og i ka i v e zér l ők (PL C ) a l ka l ma zás a A hallgatók a korábbi tanulmányaik során – az irányítástechnikában - megismerkedtek a PLC -k alkalmazásának alapjaival. Laboratóriumban gyakorlatot szereztek a Siemens S7 típusú PLC programozásában. A fejezetben röviden áttekintjük a ma már nélkülözhetetlen irányítási eszközök, a PLC -k fejlődését. Részletesebben foglalkozunk a hazánkban talán legjobban elterjedt három gyártó az OMRON, a SCNEIDER és a SIEMENS egy-egy készülékének alapvető hardver jellemzőivel. Tárgyaljuk ezen eszközök programozását, alkalmazási lehetőségeit. Megismertetjük a fejlesztői környezetek használatát. 4.1.
Tö rt é n et i át t e ki n t é s
Nehéz lenne megmondani, hogy mit tekinthetünk az automatizálási rendszerek kezdetének, mi is volt az első lépcső. Mindenesetre az ipari folyamatirányítást és a PLC -k fejlődését több fontos dolog is befolyásolta, mint például a mikroprocesszorok a félvezetők, és főként a termelés hatékonyságának fokozása. Az ipari vezérlőberendezések teljesen átalakították, a termelési folyamatot, csökkentve az élő munkaerő-igényt, növelték a termelékenységet, és állandó minőséget tudtak produkálni. Az első ipari kivitelű vezérlőberendezések a 1960-as években jelentek meg, a GM amerikai vállalat fejlesztésében. Akkoriban még Programabble Controller -nek nevezték. A General Motors megbízásából a Bedford Associates hozott létre, egy új vállalatot olyan céllal, hogy kiszolgálja, fejlessze és eladja az új terméket a Modicon t amit, a Modular Digital Control után neveztek el így. Majd 1969-ben eladták az első működő PLC –t a 084-es típusszámút, amely 1 Kb memóriával és 128 I/O -val rendelkezett. Az első PLC tervezésében jelentős szerepe volt Richard E. Morley (44. ábra) akit máig, a PLC „szülőatyjának” tartanak. Az első generációjú vezérlők, programozása még nem volt egységes, nem voltak univerzális programnyelvek. Számos PLC-t, hasonlóan a kor követelményeinek megfelelő
számítógépéhez,
lyukkártyás
módszerrel
programoztak. A lyukkártyás módszeren kívül nagyon fontos volt Assembly-nyelvű, valamint a gépi kódú programozás. A számítógépek és a mikroprocesszorok fejlődésével párhuzamosan fejlődtek a PLC -k is. 44.
ábra
50.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az 1970-es években jelent meg, az áramút-terv -ből kialakított un. létra-diagram nevű programozási „nyelv”, amelyet napjainkig is – több-kevesebb módosítás után - használunk. A Kandó Kálmán Villamosipari Műszaki Főiskola Hajtásszabályozás Tanszékén 1980-ban kezdődött a PLC technika oktatása. Az első - MODICON 484 típusú (45. ábra) – PLC -t OMFB támogatással vette meg a Tanszék. Ezt a készüléket 2002-2003 tanévig használtuk az automatika szakos ágazati képzésének laboratóriumi gyakorlataiban, valamint a szak-üzemmérnöki, és egyéb tanfolyami képzésekben.
45. ábra Modicon 484 A készüléket programozni - egy I 8080 típusú mikroprocesszorral megépített - képernyős programozó készülékkel grafikusan lehetett. Programozási nyelve a későbbiekben LL98 elnevezésű programnyelv első változata volt. Ez tulajdonképpen a létra-diagram és a funkció-blokk együttes alkalmazása. A fejlesztői programot CMOS RAM tárolta, és innen is futtatta a PROM-ba égetett monitor program. On-line programozás történt. A következőkben csak (46. – 50. ábrák) felsorolással mutatjuk be az elmúlt 2 évtizedben nálunk használt PLC -ket. A bemutatott készülékek programozása már PC-n futó fejlesztői környezetben történt.
51.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
46. ábra Klöckner-Möller PS3
47. ábra Omron CQM
48. ábra Modicon Micro 612
52.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
49. ábra Siemens S5 A következő típus (50. ábra) már az 1993-ban készített IEC szabványajánlás mindegyik PLC nyelvén programozható a CONCEPT fejlesztői környezetben. Ugyanakkor Ethernet csatlakoztatással hálózatban is használható.
50. ábra Modicon Momentum A sorra következő részekben bemutatjuk a hazánkban legelterjedtebb PLC gyártó, forgalmazó – az OMRON, a SCHNEIDER ELECTRIC és a SIEMENS – egy-egy PLC -jét. A laboratóriumi gyakorlatokon ezekkel a készülékekkel találkoznak, és irányítási feladatokat oldanak meg. 4.2.
A z a l k a l m a zot t h á ro m P LC t í p u s ö s s zeh a s on lí t á sa
Az ismertetésre kerülő három készülék közül a CJ1M, és az M340 típusok teljesen moduláris, míg az S7-313C típus kompakt, amely bővíthető további modulokkal. A mérési gyakorlatokon e három típus programozását ismerik meg a hallgatók. A következőkben tömören összefoglaljuk a három PLC legfontosabb tulajdonságát.
53.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
4.2..1. Ø
1. félév
Hardver kialakítás
A CJ1M típusú moduláris PLC az OMRON CJ1 termékcsalád legkisebb tagja (51. ábra). Az utasításkészlet, a kommunikációs parancsok és a memóriaszervezés szempontjából kompatibilis a CJ1G/H és a CS1 sorozattal.
CPU
Analóg I/O
Diszkrét bemenetek
Tápegység
CJ1M (OMRON)
Diszkrét kimenetek
51. ábra Ø
A Schneider Electric legutóbbi fejlesztéseinek egyike a Modicon 340 elnevezésű moduláris PLC család (52. ábra). A PLC normál és nagy teljesítményű processzorai az egy hátlapos programozható logikai vezérlőt irányítják. A konfigurációban legfeljebb 11 kártyahely lehet:
Analóg I/O
Diszkrét bemenetek
CPU
Tápegység Diszkrét kimenetek M340 (SCHNEIDER E.) 52. ábra
54.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
Ø
1. félév
A Siemens S7 PLC széles választékú család tagja az S7 313C típusú kompakt készülék. Az egység tovább bővíthető Különböző I/O modulokkal (53. ábra).
S7 313C kompakt PLC
Diszkrét bemenetek
USB illesztő
Tápegység
Diszkrét kimenetek
S7-313 (SIEMENS) 53. ábra 4.2..2.
A tápegység
Mindhárom készülékcsaládban önálló tápegység modulok vannak. A 54. ábrán az egyes családokhoz tartozó egységek fényképei láthatók. A tápegységek: 24 Vdc, 48 Vdc vagy 100...240 Vac bemenő tápfeszültségűek lehetnek.
PA205C
CPS 2000
PS 307
54. ábra 4.2..3.
A CPU
Az egyes PLC családok központ egységeinek összehasonlítása sok szempont szerint történhet. Felhasználói szempontból lényeges adatok: ·
működési sebesség, utasítás/ms.
·
memóriakapacitás, 55.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
·
maximális bővítő modulok száma,
·
kommunikációs csatornák száma, típusai.
A felsoroltak szerint tekintjük a tárgyalt három PLC típus jellemzőit. a. Az Omron PLC választékában a CJ sorozat tagja az itt tárgyalt CJ1M típus (55. ábra). Működési sebesség: 4200 …6400
utasítás/ms
Memóriakapacitás: Programmemória: 2,048 ….
4,096
MB
Adatmemória:
128 …..
256
KB
Diszkrét I/O
512 ….
1024
Analóg I/O
66 …
2056
Maximális bővítés:
Soros kommunikáció: 55. ábra CJ1M processzora b. Az M340 PLC négyféle processzorral (BMX P340 1000, 2010, 2020, 2030) állítható össze (56. ábra). A felsoroltak közül az 1000-es a legkisebb és a 2030-as a legnagyobb teljesítményű.. (Az adatok az 1000 típusra vonatkoznak) Működési sebesség:
~7000 utasítás/ms
Memóriakapacitás: Programmemória:
4
MB
Adatmemória:
256
KB
Maximális bővítés: Diszkrét I/O
512
Analóg I/O
66
Soros kommunikáció: MODBUSZ … USB
----
56. ábra P340 1000 CPU
56.oldal
Ethernet TCP/IP Can Open
Zalotay Péter: Programozható irányítások I Elméleti tananyag
c. Az
1. félév
S7 300 PLC család egyik közepes teljesítményű kompakt egysége a 313C
készülék. Az 57. ábrán látható kompakt készüléknek a processzor mellett diszkrét és analóg illesztő, valamint számláló egységei is vannak. Az alapkonfiguráció: 24 diszkrét (digitális) bemenet 16 diszkrét (digitális) kimenet, valamint 4 analóg be-, és 2 analóg kimenet, amely áram / feszültség fogadására, és még egy bemenet hőmérséklet érzékelő jelének fogadására. Az egységhez további modulok csatlakoztathatók. Működési sebesség:
~ 10000
utasítás/ms
Memóriakapacitás: Programmemória:
64
KB
Adatmemória:
256
KB
Maximális bővítés: Diszkrét I/O
1024
Analóg I/O
256
Soros kommunikáció:
Profibusz
57. ábra S7-313C kompakt készülék 4.2..4.
Diszkrét I/O i llesztők
A különböző cégek által gyártott diszkrét be-, és kimeneti illesztő egységeinek elvi áramköri kialakítása között kevés az eltérés. Tipikus feszültség 24 Vdc. Mind a bemeneti, mind a kimeneti oldalon a pozitív szintet alkalmazzák IGEN szintnek. A bemeneti (58.a.ábra) és a kimeneti (b. ábra) illesztő egységek jellegzetes áramköri kialakítás kapcsolási vázlatai:
57.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
a.
b.
58. ábra Mindegyik gyártó különböző csatlakozási számú illesztőket készít. A 8, 16 és 32 a tipikus be-, kimeneti csatornaszám. Ugyancsak megtalálhatók az olyan egységek, amelyekben mind be-, mind kimeneti illesztők is vannak. Az utóbbiak elsősorban a kevés ki-bemeneti számú feladatok ellátásához előnyösek. A 59. ábrán mindhárom cég egy - egy diszktét illesztőegységét mutatjuk be
a.
b.
Omron
Schneider Electric
c. Siemens
59. ábra 4.2..5.
Analóg i llesztők
Az ipari irányítások többségében kell szabályozási és mérési (adatgyűjtési) feladatokat végezni. A fizikai, technikai folyamatok jeleiből főleg analóg villamos jeleket állítanak elő a különböző jeladók, távadók. Az PLC –vel történő automatizálásnál ezért elengedhetetlenek a különböző analóg be-, és kimeneti illesztőegységek alkalmazása. A szabványos villamos jelek között leggyakoribb a 4 - 20 mA -es áram, illetve a – 10 V - + 10 V tartományba eső
58.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
feszültség. A PLC családok elemválasztékában több változatát is megtaláljuk az analóg illesztőknek. Ezek között is vannak olyan modulok, amelyekben be- , és kimenetek illesztők is vannak. Az említett különböző szabványos jelek fogadására, adására is alkalmas a legtöbb modul. Alkalmazásuknál szoftveresen kell beállítani, hogy az egységnél milyen jeleket alkalmazunk. A 60. ábrán látható modulok ránézésre kevésbé különböznek a diszkrét illesztőegységektől. A kialakításban is egyből látható, hogy melyik gyártó családjába tartozik.
Omron
Schneider Electric
Siemens
60. ábra 4.2..6.
A memóri a
A jegyzetben részletesebben leírt PLC -ben a használt memóriaterületek egyik része a készülékben lévő (flash)RAM, másik része a flash kártya. Az M340 típusú készülék memóriaterületének kiosztása látható az 61.ábrán. A többi típusnál is hasonló az elvi kialakítás, ezért itt nem mutatjuk meg.
61. ábra
59.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
III. R É S Z I r á ny í t á s t e c hn i k a i p r o g r a m o k t e r v e z é s e , fe j l e s z t é s e
60.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
5. Prog ra mfe jles ztés A fejezetben foglaljuk össze az irányítási feladatokat végző programok fejlesztésének – a korábbi tanulmányokban már tárgyalt -legfontosabb alapismereteit. Külön is hangsúlyozzuk, hogy a tárgyalt fogalmak, eljárások mind az általános célú mikrogépek, mind a „célhardver” PLC –k programfejlesztéseinél alkalmazhatók. 5.1.
A p rog ra m o zás c é lj a
A mikrogép működését meghatározó programot az un. code-, vagy programmemóriába kell tárolni az alkalmazott mikroprocesszor, vagy mikrokontroller - a továbbiakban processzor - típusától függő gépi kódok sorozatával. A program végrehajtásakor a processzor innen olvassa ki az utasításokat, és paramétereket. A programozás célja tehát. ·
egy olyan kódsorozat létrehozása, amelyet
·
egy mikrogép (mikroprocesszor bázisú számítógép) programmemóriájába töltve,
· 5.2.
meghatározza a mikrogép feladat szerinti működését. A p rog ra m f ej l e s zt é s l ép é s ei
A programfejlesztés az alábbiakban tömören ismertetett lépésekből áll. a. A feladat egyértelmű leírása alapján az alkalmazható algoritmusok meghatározása. b. A program felép í t ésén ek
megtervezése.
Ezt
segíti a folyamat áb ra
megrajzolása. c. A programban használt változók, konstansok, periféria-címek meghatározása. d. A forrásprogram (ok) megírása - valamilyen szövegszerkesztő (editor) segítségével - a választott programozási-nyelv "helyesírási " (szintaktikai), és tartalmi (szemantikai) szabályai szerint. Ez lesz a p rogram forrásn yelvi formája. A számítógépek, mikrogépek alkalmazásának széleskörű elterjedése a különböző p rogra mn yelv választékot is bővítette. A programnyelveket gép közeli - (assembly), és a magas szi ntű nyelvek csoportjába sorolhatjuk. -
G ép közeli az a programozás, amelynél minden p rogramlép és – programsor - az alkalmazott processzor egy-egy u t asít ása. Mivel minden processzornak
saját
utasításkészlete
61.oldal
van,
ezért
a
programírás
is
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
processzorfüggő. Az ilyen programírást nevezzük assemb ly vagy más közelítésben u t asít ás – szerkezet ű programírásnak. - A magas szi nt ű programozási nyelvek (Pascal, C, a PLC nyelvek stb.) rendszerint a nemzetközileg elfogadott mat emati kai, logi kai műveletek, és különböző általános, a progr amszer kezet et meghat ározó u tasít ások segítségével írják le a feladatot. Ezért e nyelveken a programozás független attól a géptől, amelyen a programot futatni akarjuk. A magas szintű nyelven történő programírást mű velet - közp ont ú programozásnak is nevezhetjük. e. A forrásnyelvi programból a különböző ford ít ó programok (assembler, compiller) állítják elő a p rogram t árgykód ú (object) alakját, illetve a programlistát, amelyek már a processzor utasításkódjait is tartalmazzák. (A leírtakból következik, hogy a magas szintű nyelveknél is a fordítóprogram már processzortól függő.) f. A tárgykódú programból, vagy programokból (több modul esetében) a s zerkeszt ő (linker) program állítja elő a fu ttath at ó programváltozatot. g. Az így előállított programot kell beírni (letölteni) a programmemóriába. A programmemória lehet fix (ROM, EPROM), illetve irható-olvasható (RAM) kialakítású. A beégetés, vagy letöltés történhet teljes kódú (bináris), vagy tömörített (pl. INTEL HEX) alakú állományból. Ennek megfelelően a programozás utolsó lépése a kívánt formátum-konverzió elvégzése. 5.3.
A p rog ra m f ej l e s zt é s e s zk ö ze i
A programfejlesztés leglényegesebb eszköze az ember, mivel a feladatot megvalósító program algoritmusait, felépítését, változók, konstansok meghatározását stb. csak alapos tervező, elemző munkával lehet, és kell elvégezni A programfejlesztés tárgyi eszközei ma kizárólag általános célú számítógépek PC-k, és az ezeken futó fejlesztő-programok segítségével történik. Természetesen e programok csak a technikai háttért adják. A teljesség igénye nélkül az alábbi szoftverek elengedhetetlenül szükségesek: · a rajzoló programok (folyamatábra rajzolás), · a szövegszerkesztők, editorok (forrásnyelvű állomány írásához), · az assemblerek, compillerek (a szöveges állomány fordításához), · a linkerek (az abszolút tárgykódú állomány szerkesztéséhez), · az obj-hex, obj-bin átalakítók (formátum-konverzióhoz),
62.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
· a szimulátorok (a program-szimulációhoz), · emulátorok, terminál-monitor programok (a valós idejű teszteléshez) A programfejlesztés módszerei – a sokszor az adottságoktól függően – különbözőek. A PC-k elterjedésének kezdetén a fejlesztési lépések egyedi végrehajtása, esetleg un. parancs-fájlok (batch) segítségével segítették a hatékonyságot. A számítógépek, a szoftvergyártás rohamos fejlődése hozta, az un. integrált fejlesztői környezetek kialakítását, amelyek a felsorolt lépések mindegyikét automatikusan, vagy kézi vezérléssel hajtják végre. A nagy szoftvergyártó cégek különféle környezeteket (DOS, majd Windows operációs rendszerekben) fejlesztettek. Ezek elsősorban az elterjedt magas szintű nyelvekhez, úgymint a Pascal, C++ stb. készültek. A különböző multitask -os operációs rendszerekben egymás után jelentek meg az „automatizált” programfejlesztő programcsomagok, pl. DELFI, BILDER stb. A 8031/51 mikrokontroller család programfejlesztéséhez a Keil Electronic cég másfél évtizede készít fejlesztő programokat (a51.exe, c51.exe, l51.exe, lib51.exe, ohs51.exe), illetve integrál fejlesztő környezetet (UV4). A PLC -k programozásához is – a gyártó cégek által kifejlesztett – integrált fejlesztői környezetek segítik a működtető programok írását, ellenőrzését. Ilyenek fejlesztői programcsomagok a CX-Programmer (Omron), Unity Pro XL (Schneider Electric), Simatic Step7 (Siemens) A modul mérési feladatainak megoldásánál a felsorolt fejlesztői környezetet alkalmazzuk. 5.4.
P rog ra m s ze rk e zet e k
A mikroprocesszoros berendezések (mikrogépek, PLC -k) programjainak legkisebb egységei az utasítás-kódok, és paramétereik. A programkódokat a fordítók, compillerek állítják elő. A program forrás-állományt (forrás-fájl) nagyobb egységek, un. program-blokkok csoportjaiból kell felépíteni, amelyek egy adott jellegű művelet végrehajtásához szükségesek. A követezőekben összefoglaljuk az elemi programblokkokat, valamint ezek segítségével kialakítható tipikus programszerkezeteket. A leírtakat folyamatábrával szemléltetjük. A feladatot megvalósító program tervezésénél célszerű folyamatábrát használni.
63.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ø Elemi program-blokkok A program szerkezeti elemei az elemi-blokkok. ·
Műveleti blokk,
OP1 és OP2 összeadása ; assembly nyelven . MOV A,OP1 ADDC A,OP2 MOV ERED,A . /* C nyelven */ . ered = op1 + op2 ; .
·
egy logikailag összetartozó (matematikai, logikai, stb.) utasításcsoport.
Feltétel nélküli programelágazás
ugrás a folytatásra ; assembly nyelven . MOV ERED,A LJMP FOLYT . FOLYT: MOV
n. utasítás
A következő utasítás beolvasása a memória távolabbi címéről történik. A c nyelvben nem használnak
DPTR,#NGS
.
·
Művelet
n+1. utasítás
direkt ugrást.
Feltételes programelágazás
ha az A=0 ugrás a folytatásra ; assembly nyelven . ADDC A,OP2 JZ FOLYT MOV ERED,A . FOLYT: MOV DPTR,#NGS
.
/* C nyelven */
. if(ACC==0) { ered = ACC } . //folyt
n. művelet Egy változó (bájtos, bites) aktuális
értékétől
függ,
hogy az új utasítás beolvasása a programmemória következő, vagy távolabbi címről történik.
. 64.oldal
nem
feltétel igaz? igen n+1. művelet
Zalotay Péter: Programozható irányítások I Elméleti tananyag
·
1. félév
Többirányú programelágazás
A alkalmazásokban gyakori feladat, hogy egy változó értékétől függően különböző műveleteket kell végrehajtani. Ilyen esetben, a programban többirányú elágazást, programugrást kell beírni. ·
A V1 aktuális értékétől függő ugrás
A = változó A =1.ért? Ige
Nem
A =2.ért? Nem Ige
1. műveletre
A =3.ért? Ige
Nem A =n.ért?
2. műveletre
Ige
3. műveletre
Nem
Nincs változás folytatás
n. műveletre
assembly nyelven MOV
A,V1 CJNE JMP
A,#E1,FO1 MUV1
FO1:
CJNE JMP
A,#E2,FO2 MUV2
FO2:
CJNE JMP
A,#E3,FO3 MUV3
FOn:
CJNE JMP
.
MUV1:
A,#En,NV MUVn . .
JMP MUV2:
. . JMP
MUVn: NV:
; 1. művelet NV ; 2. művelet NV
. .
;n. művelet
.
; folytatás
65.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
C nyelven switch (V1) { case E1 : /*1.művelet*/ ; break; case E2 : /*2.művelet*/; break; case E3 : /*1.művelet*/ ;break; . . case En : /*n.művelet*/ , break; } .
·
Összehasonlítás
Nagyságkomparálás ; assembly nyelven . CJNE V1,V2,NEM_E JMP EGYEN NEM_E: JC KISEBB NAGY: . . JMP FOLYT KISEBB: . . JMP FOLYT EGYEN: . . FOLYT: . . /* C nyelven */
if (V1 == V2) { egyenlő(); } else if (V1
Kétbájtos változók relációjának (kisebb, nagyobb, egyenlő)
meghatározása
többszörös
döntéssel
végezhető el..
Nem
Nem
V1 = V2 ?
V1 < V2 ?
Igen
Igen
Nagyob
Egyenlő Kisebb A c nyelvi változatban egy függvénnyel jeleztük az egyes relációknál végrehajtandó műveletet.
Jelváltozás meghatározása
A vezérlési feladatok között sokszor szükséges csak az adott jel valamelyik irányú változásakor kell elindítani egy folyamatot. Most röviden tárgyaljuk a jelváltás detektálásának néhány változatát. A megoldásoknál fontos alapelv, hogy a lehető legrövidebb időn belül határozzuk meg a váltás tényét és irányát. A feltételből adódik, hogy olyan megoldás nem jöhet számításba amikor a program „vár” a változásra.
66.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az automatizálásban alkalmazott szoftverek fontos alapelve a ciklikus működés, valamint az, hogy a ciklus elején mintavételezi és tárolja a bemeneti jelek aktuális értékét. A működésből adódik, hogy egy programciklus ideje határozza meg, hogy mekkora az az idő, amelyen belül történő változást már nem lehet egyértelműen értékelni. A 62. ábrán látható idődiagram mutatja egy jel változását, és a program mintavételezéseit. V
n
n+1
k
k+1
t
tc
62. ábra Két mintavételezés között fut le a program egy ciklusa. A ciklus elején történik a változók aktuális értékének beolvasása és tárolása a belső memóriában. A két egymást követő mintavételezésből lehet megállapítani, hogy az előző ciklusban történt-e jelváltozás. A példa szerint az n. ciklusban pozitív irányba, míg a k. ciklusban negatív irányba változik a V jel. Így a következő ciklus elején (az n+1. ill. a k+1.) észlelhető, hogy volt jelváltozás. Most vizsgáljuk meg, hogyan lehet megállapítani a váltás tényét, és irányát. ·
A pozitív irányú változásnál az n. ciklus elején beolvasott és tárolt érték Ut = 0, és az n+1. ciklusban frissített érték Uf = 1. A pozitív váltást jelző bit B p = U t U f
·
A negatív irányú változásnál a k. ciklus elején beolvasott és tárolt érték Ut = 1, a k+1. ciklusban frissített érték Uf = 0. A negatív váltást jelző bit B n = U t U f
Összefoglalva deklarálni kell a kívánt váltást jelző bitet és ennek értékét a bemenetek frissítésekor kell meghatározni a fenti logikai összefüggések alapján. A jelzőbitek egy ciklusban használhatók jelváltás jelzésére. Minden további ciklusban értékük 0. Azokban az esetekben, amikor egy bájt több bitjének változását is fel kívánjuk használni a programban, akkor az alábbiak szerint célszerű eljárni. 1. Meghatározzuk, hogy a Vt tárolt és a Vf frissített bájtok különböznek-e. A K = Vt Å Vf művelet eredményében azok a bitek 1 értékűek, amelyek a két bájban eltérőek, vagyis az adott bemenetekre kapcsol jelek valamelyik irányba változtak. Példaként nézzük a következőt:
67.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Vt 0 1 1 0 0 0 1 1 Vf 1 1 0 0 0 1 1 0 K
1 0 1 0 0 1 0 1 Jelváltás meghatározása
2.
Az eredményből szét kell választani a pozitív, illetve a negatív irányú változást jelző biteket és azokat külön bájtban tárolni ami a következő műveletekkel végezhető el.
K p = K Vf
illetve Kn = K Vt vagyis a pozitív változást az új érték, míg a negatívat a
tárolt a tárolt érték maszkolja. Az előző példát folytatva
K
1 0 1 0 0 1 0 1
K
1 0 1 0 0 1 0 1
Vf
1 1 0 0 0 1 1 0
Vt
0 1 1 0 0 0 1 1
Kp 1 0 pozitív 0 0 0 1 0 0
Kn 0 0 1negatív 0 0 0 0 1
jelváltás (él) meghatározása Végezetül írjuk meg az egy bájt bitjeinek változását meghatározó frissítő rutin forrását. (A példáknál a deklarációkat nem írjuk fel.) ; xxx a bemenetek frissítését és a változást jelző rutin xxx FRISS:
MOV MOVX PUSH XRL MOV ANL MOV POP ANL MOV MOV RET
DPTR, # BEP A, @DPTR ACC A, BEM B, A A, BEM BEMN, A ACC B, A BEMP, B BEM, A
; értékek beolvasása a bemeneti perifériáról ; a változott bitek meghatározása ; a negatív változás maszkolása, ; tárolása ; a pozitív változás maszkolása, ; tárolása ; az új érték tárolása
A frissítési feladatokat ellátó eljárás C nyelven/* C nyelvű frissítő függvény */ void be_friss (void) {
char atm1,atm2; atm1 = BEPORT; atm2= (bem ^ temp; bemn = atm2 & bem; bemp = atm2 & atm1; bem = atm1;
// átmeneti lokális változók // beolvasás // változás // negatív váltások // pozitív váltások // új értékek
}
68.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Kihangsúlyozzuk, hogy a PLC operációs rendszerének (működtető programjának) része a be-, kimenetek olvasása, írása. Ezekről a felhasználónak nem kell gondoskodnia A PLC készülékeknél függvények, segítik a jelváltás meghatározását. A MODICON készülékeknél a beolvasás frissítése egyúttal az éldetektálást is elvégzi. Ø Elemi programszerkezetek A matematikai, logikai feladatok elemi programszerkezetek segítségével írhatók le. Ezek a már megismert program-blokkokból építhetők. Jellegzetes elemi program-szerkezetek: · Lineáris (lefutó) program
elemi programblokkok sorozata, amely a program lefutása, (az elemi blokkok végrehatása) után nem tér vissza a program elejére. A program futási ideje alatt csak egyszer hajtódik végre. Pl. inicializálás stb.
· Ciklikus program
ismétlődő - elemi blokkokból álló – programcsoport (ciklustörzs). A program futási ideje alatt ennek végrehajtása ismétlődik. Pl. a főprogram (a main) stb.
Miután minden szoftver ciklikus szervezésű, ezért ezt részletezzük. Minden programciklus alapvetően a következő elemeket tartalmazza: · ciklustörzs
az a programcsoport, amely ismétlődik,
· ciklusváltozó
az a változó, amelynek értékének
Kezdőértékek megadása
tartománya
meghatározza a ciklus-
Ciklustörzs
törzs ismétlését, · értékelés
a ciklusváltozó értéké-
Ciklusváltozó módosítása
nek összehasonlítása a ciklusban maradás felté-
Cv = érték?
teleivel, · döntés
az értékelés eredményétől függő programelágazás.
A feladattól függően több változatban szervezhetők programciklusok. A szerkezet függ a ciklusváltozótól, az értékelés cikluson belüli helyétől.
69.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Jellegzetes ciklus típusok: tól - ig .. (for to) ciklus 16 bájt törlése . MOV R7,#16 MOV ISM: MOV INC
R0,#BEM
olyankor használjuk, amikor a ciklusba lépés előtt ismert az
@R0,#0
ismétlések száma,
R0
DJNZ R7,ISM . /* C nyelven */ for ( n=0; n< 16; n++) { *p = 0; p++;}
· amíg .. (while) ciklus ISM: CJNE @R1,# ’b’,TOV ; ciklustörzs . . . JMP ISM TOV: .
amíg a ciklusváltozó adott értéktartományba
esik
is-
Cv = érték?
mételten végrehajtja a ciklustörzset (a ciklusváltozó a
Ciklustörzs
törzsben módosul). A ciklus
/* C nyelven */ while ( p<16)
elöl-tesztelt.
{ *p = 0; p++;}
· majd-amíg...( do-while)
ISM:
; ciklustörzs . . . CJNE A,BEM,ISM
. /* C nyelven */ do { *p = 0; p++; } while ( p<16)
először végrehajtja a ciklustörzset, majd amíg a ciklusváltozó adott értéktartományba esik ismétli azt ( a ciklusváltozó a törzsben módosul). A ciklus hátul tesztelt.
A műszaki feladatokat megvalósító programok struktúrája az ismertetett
elemi
Ciklustörzs
programszerkezetek
70.oldal
használatával
Cv = érték?
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
kialakítható. Egy alkalmazói program a következő alapvető egységekből áll: ·
inicializálás
a változók kezdőértékének, prog-
ramozható perifériák üzemmódjának, megszakítási rendszer szükség szerinti beállítása, stb., lefutó
Start Inicializálás
típusú, ·
főprogram (main) a feladatot ismétlődően végrehajtó
Bemenetek frissítése, tárolás
program mindig (ciklikus), amely három fő részre bontható: - a bemeneti értékek frissítése, tárolása - a feladat szerinti műveletek megoldása az aktuális bemeneti értékekkel és az új kimeneti változók
Feladatok megoldása, függő változók tárolása Kimenetek frissítése
tárolása, - kimenetek frissítése a ciklusban meghatározott kimeneti változókkal. ·
alprogramok (szubrutinok)
A részfeladatokat megoldó programrészek lefutó típusúak. A leírt általános felépítést szemlélteti a folyamatábra.
71.oldal
Alprogramok (szubrutinok)
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
5 . 5 . A P L D - k p rog ra m o zá sa A programozáshoz szükség van egy JEDEC formátumú biztosíték térképre, amely tartalmazza többek között: • Az IC lábainak számát • Az IC biztosítékainak (mátrixpontjainak) számát • Mely mátrixpont milyen értéket kapjon az írás során. • Az eszköz fizikai teszteléshez szükséges tesztvektorokat. A JEDEC fájl akár elkészíthető "kézzel" is, ha pontosan ismerjük az IC működését, felépítését valamint az egyes biztosítékok címét. Ez a módszer azonban nem javasolt, mivel rendkívül lassú, sok a hibalehetőség, és programozás előtti tesztelésre sincs lehetőség. Tanácsosabb inkább valamilyen fejlesztőprogram használata. A fejlesztőprogramok többféle módszert tesznek lehetővé a tervező számára a fejlesztéshez. Az egyik ilyen valamely hardver leíró nyelv (HDL - hardware description language) használata. Ezek közül néhány: • ABEL (Advanced Boolean Expression Language) • PALASM (PAL assembler) • VHDL (Very high speed integrated circuit Hardware Design Language) • Verilog HDL A hardver leíró nyelvek egy része alkalmas a teljesen eszközfüggetlen fejlesztésre, tehát nincs szükség gépi kód jellegű programozásra, hanem egy magas szintű (C-hez vagy Pascalhoz hasonló) nyelvvel dolgozhatunk, hagyományos, magas szintű programozási módszereket felhasználva. A leírónyelvek másik előnye, hogy lehetővé teszik bonyolultabb feladatok különálló, könnyebben kezelhető alrészekre bontását, ezzel is megkönnyítve a fejlesztést. Harmadrészt pedig, a hardver leíró nyelvek lehetővé teszik, hogy a fejlesztőrendszeren keresztül, a megadott tesztvektorok segítségével szimulálhassuk az eszköz működését még a leprogramozás előtt. Más tervezőrendszerek lehetővé teszik, hogy grafikus szimbólumokból (kapuk, flipflopok, stb.) sematikus ábrát készítve tervezzük meg a logikai hálózatot. Ilyen tervezőprogram például az OrCad is. Ez a módszer főleg az FPGA -k programozásánál elterjedt. Egyes tervezőrendszerek lehetővé teszik, hogy adott feladatot több forrással, 72.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
például különálló HDL programokkal, sematikus ábrákkal, vagy ezek kombinációjával tervezzünk meg. Ezeket a program lefordítása előtt a fejlesztőrendszernek egyesítenie (linkelnie) kell egymással. A fordítás során a megadott feladat leírását a fordító olyan leírássá alakítsa át, amely a célhardver szerkezetéhez legjobban illeszkedik. Ilyenkor a fordító valamennyi operátort (legyenek azok logikai, aritmetikai, relációs, stb. operátorok) NEM, ÉS, VAGY illetve KIZÁRÓ VAGY operátorral helyettesít. A forrás szintaktikai ellenőrzésére is ekkor kerül sor. A fordítás befejezése után az előállított logikai egyenletet általában optimalizálni kell. A Quine-McCluskey féle optimalizálási módszer ismert és egzakt eljárás, de sajnos meglehetősen lassú, leginkább az SPLD -k optimalizálásánál produkál elfogadható időt. Sokváltozós egyenletek esetén heurisztikus algoritmusokat érdemes használni. Ilyenek például a PRESTO illetve az ESPRESSO algoritmusok. A fejlesztőrendszerek általában többféle optimalizálási módszer közül engednek választani. A fordítás és optimalizálás után kerülhet sor a logikai rendszer szimulációjára. A szimulációhoz a tervezőnek tesztvektorok formájában meg kell adnia, hogy a bemenő jelek különböző lehetséges kombinációihoz (bemeneti állapothoz) a feladat célkitűzései alapján milyen
kimenő
tervezőprogram
jelek a
tartoznak,
megtervezett
ezeket
feltételezett
logikai
rendszert
kimenőjeleknek használva
hívjuk.
A
meghatározza
a
tesztvektorokban meghatározott bemenőjel kombinációkhoz tartozó kimenő jeleket. Ezeket számított kimenőjeleknek nevezzük. Ha a feltételezett és számított kimenőjelek nem egyeznek meg, a tervezett rendszer nem felel meg a specifikációknak, és a hibát ki kell javítanunk. A feltételezett és számított kimenőjelek közti különbségek általában segítséget nyújtanak a hiba megtalálásában. A hardver leíró nyelvek nagy előnye, hogy tartalmazzák magukban a tesztelés lehetőségét. Ha a szimuláció során nem találtunk hibát, sor kerülhet a JEDEC fájl létrehozására az optimalizált logikai egyenletből, az adott PLD típusra. A JEDEC fájl által tartalmazott, fizikai teszteléshez szükséges tesztvektorok lehetőséget adnak arra, hogy a programozóba helyezet eszközt a valóságban is tesztelhessük, és a teszteredményeket összehasonlítsuk a szimulált kimenőjelekkel.
73.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Megjegyezendő, hogy néhány fejlesztőprogram (ilyen az ispDesign EXPERT is) lehetőséget nyújt eszközfüggetlen tervezésre is. Ebben az esetben az optimalizálás után még két további lépés következik: az eszközválasztás és a leképezés. Az eszközválasztás során a program megvizsgálja, hogy a megtervezett logikai rendszer fizikai megvalósítására milyen programozható logikák alkalmasak, és ezek közül melyek felelnek meg a felhasználó által meghatározott egyéb követelményeknek (sebesség, fogyasztás, tokozás, ár stb.). A vizsgált kritériumok lehetnek többek között: • A feladatban megfogalmazott, valamint az eszközben rendelkezésre álló be- és kimeneteinek száma. •
A
feladat
szorzattagjainak
száma
összehasonlítva
az
eszköz
összes
szorzattagjainak számával. • A feladat által igényelt kimeneti típus (kombinációs vagy regiszteres) rendelkezésre áll-e az eszközben. • Eleget tesz-e az eszköz a feladat esetleges speciális igényeinek: nyitott kollektoros kimenet, 3,3/5V-os kimenetek, bemeneti felhúzó ellenállások, stb. • Rendelkezésre állnak-e az igényelt vezérlőjelek az eszközben: szinkron és aszinkron órajel, regiszter beíró és törlőbemenetek, kimenet engedélyező/tiltó jelek, stb. A leképezés során a programnak el kell helyeznie a kiválasztott eszközben a megtervezett áramkört. Ilyenkor a megvalósítandó egyenleteket hozzárendeli az eszköz kivezetéseihez és belső csomópontjaihoz. A leképezés során a program kihasználja az egyes SPLD eszközök, például a GAL22V10-nek azt a tulajdonságát, hogy egyes kimenethez tartozó mátrixkivezetések száma különböző, emiatt lehetőség van a takarékos helykihasználásra. Amennyiben az elhelyezés sikeres volt, sor kerülhet a JEDEC fájl létrehozására. Megjegyezendő, hogy mind az eszközválasztás, mind a leképezés tartogat magában hibalehetőségeket, és előfordulhat, hogy az alkalmasnak nyilvánított eszközről kiderül, hogy mégsem képezhető le rá az adott logikai hálózat. Ennek oka lehet az is, ha előre hozzárendelt kivezetéseket tartalmaz a terv, ilyenkor ugyanis gyakran előfordul, hogy a megkötések miatt a rendszer nem képes az optimális helykihasználásra.
74.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
6.
1. félév
A z I 80 51 mi kroko ntrol ler csa lá d C - ny e lv ű prog ra mo zá sá na k a la pjai
Az I8051 mikrokontroller család C - nyelvű programozását az alábbi programok támogatják: Þ
C51.exe
compiller
Þ
L51.exe
linker / lokater
Þ
LIB51.exe
könyvtárszerkesztő
Þ
OHS51.exe
object-HEX konverter
A forrásnyelvű fájl írásának szintaktikai és szemantikai szabályai megfelelnek a hagyományos ANSI-C előírásainak. A mikrokontroller család belső hardver részeinek és külső memóriák à az elérhető véges méretű memóriaterületek (int, ext, és cod memóriák), à a beépített I/O egységek SFR regiszterei eléréséhez bővítéseket, és egyúttal megkötéseket is alkalmaznak. A programcsomaghoz tartozó Run-Time Library -k (függvénykönyvtárak) segítik a programfejlesztést. Þ
C51S.LIB
a SMALL modell float aritm. nélkül
Þ
C51FPS.LIB
"
Þ
C51C.LIB
a COMPACT "
Þ
C51FPC.LIB
"
"
float aritmetikához
Þ
C51L.LIB
a LARGE
"
float aritm. nélkül
Þ
C51FPL.LIB
"
"
float aritmetikához
"
float aritmetikához float aritm. nélkül
6 . 1 . Vá lt o zó k é s d e k l a rá l á su k: A programban használt változók deklarálásakor meg kell adni a helyfoglaláshoz szükséges jellemzőket és az értéket. A helyfoglaláshoz a fordítónak ismernie kell a változó típusát, és esetlegesen a memória helyet (memória modellt). Változó típusok bit
1 Bit
0 vagy 1
signed char
1 Bájt
- 128 - + 127
75.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
unsigned char
1 Bájt
0 - 255
signed int
2 Bájt
- 32768 - + 32767
unsigned int
2 Bájt
0 - 65535
signed long
4 Bájt
- 214783648 - + 214783647
unsigned long
4 Bájt
0 - 4294967295
float
4 Bájt
± 1,176E -38 - ± 3,40E +38
pointer
1 - 3 Bájt
változók címe
Az SFR és a bitcímezhet területek eléréséhez sbit
1 Bit
0 vagy 1
sfr
1 Bájt
0 - 255
sfr16
2 Bájt
0 - 65535
Memória elhelyezkedés szerinti deklarálás data
direkt címezhető belső memória
( 128 Bájt )
bdata
bitcímezhet belső memória
( 16 Bájt )
idata
indirekt címezhető belső memória ( 256 Bájt )
pdata
a külső memória egy lapja
( 256 Bájt )
( MOVX @Ri ,v) xdata
teljes külső memória
( 64 kBájt )
( MOVX @DPTR ,v ) code
program memória
( 64 kBájt )
(MOVC @A+DPTR ,v ) Ha kimarad a típus és memóriajelző, akkor a változó int típusú és a deklarált memória modell (SMALL, COMPACT vagy LARGE) dönti el az elhelyezést. 6 . 2 . O p e rát o ro k: Az operátorok jelölik ki a műveleteket, illetve logikai és szintaktikai elválasztásokat jeleznek. Þ Elválasztó {}
logikai blokkhatár
()
matematikai zárójelezés
[]
tömb indexelés
,
felsorolás
76.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Þ Aritmetikai +
összeadás
-
kivonás ( egy operanduszu előjel)
*
szorzás
/
osztás
%
maradék képzés
=
értékadás
<
nagyobb
>
kisebb
<=
nagyobb egyenlő
>=
kisebb egyenlő
==
egyenlő
!=
nem egyenlő
&&
ÉS
| |
VAGY
!
NEM
Þ Relációs
Þ Logikai
Þ Bit (bitenkénti logikai műveletek) &
ÉS
|
VAGY
^
KIZÁRÓ VAGY
<<
LÉPTETÉS balra
>>
LÉPTETÉS jobbra
~
EGYES komplemens
++
inkrementálás
--
dekrementálás
&
tár-cím
*
índirekció
->
mutató képző
:?
három operandusz ( ha: akkor ? egyébként )
sizeof
méretmegadás
Þ Speciális
77.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
6 . 3 . Ut a sí t á so k: A C programozási nyelvben kevés programutasítás van. Ezek meghatározott vezérlési szerkezetet határoznak meg. Þ
Utasítás típusok: ·
Ciklusszervező
·
Elágazást vezérlő
·
Ciklust módosító
6.3..1. Ciklu sszervező utasítá sok: ¨ for az alábbi folyamatábra szerinti ciklusok, kialakítását teszi lehetővé
1 .k ife je z é s
2 . k ife je z é s
Igaz?
C ik lu s tö rzs
Programozáskor az utasítást az alábbi formában kell használni: for ( 1.kifejezés; 2.kifejezés; 3. kifejezés ) {
ciklustörzs
}
az 1. kifejezésben kell megadni a ciklusváltozó kezdeti értékét,
3 . k ife je z é s
a 2. kifejezésben vizsgáljuk a ciklus végrehajtás feltételét ( ha a feltétel igaz, akkor végrehajtódik akkor vége a ciklusnak),
a 3. kifejezésben kell változtatni a ciklusváltozót. Példa: int i,j; j=0; for ( i = 0 ; i < 10 ; i++ ) { j=j+i; }
/* változók deklarációja */ /* értékadás */ /* ciklustörzs */
78.oldal
a ciklustörzs, ha nem
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
¨ while az alábbi folyamatábra szerinti ciklusok, kialakítását teszi lehetővé ( a ciklus elől tesztelt )
kifejezés
Programozáskor az utasítást az alábbi formában kell használni:
Igaz?
while ( kifejezés ) {
ciklustörzs
}
Ciklus törzs
a kifejezésben kell megadni a ciklus futásának feltételét, Ha kifejezés = 1, akkor a ciklus végtelen.
Példa: int i = 0, j = 6 ; while ( i < j ) { i += 3 ; j += 2 ; } /* while vége */
/* deklaráció, értékadás */ /* kifejezés vizsgálat */ /* ciklustörzs */
¨ do while az alábbi folyamatábra szerinti ciklusok kialakítását teszi lehetővé ( a ciklus hátul tesztelt )
do
Programozáskor az utasítást az alábbi formában kell használni:
C ik lu s tö rzs
do {
ciklustörzs
}
k ife je z é s
while ( kifejezés ) ; Ig az?
a kifejezésben kell megadni a ciklus ismétlésének feltételét, Ha kifejezés = 1, akkor a ciklus végtelen .
79.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Példa: int i , j ; i=0;j=6; do { i += 3 ; j += 2 ; } while ( i < j )
/* deklarációk */ /* értékadás */ /*ciklustörzs */ /* kifejezés vizsgálat */
6.3..2. Elágazást vezérlő utasítások ¨ if az alábbi folyamatábra szerinti feltételes programelágazást valósítja meg. Programozáskor az utasítást az alábbi formában kell használni: k ife je z é s
if ( kifejezés) Ig az?
{
igaz ág
}
Ha a kifejezés igaz, akkor hajtódnak végre az "igaz ág" Ig az ág
műveletei. Hamis értéknél a következő programcsoportra adódik át a vezérlés.
Példa: int i = 0; while (1 ) { i ++; if ( i == 12 ) break; } /* while vége */
/* végtelen ciklus */ /*A ciklus az i változót inkrementálja*/ /* Ha i = 12, a ciklus befejeződik */
¨ if-else az alábbi folyamatábra szerinti feltételes programelágazást valósítja meg. Programozáskor az utasítást az alábbi formában kell használni:
kifejezés i
Igaz ág ( if )
Igaz?
if ( kifejezés)
n
{
igaz ág
}
else
Hamis ág ( else )
{ hamis ág
80.oldal
}
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Ha a kifejezés igaz, akkor hajtódnak végre az "igaz ág" műveletei. Hamis értéknél az else utasítás utáni programrész ("hamis ág") műveleteire adódik a vezérlés. Példa: unsigned char data i; unsigned char bdata j; while ( 1 ) { if (i < j ) { i++ ; } else { i -= 5 ; } } /* while vége */
/* Végtelen ciklus */ /* if igaz ág */ /* if hamis ( else ) ág */
¨ else-if utasítás a feltételes programelágazások egymásba ágyazását segíti. A szerkezetet az alábbi folyamatábra szemlélteti.
if kifejezés
Igaz? i if igaz ág
Programozáskor az utasítást az alábbi formában kell használni:
n
else -if kifejezés
if ( if kifejezés) {
Igaz?
n
}
else-if ( else-if kifejezés ) { else-if igaz ág
i else-if igaz ág
if igaz ág
els-if hamis ág
else { else-if hamis ág }
81.oldal
}
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Példa: char data c; char idata j; if ( c>= '0' && c<= '9' ) { i = c - 48 ; } else if ( c >= 'A' && c<= 'F' ) { i = c - 55 ; } else { i = c - 87 ; } ¨ switch - case utasítás pár - egy változó értékétől
/* if igaz ág */ /* else-if igaz ág */ /* else-if hamis ág */ függő - több elágazás programozását
teszi lehetővé. Programozáskor az utasítást az alábbi formában kell használni: switch ( változó ) { case
1. érték :
1.művelet ; break ;
case
2. érték :
2.művelet ; break ;
case
n. érték :
n. művelet ; break ;
default:
egyébként ez a művelet ;
. break ;
} Az utasítás a változó értékét egymás után összehasonlítja a case -hez tartozó értékkel. Ha egyezik, akkor hajtódik végre a sorba irt művelet, és a további vizsgálat befejeződik. A default művelete csak akkor következik, ha a case sorok egyikével sincs egyezés. Megjegyzések: Þ A default sor elmaradhat, ilyenkor a következő utasítás végrehajtása következik. Þ Ha egy case n. érték: sorban nincs művelet; break; akkor ehhez az értékhez is a következő művelet tartozik.
82.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Példa: main()
/* Főprogram */
{ do {
/* hátul tesztelt ciklus */
ngm =~ *NGS; switch (ngm) { case 0x1: ldm = 0x1; break; case 0x2: case 0x6: case 0x4: ldm = 0x80; break; default: ldm = 0x0; break; } /* SWITCH vége */ LEDS =~ ldm; if(ng7==1) break; /* kilépés a ciklusból */ } while(1); /* végtelen ciklus , do-while vége */ } /* főprogram vége */ 6.3..3. Ciklu st mód osító utasítások A ciklus elhagyását, vagy egy ciklusrész kihagyását teszik lehetővé. Értelemszerűen feltételes szerkezetben használjuk. ¨ break utasítás az aktuális ciklus elhagyását vezérli. egy ciklus esetén
egymásba ágyazott ciklusoknál 1.ciklus feje . 2.ciklus feje . break; . 2.ciklus vége .
ciklus feje . . break; . . ciklus vége
1.ciklus vége .
83.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
¨ continue utasítás a ciklusfejre adja a vezérlést. ciklus feje . . continue; . . ciklus vége . Példa: for (i = 0; i <= ; i++) { if ( i == 5 ) continue; j = i; } 6 . 4 . A z é l ő f e ld o lg o zó (pre pr oc ess zor ) utasí tása i A forrásnyelvű program fordítása két lépésben történik. 1. Az elődeldolgozó (preprocesszor) készíti elő a végleges fordításhoz a szöveges fájlt, 2. a compiller hozza létre a tárgykódú *.obj fájlt. A preprocesszor részére is adhatók utasítások, melyek a fordítási időben fejtik ki hatásukat. Ezek az utasítások javítják a program olvashatóságát, rövidítik a forrásprogram hosszát, lehetőséget adnak előre definiált objektumok beillesztésére stb. A preprocesszor -nak szóló utasítások a # karakterrel kezdődnek, és mindig csak egy sort foglalhat le. Þ #define utasítással 1. előre definiálható konstans Pl.
#define konst_neve, érték #define ZERO 0 /* 0 helyett ZERO */ . char c; . . if ( c == ZERO ) /* Forrásszövegben ZERO */ { /* ZERO helyére 0 kerül */ . . } . 84.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
. 2. Előre definiált kifejezés-sor macro létrehozása A kifejezésben adott műveleteket a preprocesszor végzi el és egy számértéket ad csak át a compiller -nek. #define MACRO-NEV kifejezés Pl. #define max (a,b)
( (a) > (b) ? (a) : (b) ) /* macro definiálása */
. . int i,j; . max ( i,j ); .
/* macro hívása */
A preprocesszor csak az ( (i) > (j) ? (i) : (j) ) kifejezés kiértékelt értékét adja tovább. #undef azonosító utasítással megszüntethető a #define hatása a fordítás további részében. Þ #if, #else, #ifdef, #ifndef, #elif, #endif feltételes fordítási utasítások. Minden egyes feltételes fordítási blokkot az #endif kell lezárjon. Pl. #if kifejezés 2. #if kifejezés . . #endif #else . #endif
85.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
6 . 5 . Fü ggv én ye k A C programozási nyelv alapvető egységei a függvények. Megkülönböztetünk: · a rendszer részét alkotó könyvtári, és · a programozó által irt felhasználói függvényeket. (A LIB.EXE program segítségével a felhasználói függvények is beszerkeszthetők könyvtárba.) A felhasználói függvények kitüntetettje a main ( ) , amely a program un. vezető függvénye ( a főprogram ). A függvényeknek vannak paraméterei és típusa. · paraméter a függvény bemenő változóinak az értéke, · típusa a visszaadott változó típusa. Azok a függvények, amelyek nem adnak vissza értéket a void típusúak. 6.5..1. Függvények definíciója és deklarációja Definíció a függvény megírása. Általánosan a függvény az alábbi felépítésű: típus fv_név ( paraméter_azonosítók) paraméter_deklarációk ; { belső változó_deklarációk; függvénytörzs return (visszaadott_érték); } * típus a visszaadott érték típusa, * paraméter_azonosítók: a függvény bemenő változók nevei, (a függvénytörzsben ezekkel a nevekkel kell hivatkozni az átadott értékekre), * paraméter_deklarációk: az átadott paramétereket deklarálják típus szerint (még a kapcsos zárójel előtt),
86.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
* belső változó deklarációk: csak a függvény által használt (és "látott") változók deklarálása, * függvénytörzs: tartalmazza az utasításokat, az esetleges függvényhívásokat, melyek a kívánt funkciókat végrehajtják, * visszatérési érték: a hívónak visszaadott érték (ha a fv. void típusú, akkor a return ( ) nem kell !). Deklaráció a fordító részére nyújtott információ a függvény jellemzőiről. típus fv_név ( paraméter_típusok ); (Elégséges csak az átadott paraméterek típusainak a felsorolása.) A függvény-deklaráció mindig előzze meg a definíciót. Így lehet az adott modul elején, vagy egy " xy.h " un. include hader fájlban. A függvényeket direkt módon, vagy indirekten - mutató segítségével - hívhatjuk. · direkt
k = anal ( cs );
/*k-ba visszaadott ért.*/
· indirekt
int (*fvpnt) ( );
/*fv-re mutató pointer*/
fvpnt = anal;
/* pointer értékadása */
k = (*fvpnt) ( cs );
/*k-ba visszaadott ért.*/
A függvények speciális változatai a megszakításokat kiszolgáló rutinok. Deklarációjuk: void I_T0 (void) interrupt 1 using 2 { függvény-törzs; } A megszakítás kiszolgálásához nem célszerű a paraméter átadás, illetve a függvénytípus deklarálása. Mindkét helyen a void megadása szükséges. Az interrupt n direktíva adja meg, hogy melyik sorszámú (n) megszakítás kiszolgálását végzi a rutin. A using x direktíva segítségével kijelölhető - 0 £ x ³ 3 között - a rutin által használt regiszterbank. Általában nem szükséges a regiszterbank kijelölése. Csak speciális felhasználásoknál célszerű elkülöníteni a csak megszakítás kiszolgáláshoz használandó bankot.
87.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A megszakítást, kérő bitet törölni kell!! Csak az időzítésnél hagyható el! Ilyen felhasználásnál a rutin meghívásáig biztosan jön egy újabb órajel (fq/12), és ezzel megszűnik a megszakítást kérő bit, a használt időzítő (T0 vagy T1) túlcsordulása. A compiller automatikusan beiktatja a használt regiszterek stackbe mentését, illetve visszahívását, és RETI utasítással fejezi be a rutin kódolását! A következő részben néhány példával szemléltetjük a függvények deffinicióját, illetve használatukat. 6 . 1 . P é ld a : 1. Az alábbi függvény az I80C552 mikrokontroller adott analóg csatornájára jutó feszültség értékét adja vissza szavas (int) alakban. # include
/*Az
SFR regiszterek tartalmazó include fájl */ /* A függvény deklarációja */
extern int anal ( char ); int anal( cs ) char cs; { unsigned int i,j; ADCON = 0x08|cs; do { ACC=ADCON; } while( ADCI != 1 );
deklarációját
/* A függvény definíciója */
/* Indítja a "cs" csatornát*/
/* A konverzió vége ? */
i= ADCH; j=(ADCON)&0XC0;
/* Mért érték kiolvasása */
i =_irol_ (i,2); j = _iror_ (j,6); i = j+i;
/* Szám konverzió */
ADCON = 0; return ( i ); }
/* Uj méréshez előkészítve */
2. Feladat, hogy a PC klaviatúra egy gombjának lenyomására mérje le a 8 analóg csatorna jelének értékét. A mért értékeket tárolja el a belső memóriában, és ugyanakkor irja ki a képernyőre táblázatosan. /*
Analóg beolvasás
*/
#include #include #include <stdio.h> extern int anal(char);
/* az anal fv. deklarációja */
88.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
main() { while(getkey( ) != 'K' ) /* mérés inditás, K kilép */ { unsigned int data *ert; /* letétel helyére mutat */ unsigned int cs = 0; /* csatorna száma*/ int k; /* visszakapott érték tárolója*/ ert=MER; /* kezdőérték */ printf("\n"); /* soremelés */ printf(" Új mérés\n"); /* táblázat feje */ printf("Csatorna Mért érték\n"); for (poz=0;poz<=7;poz++) { k=anal(poz); *ert=k; * lehelyezés */ printf(" %u. %d \n",poz&0xff,*ert); /* kiir */ ert++; /* következő hely */ } /* for vége */ } /* while vége */ } /* main vége */
3. A T0 időzítő/számláló valósidejű késleltetőként -i használatának inicializálása astabil frekvenciagenerátorként (2 üzemmód). void m_inic(void) { TMOD=(TMOD&0xf0)|2; TH0=63; TR0=1; ET0=1; EA=1; }
4. Megszakítás rutin, amely LEP számú megszakítás után az ID_B bitet 1-be állítja. Előkészíti az újabb késleltetést a kesl=0 művelettel. void I_T0 (void) interrupt 1 { if(++kesl==LEP) {kesl=0;ID_B=1;} }
5. Megszakítás rutin ütemgenerátor létrehozásához. A megszakításokat a kesl1 szóban számlálja. A kesl2 tartalmazza az aktuális végszámot, Az ütem aktuális száma van az utm (ütemszámláló) bájtban. void MT0 (void) interrupt 1 { switch(utm) { case 1: case 3: kesl2=50000;break;
89.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév case 2: case 4: kesl2=20000;break; default: kesl2=8000;break;
} if(++kesl1>kesl2) {IDB=1;kesl1=0;} }
A rutin az 1. és a 3. ütemben 50000, a 2. és a 4. ütemben 20000, többiben pedig 8000 megszakítás után állítja - a késleltetés leteltét jelző – IDB bitet 1-be. Tetszőleges ütemszámhoz írható hasonló ütemgenerátor!
90.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
6.2.
1. félév
P rog ra m f ej l e s zt ői k ö rn y e zet e k
A fejezetben a 8051/31 mikrovezérlő család, valamint a három ismertetett PLC programjainak fejlesztéséhez alkalmazható integrált környezet alapjainak megismerését segítjük. Miután az adott logikai vezérlők különböző cégek gyártmányai, természetes hogy a fejlesztői programcsomag is más és más. Ugyanakkor felépítésükben, használatukban nagyon sok a hasonlóság. Itt a közös jellemzőket emeljük ki a teljesség igénye nélkül. Közös jellemző a jól használható un. project ablak. Az ablakban a teljes program-állomány felépítését tekinthetjük át. Itt az egérrel kattintgatva választhatók a különböző műveletek. A környezetekben – az alább felsorolt - programfejlesztés lépések is közel azonosak. A programfejlesztés lépései: a. A programokat és programkörnyezetet tartalmazó projekt létrehozása és letétele a háttértárra, b. az alkalmazandó hardver konfiguráció beállítása, c. a változók deklarálása és forrásállományok megírása, hozzárendelése a projekt –hez. Mindegyik programcsomag nagyon jól használható, példákkal is bőven ellátott Segítő (Help) szolgáltatással rendelkezik. A fejlesztősnél a Help használata megkönnyíti a munkát, illetve segíti a tevékenység begyakorlását. A 8051/31 mikrokontroller bázisú mikrogépek assembly, és C nyelvű program fejlesztése, programellenőrzése és futtatása végezhető a Keil Electronic szoftver cég µVision4 elnevezésű integrált programfejlesztői környezetében. Az indítóikon:
Az OMRON cég fejlesztő programcsomagja a CX-Programmer. Azonos néven frissített és továbbfejlesztett változatai használhatjuk. Az indítóikon
A Schneider Electric ajánlott programcsomagjainak legutolsó változata a Unity Pro XL. Az indítóikon
A Siemens PLC család programjainak fejlesztéséhez alkalmazható a Simatic Step7 programcsomag. Az indítóikon
91.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A felsorolt PLC programfejlesztésére ismertetett fejlesztői környezetek mindegyikével készíthető az öt szabványos PLC nyelven (LD – létra diagram, FBD – funkció blokk diagram, IL utasítás lista, SFC sorrendi funkció rajz (gráf) és ST – strukturált szöveg) program. Hangsúlyozni kell, hogy ma a programfejlesztés nem gyártó specifikus!. Bármelyik logikai vezérlővel kívánunk egy irányítási feladatot megoldani, mindig azonosan kell elvégezni a logikai tervezést. A Digitális Technika II. tantárgyban ismertetett eljárásokat a PLC programozásnál is célszerű alkalmazni. Ugyanakkor új elem, hogy egyazon program különböző programrészei (szegmensek) más-más programozási nyelven írhatok. Az hogy mikor melyik nyelvet célszerű alkalmazni a feladat jellege, strukturáltsága alapján már a logikai tervezés során kell eldönteni. Csak egy példa, hogy a sorrendi vezérlések programozásához nagyon jól alkalmazható az SFC. Az ismertetett programozható vezérlők mindegyikénél a program strukturált. Az egyes programegységeket különbözőként nevezik, úgymint task, szekció, objektum stb. Külön egységekként írhatók a különböző típusú megszakításokat kiszolgáló programrészek is. A programírás lépései: Ø az új project megnyitása, Ø a hardver konfiguráció kiválasztása, Ø a feladatnak megfelelő programszerkezet meghatározása, Ø a globális és lokális változók deklarálása, a szimbólum tábla megírása, Ø a programegységek forrásállományának a kiválasztott nyelven történő megírása. A programfejlesztéshez természetesen hozzátartozik a szimulációs (offline), és a valósidejű (online) tesztelés. Az integrált fejlesztői programcsomagok – eltérő szolgáltatásokkal és formával – de alapvetően tartalmazzák ezeket a szolgáltatásokat. A továbbiakban bemutatjuk az egyes programcsomagok képernyő képét. Néhány mondatban és példával szemléltetjük a fejlesztés első lépéseit. 6.2..1. A 8051/31 család p rogramfej lesztői környezete A szoftver indítóikonjára kattintva először a mellékelt kép jelenik meg. Néhány másodperc múlva láthatjuk meg a 63. ábrán láthatóhoz hasonló képet.
92.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A fejlesztő program menüszervezésű. A menüsor alatt – a műveletek gyorsítása érdekében a leggyakrabban használt műveletek ikonjai helyezhetők el, és így kattintással indíthatók. Három fő egysége környezetnek: - a menük és vezérlő ikonok, - a project ablak, és - a munkaablak.
Menük és vezérlőikonok
Project ablak
63. ábra
Munka
Megjegyzés: A mutatott üres ablak csak akkor jelenik meg, ha az előző használatot úgy fejeztük be, hogy a fejlesztett project -et bezártuk. Egyébként „emlékszik” a rendszer a legutolsó munkára. A továbbiakban csak az új programcsomag fejlesztésének lépéseit mutatjuk be. Az új fejlesztés a Project menüből kezdeményezhető (64. ábra).
93.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
„Új” menüpont
64. ábra A megnyitott új fejlesztés project állományát tárolni kell. A 65. ábrán a minta könyvtárba elso néven mentjük azt.
A mentést követően a hardverválasztást automatikusan felkínálja. A 66. ábrán a Philips 552 típusú mikrokontrollerének választása látható.
65. bra Az ablak bezárása után a megnyitott projekt ablakban (67.ábra)
á
látjuk az eddigieket
Projekt beállítások Modulok összeállítása 66. ábra 94.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
67. ábra A „Projekt beállítások” ikonnal nyitható meg a 68. ábra szerinti ablak, ahol állíthatók be többek között a programmodulok címei, fordítási és szerkesztési direktívák, valamint a szimulációs, vagy valós idejű ellenőrzés (Debug) feltételei.
68.
ábra
A „Modulok összeállítása” ikonnal magnyíló ablakban (69. ábra) a feladat programmoduljainak összeállítása végezhető. Az egybekapcsolt részek a fordítását, szerkesztését együtt hajtják végre a megfelelő parancsok.
69.
ábra
Az egyes programmodulok írására szolgáló editorok (assembly, C), a fordítás, valamint programellenőrző (szimuláció, valós idejű) funkciókat a mérési gyakorlatokon kell megismerni és használni.
95.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
6.2..2.
1. félév
CX-Programmer
Az OMRON PLC -k programozásához alkalmazható ez a fejlesztői környezet. A 70. ábrán egy programrész létra diagramban írt forrása látható
a
területen.
munkaA
felső
sorokban láthatók a menük,
a
vezérlő,
beállító ikonok nagy választéka,
valamint
baloldalon a project ablak. Itt a „Sorompo1”
elnevezésű
program
felépítését
láthatjuk. 70. ábra Tekintsük át, hogyan kell megnyitni egy új feladat programozását. 1.
A fejlesztői program megnyitása után megjelenő menükínálatból (71.ábra) a File menüből válasszuk a New pontot. 71. ábra
2.
Az új megnyitása után – a 72. a. b. c. ábrák szerinti ablakban - kell megadni a feladathoz használt PLC azonosítóit, nevet, CPU típust, kommunikációs hálózatot. A név legyen „Parkolóház” A CPU választásnál a CJM1 típus mellett ki kell választani (Settings) a CPU23 változatot.
96.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
a.
b.
c. 3.
72. ábra Ezek után kell megadni a használt illesztő áramköröket, vagyis meghatározzuk a teljes hardver konfigurációt. A 73. ábrán mutatjuk a beállítás menetét. Az a project menüből az IO Table and Unit Setup pont kiválasztása után a [0000] Main Rack menüpont megjelenik a rack lehetséges modul-helyei (slot). Itt egy üres slot -ra kattintva kínálja fel a program a választható modul választékot. A Basic I/O menüpont alatt kapjuk a diszkrét be-, kimeneti egységek választékát, amelyből kijelölhetjük a beillesztendő modult.
97.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
73. ábra. 4.
A konfiguráció beállítása után – az előre megtervezett – programstruktúrát kell kialakítani. A 74. ábrán követhetjük a műveletsor egyes lépéseit. Először a Programs menüben adható meg minden új modul, másképpen task. A tulajdonságok – név, task típus (a példában ciklikus task) stb.- beállítása után következik a taskon belüli almodulok szekciók kiválasztása.
98.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
74. ábra Az eljárás végén a Sorompo1 szekció megnyitása után – a választott programnyelv – editora nyílik meg. Itt írhatjuk meg a forrásállományt.
99.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
6.2..3.
1. félév
Schneider Elect ric Unity Pro XL
A Schneider Electric PLC -k programozásához alkalmazható a Unity Pro XL fejlesztői környezet. A kiválasztott készülékek programja a környezetben fejleszthető, szimulálható, és valós idejű tesztelés is végezhető. A 75. ábrán a „Sorompo1” elnevezésű
programrész
létra diagramban írt forrása látható a munkaterületen. A felső sorokban találhatók a menük, a vezérlő, beállító ikonok nagy választéka. A baloldalon van a project ablak. Itt a teljes project felépítését láthatjuk. 75. ábra Tekintsük át, hogyan kell megnyitni egy új feladat programozását 1.
A fejlesztői program megnyitása után megjelenő menükínálatból a New ikont, vagy a File menüből a New pontot válasszuk.
2.
Az új megnyitása után, a megnyíló ablakban (76. ábra) kell kiválasztani a feladathoz használt M340 típusú készülékcsalád CPU típust. A választásunk a BMX P34 1000 legyen.
76. ábra
100.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
3.
1. félév
Ezek után kell kiválasztani hardver konfigurációt A konfigurálást a rack kiválasztásával kell kezdeni. A 77. ábra képein keresztül követhetjük a műveletet. A 0:PLC bus pontot választva jelenik meg az alkalmazható legnagyobb rack képe, amelyben már a tápegység és a CPU egység benne van. A feladathoz szükséges rack beállításához a rack képének bal oldalán 0-val jelölt fülre kattintva kapjuk a választási lehetőségeket. Itt a szükséges slot számú modulra kattintva fejeződik be a beállítás.
77. ábra A következő művelettel kiválasztott rack egyes helyeire (slot) kell megadni az illesztő modulokat. A lépések a 78 ábrán követhetők
101.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
78. ábra 4.
A konfiguráció beállítása után – az előre megtervezett – programstruktúrát kell kialakítani. A 79. ábrán követhetjük a műveletsor egyes lépéseit.
Először a Programs menüben adható meg minden új modul, másképpen task. A tulajdonságok – név, task típus (a példában ciklikus task) stb.- beállítása után következik a taskon belüli almodulok szekciók kiválasztása.
102.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
79. ábra
103.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
6.2..4.
1. félév
Siemens Step 7
A STEP7 környezetben végezhetők a SIEMENS PLC -k programozása. A 80. ábra szemlélteti a programozás
egy
részletét.
A
következőkben a Step7 környezetben
követjük
végig egy új feladatot megoldó projekt programfejlesztésének kezdő lépéseit.
80. ábra 1.
A fejlesztői program megnyitása után ne a Projekt Wizard –ot használjuk, hanem a a File menüből válasszuk a New pontot.
81. ábra
104.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A megnyíló ablakban (81.ábra) kell megadni a projekt helyzetben a
nevét és a könyvtárat. Alap-
…\step7\s7proj könyvtárat kínálja fel a program. A Browse gomb
aktiválásával új könyvtárat is választhatunk.
2.
Az új project megnyitása után kell kiválasztani az alkalmazott PLC „állomást”, most a SIMATIC 300 Station –t. A kiválasztás menete a 82. ábrán követhető. A megnyíló ablakban – a megadott project névre jobb gombbal kattintva –az új Object (Insert New Object) kiválasztása után adjuk meg a szükséges állomást!
3.
82. ábra Ezek után ki kell választani az illesztő áramköröket, vagyis meghatározzuk a teljes hardver konfigurációt. A műveletsor lépései a következők?
§
A kiválasztott PLC Station –nál a jobb oldalon találjuk a Hardware menüt.
§
A megjelenő üres ablakban jelenítsük meg a katalógust a Wiew menü Catalog kiválasztásával.
§
Innen lehet először a rack -et (rail), majd a tápegységet kell beszúrni.
§
A CPU és azt követően az illesztő modulokat kell elhelyezni a rack –en (83.ábra) .
105.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
83. ábra
106.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
84. ábra 4.
A konfiguráció beállítása után – az előre megtervezett – programstruktúrát kell kialakítani. A 85. ábrán követhetjük a műveletsor egyes lépéseit. A konfiguráció felvétele után már S7 Program menü is van. Ebben felkínált OB1 operációs blokk a ciklikus működést biztosítja. Ebbe kell elhelyezni a ciklusban működtetett program blokkokat. Az egyes blokkok különböző nyelven is programozhatok.
107.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
85. ábra Az OB1 – ben közvetlenül is írhatunk programot LD, FBD és STL (IL) nyelveken. Ugyanakkor be is szúrhatunk funkciókat (FC). Funkció Blokkokat (FB) valamint adatblokkokat.
6.3.
A P L C – k p ro g ra mo zá si n y e lv ei
A fejezetben röviden áttekintjük a Programozható Logikai Vezérlők programozási nyelveinek fejlődését. Részletesebben ismertetjük az IEC1131-3 szabványnak megfelelő programnyelveket 6.3..1.
A PLC típu son kénti p rogramozás
A PLC -k fejlesztésének, illetve alkalmazásuknak kezdeti szakaszában cca. 1968 – 1993 között a gyártó cégek saját programozási környezetet, valamint ehhez illeszkedő nyelveket
108.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
használtak. Bizonyos fokig már ezek között is volt hasonlóság. Mindegyik változatban használták a Þ létra-diagramot, az Þ alapvető funkcionális blokkokat, valamint az Þ utasítás listát. Az Intézet oktatásának keretében a hallgatók megismerkedtek az Omron, a Schneider Electric,
a Siemens cégek
programozható
vezérlőinek
alkalmazásával,
valamint
programozásukkal. A PC-k megjelenése (1981) előtt – a PLC -khez soros vonalon illesztett - programozó készülékeket (bőröndöket) alkalmaztak. A MODICON készített először képernyőn, grafikus szimbólumokkal programozható készüléket a P180, és a P190 típusúakat, amelyek CP/M rendszerben – Intel 8080 mikroprocesszorral – készültek. Jelentős változást a PC-k alkalmazása eredményezett. A kompatibilis személyi számítógépeken futtatott integrált programfejlesztői környezeteket alkalmazták, illetve ma is sok helyen alkalmazzák Az első változatok még DOS környezetben futottak. Az elmúlt mintegy másfél évtizedben a Windows, illetve Unix operációs rendszerekben futó fejlesztői programok hódítottak teret. A multitaskos programfuttatás biztosítja a segítség (Help), és egyéb szolgáltatások, pl. adatbázis módosítás valós idejű alkalmazását. 6.3..2.
A PLC p rogra mozási nyelvek szabványosítása
A PLC -k széleskörű elterjedése az automatizálásban szükségessé tette a különböző nyelvek, programozási eljárások szemléletbeli közelítését, vagyis egy nemzetközi szabvány-ajánlás létrehozását. Az IEC1131-3 nemzetközi szabványt 1993-ban alkották meg, amely az alábbi 5 nyelvet szabványosított
Ladder Diagram (LD)
-Létra diagram szimbólumokkal
Function Block Diagram (FBD)
-Funkció blokkos programozás
Instruction list (IL)
-Utasítás lista írása
Sequence Function Chart (SFC)
-Gráf jellegű programozás
Structured Text (ST)
-Strukturált szöveg magas-szintű nyelv
109.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A jelentősebb PLC gyártók (Allen-bradley, Omron, Schneider - Electric, Siemens) a saját készülékeikhez alkalmazható fejlesztői környezeteket kifejlesztették. A tantárgy első félévében az LD, FBD, IL és az SFC nyelveken történő programozással foglalkozunk. Megjegyzés: Siemens cég az egyes programozási nyelveket más elnevezéssel használja. Az IL elnevezés helyett az STL, az SFC helyett Graph, míg z ST helyett SCL. 6.3..3.
A lét radiagram az LD (Ladder Diagram) nyelv.
Az LD programozási nyelvet tulajdonképpen mindegyik PLC, már a kezdetektől használja. A szabványosítás a jelölésekre vonatkozik elsősorban. Az egyes gyártók által fejlesztett programozói környezetek funkció-jelölései között csekély az eltérés. Ø Az LD nyelv a bites-logikai függvények programozásához az un. áramút-terveknél használt relé-logikai szimbolumokat használja. Minden fejlesztői környezetben közel azonosan használt szimbólumok: A programozott logikai függvény független változóihoz használt szimbolumok a változó címével (Addr). 1 értékénél zár
0 értékénél bont 0-1 (pozitív) értékváltásakor egy ciklusig 1 értékű 1-0 (negatív) értékváltásakor egy ciklusig 1 értékű
A programozott logikai függvény függő változóihoz használt szimbolumok a változó címével (Addr).
A függvény 1 értékénél aktív A függvény 0 értékénél aktív
110.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Összetett funkciót ellátó „kimeneti” szimbólumok: A címzett bit beírása A címzett bit törlése A címzett bit 0-1 váltásakor a szimbólumot követő „vonalon” egy ciklusig 1 értéklesz. A címzett bit 1-0 váltásakor a szimbólumot követő „vonalon” egy ciklusig 1 értéklesz. Aktíválakor rutint (funkció blokk) hív. A szimbólumok soros, párhuzamos összekapcsolásához használhatók a „vonalak” Vizszintes csatolás Függöleges csatolás Esetenként önállóan rajzolható vonallal is történht az összekapcolás. Ø A bájtos, szavas logikai-, és aritmetikai függvényeket blokk –ként kell megadni. A blokk általános jelölése egy keret, amelynél kívül, és belül vannak jelölések. - a blokk felett van a blokkazonosító, - a keretben a funkció és a be-, kimenetek megnevezés van, - a bemenetek (független változók) a keret bal oldalához, - a kimenetek (függő változók) a keret jobb oldalához csatlakoznak. Kitüntetett funkciója van az EN és ENO jelű be-, és kimenetnek. Az EN (Enable) bemeneten lehet 1-el (zárt áramút) engedélyezni, 0-val (szakadás) pedig tiltani a funkció végrehajtását. Az ENO (Enable out) kimenethez további blokkok csatlakoztathatók. Ilyen modon több funkció feltételes végrehajtása programozható. A blokk ttulajdonságainál állítható, hogy látszonak-e az EN és az ENO. Amennyiben látszanak, akkor az EN bemenethez kell csatlakoztatni feltételt. A 86. ábrán példát láthatunk blokk alkalmazására. Az a. ábrán a TON (bekapcsolás késleltető) hívása látható. Itt van szerepe az engedélyezésnek. A késleltetés csak akkor indítja az IND változó 1 szintje, ha az ENG változó is 1. A PT (Preset Time) bemenethez
111.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
időváltozót kell adni konkrét értékkel, vagy memóriahivatkozással. A Veg változó értéke 1 lesz, amikor letelt a késleltetés és az IND=1. Az IDO jelű memória szóban a „futó” idő van.
a.
b.
86. ábra A b. ábra egy előre-hátraszámláló (CTUD) alkalmazását mutatja. Itt nem használjuk a számlálás feltételhez kötését. A blokkon belüli azonosítók mutatják a bemenetek-kimenetek funkcióit. A CU, CD számláló, az R törlő, az LD betöltő bites bemenetek. A PV (Preset Value) bemenetre adott Kap értéke, határozza meg a számláló kapacitását, amit az LD tölt be. A QU, QD bit típusú kimenetek a megfelelő irányú túlcsordulást jelzik. A Szam változóban követhetjük a számláló pillanatnyi tartalmát. A 87. ábra egy adott logikai feladat LD -ben írt programjára mutat példát. A Tart jelű bitet a Be változó 1-be, míg a Ki változó 0-ba írja. A Tart bit beírása indítja az FBI_1 bekapcsolás késleltető számlálót. 3 sec elteltével lesz aktív a Lamp változó.
87. ábra
112.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A következőkben áttekintjük, hogy a megismert fejlesztői környezetek LD editorainak használatát. 6.3..4.
Az FBD (Function Block Diagram) nyelv.
Az FBD nyelvben a bites logikai műveletekre is – az ismertetett felépítésű – blokkok használhatók. A legfontosabb bites logikai műveletek blokkjai:
Három bemenetű ÉS kapu
NOT Tagadás
Két bemenetű XOR kapu
Négy bemenetű VAGY kapu
A megfelelő könyvtárakban minden funkciót végrehajtó blokk kiválasztható. A blokkok megfelelő ki-, és bemeneteit kétféle megoldással lehet összekapcsolni. Egyik a vonallal történő összekötés. A másik estben a blokk csatlakozási pontjához írjuk az alkalmazott változó szimbólumát. A kettő vegyesen is alkalmazható egy kivétellel. A 88. ábrán látjuk hogyan tiltott az és engedélyezett az összekötés.
tiltott
megengedett 88. ábra
113.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az 89. ábrán – az LD -ben programozott feladat (63.ábra) – FBD programozású változatát látjuk.
89. ábra 6.3..5.
Utasítás li stás IL (In st ructi on Logic) nyelv
Az IL nyelv tulajdonképpen assembly programozási nyelv. Az alábbi táblázatban foglaltuk össze a műveleti utasításokat (operátor) és jelentésüket. A „Módosító” mutatja, hogy az alapjelölés bővítését. Az N a tagadás, pl. LD ill. LDN . A zárójellel csoportba foglalhatók ú az ezt követő utasítások. A C, ill. a CN a Carry bitre utal és csak BOOL típusú változónál használható. Jelölés LD ST S R AND OR XOR NOT ADD SUB MUL DIV MOD GT GE EQ NE LE LT CAL JMP RET
Jelentés Behoz Kivisz Beír Töröl ÉS VAGY Kizáró VAGY NEM Összead Kivon Szoroz Oszt Maradék képzés Nagyobb Nagyobb - Egyenlő Egyenlő Nem Egyenlő Kisebb - Egyenlő Kisebb Funkció hívás Feltétel nélküli ugrás Visszatérés 114.oldal
Módosító N N N, N (, ( N, N (, ( N, N (, ( ( ( ( ( ( ( ( ( ( ( ( ( C, CN C, CN C, CN
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az operátorok után kell írni a változók azonosítóját (szimbólum vagy cím), illetve zárójelek között a művelet csoportot, amire az utasítás vonatkozik. Függvények, funkció blokkok hívás formája: CAL f_név (függvény paramétereinek értékadás). Az előzőekben már ismert feladat (63.ábra) IL nyelvű programlistája: LD OR ANDN ST
Be Tart Ki Tart
(* A tart vezérlése *)
CAL
FBI_2 (In := Tart, PT := t#3s, Q => Lamp ) (* a késleltető hívása *)
Megjegyzés: a Siemens Step7 programozói környezet nem használja az LD és az ST operátorokat. A három alapnyelv egymásba átkonvertálható. Az Automatika II. tantárgyban az S7 programozását részletesen tárgyalták. A fejezetben erre nem térünk ki részletesen. (Jegyzet Dr Tverdota Miklós: Automatika II/2) 6.3..6. Az SFC (Sequential Function Chart) nyelv A sorrendi vezérlések tervezésénél már ismertettük az állapot-gráf segítségével való működési leírást. Emlékeztetőül nézzük meg az állapotgráf felépítését. A 90. ábrán látható állapotgráf -ot elemezzük. X0, X3 Y
X
X Y 3
X2 X1
X1
0
X
Y1 Z
X3
X1, X2,
X0
Y 2
X0, X1, 90. ábra A gráfból leolvasható, hogy a szekvenciális hálózatnak négy állapota (ütem, lépés, step) van. Az ütemekben kiadott állapotkombinációk (állapot azonosítók) Y0, Y1, Y2, Y3. A bemeneti kombinációk X0, X1, X2, X3, és a kimeneti jelkombinációk (akciók) Z0, Z1, Z2, Z3 száma is négy. Vizsgáljuk az Y2-vel jelzett állapotot. Ebből az állapotból csak az X2 bemeneti jelkombináció a hálózatot új állapotba vezérli, míg az X0, X1 és X3 nem. Az hogy
115.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
minden állapothoz csak egyetlen kimeneti kombináció tartozik, utal arra, hogy a megvalósítás Moore modell szerinti. Az SFC egy grafikus programozási nyelv, amely az állapot-gráfhoz hasonlóan írja le a sorrendi folyamatot. Az egyes cégek fejlesztői környezeteiben kissé eltérőek az alkalmazott szimbólumok, a fejlesztési lépések. Mindezek ellenére az alapvető szemlélet azonos. Megjegyzés: Siemens STEP 7 programozó szoftverben az grafikus sorrendi programot GRAPH -nak nevezi, mivel az SFC rövidítést már használja a rendszer függvények (System Function Control) megnevezésére Az SFC programozási nyelv „eredete” a Telemecanic cég Graf-cet elnevezésű grafikus programfejlesztő nyelve. Az SFC nyelv alkalmazásával minden típusú – egy-, és több szekvenciájú vezérlés programja viszonylag könnyen fejleszthető. A következőkben a „nyelv” elemeit, a programozás lépéseit foglaljuk össze. A fejezet befejezésében példákon mutatjuk be a különböző fejlesztői környezetekben, hogyan kell programot fejleszteni. A 91. ábrán az előzőleg megrajzolt állapotgráfos függvénymegadás SFC nyelvű „programja” látható. Külön jelöltük az alapvető funkciókat. Inicializáló ütem
Elágazás
Ütem Akciók
Ütemváltás
Ütem
Ütemváltás feltétele
Ugrás az adott ütemre
91. ábra
116.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A továbbiakban tekintsük át az egyes elemek funkcióját, valamint a megismert fejlesztői környezetbeli eltérő jelölésüket. Ø
Az SFC nyelv elemei
1. Állapototk Az állapotgráfos leírásnál az egyes ütemeket (állapot) körrel jeleztük. A PLC-s programozásnál – szoftverenként kissé eltérően – egy téglalappal adják meg az egyes állapotokat (92. ábra). Step 7 jelölés (Siemens)
Unity Pro XL jelölés (Schneider)
Programmer jelölés (Omron)
92. ábra A három fejlesztői környezetben különböző az álllapot azonosítása. A baloldali ábrák szemléltetik, hogyan jelenik meg a beíráskor az ütem jele, amelybe automatikusan beíródik a soronkövetkező ütemszám. Az azonosító megváltoztatható. A Step7-ben az S betű utáni számozás, és az ütem neve változtatható. A Unity és a Programmer jelölésekben csak egy azonosító szerepel, amely felülírható. A kettős határoló vonallal jelölt állapot az inicializáló ütem. Egy gráfban csak egyetlen inicializálás alkalmazható. 2. Akciók Akciónak azt a logika műveletet nevezzük, amit az adott ütemben a vezérlésnek végre kell hajtania. Az akciók lehetnek §
egy adott változót (bitet) módosító utasítás, vagy
§
logikai függvénnyel megadott művelet.
A megadható alapvető bit műveletek jelölése és funkciója a következő: Müvelet jele N S R
operandusz bit bit bit
D
time
bit
DS
time
bit
Az adott változóra vonatkozó művelet az ütem időtartama alatt aktív az ütembe lépéskor 1-be írja (SET) az ütembe lépéskor 0-ba írja (RESET) az ütembe lépés után t idő múlva válik altívvá, és az ütem végéig marad aktív (DELAY) az ütembe lépés után t idő múlva válik akltívvá (DELAY-SET)
117.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
L
1. félév
time
P0 P1
bit
bit bit
az ütembe lépéskor lesz akív, és t idő múlva válik inaktívvá az ütemből kilépéskor egy ciklusig aktív Az ütembe lépéskor egy ciklusig aktív
A felsorolt műveletek mindegyik környezetben alkalmazhatók. Megjegyzés: a SET és a RESET művelet hatása nem szűnik meg az ütem befejezte-kor, ezért egy következő ütemben kell az ellenkező utasítást kiadni. 3. Átmenetek (transition) Az átmenetek az állapotgráfos leírás nyilainak felelnek meg. Jelölésük – mindhárom fejlesztői környezetben – a 93. ábra szerinti. Csupán a szimbólumhoz rendelt feltételek jelölésében térnek el.
93. ábra 4. Elágazások Amikor egy állapotból több állapotba is lehet átmenet azt az állapotgráfban azzal jelöltük, hogy acsomópontból kiinduló nyilak más-más csomópontban végződtek. Az SFC jelöléseiben az állapot utáni vizszintes vonal, és abból kiinduló átmenetekkel adjuk meg. Kétféle elágazást különböztetünk meg. Az egy-vonalas az un. alternatív elágazás (94. ábra ), ami arra utal, hogy egy adott időpontban csak az egyik átmenet lehetséges. Amennyiben több állapotváltási feltétel is telejesül, akkor a balról első teljesül csak.
94. ábra
118.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A két-vonalas jelölést (95. ábra) a párhuzamos elágazás. Ilyen esetben mindegyik elágazásban adott akciók be kell fejeződjenek ( nem feltétlenül egyidejüleg ), és csak azt követően folytatódhatt művelet sor.
95. ábra 5. Ugrások Az ugrás azt mutatja meg, hogy az elötte lévő transitio feltételének teljesűlése után melyik ütem végrehajtása következik. A 96. ábrán mutattuk be, hogy a különböző softverekben ezt hogyan kell jelezni. Az a.ábra Step7, a b. Uniti és a c. a Programer. A Uniti programozásban is lkalmazható a vonalas összekötés.
a.
b.
c.
96. ábra A következőekben tömören ismertetjük azt, hogyan kell az egyes fejlesztői környezetekben megvalósítani az SFC (Graph) nyelvű programozást.
119.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
§
1. félév
Step7
Az adott állapothoz tartozó akciótáblázat egyik sorára kattintva a jobb gombbal jelenik meg a 97.ábrán látható táblázat. Innen választhato ki az új akció. A kiválasztás után kell beírni a megjelenő sorba az utasítást és az operanduszt.
97. ábra Az egyes utasítások kiválasztásában a Help nyújt segítséget. (Az operandusznál a beírás kezdetekor megjelenik a szimbólumtábla). A fejlesztői környezetben a leírtaknál több akció is progrramozható, amelyek szintén a Help-ből ismerhetők meg. Az akcióként funkció (FB) blokkok és egyéb függvények (FC,SFC) is hívhatók. §
Unity ProXL
Az adott ütemhez tartozó akciók megadásához elöszőr az ütemre kettőt kattintva megjelenik a 98. ábra szerinti ablak. A baloldali oszloban választható ki a művelet, mellette az időzítés (ha szükséges) majd a operandusz. A művelet a New action gommbal nyugtázható. Lehetőség van egy már beírt művelet módosítására, vagy törlésére.
98. ábra 120.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Amikor logíkai függvényben kívánunk akciót megadni, akkor a Section mezőt kell kiválasztani és a függvénynév megadása után írható (Edit Action Section) – a négy kiválasztható nyelv valamelyikén – a függvény. (99. ábra)
99. ábra A megfelelő nyelv kiválasztása és az „Edit Action section” gomb lenyomása után már a nyelv editorában szerkeszthető az új akció függvénye. §
Programmer
100. 121.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
101.
Ø
ábra
Példa az SFC nyelvü programozás alkalmazására
102.
122.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
103.
123.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
104.
124.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
105.
125.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
IV. R É S Z K o m b i ná c i ó s é s s o r re nd i v e z é r l é s e k p ro g r a m o z á s a
126.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
7.
1. félév
Ve zé rl é s e k p rog ra m o zás a
Minden irányítást működtető program fejlesztése körültekintő előkészítést, és precíz munkát igényel. Az eredményes fejlesztés alapvető feltételei: Ø
az irányítandó berendezések, a technológia,
Ø
az irányító berendezés,
Ø
a szoftver fejlesztői környezetének alapos ismerete, és
Ø
fejlesztői gyakorlat.
A fejezetben azokkal a módszerekkel foglalkozunk, amelyek segítségével, az előzőekben felsorolt ismeretekre alapozva eredményes lehet a feladat megoldása. 7.1.
A t e rv e zé s l ép é s ei
A programfejlesztés jól meghatározott tervezési lépések sorozata. A munka alapvetően két jól elkülöníthető, de mindenképpen egymásra épülő szakaszból áll, mégpedig: Ø
a vezérlés logikai tervezése,
Ø
a működtető szoftver megírása, tesztelése.
A második lépés, amennyiben a felhasznált programnyelvet már ismeri, akkor inkább gyakorlati, mint elméleti feladat. A tanulmányok során ezt szolgálják a laboratóriumi gyakorlatok. A jegyzetben a feladatot megvalósító algoritmus – működtető lépések – megtervezésének lépéseire tesszük a hangsúlyt. A programnyelvek, és fejlesztői környezetek megismerése más tantárgyak (Digitális technika, Programozási ismeretek, Informatika stb.) keretében is oktatásra kerültek. A feladatok két nagy csoportja, úgymint: Ø
a kombinációs, illetve
Ø
a sorrendi vezérlések
127.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
működtető programjainak fejlesztése. Mindkettőt - példákkal bemutatva – tárgyaljuk a jegyzet további fejezeteiben. 7 . 2 . K omb i n á ci ó s v e zé rl é s e k Az ipari vezérlések elenyésző hányadát alkotják a tisztán kombinációs feladatok, viszont ahogyan ezt már a korábbi tanulmányaikban is megismerhették, a sorrendi vezérlések is kombinációs részekből épülnek fel. A feladat alapos megismerése, megértése alapján kell a vezérlés programjának tervezéséhez kezdeni. 7.2..1.
A feladat változóinak m eghatározása
Legelső lépés a szükséges függő (bemeneti)-, független (kimeneti)-, és átmeneti (tárolt) változók meghatározása. Ennek keretében a változók pontos feladatát, dimenzióit célszerű egy táblázatba foglalni. A táblázat tartalmazza a szimbólumokat is, amelyek valamilyen formában utalnak a változók funkciójára is. 7.2..2.
A kiinduló adatok, m egadása, felvétel e
A használt változók kezdőértékeit, valamint a logikai kapcsolatot a függő-, és független változók között egyértelműen kell megállapítani a feladat – rendszerint – szöveges leírásából. Célszerű blokk-vázlat segítségével szemléletessé tenni a kapcsolatrendszert. Legcélravezetőbb a működési feltételek táblázatban való felírása. A Digitális technikában megismert igazságtáblázat a leggyakrabban használt leírási mód. Ebből kiindulva határozhatók meg a szükséges logikai függvények. 7.2..3.
A legegyszerűbb logikai függvény m eghat ározása
A függvényegyszerűsítési módszereket a korábbi tanulmányokból ismertek. Itt csak emlékeztetőként foglaljuk össze az eljárásokat. Ø
Algebrai úton
A kanonikus (diszjunktiv, vagy konjunktív) alakokból kiindulva kereshetők meg azok az egyműveletes (logikai szorzat, vagy összeg) egységek, amelyek között az eltérés, hogy az egyikben valamelyik változó egyenes (ponált), a másikban, pedig tagadott (negált) alakban szerepel. Ilyen esetben ez a változó elhagyható.
128.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
Ø
1. félév
Grafikus módszerekkel
Karnaugh táblázatok (minterm Kp, maxterm Ks) felhasználásával szemléletesen mutatják azokat a term - ket, amelyek csak egyetlen változóban térnek el egymástól. Így ezek csoportba foglalásával (lefedésével) határozhatók meg az egyszerűsített egységek a prímimplikánsok. Ø
Numerikus módszerrel
A logikai függvények legegyszerűbb leírása, amikor a változók érték-kombinációit (mintermek, vagy maxtermek) bináris számoknak tekintjük. Ehhez szükséges, hogy az egyes változókat a 2 hatványaiként súlyozzuk. Az összevonás alapja, hogy azok a kombinációk vonhatók össze, amelyek csak egy változóban térnek el egymástól, és súlyozott összegük különbsége kettő egészszámú hatványa. Az egyszerűsítési módszer Quin,- Mc Closkey eljárásként ismert.. A következő mintafeladaton mutatjuk be a numerikus (Quin,- Mc Closkey) eljárást, és ellenőrizzük a kapott eredményt a Digitális technika tantárgyban már megismert grafikus egyszerűsítéssel Kiinduló adatok ·
0 1 2 3 4 Változók és súlyozásuk A ¸ 2 , B ¸ 2 , C ¸ 2 , D ¸ 2 , E ¸ 2 ,
·
Megvalósítandó feladat a következő minterm -eket tartalmazza: K=
5
å ( 0, 4, 9, 13, 20, 22, 25, 26, 27, 31 )
X = ( 2, 6 , 16, 18, 29, 30 )
7.2..4. A numeri ku s eljárás bemutatása Az eljárás lényege, hogy azok a logikai szorzatok (összegek) összevonhatók, amelyek ·
egy változóban különböznek, és
·
indexeik különbsége 2 egész számú hatványával egyezik meg,
·
ekkor az a változó hagyható el (esik ki) amelynek súlya megegyezik a számolt különbséggel.
129.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
Ø
1. félév
Az egyszerűsítés lépései
Az alábbi lépésekre bontva végezhető el az összevonható logikai szorzatok (összegek) megállapítása: ·
A mintermek (maxtermek) csoportokba sorolása az indexben szereplő 1-ek száma szerint. ( 0, 1, ….n db 1 lehet egy n változós minterm (maxterm) indexében.). A feladatban szereplő mindegyik indexet – a közömbös kombinációkat jelölő X-es tényezőkét is - be kell írni.
·
A szomszédos csoportok – egy változóban különbözőek – indexeink különbségét kell kiszámítani, s ha ez 2 egész számú hatványa, akkor a két minterm összevonható. Ezt oly módon kell a következő oszlopban jelölni, hogy leírjuk a két indexet, és zárójelbe írjuk a különbséget. A különbségi érték adja meg a kieső változó súlyának a kitevőjét. Az összevonható egységeket jelöljük meg ( ˇ ).
·
További összevonás csak olyan szorzatok (összegek) között lehetséges. Amelyeknél az előző összevonásnál azonos változó esett ki ( a zárójelben lévő szám(ok) azonos(ak), valamint az indexkülönbség 2 egész számú hatványa. Ilyen esetekben az előző pontban leírtak szerint járunk el.
·
A kettes, négyes, nyolcas stb. összevonásokat addig kell folytatni, amíg ez lehetséges.
·
Az összevonható egységek kiválasztása után jelöletlenül maradt egységek, az un. prímimplikáns -ok, vagyis az egyszerűsített függvény elemi szorzatai (összegei). Ezeket más jelöléssel (pl. # ), valamint betűjelzéssel is el szokták látni.
·
A prímimplikáns -okból kell kiválasztani azokat, amelyekkel – a kiinduló feladat 1-it megadó indexű – mintermek (maxtermek) mindegyike megvalósítható. Az un. prímimplikáns táblázat segít ennek meghatározásánál. A táblázat oszlopaiba írjuk az 1-et megadó indexeket, a sorok pedig a prímimplikáns -ok. Soronként azokat a cellákat jelöljük meg, amelyek oszlop-indexe szerepel a prímimplikáns ba összevont indexek között.
A példában színes számozással különböztettük meg a különböző számú 1-et tartalmazó indexeket.
130.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1ek száma 0 1
2
1. félév
A
I
feladat
Első
termjei
összevonás
II Második összevonás
4 5
Harmadik összevonás
0ˇ
2,0
(2) ˇ
6,2,4,0
(4,2) ˇ
22,18,20,16,6,2,4,0
2ˇ
4,0
(4) ˇ
6,4,2,0
(2,4) ˇ
22,20,6,4,18,2,16,0 (16,2,4) ˇ
4ˇ
16,0 (16) ˇ
18,2,16,0 (16,2) ˇ
16 ˇ
6,2
(4) ˇ
18,16,2,0 (2,16) ˇ
6ˇ
6,4
(2) ˇ
20,4,16,0 (16,4) ˇ
9ˇ
18,2 (16) ˇ
20,16,4,0 (4,16) ˇ
18 ˇ
18,16 (2) ˇ
22,18,6,2 (4,16) ˇ
20 ˇ
20,4 (16) ˇ
22,18,20,16
20,16 (4) ˇ
3
III
(4,2,16) # e
22,18,6,2,20,4,16,0 (16,4,2) ˇ
Prímimplikáns -ok:
(4,2) ˇˇ
Négyes összevonások a ~ 29,13,25,9 (16,4)
22,20,6,4 (2,16) (2,4) ˇ
b ~ 30,22,26,18 (8,4)
22,18 (4) ˇ
29,13,25,9 (16,4) # a
c ~ 31,27,29,25 (4,2)
25 ˇ
22,20 (2) ˇ
30,22,26,18 (8,4) # b
d ~ 31,27,30,26 (4,1)
26 ˇ
25,9 (16) ˇ
30,26,22,18 (4,8)
27 ˇ
26,18 (8) ˇ
31,27,29,25 (4,2) # c
29 ˇ
27,25 (2) ˇ
31,27,30,26 (4,1) # d
30 ˇ
27,26 (1) ˇ
31,29,27,25 (2,4)
ˇ
31 ˇ
29,13(16) ˇ
31,30,27,26 (1,4)
ˇ
13 ˇ
13,9
22 ˇ
(4) ˇ
22,20,18,16
ˇ
Nyolcas összevonás e ~ 22,18,20,16,6,2,4,0 (4,2,16)
29,25 (4) ˇ 30,22 (8) ˇ 30,26 (4) ˇ 31,27 (4) ˇ 31,29 (2) ˇ 31,30 (1) ˇ
Azt, hogy mely prímimplikáns -okkal lehet megvalósítani a függvényt, ahhoz az un. prímimplikáns táblázat nyújt segítséget. A táblázat oszlopaiba kell beírni azon mintermek indexét, amely 1 értéket kell adjon, vagyis mindenképpen meg kell valósítani. A prímimplikáns -ok a sorok.
131.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
0
4
a
9
13
x
x
20
22
25
x
c d
x x
31
x
x
x
x
x x
x
27
x
b
e
26
x
x
Azokba a cellákba kell x-t (vagy más jelölést) írni, amely minterm -eket tartalmazza ”lefedi” -az adott prímimplikáns. Pl. az a ~ 29,13,25,9
(16,4)
a 9,13,25 indexű
mintermek 1, míg a 29-es x értékű. A további sorok is hasonlóan töltendők ki. Mivel mindegyik minterm -et le kell fedni, ezért az a , és az e jelű prímimplikáns -ok részei a végső függvénynek, mivel a 9, 13 indexű minterm -ket csak az a, míg a 0, 4, 20 indexűeket pedig csak az e jelű egység tartalmazza. A továbbiak mindegyikét két-két implikáns fedi le, így ezek közül választhatunk. Amennyiben felírjuk azt, hogy melyik minterm -et mely implikáns -ok tartalmazzák, akkor egy logikai függvényt kapun. Az alábbi logikai függvénnyel is meghatározható a megoldása. (Sorba írtuk az egyes minterm -eket lefedő implikáns -ok jeleit.) f =e e a a e ( b + e )( a + c )( b + d )(c + d )( c + d ) ( 0 4 9 13 20 22
25
26
27
31 )
A logikai algebra szabályai alapján elvégezhetjük az összevonást: f =a e( b + d )(c + d ) =a bc d + a d e
Tehát két megoldás lehet, mégpedig az abcd, illetve az ade jelű prímimplikáns -ok segítségével. Az utóbbi adja a legegyszerűbb alakot. A megtalált formából az algebrai alakot kell visszaírni oly módon, hogy az aktuális prím bármelyik indexű minterm -ét átírjuk algebrai formává (a kiindulási súlyozást alapul véve), és elhagyjuk azokat a változókat, amelyek súly megegyezik a zárójelben felsorolt számokkal.
a ~ 29,13,25,9 (16,4)
= a 29 indexű minterm : E D C B A = D B A
b ~ 30,22,26,18 (8,4)
= a 30 indexű minterm : E D C B A = E B A 132.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
c ~ 31,27,29,25 (4,2)
= a 31 indexű minterm : E D C B A = E D A
d ~ 31,27,30,26 (4,1)
= a 31 indexű minterm : E D C B A = E D B
e ~ 22,18,20,16,6,2,4,0 (4,2,16) = a 22 indexű minterm : E D C B A = D A A legegyszerűbb megoldás: ad e, vagyis:
F = D B A + EDB + D A Az ismertetett egyszerűsítési eljárás algoritmizálható a legkönnyebben számítógépre. 7.2..5. Grafi ku s egyszerű sítés (ellenőrzés!) Az előzőekben bemutatott 5 változós kombinációs feladat egyszerűsítése – papíron – gyorsabban oldható meg a Karnaugh táblázatok valamelyikének alkalmazásával. Az alábbi ábrán a minterm -es alak (Kp) táblázaton láthatjuk az összevonásokat.
DA EBA 0
1
3
2
16 17 19 18
DC
000 001 011 010 100 101 111 110 0 00 1 x x x
4 01 1
x
1
x
1
12 11
1
x
1
x
8 10
1
1
1
1
DB A
EDB
Az összevont egységek alapján itt is felírhatjuk a legegyszerűbb függvényt:
F = D B A + EDB + D A (Az lett volna a meglepő, ha nem ugyanazt kapjuk!!)
133.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
7.3.
1. félév
K omb i n á ci ó s v e zé rl é s i f e lad at o k p rog ra mo zá s án a k t e rv e zé s e
Ahogyan a bevezetésben már szó volt róla az irányítást megvalósító eszköz lehet ·
általános célú mikrogép, vagy
·
programozható logikai vezérlő (PLC).
A követezőekben mindkét eszköz programozását bemutatjuk. A l e h e t s é g e s p ro g r a m o z á s i a l g o r i t m u s m e g h a t á r o z á s a Bemutatjuk a kétféle algoritmus ·
a bit-műveletes, illetve
·
a táblázatos
eljárás programjának assembly, és C nyelvű forrás-állományát. 7.3..1. Bit műveletekkel Általános célú mikrogép alkalmazásakor Azokban a mikrogépekben alkalmazható ez a módszer, amelyekben, a processzor utasításkészletében logikai bitműveletek vannak, és a változóterület - legalább egy része bitcímezhet. A 8051/31 mikrokontroller család elemei megfelelnek e feltételnek. Az alábbi példák kontroller bázisú mikrogépen futtathatóak. ·
Assembly nyelvű program (komb_m1.a51)
A program a logikai függvény értékét a logikai műveletek sorrendjében, a Boole algebra szabályainak megfelelően számítja ki.
;*********************************************** ;* Minta kombinációs feladat programozásához * ;* Bit-műveletek alkalmazása * ;* A megvalósítandó függvény * ;* K = A* D + A * B * D + E* D* B ;********************************************* * ;xxxxxxx fordítási parancsok xxxxxxx $XREF $DEBUG NAME KOMB_BIT
134.oldal
*
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
;###### DEKLARÁCIÓK ####### ;******* Szegmensek deklarálása ****** PROG SEGMENT VALTB SEGMENT STACK SEGMENT
CODE ;program DATA BITADDRESSABLE ;bitcímezhető változók DATA ;stack memória
;****** ADAT szegmens bitcímezhető változóknak ******* RSEG VALTB BEM: KIM: JELZ: V_A V_B V_C V_D V_E FV_K V_M1
DS DS DS
BIT BIT
1 1 1 BIT BEM.0 BIT BEM.1 BIT BEM.2 BIT BEM.3 BIT BEM.3 KIM.7 JELZ.0
;bemeneti memória ;kimeneti memória ;jelző bájt ;az A változó ;a B változó ;a C változó ;a D változó ;az E változó ;a függvény K kimenete ;átmeneti - merker - tároló
;xxxxxxx Memóriába ágyazott I/O -k xxxxxxx XSEG AT NGS: DS LEDS: DS
0C000H
1 1
; nyomógomb-sor címe ; LED -sor címe
;xxxxxxx STACK kijelölés xxxxxxx RSEG STACK DS 10H
;STACK kezdet ;16 bájtos STACK
;###### PROGRAMOK ####### ;xxxxxxx Program szegmens xxxxxxx RSEG PROG START: INIT:
MOV
INIT_1:MOV
LJMP INIT DS 10H SP,#STACK-1 MOV R1,#BEM MOV R7,#10H @R1,#0 INC R1 DJNZ R7,INIT_1
;ugrás az inicializálásra ;megszakítás táblázatnak kihagyva ;memória törlés
;******** Fő program ********* ;xxxxxxx a változók aktuális értékének beolvasása xxxxxxx FOPR: MOV
DPTR,#NGS MOVX A,@DPTR CPL A MOV BEM,A
;tárolás a bemeneti memóriába
;xxxxxxx a függvényérték kiszámítása xxxxxxx MOV CPL ANL MOV
C,V_A C C,/V_D V_M1,C
135.oldal
;az első logikai szorzat kiszámítása, ;tárolása
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév MOV ANL ANL ORL MOV
C,V_A C,/V_B C,V_D C,V_M1 V_M1,C
MOV ANL ANL ORL MOV
C,V_B C,V_D C,V_E C,V_M1 FV_K,C
;a második logikai szorzat kiszámítása,
;a két kiszámított érték tárolása, ;a harmadik logikai szorzat kiszámítása, ;az eddigi eredménnyel VAGY ;a teljes FÜGGVÉNYÉRTÉK tárolása,
;xxxxxxx a függvényérték kivitele a kimenetre xxxxxxx MOV
DPTR,#LEDS MOV CPL MOVX JMP
A,KIM A @DPTR,A FOPR
;új CIKLUS -ra
END ·
C nyelvű program /* Kombinációs feladat megoldása bit-műveletekkel*/ /* Deklarációk */ unsigned char bdata be, ki; sbit V_A=be^0; sbit V_B=be^1; sbit V_C=be^2; sbit V_D=be^3; sbit V_E=be^4; sbit FV_K=ki^6; char xdata NGS,LEDS; /* Függvényérték kiszámítása */ void main (void) { do { be = ~NGS; FV_K = (~V_A & ~V_D)|( V_A & ~V_B & V_D )|( V_B & V_D & V_E ); LEDS = ~FV_K; }while (1); }
A C nyelvű forrásprogram lista fájlból kimásolt assembly nyelvű fordítást mutatja az alábbi részlet. Az előző megoldástól csak abban tér el, hogy nem kellett kijelölni az átmeneti tárolót. A compiller helyezte el a B.7 bitre a részeredményt. A jobb oldali lommentek azt mutatják, hogy melyik C nyelvű sorból milyen forráskódot (assembly sorokat) készített.
136.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév ; FUNCTION main (BEGIN) ; SOURCE LINE # 11 ; SOURCE LINE # 12
0000
?C0003: ; SOURCE LINE # 14 ; SOURCE LINE # 16
0000 900000 R 0003 E0 MOVX 0004 F4 0005 F500 R
MOV DPTR,#NGS A,@DPTR CPL A MOV be, A
0007 A200 0009 B3 000A B000 000C 92F7 000E A200 0010 B000 0012 8200 0014 72F7 0016 92F7 0018 A200 001A 8200 001C 8200 001E 72F7 0020 9200
MOV CPL ANL MOV MOV ANL ANL ORL MOV MOV ANL ANL ORL MOV
C,V_A C C,/V_D B.7,C C,V_A C,/V_B C,V_D C,B.7 B.7,C C,V_D C,V_B C,V_E C,B.7 FV_K,C
MOV CPL CLR RLC MOV MOVX
C,FV_K C A A DPTR,#LEDS @DPTR,A
SJMP
?C0003
; SOURCE LINE # 18 R R R R R R R R R
; SOURCE LINE # 20 0022 A200 0024 B3 0025 E4 0026 33 0027 900000 002A F0
R
R
; SOURCE LINE # 22 002B 80D3
; SOURCE LINE # 23 ; FUNCTION main (END)
A lista fájl baloldalán a lefordított forráskódok láthatók. Ahol R betű van abban a sorban a változók, illetve a vezérlésátadások címei még nem ismertek. Ezt majd a szerkesztő (linker) számítja ki a megadott kezdőcím alapján. PLC alkalmazásakor A feladat egyik megoldása a bit-műveletes LÉTRA diagram szerinti programozás. A megoldáshoz a Step7 programozási környezetet alkalmazzuk (106. ábra). ·
Létra hálózat
A feladat logikai függvénye adott. A változókat kell deklarálni és a szimbólum táblázatban kell a fizikai címeket és a szimbólumokat összerendelni.
137.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
106.
ábra
A feladatot megvalósító program létra-diagramja
107.
ábra
7.3..2. Táb lázatos módszer A logikai függvény megoldásának kétféle táblázatos módszerét ismertetjük a következőkben. Az egyik eljárás szerint a működési (Igazság) táblázat alapján keressük meg a függvény IGAZ értékeit. A másik algoritmus az egyszerűsített függvény táblázatos megoldását végzi.
138.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
·
1. félév
Igazságtáblázat alkalmazása
Mindegyik logikai függvényhez felvehető egy táblázat, amely megadja, hogy milyen bemeneti kombinációknál lesz a függvényértéke IGAZ (a már ismert Igazságtáblázat). A program minden ciklusában beolvassa az független változók (bemenetek) aktuális értékét. Ezt követően meg kell vizsgálni, hogy az aktuális érték szerepel-e a táblázat elemei között. Amennyiben igen, akkor – az éppen számított – függvényérték IGAZ. (Amennyiben a HAMIS értékek kijelölésével lesz rövidebb a táblázatunk, akkor ezt célszerű alkalmazni, természetesen az itt megtalálható értékeknél a függvényérték HAMIS lesz.) A ciklikusan működő program fő feladata tehát: Ø az aktuális változó értékek beolvasása, és tárolása, Ø meg kell állapítania, hogy a tárolt érték eleme-e az adott táblázatnak, Ø a vizsgálat eredménye alapján a függvény- (kimeneti) értéket tárolni, Ø majd a kimenetek aktualizálása. A mintapéldánkban a 0 1 2 3 4 Ø Változók és súlyozása A ¸ 2 , B ¸ 2 , C ¸ 2 , D ¸ 2 , E ¸ 2 ,
Ø A K függvény a következő indexű minterm -eknél 1 értékű: 0, 4, 9, 13, 20, 22, 25, 26, 27, 31
A program tehát – az indexekből álló – 10 elemű táblázatban kell keressen. Ekkor nem vesszük figyelembe a közömbös változó kombináció -kat az x-k értékekeit. Több kimenetű kombinációs feladat is megoldható a vázolt felépítésű programmal. Minden kimenethez - függvényértékhez – egy-egy táblázatot kell megadni, és a keresést mindegyik táblázatban el kell végezni, és ennek megfelelően megadni az egyes függvényértékeket. ·
Egyszerűsített függvény alapján
A kombinációs függvények értékének kiszámításának másik lehetséges megoldása az un. maszkolt - táblázatos feladatmegoldás.
139.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A Quin Mc-Closkey egyszerűsítési módszerben kigyűjtöttük a primimplikánsokat, amely tartalmazta az összevonásban szereplő mintermek, vagy maxtermek indexeit. Mellette zárójelben adtuk meg az összevonás eredményeként kiesett változók „súlyát. A kapott eredményből megállapítható, hogy az éppen aktuális (beolvasott) kombinációhoz tartozó függvényérték 1, vagy 0. A megoldáshoz írjunk egy olyan táblázatot, amelynek a prímimplikánsok számával azonos sora és két oszlopa van. (Ez tulajdonképpen egy kétdimenziós tömb.) Az első oszlopba írjuk soronként a soron következő prímimplikáns egyik indexét. A második oszlopba kell megadni a maszkot, amely jelzi mely változó(k) esnek ki. A maszk egy bináris szám, amelyben az összevont logikai egységben megmaradt változóknak megfelelő bitek 1, míg a többi 0 értékűek. Az előzőek alapján felépülő táblázatban a következő módon határozhatjuk a függvény értékét. 1. A
beolvasott
aktuális
bemeneti
bitkombinációt
(B)
XOR
művelettel
„összehasonlítjuk” az a sorban szereplő indexel (I). 2. Az eredmény és az adott maszk (M) között ÉS műveletet végzünk (ez a maszkolás). 3. Ha a maszkolás eredmény 0, akkor az összevonásban szereplő változók (bitek) értéke egyforma, és ezért a függvény (F) értéke 1. 4. A leírt lépéseket soronként el kell végezni, és ha a feltétel a táblázat egyik sorában sem teljesül, akkor 0 a függvény értéke. Az algoritmus tehát: F=1 , ha ( B Ä I n ) & M = 0 A leírtakat igazoljuk mintapélda a jelű prímimplikáns -ra (a ~ 29,13,25,9 (16,4)), amely a D B A logikai szorzat.
140.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Belép
Inicializálás VÁLTOZÓK beolvasása Cikl.-vált.kezd. Ciklus-vég ellenőrzése Vége? INDEX és VÁLTOZÓ hasonlítása
Cikl.v. növ.
Maszkolás
K=0
0? K=1 Kimenetek frissítése
minterm változók
m9
m13
m25
m29
E D C B A E D C B A E D C B A E D C B A
B (Bem.)
1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1
I (Index)
0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 1 1 0 1
IÄ B
1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
M (Maszk)
0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1
(I Ä B) & M 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A változók súlyozásából következik, hogy az összevonás után a C, és az E változókat kell leválasztani maszkolással. Az ötbites maszk bitképe tehát 0 1 0 1 1 = 0B h = 11d. (Amennyiben nyolcbites a bemenetünk, akkor a felső bitek értékét is le kell maszkolni 0val). A következő táblázatban – az összevonásban szereplő négy index-el is –bemutatjuk a műveletet (ötbites változatban). A Bem jelű memória tartalmazza az aktuális bemeneti kombinációt. A feladatot megvalósító assembly és C forrásnyelvű programok az összevont szorzatok maszkolt vizsgálatával határozzák meg a függvényértéket. Először a leírt algoritmus folyamatábráját rajzoljuk meg. Az ellenőrzés ciklikusan ismétlődik, vagy addig, amíg a beolvasott változó értéke része a táblázatnak, és ekkor a K=1, vagy ha minden táblázati elemet összehasonlítva sincs egyezőség. Ekkor K=0. A ciklust elöl-tesztelt megoldással, alakítjuk ki. A táblázatok használatánál előre meg kell adni a táblázat hosszát, vagy a végét kell egy adott értékkel jelezni (terminálni). A példa programokban a hosszt adjuk meg a táblázat első elemeként. Általános célú mikrogép alkalmazásakor Mind assembly, mind, pedig magas szintű – C - nyelvekben meg kell írni a kereső, és összehasonlító rutint, függvényt. Majd ezek alkalmazásával készíthető el a teljes feladatot megoldó program. ·
Assembly nyelvű program ;************************************************ ;* Kombinációs feladat megoldása táblázattal * ;* * ;* a táblázat első eleme a táblázat elemeinek száma * ;* a továbbiak – adat-páronként - az egyes logikai * ;* szorzatokhoz tartozó maszk és érték * ;* A megvalósítandó függvény * ;* __ _ * ;* K = A*D + A*B*D + E*D*B * ;* * ;************************************************ ;xxxxxxx fordítási parancsok xxxxxxx NAME
KOMB_TABL
;###### DEKLARÁCIÓK ###### ;******* Szegmensek deklarálása ****** PROG VALTB STACK
SEGMENT SEGMENT SEGMENT
CODE DATA BITADDRESSABLE DATA
142.oldal
;program ;bitcímezhető változók ;stack memória
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév ;****** ADAT szegmens bitcímezhető változóknak ******* RSEG VALTB
BEM: KIM: ERT: MASZK: K
DS DS DS DS BIT
1 1 1 1 KIM.0
;bemeneti memória ;kimeneti memória ;aktuális ÉRTÉK tároló ;aktuális maszk ;a K kimenet
;xxxxxxx Memóriába ágyazott I/O-k xxxxxxx XSEG AT
0C000H
PORT_IN: DS PORT_OUT: DS
1 1
; Bemeneti Port ; Kimeneti Port
;xxxxxxx STACK kijelölés xxxxxxx RSEG DS
STACK
STACK kezdet
10H
;16 b jtos STACK
;###### PROGRAMOK ####### ;xxxxxxx Program szegmens xxxxxxx RSEG PROG START:
LJMP INIT DS
INIT: MOV MOV MOV INIT_1: INC DJNZ MOV MOV MOVC MOV
;ugrás az inicializálásra
10H
SP,#STACK-1 R1,#BEM R7,#10H MOV @R1,#0 R1 R7,INIT_1 KIM,#0 DPTR,#tabl_1 A,@A+DPTR R5,A
;memória törlés
;a táblázat elemeinek a száma
;******** Fő program ********* FOPR: MOV MOVX MOV MOV
DPTR,#PORT_IN A,@DPTR BEM,A R6,#01H
;a változók aktuális értékének beovasása ; ciklusváltozó kezdő értéke
CIKL_1: MOV A,R6) CLR C SUBB A,R5 JNC CIKL_VEG MOV MOV MOVC MOV MOV MOV MOVC MOV
; a ciklus befejezésének vizsgálata ; elől tesztelt ciklus (while) ;ciklus vége?
A,R6 DPTR,#tabl_1+01H A,@A+DPTR R4,A A,R6 DPTR,#tabl_1 A,@A+DPTR R3,A
; aktuális INDEX
;aktuális MASZK
143.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
CIKL_2: MOV A,BEM XRL A,R4 ANL A,R3 JNZ
; BEM és az INDEX összehasonlítása ; az eredmény maszkolása
CIKL_3
SETB K
; a beolvasott érték szerepel a táblázatban, ; tehát a függvény értéke 1
SJMP CIKL_VEG
; vége a vizsgálatnak
CIKL_3: CLR
K
INC INC
R6 R6
; a beolvasott érték nem szerepel a ;táblázatban ; tehát a függvény értéke 0
SJMP CIKL_1 CIKL_VEG: MOV MOV MOVX SJMP tabl_1:
; a keresés folytatódik
DPTR,#PORT_OUT A,KIM @DPTR,A FOPR DB
; az eredmény kivitele
7,9,0,11,9,26,26
END ·
C nyelvű program /* Kombinációs feladat megoldása táblázattal a megoldandó függvény: K= /A/D + A/BD + BDE a táblázat első eleme a táblázat elemeinek száma, a továbbiak – adat-páronként - az egyes logikai szorzatokhoz tartozó maszk és érték, */ unsigned char code tabl_1[]= { 0x07,0x9,0x00,0x0b,0x09,0x1a,0x1a }; unsigned char bdata be, ki,j; unsigned char data veg; sbit K=ki^0; char xdata PORT_IN; char xdata PORT_OUT; void main(void) { ki=0; veg = tabl_1[0]; do { be = PORT_IN; K=0; for (j=1;j
144.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév } PORT_OUT = ki; }while(1);
}
PLC alkalmazásakor A korszerű PLC -k mindegyikében megtalálható a táblázatokban történő keresés műveletei. ·
Keresés az Igazságtáblázatban
A kombinációs feladat táblázatos megoldását a Unity Pro XL környezetben megvalósított példán mutatjuk be a 108. ábrán.
a.
b. 108.
145.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az a. ábrán a szimbólumtábla látható. A 10 elemű INT típusú tömbnek (array) deklarált Igazságtáblázatba írjuk az IGAZ értékekhez tartozó mintermek indexeit. A bemenet tartalmazza az aktuális bemeneti értékeket. A KIM tömb második eleme a vezérelt kimenet. A b. ábrán a program FBD nyelvű változata látható. A FIND_EQ_ARINT függvény a bemenet jelű változó értékét egymás után összehasonlítja az Igazságtáblázat soraival. Amennyiben valamelyik sor tartalmával egyezést talál, akkor annak a sornak a számát adja vissza, egyébként a függvénykimenet értéke -1. A vezérelt kimenet (KIM[1]) akkor kell 1 értékű legyen, ha a keresés egyezést talált. A döntést a GE_INT
(nagyobb-egyenlő)
függvény oldja meg ha a ref változó értékét 0-ra választjuk. ·
A maszkolásos kereső algoritmus használata
A maszkolásos kereső algoritmus legegyszerűbben az ST (Strukturált szöveg) nyelven programozható. A 109. ábrán mutatjuk be a program egy változatát.
a.
b 109. .ábra Az a. ábrán látjuk a táblázat deklarációját. A hatelemű m_tabl tömbbe felváltva írtuk be az index – maszk értékeket. A b. ábrán látható ST nyelvű program megértése a C nyelv ismerete alapján is megérthető. Megjegyzés: az ST nyelv és használatának ismertetése a tantárgy második félévében kerül sor.
146.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
7. 4. S o rre n d i ve zé rl é s i f e la d at o k at m eg o ld ó p rog ra m t e rve zé s e Ø
A sorrendi feladatok
Sorrendi feladat megvalósításához olyan hálózatra, vagy működtető programra van szükségünk, amely a kimenetek aktuális – t időpontbeli - kombinációja (Zki) az éppen érvényes és a megelőző bemenőjel-kombinációk sorozatától (szekvenciájától) függ. Akkor valósítható meg ilyen feladat, ha a hálózat, vagy a program bemeneteire nem csak az éppen érvényes bemeneti jelek (Xbe) csatlakoznak, hanem a kimenetek jelei (Zki*) is. Így biztosítható az előző állapotok hatása az új állapotokra. Általános blokkvázlata tehát a 110. ábra szerinti. .
Xbe
SH
. .
*
Zki
Z
. .
110. ábra Az SH sorrendi hálózat két-két csoport bemenettel és kimenettel rendelkezik. Az x jelű bemenetekre jutnak a külső logikai változók. A Z* jelű bemenetekre csatoljuk vissza a hálózat Zki kimeneti változókat. A visszacsatolás következtében a kimeneti változók következő értékét a bemeneti-, és a kimeneti jelek aktuális értékei határozzák meg. Az aktuális időpontot jelöljük t -vel, és a következő – általánosan érvényes - időbeli függvénykapcsolatot írhatjuk:
Z(t + 1) = f Z (X(t ), Z(t ) ) ahol fz a logikai kapcsolatrendszer leírása. Megjegyzés: A fejezetben kisbetűvel az egyes változókat, és nagybetűvel az adott változók kombinációját jelöljük. A visszavezetett jeleknél – a t idő helyett - a * jelölést használjuk.
147.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
Ø
1. félév
A sorrendi feladatokat megvalósító hálózatok
A sorrendi feladatokat megvalósító logikai hálózatok több változatban is kialakíthatók. A felépítés többek között függ a változók számától, a működés kívánt módjától, valamint egyéb gazdasági szempontoktól. Gondolati kísérlettel belátható, hogy a 110. ábra blokkvázlata szerint megvalósított logikai hálózat csak akkor stabil, ha a kimeneti-, és a bemeneti jelek is állandósultak. Ez csak - egy bemeneti kombinációváltást követően - késleltetve, legkevesebb a hálózat (tH) késleltetési ideje múlva következhet be. Két stabil állapot között mind X mind, pedig Z is változhat. Amennyiben két stabil állapot közötti tranziens időben (instabil állapotváltozások közben) változik a bemeneti kombináció, akkor újabb tranziens folyamat indul el. Az ilyen felépítésű hálózatot aszinkron sorrendi hálózatnak nevezzük. Ezeknél az állapotváltozást vagy azok sorozatát a bemeneti jelek változása indítja el. Sorrendi hálózat kialakítható olyan működéssel is, amelynél az egymás utáni állapotváltozásokat nem közvetlenül az x bemeneti jelek megváltozása, hanem - egy ezektől független - ütemező jel, az un. órajel, vagy szinkron jel hajtja végre. A két szinkronozó jel közötti időszakban történik a következő állapot előkészítése. A leírt megoldást nevezzük szinkronműködésűnek. Ø
A sorrendi hálózatok rendszertechnikai felépítése
A hálózatok rendszertechnikailag alapvetően két formában valósíthatók meg. a. A kimeneti jelek közvetlen visszavezetésével (108. ábra), b. Közbenső un. állapottárolók használatával Az első változatot csak akkor alkalmazzuk, ha a kimenetek száma kevesebb, vagy egyenlő a kívánt állapotok számával. A közbenső tárolós megvalósításnál is alkalmazhatunk, a már megismert aszinkron, illetve szinkronműködésű változatot. A mai gyakorlatban szinte kizárólag csak a szinkronhálózatokat alkalmazzák, ezért a továbbiakban csak ezekkel foglalkozunk. A működés alapelve, hogy - a két órajel közötti időben - tárolni kell az aktuális állapotra jellemző információt. A tárolt értékek, az un. állapotjelek (szekunder változók), amelyeket y –al jelölünk. Az órajelek mintavételezik az éppen aktuális bemeneti-, és állapotjeleket, és ezektől függően alakul majd ki - a soron következő órajel hatására - az új állapot. Lényeges,
148.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
hogy az órajel aktív ideje alatt a bemeneti és a szekunder változók értéke állandó kell legyen. Az előbbiek alapján működő hálózatot nevezzük szinkron sorrendi hálózatnak, amely általános felépítésének változatai láthatók a 111. ábrán.
a.
b.
c. 111. ábra Az ábrákon látható megoldások mindegyikében közös, hogy a bemeneti kombinációs hálózat (BK) állítja elő az x bemeneti-, és az y állapotváltozókból az állapottárolók (T) új vezérlőjeleit (vj). Az állapot tárolókat az ütemező órajel (Cp) billenti a vj által meghatározott új állapotba. Az a. ábra szerint a kimeneti kombinációs hálózat (KK) az állapotváltozókból, és a bemeneti jelekből állítja elő a kimenetek jeleit (Z). A megoldás az un. Mealy – modell szerinti. A b. ábrán látható változatban a kimenetekre csak az állapotváltozókon keresztül hatnak a bemeneti jelek. A szemléltetett változat az un. Moore – modell szerinti felépítésű. Az utóbbi megoldásnál esetleg több tárolóra van szükség, de egyszerűbb a felépítés. A korszerű áramkörök alkalmazásával már elhanyagolandó szempont lett a tárolók száma (különösen a programozott rendszerekben), s ezért a Moore modell szerinti felépítés mind hardverben mind, pedig a szoftveres megoldásban előnyösebb.
149.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Azonos funkciójú szinkron sorrendi hálózat alakítható ki a c. ábra szerint is. Nem használunk külön kimeneti kombinációs hálózatot, hanem az y szekunder változókat oly módon állítjuk elő, hogy azok, vagy egy részük egyúttal a hálózat kívánt kimeneti változói is. Mindhárom megoldásban a hálózat állapota, s így a kimenő jelek is az órajel (Cp) ütemezésében váltanak értéket. Tételezzük fel, hogy a vizsgált t időpillanatban - amely a két órajel közötti időpont - a hálózati tranziensek lejátszódtak. A hálózat állapotát – a T-ben tárolt - Yi állapotjel kombináció, a kimeneti értékeket a Zi kimeneti jelkombináció írja le. Ugyanebben az előkészítési fázisban az új bemeneti jelkombináció állandósult értéke Xi. Ekkor a BK kombinációs hálózat bemenetén az Xi és Yi = Zi bemeneti értékek érvényesek, és előállítják a T tárolók vi vezérlőjeleit. A következő billentő órajel fogja - a vi által meghatározott állapotba - billenteni a tárolókat. Ennek eredményeként alakul ki az új kimeneti jelkombináció. Az előzőek alapján felírhatjuk a
Zi (t + 1) = f Z (Yi (t ) ) Yi (t ) = f f (v i (t )) vi ( t) = f V (X i (t ), Zi (t )) függvénykapcsolatokat. ·
Az fz kimeneti függvény az előállítani kívánt (Zi+1) kimeneti-, és a tárolók aktuális állapotkombinációi (Yi) közötti logikai kapcsolatot adja meg.
·
Az ff függvény adja az új állapotkombinációkat (Yi), az alkalmazott flip-flop típusok, és azok vezérlőjelei (vi) közötti kapcsolatot.
·
Az fv vezérlőfüggvény a tárolókat vezérlő jelek (vi), az új állapotot előkészítő bemeneti jelek érvényes kombinációja (Xi) és a hálózat éppen aktuális állapota (Zi) közötti logikai kapcsolatrendszert írja le.
Miután a függvény bemenő-, és kimenő változói egyazon időpillanatra érvényesek, ezért mind a kimenetek-, mind a vezérlő jelek kombinációs hálózattal valósíthatók meg. A szükséges tárolók számát az előállítandó kimeneti kombinációk száma határozza meg. Abban az egyszerű esetben, amelynél nem alkalmazunk kimeneti kombinációs hálózatot (pl. számlálók) a tárolók és a kimenetek száma azonos. Kimeneti kombinációs hálózat
150.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
alkalmazásakor kevesebb tároló is elégséges, miután ezek csupán a szükséges állapotok számát tárolják, és az állapotjelek száma kisebb, mint az általuk előállítható kombinációk száma. Ø
Sorrendi hálózatok logikai leírása
A sorrendi logikai feladatokat megvalósító szinkron sorrendi hálózatok tervezéséhez szükségünk van a kívánt működést egyértelműen megadó, az ismert hálózattervezési módszerek alkalmazását elősegítő leírásra. A továbbiakban röviden ismertetünk egy-egy §
grafikus és
§
táblázatos
leírási módszert. A következőkben bemutatott példa nem tényleges feladat megoldása, hanem csak szemléltetése a leírási módoknak. 7.4..1. Állapotgráf A sorrendi logikai feladatokhoz gyakran használják az állapot-gráfnak nevezett szemléltető leírást. Ennek lényege, hogy a hálózat minden állapotát egy-egy körrel jelöljük. A körökbe az állapot-jelzőt (Yi) írjuk. A körökből nyilak indulnak ki, amelyek vagy egy másik körben, vagy önmagában az induló körben (állapotban) végződnek. Ezek a nyilak az egyes bemeneti kombinációkhoz tartozó állapotváltozások irányát jelzik. Minden körből annyi nyíl indul, amennyi a lehetséges bemeneti kombinációk száma. Az ábra egyszerűsíthető azzal, hogy ha több kombináció eredményez azonos állapotátmenetet, akkor azokat egyazon nyílra írjuk. A nyilakra írjuk rá az állapotváltozást kiváltó bemeneti-, (Xi) és a hozzá tartozó kimeneti kombinációt (Zi). Amennyiben a kimeneti kombináció egyúttal állapotjellemző is, akkor ezt a körbe írjuk. Azok a nyilak, amelyek a kiinduló körhöz
térnek
viasza
olyan
bemeneti
kombinációhoz
tartoznak,
amelyek
nem
eredményeznek állapotváltozást. Az elmondottakra példa a 112. ábrán látható állapotgráf. Megjegyzés: A More-modell szerinti megvalósításnál a gráf-csomópontokba kell írni a kimeneti kombinációt (Zi) is. Az állapotgráf -on követhető a hálózat működése, vagy tervezésnél ezzel írhatjuk le a kívánt működést. Az áramköri tervezéshez viszont csak közvetve tudjuk felhasználni.
151.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
X0, X3 Y0 Z0
X0 X2
X1
X1 ,X2, X3
X2
Y3 Z3
Y1 Z1
X3 X2 X1
X0
Y2 Z2
X0 , X1, X3
112. ábra A gráfból leolvasható, hogy a szemléltetett szekvenciális hálózatnak négy állapota van. Ezek állapotkombinációi Y0, Y1, Y2, Y3. A bemeneti kombinációk X0, X1, X2, X3, és a kimeneti jelkombinációk Z0, Z1, Z2, Z3 száma is négy. Vizsgáljuk az Y2-vel jelzett állapotot. Ebből az állapotból csak az X2 bemeneti jelkombináció a hálózatot új állapotba vezérli, míg az X0, X1 és X3 nem. Az hogy minden állapothoz csak egyetlen kimeneti kombináció tartozik, utal arra, hogy a megvalósítás Moore modell szerinti. 7.4..2. Állapottáblázat Egy sorrendi hálózat állapotai, valamint a bemeneti-, és kimeneti változói közötti kapcsolatrendszert táblázattal is megadhatjuk. Az ilyen leírást nevezzük állapottáblázatnak.
Áll. vált.
Bemeneti kombinációk X0
X1
X2
X3
Y0*
Y0 Z0 Y1 Z0 Y3 Z0 Y0 Z0
Y1*
Y2 Z1 Y1 Z1 Y1 Z1 Y1 Z1
Y2*
Y2 Z2 Y2 Z2 Y3 Z2 Y1 Z2
Y3*
Y0 Z3 Y2 Z3 Y3 Z3 Y3 Z3
113.
152.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Általánosan: egy hálózat m db állapotot vehet fel, amit a sorok jelölnek. Minden egyes állapotban az n db bemeneti változó 2n számú bemeneti-jelkombinációját (X0. . . X2n-1 ) kell az oszlopokba írni, amelyek közül éppen az egyik aktuális. Az így kapott táblázat egyes celláiba kell beírnunk azt, hogy az adott állapotban, az oszlopnak megfelelő bemeneti kombináció hatására mi lesz a szekunder-, ill. a kimeneti változók kombinációja (Yi, Zi). A Zi -vel a p db kimeneti változó (z0. . . . . zp) lehetséges kombinációit (Z0. . . Z2p-1) jelöljük. A szekunder változók az állapot-tárolók kimenetei jelei. Ezek kombinációinak száma egyezzen meg a kívánt állapotok számával, m - el. A 113. ábrán látható táblázatban, pl. az első oszlop mutatja azt, hogy a lehetséges állapotok (az Yi* sorok) az X0 bemeneti kombináció hatására milyen állapotba mennek át. A táblázat első sorában - az Y0* állapotban - az X1 kombináció (második oszlop) az Y1 állapotba, az X2 pedig a hálózatot az Y3 állapotba viszi át (nyilak jelzik az állapotváltozást). Amennyiben az állapot-, és a szekunder változó indexe azonos, nincs állapotváltozás. A stabil működéshez biztosítani kell, hogy ugyanaz a bemeneti kombináció a következő órajelnél ne eredményezzen további állapotváltozást! 7.4..3. A ki meneti-, és vezérlő táb lázat Az ismertetett állapottáblázat két részre bontható. Az egyik (114.a.ábra) megadja az állapotok, és a bemeneti kombináció közötti, a másik (b. ábra), pedig az állapotok, és a kimenetek közötti kapcsolatot írja le. Álla- Bemeneti komb. potok X0 X1 X2 X3 Y0* Y1
*
Y2
*
Y3
*
Álla- Bemeneti komb. potok X0 X1 X2 X3
Y0 Y1 Y3 Y0
Y0*
Z0 Z0 Z0
Z0
Y2 Y1 Y1 Y1
Y1
*
Z1 Z1 Z1
Z1
Y2
*
Z2 Z2 Z2
Z2
Y3
*
Z3 Z3 Z3
Z3
Y2 Y2 Y3 Y1 Y0 Y2 Y3 Y3 a.
b. 114.
ábra
Következő lépésben a szétbontott táblázatokba kódolt kombinációkat írjuk be. Ekkor megkapjuk a vezérlési-, illetve kimeneti táblázatokat, amelyek már alkalmasak az áramköri, illetve program tervezéséhez.
153.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A bemutatott példánál mind az állapotok, mind a bemeneti kombinációk, mind a kimeneti kombinációk száma négy. Következtetést ezekből csak az állapotjelek, illetve tároló számára vonhatunk le. A vezérlőjelek számát a választott flip-flop típus határozza meg (pl. D tárolónál 1, JK típusúnál, pedig 2.). A kimeneteknél – az eddigiek alapján – csak azt tudhatjuk, hogy az előállítandó kimeneti kombinációk száma négy, de azt, hogy mennyi a tényleges kimenetszám ismeretlen. A bemenetekre vonatkozóan is hasonló a következtetés, ugyanis csak azt tudjuk, hogy négy bemeneti kombináció indít állapotváltozást. A leírtakból egyértelmű, hogy a tényleges sorrendi feladathoz kapcsolódnak a bemutatott leírási módozatok. A szükséges állapottárolók számát (k-t) az m = 2k összefüggésből határozhatjuk meg, ahol m a szükséges állapotok, k pedig az alkalmazandó tárolók száma. Áttekinthetőbb és jobban kezelhető a 111.c.ábra szerint kialakított sorrendi hálózatok állapottáblázata. Itt az állapottárolók kimenetei egyúttal a hálózat kimenetei is. Ekkor a hálózat egy kombinációs hálózatból és a tárolókból áll. A tárolók számát az előállítani kívánt kimeneti kombinációkból határozhatjuk meg a fenti összefüggés alapján. A kombinációs hálózatra a bemeneti és a visszacsatolt kimeneti változók csatlakoznak. Ez a hálózat előállítja elő a tároló elemeket (flip-flop -kat) vezérlő jeleket. E jelek készítik elő az új állapotot, ami a következő (billentő) órajel hatására áll elő. Az állapottáblázat elemi négyszögeibe tehát csak a vezérlő jel kombinációkat kell írnunk. Tulajdonképpen ez megfelel, az un. vezérlési táblázatnak. 7.4..4. A tervezés Az előző fejezetben összefoglaltuk a sorrendi feladatokat megoldásának, lehetséges felépítésének, és működésének elveit. Az ilyen berendezések lehetnek: ·
sorrendi hálózatok (csak hardver megoldású), illetve
·
programozható célberendezések (PLC, DDC),
·
általános célú mikrogépek.
A fejezetben összefoglaljuk a programozható készülékek működtető szoftverének tervezési lépéseit, megoldásait.
154.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
7.4..5. A tervezés lép ései: 1. a feladat megvalósításához szükséges berendezés n db bemenetének (x 0 …x n - 1 ), és k db kimenetének (z 0 …z k - 1 ) meghatározása, az elvárt működés – szekvenciák - egyértelmű leírása, 2. a szükséges kimeneti kombinációk (Z0 …Zj - 1 , ahol j ≤ 2k ) megállapítása, 3. a szükséges állapotok (Y0 … Ym - 1 , ahol m ≤ j ) meghatározása, 4. az állapotváltozást indító bemeneti kombinációk (X0 …Xs - 1 , ahol s ≤ 2n) kigyűjtése, 5. állapotgráf, állapottáblázat felírása, 6. a megvalósító eszköz – PLC, mikrogép stb. – kiválasztása, 7. a szoftver-megoldás megtervezése, 8. a programírás, 9. a programtesztelés (szimuláció, valós-idejű), a szükséges módosítások végrehajtása, 10. működési, és üzemeltetési leírások (dokumentáció) elkészítése. A felsorolt lépések feladatait részletesebben is tekintsük át. Ø
A feladat rendezett leírása
A feladat - az esetek döntő többségében - egy megvalósítandó berendezés elképzelt működését tartalmazó írásos anyagban jelenik meg. Ez a leírás lehet egy megrendelés, egy összetett tervezési feladat része, illetve oktatási feladat. Az anyag rendszerint az igényt részletezi, amelynél a tervezőnek sok rendezési, egyeztetési feladata is van. Természetesen a gyakorlott tervezőnek már kialakult a munkamódszere, de mégis szükséges összefoglalni azt az ajánlást, amely szerint célszerű a következő lépéseket elvégezni. Þ A feladat független változóinak – a berendezés bemeneteinek (x 0 …x n - 1 ) – táblázatba foglalása, jellemzőinek (a jeladók jellemzői stb.) előzetes meghatározása. Þ A függő változók – a berendezés kimeneteinek (z 0 …z k - 1 ) – táblázatba gyűjtése, a támasztott követelmények (kimeneti szint, teljesítmény stb.) megállapítása.
155.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Þ A feladat megvalósításának lehetséges változatainak, működési módjának előzetes megtervezése. Az utolsó pontban kell meghatározni, hogy a feladat szerint a berendezés kimeneti jelváltozás-sorozatai (szekvenciái) milyenek legyenek. Tulajdonképpen ekkor lehet eldönteni, hogy a feladat megoldható-e Þ lefutó típusú (egy szekvenciájú), avagy Þ általános felépítésű (több szekvenciájú) sorrendi vezérlés-el. Ezzel tudjuk meghatározni a rendszertechnika felépítést, és a tervezés választható megoldásait is. Ø
A szükséges kimeneti kombinációk
A feladathoz tartozó k darab kétállapotú kimenet (z 0 …z k - 1 ) minden lehetséges kombinációja 2k . Ennyi változatot csak néhány esetben - például bináris számlálók – szükséges megvalósítani. Az ipari feladatokban rendszerint érvényes, hogy csak kevesebb, pl. j db – ahol j ≤ 2k - kombinációt szükséges létrehozni. A szükséges kimeneti kombinációk kiválasztása rendszerint hosszadalmas munka, viszont csak ennek ismeretében lehet megállapítani a szükséges állapotok (ütemek) számát. A variációk előzetes megállapítása a tervezés során módosítást igényelhet. Ajánlott módszer, hogy táblázatba foglalva gyűjtjük ki a Þ feltétlenül szükséges, az Þ estlegesen alkalmazható, és az Þ egymásnak ellentmondó (mindenképpen kitiltandó) kimeneti vezérlési állapotokat. Ø
A szükséges állapotok száma
Először az állapot fogalmát kell egyértelműen meghatároznunk. Jelen gondolatmenetünkben csak azokat az állandósult helyzeteket tekintjük külön állapotnak, amelyek között változást – állapotátmenetet – csak külső jelváltozás indít el. Tehát a sorrendi feladat lehetséges állapotait a szükséges kimeneti kombinációk határozzák meg. Ha az előző meghatározást vesszük alapul, akkor lehet olyan kimeneti kombináció is,
156.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
amely nem külső jelváltozásnak az eredménye. Ebből következik, hogy a belső állapotok száma: m ≤ j ≤ 2k Az m állapotszámot a vezérlés modulusának is nevezik. Amikor kimeneti jelkombináció-váltást belső jel - pl. idő – indítja el, akkor ezt egy adott állapoton belüli kimeneti jelváltásnak tekintjük. A külső, és a belső jelváltás szétválasztása feladatonként változó tervezési munkát eredményez. Általában jobban áttekinthető a feladat megoldása, ha tartjuk magunkat a kiinduló definícióhoz. Elvileg a megvalósításban több állapot is előfordulhat, mint a szükséges kimeneti kombinációk száma, de ebben az esetben, több állapotban is azonosak lesznek a kimeneti jelek, vagyis miért lennének ezek különböző állapotok Ø
Állapotváltozást indító bemeneti kombinációk
A feladatban szereplő független változók (x 0 …x n - 1 , illetve a megvalósítás bemeneteinek száma adott. A kétértékű bemeneti jelek maximális kombinációinak száma s = 2n, amely csak nagyon kisszámú bemenetnél egyezik meg az állapotváltozást elindító – más megközelítésben „hasznos” - bemeneti jelváltások (kombinációk) számával. A technikai feladatok nagyobb hányadában érvényes az s < 2n összefüggés. A meghatározásuk állapotonkénti elemzéssel történhet. Minden állapotban meg kell vizsgálni, hogy a lehetséges kombináció közül melyik indít állapotváltozást. Az így kigyűjtött bemeneti kombinációkat kell csak figyelembe venni a feladat megoldásában. (Amennyiben találunk olyan állapotot, amelyikből egyetlen bemeneti jelváltás sem okoz állapotváltást, akkor ezt az állapotot hibásan állapítottuk meg. Vissza kell térni a 2.1.3 pont feladatához. ) Ø
Állapot-gráf, állapot-táblázat
A tervezés eddigi eredményének ellenőrzését segíti az állapot-gráf, vagy az állapot-táblázat megrajzolása. Ezek segítségével értelmezhetjük a tervezett rész megfelel-e a kiinduló feladatban megfogalmazott működési követelményeknek. Az esetleges eltéréseket ebben a fázisban egyszerűbb korrigálni, mint a végső működés ellenőrzésekor.
157.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az állapot-gráf szemléletesen mutatja az állapotokat (Yi csomópontokat), az ezekhez rendelt kimeneti kombinációkat (Zp). Az állapotváltozások irányát jelző nyilak segítségével leellenőrizhetjük, hogy megfelelően állapítottuk-e meg azokat, és az indító bemeneti kombinációkat (Xr). Az ellenőrzésnél az állapottáblázat használata kevésbé szemléletes. A táblázat viszont a hardvertervezésnél előnyösebb, mivel a bemeneti, illetve a kimeneti vezérlő függvények könnyebben meghatározhatók. Ø
Az alkalmazott berendezés kiválasztása
A feladat általában előírja azt, hogy a vezérléshez milyen programozható eszközt – PLC -t, DDC -t, vagy általános célú mikrogépet – kell alkalmazni. Ilyen esetben a berendezés végleges konfigurációját lehet meghatározni a tervezés eddigi eredménye alapján. Esetenként az egyes illesztők választása bizonyos módosítást is igényelhet addigi munkánkban. Az általános célú mikrogép alkalmazásánál esetlegesen új illesztő-egységek tervezése, megépítése, vagy beszerzése válik szükségessé. Összefoglalóan tehát ekkor fejeződik be a tervezés azon része, amelyre alapozva kezdhető el az irányító-szoftver fejlesztése. Megjegyzés: amennyiben a feladatot megvalósító berendezés un. sorrendi hálózat (csak hardver megoldású), akkor is el kell végezni az eddigi tervezési munkákat. Ø
Szoftver megoldások
A fejezetben a különböző programozható eszközökben alkalmazható programszerkezeteket és programozási megoldásokkal foglalkozunk. Az előző fejezetekben leírtak alapján meghatározhatjuk, hogy mit is kell a programnak végrehajtania. A feladatok alapján megtervezhetjük a program szerkezetét. Minden irányítási feladatot ciklikus programszerkezettel kell megtervezni! Törekedni kell a lehető legrövidebb ciklusidőre! a) Egy cikluson belüli feladatok: §
az aktuális bemeneti értékek beolvasása, változások meghatározása, tárolása,
§
az végrehajtandó ütem kiválasztása,
§
az aktuális ütembeli feladatok (pl. belső időzítés stb.) megoldása,
158.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
§
az érvényes ütem kimeneteinek memórián belüli frissítése,
§
a beolvasott bemeneti értékek alapján meg kell állapítani, hogy a következő ciklusban kell-e állapotot változtatni, ha igen, akkor az állapotjelzőt változtatása,
§
az ütemektől független feladatok (pl. vészhelyzet figyelés stb.) megoldása,
§
a fizikai kimenetek frissítése.
A felsorolt feladatok közül a harmadik, és negyedik pont az ütemekben megoldandó feladatokat tartalmazza, tehát ütemenként más és más. A további pontokban megfogalmazott feladatokat minden ciklusban végre kell hajtani. b) A program felépítése: A sorrendi feladatokat vezérlő program általános felépítését szemlélteti a 115. ábra szerinti folyamatábra. A ciklikus főprogramba kerülnek mindazok a feladatok, amelyeket ütemtől függetlenek. Az egyes ütemek alprogram -ként (szubrutin, függvény, modul) valósíthatók meg. Mivel minden ütemben azonos feladatokat (az ütemhez tartozó feladatok megoldása, kimenetfrissítés, állapotváltás feltételeinek megvizsgálása) kell végrehajtani különböző paraméterek alapján, ezért a ütemekhez tartozó programok szerkezete egyforma. Start
Inicializálás
Belépés Bemenetek beolvasása, változás vizsgálata, tárolás
Ütemen belüli feladatok megoldása Kimeneti memória frissítése
Ütemválaszt ás 1. ütem
2. ütem
Bemeneti kombinációk vizsgálata
n. ütem
Új ütem ?
n
i
Ütemtől független feladatok
Ütemváltozó módosítása
Kimenetek frissítése
Kilépés
Főprogram
i. ütem programja 115. 159.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A különböző programozható berendezések mindegyikében a fenti szerkezetű programokkal valósíthatóak meg a sorrendi vezérlések. Az ismertetett szerkezet Moore -modell szerinti közelítésnek fele meg. A működés szinkron, ahol a szinkronozás egysége a főprogram egy ciklusa. A következőkben példák segítségével mutatjuk be a különböző programozási megoldásokat. 7.4..6. Általános célú mi krogép ek p rogramozása A különböző általános célú mikrogépek, PC-k, mikrokontroller bázisú berendezések alkalmazásával is megoldhatók a különböző irányítási feladatok. Az ilyen mikrogépeknél a feladatokat megoldó programok fejlesztése általános célú szoftverekkel, úgymint Þ Assembly (gépközeli, vagy utasítás orientált), vagy Þ magas szintű (művelet központú, pl. C) nyelven történhet. A példákban bemutatott programfejlesztések a 8051/31 mikrokontroller család CPU -val kialakított mikrogépekre íródtak. A fejlesztés a Keil-Elektronic szoftvercsomaggal történt, mind az assembly mind, pedig C nyelven. 7.4..7. A sorrendi vezérlések p rogramozása ad atbázis alapján A kombinációs feladatok programozásánál már megismerkedtünk a táblázatokra (7.3..2. fejezet) alapozott feladatmegoldásokkal. Az ott használt táblázatok is tulajdonképpen a feladatot leíró adatokat tartalmazták, tehát egy adatbázis típus. Ebben a fejezetben a sorrendi vezérlések olyan programozási módszerével foglalkozunk, amelynél minden ütemben az elvégzendő műveleteket egy adatsorozat, rekord írja le. Az adatsorozatot, annak tényleges tartalmától független „megoldó program” (interpreter) értelmezi és vezérli a deklarált változókat. Az akció, illetve tranzició változatainak részletesebb tárgyalása elött ismerkedjünk meg a vezérlés struktúráját szemléltető ábrázolás egy másik változatával. Az eddigiekben az állapotgráf mutatta a felépítést. Az új leírás is gráf ( a PLC nyelveknél használt SFC). A leírási módot a 116. ábrán szemléltetjük. Az egyes állapotokat négyszöggel jelöljük, és ezekbe írjuk be az állapot azonosító szimbólumát, valamint az ütemen belüli akciókat. Az akciót egy parancs (pl. S, D stb.) és azt követő operandusz írja le. Az operandusz lehet egy változó, vagy a változó értékét 160.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
meghatározó logikai függvény. Az ütemek közül egy, és csak egy lehet a kezdő, inicializáló ütem, amit kettősvonallal jelölünk. Az ütemekből csak a tényleges állapotváltozást indító tarnziciókat rajzoljuk meg az ütemeket összekötő vonalakra rajzolt vastagított „gát”-tal. Mellé írjuk az ütemváltást engedélyező feltételt, amely lehet egy változó, vagy logikai függvény. Amikor egy ütemből több ütembe történő átmenet (természetesen nem egyidejűleg) lehetséges, azt egy vízszintes vonallal jelöljük, és ebből indulnak a váltási feltételeket leíró „vonalak-gátak”. Az ilyen váltást nevezzük alternatív elágazásnak.
UT0 R IVt1, IVt2, ST Be
UTA R IVt1, IVt2, ST
Ki
__ A1 UT1
__ A1&A2 UT1
UT10
N IVt2, D_3s ST
N IVt1, D_3s ST
Ki
Ki __ F1&A2
F1&A2 UTA
UT0
UT2
__ F2&A1 UT1
F2&A1 UT0
UTA
116. ábra Az állapotgráfnál minden átmenetet a megfelelő irányú nyíl mutatta, ami eléggé áttekinthetetlenné tette az ábrát. Az új jelölésnél „útjelző tábla” (Ö) mutatja a váltás kezdetét és a beírt szimbólum, pedig a célt. A célnál csak egy nyíl jelzi, hogy ide valahonnan állapotváltás indult. A következőben röviden tekintsük át a szükséges vezérlések típusait, a vezérlést előíró parancsokat és operandusokat
161.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
·
1. félév
Akció.
A kimenetek ütemekben történő vezérlését korábban kimeneti kombinációnak (Zx) neveztük. A továbbiakban akciókat jelölünk, amelyek vagy csak egy-egy függő változó értékét állítják be, vagy azok meghatározását végző logikai függvény hívását jelenti. Az egyes függő változók, kimeneti bitek állítása egy adott ütemben, lehet: 1. statikus, amikor a változó az ütem teljes időtartama alatt aktív (Set), vagy inaktív (Reset), 2. bekapcsolás késleltetésű, a változó az ütembe lépés után tk idő múlva lesz aktív (Delay), 3. kikapcsolás késleltetésű, a változó az ütembe lépéskor azonnal aktív, majd
tk idővel késleltetve lesz inaktív (Limit). Az akció másik csoportjában a változó értékét egy meghívott logikai függvény határozza meg (Fv). ·
Rendhagyó akciók
Egyedi esetnek kell tekintenünk az olyan ütemet, amelyik az „akció” adott idő, amely meghatározza az ütem időtartamát (StD). Ezen belül természetesen értelmezhetünk egyéb akciókat. További speciális „akció” a rekord végét jelző parancs (Vr). ·
Állapotváltozás (tranzitio) vezérlése
Az állapotváltozást engedélyezheti egy független változó meghatározott értéke, vagy a független változók egy csoportjára vonatkozó logikai függvény eredményétől ·
A sorrendi műveletek utasításai
Az előzőekben összesen hét műveletet különbözettünk meg. Ezek mindegyikéhez rendelhetünk egy-egy parancs bájtot, amelynek felső három bitje a művelet parancs-kódja. A többi bit, illetve további bájtokban adhatók meg a szükséges műveleti paraméterek, operanduszok. A következő táblázatban foglaltuk össze az utasításokat.
162.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Utasítás szimb.
1. bájt (kód)
2. bájt
3. bájt
4. bájt
S_R
001y mmmm
bitkép L
[bitkép H]
-
Set , Reset akció
D
0100 kkkk
S ttt tttt
mmmm ybbb
-
Bekapcsolás késleltető akció
L
0110 kkkk
S ttt tttt
mmmm ybbb
-
Kikapcsolás késleltető akció
Fv
1000 vvvv
-
-
-
Függvényt hívó akció
StD
1010 kkkk
S ttt tttt
-
-
Késleltetett akció
Tr
1100 mmmy
index
maszk
uuuu
TD
1110 kkkk
S ttt tttt
uuuu
-
Késleltetett ütemváltás feltétele
Vr
0000 0111
-
-
-
Rekord vége
Funkció
Állapotváltás feltétele
A táblázat jelölései: mmmm
a belső műveleti adatmemória (OPMEM) relatív címe
kkkk
a késleltető memória relatív címe
vvvv
függvény vektor
uuuu
következő ütem
S ttt tttt
a késleltetés státusza (S) és hét bites modulusa (ttt tttt)
y
bájt-szám jelölő y=0 egy bájt, y=1 két bájt
bbb
bit sorszám
az index és maszk a kombinációs feladatmegoldó - maszkolt táblázatos - algoritmusánál használt fogalmak (139. oldal). A belső memóriát 16 bájtos funkcionális szegmensekre bontjuk. A szegmensek: OPMEM
műveleti adatmemória, amelyen belül 0 a bemeneti memória H bájt, míg 1 az L bájt relatív címe (Idekerül ciklusonként beolvasásra a bemenet Port). A szegmens 2. és 3. bájtja a kimeneti memória (H-L) relatív címe. (Innen frissíti ciklusonként a kimeneti Port) A további címek általános tárolóként alkalmazhatók.
TM
időzítések bájtjai.
163.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Példák: 1. Egy bájtos kimeneti Port vezérlése adott bitkombinációval. A Set_Reset utasításhoz csak az L bájtra kell írni a bitkombinációt (BKo). Az utasítás kétbájtos:
| 001 0 0000 | BKo | | S_R y mmmm| bitkomb. | 2. Kétbájtos Port H bájtjánál az 5. bit bekapcsolásának késleltetése tk másodperccel. Az aktuális időt a TM szegmens 3. memóriahelye tárolja Az utasítás hárombájtos
| 0010 1011 | 0ttt tttt | 0001 1 100 | |
D
kkkk | modulus | mmmm y bbb|
Következő példaként egy sorrendi vezérlést inicializáló-, (UT0) és alapütemének (UTA) működését leíró rekordjait mutatjuk meg. A példa megértéséhez feltétlenül ismerni kell a változókat. És azok memóriában elfoglalt helyét. Az operatív memória (OPMEM) kezdő címe csak a konkrét programnál szükséges, mivel a felvett utasításainkban relatív címekkel dolgozunk. OPMEM
SEGMENT
DATA BITADDRESSABLE
; operatív változók a BIT címezhető területen
; xxxxxx Operatív memória xxxxxx RSEG OPMEM BEMH:
DS
1
; Bemeneti memória H bájt
BEML:
DS
1
; Bemeneti memória L bájt
KIMH:
DS
1
; Kimeneti memória H bájt
KIML:
DS
1
; Kimeneti memória L bájt
DS
12
;Általános felhasználású memória
A1
BIT
BEML.0
; Független változók
A2
BIT
BEML.2
Ki
BIT
BEML.6
Be
BIT
BEML.7
Inicializáló ütemben végrehajtandó akció az összes kimeneti változó törlése. A műveletet a statikus (S_R) utasítás vezérli, melynél az OPMEM 03 relatív címére (KIML) ír 0-t.
164.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az ütemváltás – tranzició – csak a Be jelű nyomógomb – BEML 8. bitje - aktiválásakor történik, és ekkor a vezérlés az 1 ütemre (UTA) kerül. A leírtaknak megfelelő rekord az alábbi:
UT0: DB
0x13,00,00,
0xC0,0x80,0x80,0x01, 7
(akció)
(tranzició)
(rekord vége)
Alap ütemben végrehajtandó akció megegyezik az inicializáló ütemével (az összes kimeneti változó törlése). A műveletet a statikus (S_R) utasítás vezérli, melynél az OPMEM 03 relatív címére (KIML) ír 0-t. Az ütemváltás – tranzició – több irányba is történhet: ha
A1=0
akkor
váltás a 2 ütembe (UT1);
ha
A1=1 és A2 =0 akkor
váltás a 3 ütembe (UT2);
ha
Ki=1
váltás a 0 ütembe (UT0)
akkor
A leírtaknak megfelelő rekord az alábbi:
UTA: DB
0x13,00,00, 0xC0,0x01,0x01,0x02, 0xC0,0x03,0x05,0x03, (akció)
(tranzició1)
(tranzició2)
0xC0,0x40,0x40, 0x00, 7 (tranzició3)
(rekord vége)
Megjegyzés: a tranzició 2. és 3. bájtjai az adott kombinációnál azindex és maszk A példaként bemutatott két ütemben mind az akció mind, pedig a váltások statikusak. A vezérlésekben rendszerint jelkésleltetéseket, és többféle időzítést is meg kell valósítani. Mielőtt ezek megoldását részleteznénk, tekintsünk át néhány alapfogalmat. ·
Időzítés Minden időzítő egy állandó frekvenciájú impulzus sorozat - az un. időalap – fel-, vagy lefutó változásának számlálásával történik. Az aktuális számtartalmat egy memória rekeszben tároljuk. A késleltetés időtartamát az időalap periódusidejének és az un. modulusnak a szorzata adja . Amikor a számlált érték megegyezik a megadott modulussal, vagyis letelt a kívánt idő, akkor egy jelzőt, a státusz-bitet kell 1-be állítani. Egy felhasználói programon belül általában több időzítést is el kell végezni. Ehhez annyi tároló rekeszre van szükség, ahány egymástól független időzítést kívánunk megoldani. Ugyanakkor egyetlen időalap előállítása is elégséges.
165.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
·
1. félév
Időalap A késleltetésekhez az időalap előállítása két részletben valósítható meg. Egyrészt valamelyik programozható időzítő/számláló egység – pl T0 – mint impulzusgenerátor (2 üzemmód) megszakítás kérése adja a stabil időzítési alapot. Az így előállítható jel frekvenciája az esetek többségében még túl magas. Másik feladat tehát a frekvencia leosztása. A frekvenciaosztást a megszakításnál hívott rutin végzi a hívások számlálásával. A kívánt számú megszakítás bekövetkeztét kell, hogy jelezze, az un. időalap-bit (IB). Másik kérdés, hogy mi határozza meg az alkalmazható leggyorsabb frekvenciát, vagyis az időzítés felbontásának mértékét. Alapkövetelmény, hogy a felhasználói program egy ciklusa alatt legfeljebb egyetlen egyszer legyen IB.
A következő assembly nyelvű programrész a főprogramnak azt a részét szemlélteti, amelyben a be-, és a kimenetek frissítése, valamint az ütemtároló (UT_TAR) aktuális értékétől függően az ütemhez tartozó táblázatcím kiválasztása, és a DPTR -be írása történik. Az aktuális táblázat „értelmezését”, és ez alapján, az ütemen belüli vezérléseket végzi a RUT_T kezdőcímű szubrutin. (A részlet nem tartalmazza a különböző – szegmens, illetve változó – deklarálásokat.) FOPR: CALL MOV MOV MOV MUL JMP
BEOLV
;Bemenetek frissítése
DPTR,#UT_VAL A,UT_TAR B,#9 AB @A+DPTR
;Ütemválasztás kezdő címe ;Az ugrótábla aktuális címének meghatározása
UT_VAL: MOV CALL LJMP
DPTR,#TABL_0 RUT_T KOZOS
; A 0. ütem rutinjának hívása
MOV CALL LJMP
DPTR,#TABL_1 RUT_T KOZOS
; A 1. ütem rutinjának hívása
MOV CALL LJMP
DPTR,#TABL_2 RUT_T KOZOS
; A 2. ütem rutinjának hívása
MOV CALL
DPTR,#TABL_3 RUT_T
; A 3. ütem rutinjának hívása
RUT_K
; Minden ciklusban végrehajtandó feladatok
KOZOS: CALL
;Ütemválasztás kezdete
166.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
CALL
KIIR
JMP
FOPR
T AB L_ 0: T AB L_ 1: T AB L_ 2: T AB L_ 3:
DB DB DB DB
; Kimenetek frissítése
0, 0, 8 0H , 80H , 01, 0, 0 0, 0, 0 CH , 0 1, 0 2, 01, 01, 05, 0 3, 0 1, 0 2, 6, 0 7, 06, 01, 0, 0 3, 06, 03, 01, 0 6 4, 6 8, 0 CH , 0 9, 01, 0, 0 CH , 0 9, 02, 01, 0
Mivel az egyes ütemekhez tartozó táblázatok is ebben a modulban vannak, ezért kell a rutinok hívása előtt megadni a DPTR pointer regiszterben a kezdő címeket. Mivel mindegyik ütemben ugyanaz a végrehajtó rutin, és csak a táblázatok különböznek, ezért egyszerűbb megoldást ad az a módszer, amelynél csak a megfelelő címet választjuk ki egy táblázatból, és csak egyszer kell hívni a RUT_T értelmező szubrutint. Ezt a megoldást láthatjuk az alábbi programrészletben. FOPR: CALL
BEOLV
; Bemenetek frissítése
MOV MOV RLA PUSH
DPTR,#UGR_T ;Ütem ugrótábla bázis címe A,UT_TAR ;Az ugrótábla aktuális címének meghatározása ACC
MOVC MOV POP INC MOVC MOV
A,@A+DPTR P_H,A ACC A A,@A+DPTR P_L,A
MOV MOV
DPH,P_H DPL,P_L
CALL
RUT_T
; A kiválasztott ütem táblázatának megoldása
KOZOS: CALL
RUT_K
; Minden ciklusban végrehajtandó feladatok
CALL
KIIR
JMP
FOPR
T AB L_ 0: T AB L_ 1: T AB L_ 2: T AB L_ 3: U G R _T :
DB DB DB DB DW
; Az aktuális táblázatcím kiolvasása és tárolása
; Az aktuális ütem táblázatának címe
; Kimenetek frissítése
0, 0, 8 0H , 80H , 01, 0, 0 0, 0, 0 CH , 0 1, 0 2, 01, 01, 05, 0 3, 0 1, 0 2, 6, 0 7, 06, 01, 0, 0 3, 06, 03, 01, 0 6 4, 6 8, 0 CH , 0 9, 01, 0, 0 CH , 0 9, 02, 01, 0 T AB L_ 0, T AB L_1, TAB L_ 2, T AB L_3
Mindkét programmegoldásnál az ütemekhez tartozó táblázatok (TABL_0 …. TABL_3) azonosak. Az UGR_T elnevezésű táblázat szavas felépítésű, és elemei tulajdonképpen az egyes ütemtáblázatok kezdő címe (a címke címet helyettesít!!!). Az ütemváltozó értékétől 167.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
függően olvassuk ki a táblázat szükséges elemét, vagyis azt a táblázat-címet, amely elemeit kell felhasználni a következő ütemben.
7.4..8. PLC p rogramozása A programozható logikai vezérlők (PLC -k) tulajdonképpen célorientált mikrogépek. Mind hardver felépítésük mind, pedig programozásuk az automatizálási feladatok céljait szolgálják. A különböző PLC gyártók eltérő programozói szoftvereket bocsátanak a felhasználók rendelkezésére. Ezek többnyire a programozói felületben, a címzési formákban, az alkalmazható utasításokban térnek el. A PLC -k megjelenésétől eltelt cca. 35 évben csak utolsó tíz évben történt jelentősebb változás, amelyet a PC-k operációs (multitask) rendszereinek fejődése hozott magával. A leggyakrabban használt PLC „nyelvek” : Þ Létra-diagram (áramút terv LD), Þ Utasítás-listás (assembly jelleg IL), Þ Szimbolikus (logikai-aritmetikai funkció-blokkokkal FDB), Þ Sorrendi vezérlés (SFC), Þ Strukturált szöveg (ST) 7.4..9. A programí rás Az alkalmazáshoz kiválasztott berendezés eleve meghatározza a program forrásnyelvi megírásához használható editort. Az általános célú mikrogépek -nél a tiszta szövegfájlt előállító szövegszerkesztők használhatók. (Egyes integrált fejlesztői környezetek saját editorral rendelkeznek.) A különböző PLC alkalmazásoknál a gyártok saját fejlesztésű programozói szoftverét kell megtanulni, és alkalmazni. Ezek már egyszerűbb, vagy összetettebb integrált programfejlesztői környezetek, amelyekben rendszerint a fejlesztett program valósidejű futtatása (On-line), tesztelése is elvégezhető.
168.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Jelen oktatási segédanyagban nem részletezzük a programtesztelés, valamint a dokumentálás feladatait. Mindezekkel a mérések során a gyakorlatban szerezhetnek ismereteket. Így fejleszthetik készség szintjéig a megismert eljárások alkalmazását. 7 . 5. P é ld á k s o rre n d i ve zé r l é s e k p rog ra m o zás á ra A fejezetben a sorrendi feladatok két nagy csoportjából, úgymint Þ a lefutó (egy szekvenciájú), valamint Þ az általános (több szekvenciájú) megoldásokra térünk ki. Mind a két csoportban egyazon feladatokat megoldó Þ assembly, Þ C nyelvű, programjait mutatjuk be. A sorrendi vezérlések PLC –k alkalmazásánál a programozáshoz az SFC illetve az ST nyelvek a legalkalmasabbak. Miután e nyelvek ismertetése a második félévben kerül sorra ezért a példáknál, nem írunk PLC programot. 7.5..1. Forgalomi rányító lámpák vezérlése A feladat a 117. ábrán látható egyszerű útkereszteződés forgalmát irányító lámpák vezérlését végző
B irány
A irány
117. ábra Þ mikrokontrolleres vezérlő, illetve Þ PLC programjának elkészítése.
169.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
v A feladat leírása Þ Szöveges feladatmegadás: Az A, illetve B irányokban közlekedő járművek közlekedését kell összehangolnia a forgalomirányításnak. A működés fázisai: 1. alapállapotban egyik lámpa sem világít. 2. a forgalmat a B irányba engedélyező, az A irányba tiltó jelzés, 3. a forgalmat a B irányba tiltást előjelző, az A irányba engedélyezést előjelző jelzés, 4. a forgalmat a B irányba tiltó, az A irányba engedélyező jelzés, 5. a forgalmat a B irányba engedélyezést előkészítő, az A irányba tiltást előkészítő jelzés. A továbbiakban ezek a fázisok ciklikusan ismétlődnek. A működtetés kézi vezérléssel történjen. A két kezelőszerv közül az egyik kétállású kapcsoló x0, amelyik egyik állapotában engedélyezi, a másikban, pedig tiltja a működést. A másik x1 nyomógomb, amelyik lenyomása (pozitív él) a fázisok (állapotok) váltását vezérli. Þ Vezérelt kimenetek: az egyes irányokhoz tartozó hat lámpa, (z 0 …z 6 ) (a lámpák számába nem számít bele az azonos funkció ismétlése!) kimenet z0 z1 z2 z3 z4 z5
Jelölése Z_A S_A P_A Z_B S_B P_B
Funkció Zöld az A irányba engedélyez Sárga az A irányba váltást előjelző Piros az A irányba tilt Zöld az B irányba engedélyez Sárga az B irányba váltást előjelző Piros az B irányba tilt
Þ a szükséges kimeneti kombinációk (Z0 …Zj , ahol j ≤ 2k+1 ) megállapítása A hat kétállapotú lámpa (sötét - világít) lehetséges kombinációinak száma 64. Nem írjuk fel a teljes kombinációs táblázatot, csupán a szükséges sorokat.
170.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Sor- P_B szám (z 5 ) 0 0
S_B (z 4 ) 0
Z_B (z 3 ) 0
P_A (z 2 ) 0
S_A (z 1 ) 0
Z_A Jelölés (z 0 ) 0 Z0
12
0
0
1
1
0
0
Z1
22
0
1
0
1
1
0
Z2
33
1
0
0
0
0
1
Z3
50
1
1
0
0
1
0
Z4
A kimeneti kombinációk táblázatában kijelölt sorok megfelelnek a működési fázisoknak. Þ a különböző állapotok ( Y0 … Ym - 1 , ahol m ≤ j ) száma megegyezik a szükséges kimeneti kombinációk számával, tehát 5. Ezek: Y0 , Y1 , Y2 , Y3 , Y4 . Az Yi állapotjelzőknél és a kimeneti kombinációknál azonos index-el jelöltük az összetartozó értékeket. Þ Az állapotváltozást indító bemeneti kombinációk (X0 …Xs , ahol s ≤ 2n+1 ) kigyűjtése. A bemeneti kombinációs táblázat: Bemeneti kombinációk X0 X1 X2 X3
Be/Ki x0 0 0 1 1
Léptet x1 0 1 0 1
Vezérlési feladat Kikapcsolás Kikapcsolás Bekapcsolás Ütemváltás
Hasznos kombinációk X0 X1 X2
Az első két kombináció - X0 vagy X1 - az Y0 állapotba vezérli a rendszert, tehát összevonható. Þ Állapottáblázat, Bemeneti kombinációk Állapotok
X0
X2
X3
Y0 *
Y0 , Z0
Y0 , Z0
Y1 , Z1
Y1 *
Y0 , Z0
Y1 , Z1
Y2 , Z2
Y2 *
Y0 , Z0
Y2 , Z2
Y3 , Z3
Y3 *
Y0 , Z0
Y3 , Z3
Y4 , Z4
Y4 *
Y0 , Z0
Y4 , Z4
Y1 , Z1
171.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév X0,X2 Y0,Z0 X0
X0
X2
Y2,Z2
Y1,Z1
X3 X0
X3
X2
X2
X3
X0
Y4,Z4
X3
X3
Y3,Z3
X2
118. ábra Az állapottáblázat, illetve az állapotgráf is szemlélteti, hogy a folyamatos forgalomirányítás (Y1, Y2, Y3, Y4 ütemek) egy-szekvenciájú ciklikus (lefutó) vezérlés. Az Y0 alaphelyzetből az indítás, vagy abba való visszatérés – a leállítás – jelent eltérő állapotváltozást. A folytonos vezérlés minden ütemében csak egy-egy kimeneti kombinációt kell érvényesíteni. Az ilyen típusú vezérlésnél legegyszerűbb megoldást az szolgáltatja, ha Þ a kimenti kombinációk sorozatát egy táblázatba – tömbbe – foglaljuk, Þ az állapotjelző mutat mindig a táblázat éppen aktuális elemére (0, 1, 2, 3, 4 számsor szerint), Þ az állapotváltozást indító bemeneti kombináció az állapotjelzőbe a soron következő számot állítja be, Þ a folytonos számsor az …-1-2-3-4-1-2-3-4-1- …. ismétlődő szekvencia. A következőkben a leírtak szerint működő programokat mutatjuk be különböző típusú vezérlők alkalmazására.
172.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
v Az útkereszteződés vezérlése általános célú mikrogéppel A feladatot megvalósító mikrogép a mérési gyakorlatokon használt berendezés. A be-, illetve kimeneteknek használt diszkrét illesztők - nyomógombsor, LED sor – memóriába ágyazott Start
megoldásúak.
A
feladatot mind assembly mind, pedig C nyelvű programozással
Inicializálás
oldjuk meg. A feladat megoldásának egyik
Bemenet frissítés
változata, ha a kimeneti kombinációkat
egy
táblázatba
Be / Ki kapcsolás
(tömbbe)
foglaljuk,
és ebből
olvassuk ki az éppen aktuális értéket. Egy változó, további-
Be?
akban ütemszámláló tárolja az ütem sorszámát, és mutatóként (pointer) kiválasztja a táblázatból
Léptet?
Utm = 0
az éppen aktuális ütem kimeneti kombinációját. Az ütemszámláló
Utm (Ütemváltozó)+1
tartalma csak akkor változik, ha a bemenetekre az X2 kombináció jut, amely 1-el növeli (incremen-
Utm>m
tálja) a mutató értékét. A leírt működés folyamatábrája látható
Utm = 1
a 119. ábrán.
Táblázatból kiolvasás Kimenet frissítés
119.
173.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
§
1. félév
Assembly nyelvű forrásprogram.
;*********************************************** ;* Útkereszteződés vezérlése * ;* Táblázatos feladatmegoldás * ;********************************************* * ;################### DEKLARÁCIÓK ################################### ;******* Szegmensek deklarálása ****** PROG VALTB STACK
SEGMENT SEGMENT SEGMENT
CODE DATA BITADDRESSABLE DATA
;program ;bit-címezhető változók ;stack memória
;****** ADAT szegmens bit-címezhető változóknak ******* BEM: BEMP: UTM: KIM: TEMP: ENG BE KI LEPT
RSEG VALTB DS 1 DS 1 DS 1 DS 1 DS 1 BIT TEMP.0 BIT BEM.0 BIT BEM.1 BIT BEMP.2
;bemeneti memória ;pozitív él tárolása ;ütemtároló ;kimeneti memória ;átmeneti bájt ; bekapcsolást jelző bit ; be gomb ; ki gomb ; ütemváltó gomb
;xxxxxxx Memóriába ágyazott I/O-k xxxxxxx XSEG AT NGS: LEDS:
DS DS
0C000H 1 1
; nyomógomb-sor címe ; LED-sor címe
;xxxxxxx STACK kijelölés xxxxxxx RSEG DS
STACK 10H
;STACK kezdet ;16 bájtos STACK
;xxxxxxx Program szegmens xxxxxxx
START: INIT:
RSEG
PROG
LJMP DS CLR MOV MOV MOV MOV MOV
INIT 10 A TEMP,A UTM,A KIM,A BEMP,A BEM,A
CALL MOV ORL ANL MOV JNB
BE_OLV C,ENG C,BE C,/KI ENG,C ENG,ALAP
; bementek beolvasása ; működés bekapcsolása
JNB INC MOV CJNE MOV SJMP
LEPT,KIIRAT UTM A,UTM A,#05H,KIIRAT UTM,#01H KIIRAT
; következő ütem ? ; ütemváltozó növelése
; változók törlése
FOPR:
; bekapcsolva ?
174.oldal
; elölről ? ; IGEN az első ütem
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
ALAP: CLR MOV
A UTM,A
; alapállapotba vezérlés
MOV MOV MOVC CPL MOV MOVX SJMP
A,UTM DPTR,#TABL A,@A+DPTR A DPTR,#LEDS @DPTR,A FOPR
; az aktuális érték kiolvasása
MOV MOVX CPL MOV XRL ANL MOV MOV RET
DPTR,#NGS A,@DPTR A B,A A,BEM A,B BEMP,A BEM,B
; beolvasó és pozitív élt ; képző rutin
DB
0,21H,13H,0CH,1AH
; kimeneti táblázat
KIIRAT:
; kimenetek vezérlése
BE_OLV :
TABL: ;a kimenetek bit-kiosztása : X | X | P_B | S_B | Z_B | P_A | S_A | Z_A | ; MSB LSB
§
C nyelvű forrásprogram /* Lefutó típusú sorrendi vezérlés */ #include < absacc.h > #define BE_PORT XBYTE[0xc000] #define KI_PORT XBYTE[0xc001]
/* Gyakorló nyomógomb címe */ /* Gyakorló LED sor címe */
void be_olv (void);
/* beolvasó fv. prototípus*/
unsigned char code TABL[]={0x0,0x21,0x13,0x0c,0x1a}; unsigned char bdata bem, bemp, bemn, kim, atm, utm, temp; sbit ENG=temp^0; sbit LEPT=bemp^2; sbit BE=bem^0; sbit KI=bem^1; void main (void) { bem=bemp=bemn=kim=atm=utm=temp=0; do { be_olv(); ENG=(BE|ENG)&~KI; if (ENG) { if (LEPT) { if (++utm==5) utm=1;} } else utm=0; KI_PORT=~TABL[ utm ]; }while (1); }
175.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
void be_olv (void) { atm = ~BE_PORT; bemp= (bem ^ atm)&atm; bemn=(bem ^ atm)&bem; bem = atm; }
A következő oldalakon az útkereszteződés közlekedést irányító lámpáinak vezérlőprogramját mutatjuk be három megismert PLC alkalmazásakor. A 120. ábrán az OMRON Cx Programmer fejlesztői környezetében írt program látható.
.
b.
c. a. 120.
176.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A Siemens Simatic Step7 környezetben megírt program látható a 121.ábrán
121. 177.oldal
ábra
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A Schneider Electric Unity Pro XL környezetben fejlesztett programot mutatja a 122. ábra.
122.
ábra
A bemutatott programokban nem adtuk meg a vezérlés szimbólum-tábláit.
178.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
7.5..2. Fo lyad éktároló tartály ok töltésén ek, ürí tésének vezérlése A 123. ábra egy kéttartályos folyadéktároló rendszer technológiai felépítését szemlélteti. A rendszer vezérlése általános (több szekvenciájú) sorrendi feladat. A példa kapcsán mutatjuk be a program tervezését.
123. §
ábra
A feladat leírása Þ Szöveges feladatmegadás:
A tartály rendszerben a T2 jelű a fő tartály, és a T1 jelű puffer tartály, amely szerepe a lehető folyamatos anyag-kivételezés biztosítása. A tartályból csak addig szabad üríteni, amíg a főtartályban az anyag az alsó szintjelző alatt van. A vezérléssel kell biztosítani, hogy
179.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
mindkét tartályban legyen anyag (töltés), valamint, hogy a szállítókocsiba mindig lehessen anyagot üríteni valamelyik tartályból. A töltés, és az ürítés feltételeit a későbbiek tartalmazzák. A technológiai berendezésben a tartályok töltése nagyobb keresztmetszetű csöveken történik, mint az ürítés. A felépítés miatt ugyanazon tartálynál töltés, és ürítés egyidejűleg végezhető. A töltés, illetve az anyag-kivételezés irányát meghatározó szelepek háromállásúak. Amennyiben egyik tekercse sincs gerjesztve, akkor a szelep egyik irányba sem enged anyagáramlást. A következőkben megadjuk az egyes szakaszok vezérlési feltételeit § Ta rt ályo k t ölt ése: Bármelyik tartályt kiürülése után, azt megszakítás nélkül kell teli tölteni. Amennyiben mindkét tartály üres, akkor a T1 puffer-tartály megtöltését kell vezérelni. A töltés megkezdése előtt az irányt kell beállítani az irányválasztó szelep (IVt-1, IVt2) megfelelő vezérlésével, és ezt követően csak 3 mp elteltével nyitható a töltő szelep (ST), miközben az irányváltó gerjesztve marad. A töltés befejezése után a szelepek gerjesztését meg kell szüntetni, de úgy hogy előbb kell leállítani az ST gerjesztését! § An yagki vét el a t art á lyo kb ól Anyag-kivételezés valamelyik tartályból csak akkor indítható, a van kocsi az ürítő helyen, és az nincs tele. Ha mindkét tartályban van anyag, akkor a T2 tartályból kell üríteni. A T1 tartályból csak üres T2 esetén szabad az ürítés. Az ürítés megkezdése előtt a választó szelepet (IVü-1, IVü-2) kell a megfelelő helyzetbe állítani, s ezt követő 3 mp után nyitható csak a megfelelő ürítő szelep (SU_1, vagy SU_2), ), miközben az irányváltó gerjesztve marad. Amikor nincs anyag-kivételezés, akkor a szelepek gerjesztését meg kell szüntetni, de úgy hogy előbb kell leállítani az éppen működő S_U szelep gerjesztését! § Ál lap ot j el zé s A T_JL a vezérlés indítása után folytonosan világítson, ha mindkét tartályban van anyag. 1 Hz-es k = 0,7 kitöltésű (0,7 mp - ig világít a lámpa), ha csak az egyik 180.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
tartályból lehet üríteni, 2 Hz-es k = 0,5 kitöltésű, ha mindkét tartály üres, hibás szintjelzést pedig (pl. F1=1, A1=0) 2 Hz-es k=0,7 kitöltésű szaggatott fénnyel jelezze! A következő táblázatban adjuk meg a be-, és kimenetek bitkiosztását. Kimenetek: z7 z6 IVü-2 IVt-2
z5 SU_1
z4 z3 SU_2 IVü-1
z2 ST
z1 IVt-1
z0 T_JL
x2 A2
x1 F1
x0 A1
Bemenetek: x7 Be
x6 Ki
x5 SZJ
x4 VH
x3 F2
Þ A vezérlés tervezése A tervezés első lépéseként meg kell határozni, hogy a vezérlése bontható-e szakaszokra, vagy sem. Önálló szakaszok akkor képezhetők, ha vannak egymástól függetlenül működtetett kimenetek, vagy kimeneti kombinációk. A példa szerinti rendszerben az automatikus töltés, anyagkivétel (ürítés) és jelzés három önálló vezérlési szakaszra bontható. Az első szakasz tartályok – a megadott feltételek szerinti - töltése, amely csak a tartályok töltöttségi állapotától függ, és független, hogy van-e szállítókocsi az ürítő helyen. A második szakasz az anyag-kivételezés (tartályürítés), amely a tartályokban lévő anyagmennyiség mellet függ a szállítókocsi helyzetétől, illetve az abban lévő anyag mennyiségétől is. A harmadik szakasz az állapotjelzések vezérlése. A feladat általános leírása után az egyes vezérlési szakaszok tervezése következik. Mindhárom szakasznál a következő lépéseket kell elvégezni: 1. a vezérelt kimenetek deklarálása, és a szükséges kimeneti kombinációk meghatározása, 2. a szükséges állapotok számának megállapítása, 3. a bemeneti változók deklarálása, és a használt bemeneti kombinációk kijelölése, 4. az állapottáblázat felírása,
181.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
5. az állapotgráf megrajzolása, 6. az állapotváltó függvények meghatározása. A továbbiakban az egyes szakaszok tervezését végezzük el. Þ A tartályok töltésének vezérlése. A Funkció rovatban rövidítetten feltüntettük, hogy az egyes vezérlési szint hogyan működteti az adott elemet. 1. A vezérelt kimenetek deklarációja: Kimenet
Jelölése
z2 z1 z6
ST IVt-1 IVt-2
Funkció Töltő szelep (1 – nyit ) Töltés irányváltó szelep T1 felé (1-gerjeszt) Töltés irányváltó szelep T2 felé (1-gerjeszt)
2. Kimeneti kombinációk Zi *Z0 Z4 *Z2 *Z6 *Z64 *Z68 Z66 Z70 1.
IVt-2 z6 0 0 0 0 1 1 1 1
IVt-1 z1 0 0 1 1 0 0 1 1
ST z2 0 1 0 1 0 1 0 1
Funkció Alap, vagy mindkét tart. tele tiltott T1 tartály kiválasztása T1 tartály töltése T2 tartály kiválasztása T2 tartály töltése tiltott tiltott
A szükséges ütemek meghatározása
A kimeneti kombinációk alapján a csillaggal jelölt kombinációk vezérlése szükséges. Az egyes tartályok kiválasztása, és töltése egy ütemben is megoldható ütemen belüli késleltetéssel. Ekkor az alábbi három ütemet mindenképpen meg kell valósítani. ·
UT1
Z0 kombináció
alaphelyzet egyik tartályba sincs töltés,
·
UT2
Z2 és Z3 kombináció
T1 kiválasztása, és töltése,
·
UT3
Z4 és Z5 kombináció
T2 kiválasztása, és töltése,
Szükséges még egy inicializáló (készenléti) ütem – UT0 - beiktatása is. A hálózati táplálás bekapcsolása után ez az ütem állítja be a kezdeti értékeket. Innen csak az indító parancs viheti alaphelyzetbe a vezérlési szakaszt.
182.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
2.
1. félév
A vezérlő bemenetek deklarációja
A következő táblázat tartalmazza a bemeneti szint-, és helyzetérzékelők, valamint a parancsadó készülékek felsorolását, elnevezésüket, és funkcióikat. Bemenet x0 x1 x2 x3 x6 x7
Jelölése A1 F1 A2 F2 Ki Be
Funkció T1 tartály alsó szintjelzője ( 1 – van folyadék ) T1 tartály felső szintjelzője ( 1 – van folyadék ) T2 tartály alsó szintjelzője ( 1 – van folyadék ) T2 tartály felső szintjelzője ( 1 – van folyadék ) A működés kikapcsolója ( 1 hatására ) A működés bekapcsolója ( 1 hatására )
Az állapotváltozást indító bemeneti kombinációk kigyűjtése. Az indító Be nyomógombot (XB kombináció) csak az inicializáló ütemben kell figyelni. A Ki gomb (XK kombináció) működtetése mindegyik ütemben azonosan az UT0-ba kell, hogy vezérelje a működést, ezért ezt csak ciklusonként kell figyelni. Az automatikus ütemváltásoknál csak a szintjelzőknek van szerepe. A bemeneti kombinációs táblázat: A táblázat nem tartalmazza azokat a kombinációkat, amelyek nem fordulhatnak elő (ezek egyszerűsítésnél, vagy hibajelzésre használhatók.) Bem. F2 A2 F1 A1 Funkció komb. (x 3 ) (x 2 ) (x 1 ) (x 0 ) X0 0 0 0 0 T1 üres, T2 üres X1 0 0 0 1 T1-ben van, T2 üres X3 X4 X5
0 0 0
0 1 1
1 0 0
1 0 1
T1 tele, T2 üres T1 üres, T2-ben van T1-ben van, T2-ben van
X7
0
1
1
1
T1 tele, T2-ben van
X12 X13
1 1
1 1
0 0
0 1
T1 üres, T2 tele T1-ben van, T2 tele
X15
1
1
1
1
T1 tele, T2 tele
183.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
3. Állapottáblázat A MOORE modell szerinti megoldást alkalmazzuk, ami azt jelenti, hogy az adott állapothoz rendeljük a kimenetei kombinációt. A szükséges késleltetést az ütemváltás előtt kell indítani, és ezért az új ütemhez két – a késleltetés előtti, és az utáni – kimeneti kombináció tartozhat.
Be XB UT0 UT1 UT2 UT3
Ki XK
T1 van T2 tele
T1 tele T2 tele
T1 üres T2 üres
T1 van T2 üres
T1 tele T2 üres
T1 üres T2 van
T1 van T2 van
T1 tele T2 van
T1 üres T2 tele
X0
X1
X3
X4
X5
X7
X12
X13
UT0 Z0 UT3 Z0
UT0 Z0 UT3 Z0
UT0 Z0 UT1 Z0
UT0 Z0 UT1 Z0
UT3 Z6
UT2 Z6
UT1 Z6
UT0 Z0 UT2 Z0 UT2 Z2 – Z6
UT0 UT0 Hálózat Z0 bekap. Z0 UT1 UT1 Alapállapot Z0 Z0
UT2 Z6
UT0 Z0 UT2 Z0 UT2 Z2 – Z6
UT3 Z68
UT3 Z68
UT2 Z68
UT1 UT1 T2 töltése Z68 Z68
Y1 UT0 UT0 Z0 Z0 Z0 UT1 UT0 UT2 Z0 Z0 Z0 UT2 UT2 UT0 Z2 – Z6 Z6 Z6
UT3 UT3 UT3 UT0 UT3 UT3 Z64 – Z64 – Z68 Z68 Z68 Z68 Z68 Z68
X15
UT2 UT1 T1 töltése Z6 Z6
Az állapottáblázatból a 124. ábrán látható állapotgráf -ot lehet felrajzolni. X 0 …… X 15 UT 0 Z0 XB X 5,7,13,15
XK UT 1 Z0 X 13,15
X 7,15
XK
XK X 0,4,12
UT2 Z2 –Z 6
X 1,3 UT3 Z64 -Z68
X 12 X3
X 0,1,4,5,12,13
124.
184.oldal
ábra
Működés
X 1,3,4,,5,7
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Az állapottáblázatból, illetve a gráfból kiválaszthatók az egyes állapotok közötti váltást eredményező bemeneti kombinációk. Amelyik átmeneti feltétel csak egyetlen kombináció (egy-indexű) azok tovább nem egyszerűsíthetőek. A több kombinációtól is függő átmenetek legegyszerűbb logikai függvényének meghatározásához logikai összevonást végzünk. Þ Az állapotváltó bemeneti kombinációk egyszerűsített függvényei A továbbiakban meghatározzuk az egyes átmeneteket vezérlő legegyszerűbb függvényeket. UT0 ® UT1
f 0,1 = X B = Be
UT1 ® UT0
f1,0 = X K = Ki
UT2 ® UT0
f 2 ,0 = X K = Ki
UT3 ® UT0
f 3,0 = X K = Ki
UT2 ® UT1 F1 A1 0 1 F2 A2 00 01 0 00 4 01 12 11 8 10 x x
UT1 ® UT2 F1 A1 0 1 3 2 F2 A2 00 01 11 10 0 00 1 x 4 01 1 x 12 11 1 x 8 10 x x x x
f 2,1 = A 2 F1
f1, 2 = A1 UT1 ® UT3 F1 A1 0 1 F2 A2 00 01 0 00 1 4 01 12 11 8 10 x x
3 2 11 10 x 1 x 1 x x x
UT3® UT1 F1 A1 0 1 F2 A2 00 01 0 00 4 01 12 11 1 8 10 x x
3 2 11 10 1 x x x x x
f 3,1 = F2 A1
f1,3 = A1 A 2
185.oldal
3 2 11 10 x x 1 x x x
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
UT2 ® UT3 F1 A1 0 1 F2 A2 00 01 0 00 4 01 12 11 8 10 x x
UT3 ® UT2 F1 A1 0 1 3 2 F2 A2 00 01 11 10 0 00 x 4 01 x 12 11 1 x 8 10 x x x x
3 2 11 10 1 x x x x x
f 2,3 = F1 A 2
f 3,2 = F2 A1
Þ A tartályok ürítésének vezérlése. 1. A vezérelt kimenetek deklarációja: Kimenet
Jelölése
z4 z5 z3 z7
SU_2 SU_1 IVu-1 IVu-2
Funkció T2-ből ürítő szelep (1 – nyit ) T1-ből ürítő szelep (1 – nyit ) Ürítés irányváltó szelep T1 felé (1-gerjeszt) Ürítés irányváltó szelep T2 felé (1-gerjeszt)
2. Kimeneti kombinációk Zi *Z0 *Z8 Z32 *Z40 *Z128 Z136 Z160 Z168 Z16 Z24 Z48 Z56 *Z144 Z152 Z176 Z184
SU_2 z4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
IVu-2 z7 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
SU_1 z5 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
IVu-1 z3 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
186.oldal
Funkció Alap T1 tartály kiválasztása tiltott T1 tartály ürítése T2 tartály kiválasztása tiltott tiltott tiltott tiltott tiltott tiltott tiltott T2 tartály ürítése tiltott tiltott tiltott
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
1.
A szükséges ütemek meghatározása
A tartályok töltéséhez hasonlóan itt is egy ütemben oldható meg a soron következő tartály kiválasztása, és ürítése. Itt is szükséges egy inicializáló (készenléti) ütem – UU0 beiktatása is. ·
UU0
Z0 kombináció
inicializáló ütem
·
UU1
Z0 kombináció
alaphelyzet egyik tartályból sincs ürítés,
·
UU2
Z8 és Z40 kombináció
T1 kiválasztása és ürítése,
·
UU3
Z128 és Z144 kombináció
T2 kiválasztása és ürítése.
2.
A vezérlő bemenetek deklarációja
A következő táblázat tartalmazza a bemeneti szint-, és helyzetérzékelők, valamint a parancsadó készülékek felsorolását, elnevezésüket, és funkcióikat.
Bemenet x0 x2 x4 x5 x6 x7
Jelölése A1 A2 VH SZJ Ki Be
Funkció T1 tartály alsó szintjelzője (1 – van folyadék) T2 tartály alsó szintjelzője (1 – van folyadék) A kocsi helyzetjelzője (1 –van kocsi) Kocsi szintjelzője (1 – kocsi tele) A működés kikapcsolója (1 hatására) A működés bekapcsolója (1 hatására)
3. Az állapotváltozást indító bemeneti kombinációk kigyűjtése. Az indító Be nyomógombot (XB kombináció) csak az inicializáló ütemben kell figyelni. A Ki gomb (XK kombináció) működtetése mindegyik ütemben azonosan az UU0-ba kell, hogy vezérelje a működést, ezért ezt csak ciklusonként kell figyelni. Az automatikus ütemváltásoknál az alsó szintjelzőknek, a kocsi helyzet-, és teltségét jelző érzékelőknek van szerepe. A bemeneti kombinációs táblázat: A táblázat nem tartalmazza azokat a kombinációkat, amelyek nem fordulhatnak elő (ezek egyszerűsítésnél, vagy hibajelzésre használhatók.)
187.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Bem. SZJ VH A2 A1 komb. (x 5 ) (x4 ) (x 2 ) (x 0 ) X0 0 0 0 0 X1 0 0 0 1 X4 0 0 1 0 X5 0 0 1 1 X16 0 1 0 0 X17 0 1 0 1 X20 0 1 1 0 X21 0 1 1 1 X48 1 1 0 0 X49 1 1 0 1 X52 1 1 1 0 X53 1 1 1 1
Funkció kocsi nincs, T1 T2 üres kocsi nincs, T1-ben van, T2 üres, kocsi nincs, T1 üres, T2-ben van, kocsi nincs, T1 - T2-ben van kocsi van, T1 T2 üres, kocsi van, T1-ben van, T2 üres, kocsi van, T1 üres, T2-ben van, kocsi van, T1 - T2-ben van, kocsi tele, T1 T2 üres, kocsi tele, T1-ben van, T2 üres, kocsi tele, T1 üres, T2-ben van, kocsi tele, T1 - T2-ben van,
4. Állapottáblázat A MOORE modell szerinti megoldást alkalmazzuk, ami azt jelenti, hogy az adott állapothoz rendeljük a kimenetei kombinációt. A szükséges késleltetést az ütemváltás előtt kell indítani, és ezért az új ütemhez két – a késleltetés előtti, és utáni – kimeneti kombináció tartozhat. Kocsi nincs
Be
Kocsi van
Kocsi tele
T1- T1- T1 T1 - T1- T1- T1 T1 - T1- T1- T1 T1 T2 ben üres T2- T2 ben üres T2- T2 ben üres T2üres van T2- ben üres van T2- ben üres van T2- ben Ki T2 ben van T2 ben van T2 ben van üres van üres van üres van
XB XK
X0
X1
X4
X5 X16 X17 X20 X21 X48 X49 X52 X53 Működés
UU UU UU UU UU Hálózat 0 0 0 0 0 0 0 0 0 0 0 0 bekap. Z0 Z0 Z0 Z0 Z0 Z0 Z0 Z0 Z0 Z0 Z0 Z0 UU UU UU UU UU UU UU UU UU UU UU UU AlapUU UU3 UU1 1 0 1 1 1 1 2 3 1 1 1 1 állapot Z Z0 Z0 Z0 Z0 Z0 1 0 Z0 Z0 Z0 Z0 Z0 Z0 Z0 Z0 UU UU UU UU UU UU UU UU UU UU UU UU UU UU3 2 UU2 2 T1 ürítése 0 1 1 1 1 1 1 1 1 1 Z8- Z40 3 Z40 Z40 Z40 Z40 Z40 Z40 Z40 Z40 Z40 Z40 Z40 Z40 Z40 UU UU UU UU UU UU UU UU3 UU3 UU UU UU UU UU Z128 Z128 1 1 1 1 1 1 2 1 1 1 UU3 3Z1 0 T2 ürítése Z14 Z14 Z14 Z14 Z14 Z14 Z14 – – Z14 Z14 Z14 Z14 44 Z144 Z144 4 4 4 4 4 4 4 4 4 4 4 UU0 UU1 Z0
UU UU UU UU UU UU UU
UU0 Z0
Az állapottáblázatból a 125. ábra szerinti állapotgráf -ot lehet felrajzolni.
188.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév X 0 …… X 53 UU 0 Z0 XB X
0,1,4,5,16,
48,49,52,53
X
XK
UU 1 Z0
X
0,1,4,5,16,
48,49,52,53
0,1,4,5,16,
48,49,52,53
X 17
UU 2 Z8 Z 40 X
XK
XK
X 20,21
X 17 X 20,21
UU 3 Z128 – Z 144
X
20,21
17
125. ábra Az állapottáblázatból, illetve a gráfból kiválaszthatók az egyes állapotok közötti váltást eredményező bemeneti kombinációk. A tartályok töltésének tervezésekor ismertetett módon itt is elvégezzük a lehetséges függvényegyszerűsítéseket. Þ Az állapotváltó bemeneti kombinációk egyszerűsített függvényei A továbbiakban kigyűjtjük az egyes átmeneteket vezérlő legegyszerűbb függvényeket. UU0 ® UU1
f 0,1 = X B = Be
UU1 ® UU0
f1,0 = X K = Ki
UU2 ® UU0
f 2 ,0 = X K = Ki
UU3 ® UU0
f 3,0 = X K = Ki
UU2 ® UU1 A2 A1 0 1 SZJ VH 00 01 0 00 1 1 16 01 1 0 48 11 1 1 32 10 x x
UU1 ® UU2 A2 A1 0 1 5 4 SZJ VH 00 01 11 10 0 00 16 01 1 48 11 32 10 x x x x
fu1,2 = A1 * A 2 * VH * SZJ fu
2 ,1
5 4 11 10 1 1 0 0 1 1 x x
= SZJ VH ( A 1 + A 2 ) =
= SZJ + VH + A 1 A 2
189.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
UU1 ® UU3 A2 A1 0 1 SZJ VH 00 01 0 00 16 01 48 11 32 10 x x
1. félév
UU3® UU1 A2 A1 0 1 SZJ VH 00 01 0 00 1 1 16 01 1 0 48 11 1 1 32 10 x x
5 4 11 10 1
1
x
x
f1,3 = SZJ * VH * A 2 fu
3 ,1
5 4 11 10 1 1 0 0 1 1 x x
= SZJ VH ( A 1 + A 2 ) =
= SZJ + VH + A 1 A 2
UU2 ® UU3 A2 A1 0 1 SZJ VH 00 01 0 00 16 01 48 11 32 10 x x
5 4 11 10 S 1
1
x
x
f 2,3 = SZJ * VH * A 2
UU3 ® UU2 A2 A1 0 1 5 4 SZJ VH 00 01 11 10 0 00 16 01 1 48 11 32 10 x x x x
fu 3, 2 = A1 * A 2 * VH * SZJ
190.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
Þ Állapotjelzés A feladat szerint a T_JL jelű lámpa vezérlése kombinációs feladat. A villogtatást egyetlen késleltetéssel megvalósítható, A késleltetés időalapot a T0 megszakításával kell létrehozni. Az alábbi folyamatábra szerint, bármelyik programozási nyelvvel megírható a működtetés. Start __ Am = Be + Am Ki
Használt segédváltozók:
Am
T_JL = 0
Am - automata mód bekapcsolva
__ __ A1 A2 ?
IB - időalap bit IB ?
Vm + 1
T_JL = 1
Vm - villogtatás memóriája Veg - a villogtatás modulusa
Vm = Veg ? __ T_JL = T_JL
IB=0, Vm=0 Vége
126.
ábra
Þ A működtető program tervezése A programtervezés első lépése a megoldást szolgáló –
programszerkezet, valamint
–
az alkalmazandó algoritmusok meghatározása.
A programszerkezetet az ismertetett (7.4.5 fejezet) megoldás szerint választjuk.
191.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A főprogram végzi a –
a be-, és kimenetek aktualizálását,
–
az aktuális ütemet végrehajtó programrész kiválasztását, és
–
a ciklusonként végrehajtandó feladatokat
Az alprogramok hajtják végre az egyes ütemekhez tartozó –
kimeneti értékek frissítését,
–
csak az adott ütemben végrehajtandó feladatokat (pl. késleltetés),
–
az ütemváltás feltételeinek megvizsgálását, s ha kell az ütemváltozó módosítását.
Mindegyik ütemben azonos jelleggel adott értékek mozgatását (kimeneti kombinációk kivitele), illetve a bemeneti értékeket kell összehasonlítani meghatározott változócsoport elemeivel (az állapotváltozások meghatározásánál). Mindkét műveletsornál az állandókat táblázatba (tömb-be) foglalhatjuk, és ezek elemeivel végezzük a kijelölt műveleteket. Az útkereszteződés vezérlését bemutató példában az adott ütemen belüli kimeneti kombináció azonos, vagyis ütemen belüli változást nem kell vezérelni. Jelenlegi példánkban már egy ütemen belül különböző időpontokban kell állítani az irányváltó és töltő (ürítő) szelepek be-, kikapcsolását. Az ütemen belüli kimenetvezérléseknél tehát többféle vezérlést más szóval akciót kell végrehajtani. Az egyes ütemváltások, másképpen tranzició feltételeinél is több változat lehet. A következőkben, a mintapéldából csak a tartályok töltését vezérlő programrészeket mutatjuk be a C - nyelvű, és a három PLC SFC -nyelvű változatában. Nem térünk ki az időzítés és az állapotjelzések stb. megoldására A mikrogépes vezérlés programjában követhető – a korábban már tárgyalt – elvi megoldás. B e lép és Ü te m e n b elü li fela d a tok m eg o ld á sa K im en eti m e m ó ria fr is sítés e
Az állapotok feladatait megvalósító egyedi függvények a 127. ábrán látható folyamatábra szerinti felépítésűek.
B em en eti k o m b in á c ió k vizs g á la ta
Ú j ü tem ?
n
i Ü tem vá ltoz ó m ód osítá sa
K ilé p é s
127. ábra
192.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A main() főprogram legfontosabb funkciói a 125.
Start
ábra szerinti felépítésű.
Inicializálás
A be-, és kimenetek a P2 és P0 portokon keresztül
Bemenetek beolvasása, változás vizsgálata, tárolás
kapcsolódnak a mikrogéphez. Az aktuális ütemválasztás a switch case funkcióval
Ütemválaszt ás 1. ütem
2. ütem
n. ütem
történik az ütemjelző (utj) értéke szerint A példában ütemtől független feladatok nincsenek
Ütemtől független feladatok
Kimenetek frissítése
128.
ábra
A tartályok automatikus töltésének C -nyelvű programja: void utt_0(void) {
// 0. töltő ütem, alaphelyzet
// az ütemen belüli vezérlések kim = kim & 0xB9; //Mindegyik kimenet kikapcsolása // ütemváltás feltételeinek vizsgálata if (fut) utj=1; } void utt_1(void) {
// 1. töltő ütem, alaphelyzet
// az ütemen belüli vezérlések kim = kim & 0xB9; //Mindegyik kimenet kikapcsolása // ütemváltás feltételeinek vizsgálata if (!A1) utj=2; if (A1&!A2) utj=3; } void utt_2(void) {
// 2. töltő ütem, töltés a T1 tartályba
// az ütemen belüli vezérlések IVt_1=1; If(!F1) { kt = T_ON(ttv,ib_01s,kt); if (kt >= 30) S_T=1; if(S_T) ttv=0; else ttv=1; }
// irány kiválasztása // az S_T ürítő szelep késleltetett bekapcsolása
193.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
// ütemváltás feltételeinek vizsgálata else { S_T=0; ttv=1;kt=T_ON(ttv,ib_01s,kt); if (kt >= 10) {IVt_1=0;utj=1;}} } void utt_3(void) {
// 3. töltő ütem, töltés a T2 tartályba
// az ütemen belüli vezérlések IVt_2=1;
// irány kiválasztása
if (!F2) { kt = T_ON(ttv,ib_01s,kt); if (kt >= 30) S_T=1; if(S_T) ttv=0; else ttv=1;
// az S_T ürítő szelep késleltetett bekapcsolása
} // ütemváltás feltételeinek vizsgálata else { S_T=0; ttv=1;kt=T_ON(ttv,ib_01s,kt); if (kt >= 10) {IVt_2=0;utj=1;}} }
// A főprogram void main() { while (1) { kim=utj=0; TMOD&=0xf0; TMOD |=2; TR0=1; TH0=63; EA=ET0=1; do { bem=~P2;
// inicializálás
// ciklikus program kezdete // bemenetek frissítése
fut=(BEG | fut)&~KIG; if (!fut) {utj= 0;}
// indítás/leállítás
switch (utj) { case case case case }
// ütemválasztás 0: 1: 2: 3:
utt_0();utem=(utem&0xf0)|0x1;break; utt_1();utem=(utem&0xf0)|0x2;break; utt_2();utem=(utem&0xf0)|0x4;break; utt_3();utem=(utem&0xf0)|0x8;break;
P0=~kim;
// kimenetek frissítés
} while (1);
// ciklikus program vége
}//while vége }//main vége
A példaprogramok befejezéseként mutatjuk be a tartály-vezérlést PLC- vel. Az SFC programban csak az ütemek feladatit (akciók-tranziciók) programozzuk A főprogram tulajdonképpen a megrajzolt gráf, amely alapján a PLC operációs programja végzi a működtetést. 194.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
1. félév
A CX-Programmer
·
129.
ábra
130.
ábra
A Unity Pro XL
195.oldal
Zalotay Péter: Programozható irányítások I Elméleti tananyag
·
1. félév
A Simatic Step7
131.
196.oldal
ábra