PLC Versenyfeladat XIV. Országos Irányítástechnikai Programozó Verseny Budapest, 2008. március 19-21. Összeállította az EvoPro Kft.
Általános bemutatás A feladatban szereplő eszköz egy 8x8 képpontos LED-mátrix kijelzőből, 16 darab nyomógombból, és egy Siemens PLC-ből áll. A feladat során a versenyzőknek egy játékot kell elkészíteni, ahol az eszköz kilenc nyomógombját fogjuk használni. 20 bit 1. oszlop
Kijelző
27 bit 8. oszlop 8. sor
Nyomógombok 1. sor Start Stop Pause
Mozgatás Balra
Előválasztó 1 2
Előválasztó 3 4
Mozgatás Jobbra
A Siemens S7 315-2DP CPU a kijelzőre történő szöveg vagy ábrák kiírását végzi, illetve figyeli, hogy melyik nyomógomb van lenyomva. A PLC-ben egy adatterület lett kialakítva, melyből folyamatosan történik az általunk kívánt kép kijelzőre írása. A PLC digitális I/O vonalakon keresztül kommunikál a külvilággal. Ezen a felületen adja ki a nyomógombok állapotát, illetve fogadja a megjelenítendő kép információt. A kijelzőt meghajtó PLC-nek és a csapatok által hozott PLC-nek kommunikálni kell egymással. Ez a kommunikáció I/O vonalakon keresztül történik. A megjelenítendő kép beírása soronként történik. A sorok és az oszlopok számozása a fenti ábrán látható.
2. oldal
A kommunikáció leírása A kommunikáció hagyományos kézfogásos protokollra épül. A versenyzők által hozott PLC-nek meg kell címezni az egyik sort, és ki kell adni az adott sorban megjelenítendő információt. Ezzel egy időben egy dedikált kimenetet 1-be kell billenteni („Adatküldés kérés”). Ekkor kezdődik a kommunikáció a két PLC között. A kijelzőt meghajtó PLC figyeli ezt a jelet a bemenetén. Ha érkezik „Adatküldés kérés”, akkor a magadott sor átmeneti tárolójába beírja a megjelenítendő információt. Ezután egy dedikált kimenetét 1-be állítja („Adat beírva”), ezzel jelzi a másik PLC-nek, hogy beírta az adatot. A versenyzők által hozott PLC-nek ekkor vissza kell venni az „Adatküldés kérés” jelet. Ennek hatására a kijelző meghajtó PLC is visszaveszi az „Adat beírva” jelet. Ezután egy újabb „Adatküldés kérés” jellel egy újabb címet, adatot lehet küldeni a meghajtó PLC-nek. A sorok beírására az alábbi szabályok vonatkoznak: 1. 2. 3. 4.
A sorok beírási sorrendje tetszőleges Ugyanazon sor többször is átírható Ha egy sort nem ír át, akkor ott megmarad a korábbi érték A kijelző frissítése a fiktív 9. sorba történő tetszőleges adat beírásával valósul meg
FONTOS: A versenyzőknek nem kell biztosítani a folyamatos kijelzést. Ezt a funkciót a kijelzőt meghajtó PLC végzi. A csapatoknak csak 1-1 képet kell továbbítani a meghajtó PLC-nek ha egy újabb képet szeretnének kiíratni a kijelzőre.
A sorok címzése: A nyolc sort négy bittel lehet megcímezni, mert a 0000 címet nem engedélyezzük. A sorok címzése Gray-kódban történik, ugyanis ekkor a szomszédos sorok kódjai közötti Hamming távolság egy. A pontos címeket a következő táblázat tartalmazza. Sor száma 0 fiktív 1 2 3 4 5 6 7 8 9 fiktív
Kód (23 22 21 20) 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101
3. oldal
Hardver csatlakozási felület A versenyzők által hozott PLC-k digitális bemenetei Bemenetek 1 2 3 4 5 6 7 8 9 10
Funkció Mozgatás balra Nyomógomb Adat Beírva Előválasztó Nyomógomb 1 Előválasztó Nyomógomb 2 Előválasztó Nyomógomb 3 Előválasztó Nyomógomb 4 Mozgatás jobbra Nyomógomb START STOP PAUSE
Vezetékszám 1 2 3 4 5 6 8 9 10 11
A versenyzők által hozott PLC-k digitális kimenetei Kimenetek 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Funkció (20)
Kód 1 Kód 2 (21) Kód 3 (22) Kód 4 (23) Adatküldés Kérés Játék Vége Oszlop 1 Oszlop 2 Oszlop 3 Oszlop 4 Oszlop 5 Oszlop 6 Oszlop 7 Oszlop 8
Vezetékszám 13 14 15 16 17 18 21 22 23 24 25 26 27 28
Tápfeszültség csatlakozás Kimenetek 1 2
Funkció +24V GND
Vezetékszám 29 30
4. oldal
A programozási feladat leírása A feladat egy labdajáték megírása. A játékhoz szükséges eszközök egy labda és egy ütő. A három képpontból álló ütő az alsó (első) sorban helyezkedik el. Vízszintes pozíciója a balra és a jobbra mozgató nyomógombok segítségével változtatható. A játék célja, hogy a 8x8-as kijelző területén tartsuk a labdát az ütő segítségével. Játék indítása, szüneteltetése, megállítása A játék menetét három nyomógombbal vezérelhetjük. A START nyomógomb megnyomásával elindíthatunk egy új játékot. A STOP nyomógombbal leállíthatjuk a játékot. A START és a STOP nyomógomb hatására automatikusan be-, illetve kikapcsol a kijelző is (a kijelzőt meghajtó PLC látja el ezt a funkciót is). A PAUSE nyomógomb megnyomásakor a labda és az ütő pozíciója is rögzítve lesz, ekkor a PAUSE gomb újbóli megnyomásával folytatódik a játék. A labda – ütő kapcsolat A labda három ponton érintheti az ütőt: - Ha az ütő bal szélére érkezik, akkor balra 45°-ban felfelé indul tovább - Ha az ütő közepére érkezik, akkor egyenesen 90°-ban felfelé indul tovább - Ha az ütő jobb szélére érkezik, akkor jobbra 45°-ban felfelé indul tovább
Labda – fal kapcsolat Ha a labda eléri a kijelző felső sorát, illetve bármelyik oldalfalat, akkor irányváltoztatással halad tovább: - Ha 45°-os beesési szöggel éri el a falat, akkor a visszaverődési szög szintén 45°-os - Ha 90°-os beesési szöggel éri el a falat, akkor a visszaverődési szög 180°
5. oldal
Bizonyos esetekben a labda 45°-os beesési szöggel éri el az ütőt közvetlen a fal mellett, ekkor ellentétes irányban indul vissza.
Ha a labda eléri az alsó (első) sort, új labda indul. Egy játék három labdát tartalmaz. Minden új labda indítása előtt ki kell írni - két másodpercre - a kijelzőre, hogy a játékosnak még mennyi labdája van vissza az aktuális játékból. Erre egy lehetséges megoldás:
A játék indítása előtt a játékosnak négy féle indulási labdapozíció – ütőpozíció – iránypozíció áll rendelkezésére, ahogy elindíthatja a játék menetét. Ezt a négy darab „Előválasztó Nyomógomb” egyikének a lenyomásával aktiválhatja. A négy „Előválasztó Nyomógomb” mindegyike más-más induló labda pozíciót, induló labda irányt, és induló ütő pozíciót tartalmaz. Ezt a START nyomógomb megnyomása előtt kell kiválasztani. A játék mind a három labdája ebből a kiválasztott pozícióból, irányból indul. A játék közben az indulási pozíciókat már nem lehet megváltoztatni. Az egyes előválasztókhoz rendelt kezdeti beállításokat az alábbi ábra tartalmazza.
Előválasztó 1
Előválasztó 2
Előválasztó 3
Előválasztó 4
6. oldal
A játék végén ki kell kapcsolni a kijelzőt is. A kijelző kikapcsolásához a csapatoknak a „Játék Vége” kimenetet kell aktívvá tenni 10ms időre. Ha a kijelzőt meghajtó PLC érzékeli ezt a jelet, azonnal kikapcsolja a kijelzőt, ugyanúgy, mintha valaki megnyomta volna a STOP gombot.
Megoldandó feladatrészek -
Kommunikáció megírása a két PLC között START, STOP, PAUSE nyomógombok működése Az ütő elhelyezése az alsó (első) sorban Az ütő mozgatása bal – jobb irányban a nyomógombok segítségével A labda elhelyezése a kijelzőn A labda másodpercenként kb. 3-4-szer lépjen A labda mozgatása a kijelzőn egyenes vonalban A labda megfelelő szögben történő irányváltoztatása a fal, illetve az ütő elérésekor A labda útvonalának lekezelése, ha a labda eléri valamelyik alsó sarok pozíciót Minden labdaindítás előtt két másodpercig kiírni a képernyőre, hogy mennyi labda van még hátra a játékból. Labdaindító pozícióválasztás (előválasztó nyomógombok segítségével) A kijelző kikapcsolása a játék végén