Tartalmi kivonat
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 Z6 Az irányítástechnika rendszertechnikai összefoglalása. 6 1. Alapismeretek 7 1.1 Alapfogalmak7 1.2 Az irányító rendszer és feladatai 7 1.21 Vezérlés8 1.22 Szabályozás 9 1.23 Adatok gyűjtése – tárolása 12 1.3 Irányítási rendszerek felépítése 13 1.31 Egyedi irányítások 13 1.32 Csoportos irányítások14 1.33 Strukturált irányítások14 1.34 Az irányított rendszer felosztási módozatai 16 1.35 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ök21 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ása24 3.3 Digitális perifériák 25 3.31 Portok 25 3.32 Oszcillátor 28 3.33 Időzítők-számlálók28 3.34 Analóg perifériák 32 3.35 Soros kommunikáció36 4. A programozható logikai vezérlők (PLC) alkalmazása 48 4.1 Történeti áttekintés 48 4.2 Az alkalmazott három PLC típus összehasonlítása51 4.21 Hardver kialakítás 52 4.22 A tápegység 53 4.23 A CPU 53 4.24 Diszkrét I/O illesztők 55 4.25 Analóg illesztők56 4.26 A memória 57 III. R É S Z 58 Irányítástechnikai programok tervezése, fejlesztése.58 5. Programfejlesztés 59 5.1 A programozás célja 59 5.2 A programfejlesztés lépései 59 5.3 A programfejlesztés eszközei60 5.4 Programszerkezetek61 5.5 A PLD -k programozása 70 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.73 6.1 Változók és deklarálásuk: 73 6.2 Operátorok: 74 6.3 Utasítások:76 6.31 Ciklusszervező utasítások: 76 6.32 Elágazást vezérlő utasítások78 6.33 Ciklust módosító utasítások81 6.4 Az élőfeldolgozó (preprocesszor) utasításai 82 6.5 Függvények84 6.51 Függvények definíciója és deklarációja 84 6.1 Példa: 86 6.2 Programfejlesztői környezetek89 6.21 A 8051/31 család programfejlesztői környezete 90 6.22 CX-Programmer 94 6.23 Schneider Electric Unity Pro XL98 6.24 Siemens Step 7 102 6.3 A PLC –k programozási nyelvei 106 6.31 A PLC típusonkénti programozás 106 6.32 A PLC programozási nyelvek szabványosítása 107 6.33 A létradiagram az LD (Ladder Diagram) nyelv 108 6.34 Az FBD (Function Block Diagram) nyelv 111 6.35 Utasítás listás IL (Instruction Logic) nyelv 112 6.36 Az SFC (Sequential Function Chart) nyelv 113 IV. R É S Z 124
Kombinációs és sorrendi vezérlések programozása. 124 7. Vezérlések programozása 125 7.1 A tervezés lépései 125 7.2 Kombinációs vezérlések 126 7.21 A feladat változóinak meghatározása 126 7.22 A kiinduló adatok, megadása, felvétele 126 7.23 A legegyszerűbb logikai függvény meghatározása 126 7.24 A numerikus eljárás bemutatása 127 7.25 Grafikus egyszerűsítés (ellenőrzés!) 131 7.3 Kombinációs vezérlési feladatok programozásának tervezése 132 A lehetséges programozási algoritmus meghatározása. 132 7.31 Bit műveletekkel 132 7.32 Táblázatos módszer 136 7.4 Sorrendi vezérlési feladatokat megoldó program tervezése 146 7.41 Állapotgráf 150 7.42 Állapottáblázat 151 7.43 A kimeneti-, és vezérlő táblázat 152 7.44 A tervezés 153 7.45 A tervezés lépései: 154 7.46 Általános célú mikrogépek programozása 159 7.47 PLC programozása 167 7.48 A programírás 167 7.5 Példák sorrendi vezérlések programozására 168
7.51 Forgalomirányító lámpák vezérlése 168 7.52 Folyadéktároló tartályok töltésének, ürítésének vezérlése 178 7.53 A sorrendi vezérlések programozása adatbázis alapján 159 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.21 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.22 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.23 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.31 Egyedi i rán yítások (5 ábra) A gyártósorba szervezett
gépek mindegyikét önálló egység 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.32 Csoport os i rán yítások (6 ábra) 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. 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.33 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.34 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 (8.ábra) 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 Ø Funkció szerinti csoportosítás (9. ábra) 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 16.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév Ø K omplex (összetett) csoportosítás (10. ábra) A térbeli és a funkcionális elosztás általában összetetten valósul meg. 10. ábra 1.35 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. mikroprocesszoros
irányítások (PLC -k, DDC -k stb.) mindegyike ilyen működésű 17.oldal A 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 megatö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 ispDesignEXPERT 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 MicroChip 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ó. Bit cí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.31 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 VDD Portkimenet Eng. 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.32 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.33 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. A következőkben tömören áttekintjük a különböző megoldásokat Ø Á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 értékét az SFR memória egy szavában (CT L – CT H) táolja. A számlálandó jel 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ó 28.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 MX Számláló regiszter(ek) CT H CT L & Engedélyezés Cy Túlcsordulás Kezdő érték 20. ábra Ø Beírás-ismétlés (Download) A leggyakoribb felhasználás egyike a frekvencia-osztá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ő számot – Ck- programozással változtatatjuk. A számlálás túlcsordulásakor erről a számról kezdődik újra 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 - CT =1 nél – átíródik a számláló regiszterbe. Jelforrás kiválasztás Számlálandó jelforrások Engedélyezés MX Számláló regiszter(ek) & Modulus regiszter(ek) CT H CT L MT L MT H Kezdő érték 21. ábra 29.oldal Túlcsordulás Cy Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév Ø Mintavételezés (Capture) A megoldandó feladatok között gyakran kell mérni az események között eltelt idő, vagy egy harmadik esemény 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 (mintavételezés) funkció alkalmazásával Jelforrás kiválasztás Számlálandó jelforrások MX Számláló regiszter(ek) CT H CT L & Engedélyezés Túlcsordulás & Mintavételező jelek Cy MX CP H CP L Mintavételező (capture) regiszter(ek) Jel kiválasztás 22. ábra megoldható a feladat. A 22 ábra szemlélteti a mintavételező á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, 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ú négyszögjelek állíthatók elő az összehasonlító funkció alkalmazásával. A 23 á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 & Komparátor Összehasonlító (compare) regiszter(ek) CR L 23. ábra 30.oldal CR H Túlcsordulás Cy Jf Megszakítás kérő bit Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév Amikor a két számtartalom egyforma, egy jelző flag (Jf) 1-be íródik. A flag lekérdezhető, vagy megszakítást kérhet. 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 Függelékben részletesen olvasható a működés és használata.) Ø 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 mikro vezé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 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ő 31.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 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 3.34 Analóg peri 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. 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ál ( A/D) illetve Digitál-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 25 á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, 25. ábra 32.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 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 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 26. á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. 26. ábra 33.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 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. 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 27. á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. 27. ábra 34.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév Programozással állítható be kívánt hiszterézis. A 28 ábrán látható a kimeneti jelalak 28. ábra 35.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 3.35 Soros kommuni káció 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 29. á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. 36.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév Adó Vev 29. á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). 37.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 30. ábra Az RS232 szabványú kommunikáció időzítése az M1 üzemmódban 30. á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 31 ábra 31. á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 38.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 32. á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. 32. á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 (lásd 25ábra) 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 33. á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 39.oldal Zalotay Péter: Programozható irányítások I Elméleti
tananyag 1. félév b. 33. á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 34. ábrán látható 34. ábra 40.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 35. á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 41.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 35. ábra Az adatközlés felépítését a 36. á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. 36. á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. 42.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 37 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: 43.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 37. ábra
44.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 38 ábrán bemutatott, pont-pont kapcsolaton követhető. 38. á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 39. á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ó! 45.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 39. á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 40. ábra 40. ábra 46.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 41 ábrán láthatók a variációk. 41. á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. 47.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 (42 á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. 42. ábra 48.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ú (43. á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. 43. á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 (44. – 47
á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. 49.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 44. ábra Klöckner-Möller PS3 45. ábra Omron CQM 46. ábra Modicon Micro 612 50.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 47. ábra Siemens S5 A következő típus (48. á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ó. 48. á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. 51.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 4.21 Ø 1. félév Hardver kialakítás A CJ1M típusú moduláris PLC az OMRON CJ1 termékcsalád legkisebb tagja (49. á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 Diszkrét kimenetek CJ1M (OMRON) 49. ábra Ø A Schneider Electric legutóbbi fejlesztéseinek egyike a Modicon 340 elnevezésű moduláris
PLC család (50. á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.) 50. ábra 52.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 (51 ábra) S7 313C kompakt PLC Diszkrét bemenetek USB illesztő Tápegység Diszkrét kimenetek S7-313 (SIEMENS) 51. ábra 4.22 A tápegység Mindhárom készülékcsaládban önálló tápegység modulok vannak. A 52 á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 52. ábra 4.23 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, 53.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 (53 á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ó: 53. ábra CJ1M processzora b. Az M340 PLC négyféle processzorral (BMX P340 1000, 2010, 2020, 2030) állítható össze (54. á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 ---- 54. ábra P340 1000 CPU 54.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 55. á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 55. ábra S7-313C kompakt készülék 4.24 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 (56.aábra) és a kimeneti (b ábra) illesztő egységek jellegzetes áramköri kialakítás kapcsolási vázlatai: 55.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév a. b. 56. á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 57. ábrán mindhárom cég egy - egy diszktét illesztőegységét mutatjuk be a. b. Omron Schneider Electric c. Siemens 57. ábra 4.25 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ő 56.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 58. á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 58. ábra 4.26 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 59ábrán A többi típusnál is hasonló az elvi kialakítás, ezért itt nem mutatjuk meg. 59. ábra 57.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 58.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 59.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), 60.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, c51exe, l51exe, lib51exe, ohs51exe), 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. 61.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 . n. művelet Egy változó (bájtos, bites) aktuális értékétől függ, . if(ACC==0) { ered = ACC } . //folyt feltétel igaz? hogy az új utasítás beolvasása a programmemória következő, vagy távolabbi /* C nyelven / nem címről történik. . 62.oldal 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? Nem Ige 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 63.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<V2) {kisebb()} else {nagyobb()} · 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 V1 = V2 ? Nem 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. 64.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
60 á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 60. á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: 65.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 } 66.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. 67.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 68.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- Start ramozható perifériák üzemmódjának, megszakítási rendszer szükség szerinti beállítása, stb., lefutó 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. 69.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, 70.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. 71.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. 72.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 73.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 74.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 75.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.31 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 Programozáskor az utasítást az alábbi formában kell 2 . k ife je z é s használni: Igaz? for ( 1.kifejezés; 2kifejezés; 3 kifejezés ) { C ik lu s tö rzs 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 / 76.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 . 77.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.32 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 if ( kifejezés) n Igaz? { Igaz ág ( if ) igaz ág } else Hamis ág ( else ) { hamis ág 78.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 Programozáskor az utasítást az alábbi formában kell használni: n Igaz? i if igaz ág else -if kifejezés if ( if kifejezés) { n } else-if ( else-if kifejezés ) Igaz? { else-if igaz ág i else-if igaz ág if igaz ág els-if hamis ág else { else-if hamis ág } 79.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. 80.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.33 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 . 81.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 / . . } . 82.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 83.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.51 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), 84.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. 85.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 <reg552.h> /*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 <gyak.h> #include <intrins.h> #include <stdio.h> extern int anal(char); /* az anal fv. deklarációja */ 86.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(" "); /* soremelés / printf(" Új mérés "); /* táblázat feje / printf("Csatorna Mért érték "); for (poz=0;poz<=7;poz++) { k=anal(poz); *ert=k; * lehelyezés / printf(" %u. %d ",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; 87.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! 88.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév P rog ra m f ej l e s zt ői k ö rn y e zet e k 6.2 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 89.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.21 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 61 ábrán láthatóhoz hasonló képet. 90.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 61. ábra Project ablak 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ő (62.
ábra) 91.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév „Új” menüpont 62. ábra A megnyitott új fejlesztés project állományát tárolni kell. A 63 á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 64 ábrán a Philips 552 típusú mikrokontrollerének választása látható. 63. ábra Az ablak bezárása után a megnyitott projekt ablakban (65.ábra) látjuk az eddigieket Projekt beállítások Modulok összeállítása 64. ábra 65. ábra 92.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév A „Projekt beállítások” ikonnal nyitható meg a 66. á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. 66. ábra A „Modulok összeállítása” ikonnal
magnyíló ablakban (67. á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. 67. á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. 93.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 6.22 1. félév CX-Programmer Az OMRON PLC -k programozásához alkalmazható ez a fejlesztői környezet. A 68 á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. 68. á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 (69.ábra) a File menüből válasszuk a New pontot. 69. ábra 2. Az új megnyitása után – a 70. 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. 94.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév a. b. c. 3. 70. ábra Ezek után kell megadni a használt illesztő áramköröket, vagyis meghatározzuk a teljes hardver konfigurációt. A 71. á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. 95.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 71. ábra 4. A konfiguráció beállítása után – az előre megtervezett – programstruktúrát kell kialakítani. A 72 á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. 96.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 72. á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 97.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 6.23 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 73. á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. 73. á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 (74. á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. 74. ábra 98.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 75 á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. 75. ábra A következő művelettel kiválasztott rack egyes helyeire (slot) kell megadni az illesztő modulokat. A lépések a 76 ábrán követhetők 99.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 76. ábra 4. A konfiguráció beállítása után – az előre megtervezett – programstruktúrát kell kialakítani. A 77 á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. 100.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 77. ábra 101.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 6.24 1. félév Siemens Step 7 A STEP7 környezetben végezhetők a SIEMENS PLC -k programozása. A 78 á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. 78. á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. 79. ábra 102.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1.
félév A megnyíló ablakban (79.ábra) kell megadni a projekt helyzetben a nevét és a könyvtárat. Alap- step7s7proj 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 80 á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. 80. á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 (81.ábra) 103.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 81. ábra 104.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 82. ábra 4. A konfiguráció beállítása után – az előre megtervezett – programstruktúrát kell kialakítani. A 83 á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 105.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 83. á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.31 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 106.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.32 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 107.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.33 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 108.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 84. á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 109.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. 84. á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 85. á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ó 85. ábra 110.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.34 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 86
ábrán látjuk hogyan tiltott az és engedélyezett az összekötés. tiltott megengedett 86. ábra 111.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév Az 87. ábrán – az LD -ben programozott feladat (61ábra) – FBD programozású változatát látjuk. 87. ábra 6.35 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 112.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 (61.á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.36 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 64 ábrán látható állapotgráf -ot elemezzük. X0, X3 Y X X 0 X1 X Y X3 3 X2 X1 X1, X2, Y1 Z X0 Y 2 X0, X1, 88. á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 113.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 89. ábrán az előzőleg megrajzolt állapotgráfos függvénymegadás (88 ábra) SFC nyelvű „programja” látható. Külön jelöltük az alapvető funkciókat Inicializáló ütem Elágazás Ütem Akciók Ütem Ütemváltás Ütemváltás feltétele Ugrás az adott ütemre 89. ábra 114.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 (66. ábra) Step 7 jelölés (Siemens) Unity Pro XL jelölés (Schneider) Programmer jelölés (Omron)
90. á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) 115.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 47. ábra szerinti Csupán a szimbólumhoz
rendelt feltételek jelölésében térnek el. 91. á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 (48 á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. 92. ábra 116.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév A két-vonalas jelölést (69. á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. 93. á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 94 á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. 94. á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. 117.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 95.á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. 95. á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 96. á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. 96. ábra 118.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. (97 ábra) 97. á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 98. ábra 119.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 99. ábra Ø Példa az SFC nyelvü programozás alkalmazására 100. 120.oldal ábra Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 101. 121.oldal ábra Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 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 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 124.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 125.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.21 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.22 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.23 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ó 126.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.24 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. 127.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. 128.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 13 ˇ 13,9 22 ˇ (4) ˇ (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) ˇ 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. 129.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 130.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.25 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!!) 131.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.31 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 132.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 133.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 B7 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. 134.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 (69. á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. 135.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 104. ábra A feladatot megvalósító program létra-diagramja 105. ábra 7.32
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. 136.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. 137.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. 138.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áltkezd 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 139.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 + ABD + EDB * ;* * ;* ;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 140.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 141.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<veg;j+=2) { if (((be^tabl 1[j]) & tabl 1[j+1]) ==0) {K=1; break; } 142.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 70. ábrán a. b. 106. 143.oldal ábra Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 144.oldal 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 71 ábrán mutatjuk be a program egy változatát a. b 107. .ábra Az a.
ábrán látjuk a táblázat deklarációját A hat elemű 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. 145.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 72 ábra szerinti. . Xbe SH . . * Zki Z . . 108. á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. 146.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 1. á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, 147.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 109. ábrán a. b. c. 109. á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. 148.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 149.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.41 Á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 110. á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 150.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév X0, X3 Y0 Z0 X0 X1 X1 ,X2, X3 X2 X2 Y3 Z3 Y1 Z1 X3 X2 X1 X0 Y2 Z2 X0 , X1, X3 110. á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.42 Á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 111. 151.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 75. á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.43 A ki meneti-, és vezérlő táb lázat Az ismertetett állapottáblázat két részre bontható. Az egyik (112aá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. 112. á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. 152.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 45.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.44 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. 153.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 7.45 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 munkamódszere van, 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. 154.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, 155.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 213 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. 156.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, 157.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 113. á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 113. 158.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.46 Á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.47 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.32
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 114. á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 159.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 114. á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 160.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 161.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. 162.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. 163.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 164.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 165.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 166.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.48 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.49 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ő. 167.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.51 Forgalomi rányító lámpák vezérlése A feladat a 115.á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 115. ábra Þ mikrokontrolleres vezérlő, illetve Þ PLC programjának elkészítése. 168.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. 169.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 X1 X2 y0 Y0 , Z0 Y1 , Z1 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 170.oldal Zalotay Péter: Programozható irányítások I Elméleti
tananyag 1. félév X0,X2 Y 0,Z0 X0 X0 X1 Y2,Z2 Y1,Z1 X2 X0 X2 X1 X1 X1 X0 Y 4,Z4 X2 X2 Y 3,Z3 X1 116. á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. 171.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. Be? Egy továbbiakban változó, ütemszámláló tárolja az ütem sorszámát, és mutatóként (pointer) kiválasztja Léptet? a táblázatból az éppen aktuális ütem kimeneti
kombinációját. Az Utm = 0 Utm (Ütemváltozó)+1 ütemszámláló tartalma csak akkor változik, ha a bemenetekre az X2 kombináció jut, amely 1-el Utm>m növeli (incrementálja) a mutató értékét. Utm = 1 A leírt működés folyamatábrája látható a 117. ábrán. Táblázatból kiolvasás Kimenet frissítés 117. 172.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 ? 173.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); } 174.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 118. ábrán az OMRON Cx Programmer fejlesztői környezetében írt program látható . b. c. a. 118. 175.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 119.ábrán 119. 176.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 120. ábra 120. ábra A bemutatott programokban nem adtuk meg a vezérlés szimbólum-tábláit. 177.oldal Zalotay Péter:
Programozható irányítások I Elméleti tananyag 1. félév 7.52 Fo lyad éktároló tartály ok töltésén ek, ürí tésének vezérlése A 121. á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. 121. § á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 178.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 179.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, 180.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. 181.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 182.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 122. á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 122. 183.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 184.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 185.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.) 186.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 123. ábra szerinti állapotgráf -ot lehet felrajzolni 187.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 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 XK X 20,21 UU 2 Z8 Z 40 X X 17 X 20,21 UU 3 Z128 – Z 144 X 20,21 17 123.
á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 188.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 189.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 124. á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.45 fejezet) megoldás szerint választjuk A folyamatábra (113.ábra) 190.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. Belépés Ütemen belüli feladatok megoldása Kimeneti memória frissítése Az állapotok feladatait megvalósító egyedi függvények a 124. ábrán látható folyamatábra szerinti felépítésűek. Bemeneti kombinációk vizsgálata Új ütem ? i Ütemváltozó módosítása Kilépés 191.oldal n Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév 125. ábra A main() főprogram legfontosabb funkciói a 125. Start ábra szerinti felépítésű. Inicializálás 1. ütem Bemenetek beolvasása, változás vizsgálata, tárolás A be-, és kimenetek a P2 és P0 portokon keresztül Ütemválaszt ás Az aktuális ütemválasztás a switch case funkcióval 2. ütem kapcsolódnak a mikrogéphez. 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 126. á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; // irány kiválasztása If(!F1) { kt = T ON(ttv,ib 01s,kt); if (kt >= 30) S T=1; // az S T ürítő szelep késleltetett bekapcsolása if(S T) ttv=0; else ttv=1; } // ütemváltás feltételeinek vizsgálata 192.oldal Zalotay Péter:
Programozható irányítások I Elméleti tananyag 1. félév 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. 193.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag 1. félév A CX-Programmer · 127. ábra 128. ábra A Unity Pro XL 194.oldal Zalotay Péter: Programozható irányítások I Elméleti tananyag · 1. félév A Simatic Step7 129. 195.oldal ábra