Autotallin ovi - Tehtävänanto Pisteytys (max 9p): 1 piste per läpi mennyt testi (max 7p) Reflektointitehtävä (max 2p yksi piste jos osaa vastata edes osittain ja toinen piste tyhjentävästä vastauksesta) Tehtävä: Tässä harjoituksessa ohjelmoidaan autotallin ovi, joka toimii seuraavilla toimintaperiaatteilla: 1. Ovi lähtee liikkeelle napin painalluksesta 2. Ovi pysähtyy joko napin painalluksesta tai ylä- tai ala-asennossa. 3. Ovi lähtee liikkeelle aina eri suuntaan kuin mitä se liikkui ennen pysähdystä. Esim. jos ovi liikkui alaspäin ennen pysähdystä, se lähtee liikkeelle ylöspäin. Näin ollen, valmis toteutus pitäisi läpäistä seuraavat testitapaukset (jokaisesta testitapauksesta saa yhden pisteen). Test# Alkutila Syöte Odotettu lopputulos 1 Ovi ylhäällä Remote nappia Ovi liikkuu (moottori päällä) alas kunnes Remote nappia tai saavutaan ala-asentoon 2 Ovi liikkuu Remote nappia Liike pysähtyy alas 3 Ovi pysäytetty matkalla alas Remote nappia Ovi liikkuu (moottori päällä) ylös kunnes Remote nappia tai saavutaan yläasentoon 4 Ovi alhaalla Remote nappia Ovi liikkuu (moottori päällä) ylös kunnes Remote nappia tai saavutaan yläasentoon 5 Ovi liikkuu ylös Remote nappia Liike pysähtyy 6 Ovi pysäytetty matkalla ylös Remote nappia Ovi liikkuu (moottori päällä) alas kunnes Remote nappia tai saavutaan ala-asentoon
7 Ovi liikkuu Remote nappia ja pidetään pohjassa. Ovi pysähtyy, eikä sen tila vaihtele liikkumisen ja pysähtymisen välillä (eli signaalin pulssimainen luonne on otettu huomioon) Autotallin oven voi toteuttaa monella eri tavalla eri PLC-kielillä (esim. ST, FBD, SFC jne.) Alla on esitelty miten ohjelma toteutetaan FBD-kielellä. Ohjeet: 1. Lataa MyCourses sivulta autotallin oven projektipohja ja avaa se Codesys-ohjelmalla (Codesys V3.5 SP9 patch 1). 2. Huomaa, että tällä kertaa kaikki muuttujat ovat globaali-muuttujia. Käytännössä ne toimii samalla tavalla kun Lamppu tehtävän lokaalit muuttujat (ks. Kuva 1). Kuva 1: Punaisella neliöity välilehti GVL (global variable list) sisältää kaikki globaalit muuttujat ja vihreällä neliöidyssä PLC_PRG-välilehdessä voidaan edelleen määrittää lokaaleja apumuuttujia tarpeen mukaan. 3. Voit aloittaa autotallin oven FBD-logiikan ohjelmoimisen tuplaklikkaamalla projektin tiedosto PLC_PRG auki ja vetämällä FBD-elementtejä oikealla olevasta ToolBox-paneelista. 4. Voit aloittaa vetämällä network-elementin editoriin. Sen jälkeen vedä assigment-elementin editoriin ja laita sen muuttujiksi button ja direction (ks. kuva 2). Nyt ovi liikkuu napin asennosta riippuen joko ylös tai alas. Kokeile ohjelmaa
klikkaamalla visualization välilehteä ja painamalla login nappia (paina ok ponnahdusikkunan kohdalla) ja sen jälkeen play nappia. Kuva 2: Punainen numero 1 osoittaa ohjelmakooditiedostoa ja numero 2 ohjelman simulaatiota. Vihreät numerot osoittavat ohjelmakoodissa tarvittavia elementtejä network (1) ja assigment (2). Oranssit numerot osoittavat sisäänkirjautumisnappia (1) ja ohjelmanajonappia (2). 5. Ohjelmassa voi joutua vaihdella moottorin liikkeen ja suunnan arvoa. Tämän toiminnallisuuden voi toteuttaa esimerkiksi käyttämällä SEL-toimilohkoa tai XOR-toimilohkoa (ks. Kuva 3 ja 4 alla). 6. Painaessa nappia, nappi jää helposti pohjaan monen ohjelmasyklin ajaksi, eikä ohjelma siten toimi tarkoituksenmukaisesti. Tämän ongelman voi ratkaista käyttämällä R_TRIG toimilohkoa (Kuva 3) (Tarkempi kuvaus lohkon toiminnasta FBD-kielen oppaasta kohdasta 4.3.1. Ohje toimilohkon käyttöön löytyy teoriasta.) TAI muuttaa signaalin havainnointi pulssimaiseksi suoraan lohkon edestä (Kuva 4).
Kuva 3: Muuttujan arvon vaihtelu XOR-lohkolla ja R_TRIG-lohkon käyttö. a) Vedetään XOR-lohko editoriin työkalupalkista. b) Tehdään sama R_TRIG-lohkolle. c) Luodaan R_TRIG-instanssi editorin VAR-osassa ja käytetään sitä FDB-ohjelmassa. Kuva 4: Signaalin pulssin havaitseminen. Huomaa, että samalla tavalla signaalin voi myös esittää käänteisenä (negation valinta Edge Detectionnin yläpuolella).
7. Nyt voit luoda loput FDB-ohjelmasta. Lisää ohjeita FDB-kielen käytöstä löytyy tehtävän teoriaosuudessa ja FDB-kielen oppaasta (dokumentti löytyy MyCourses PLC-moduulin yleisissä ohjeissa). Reflektointi Ohjelman pystyy toteuttamaan yhdelle riville tai monelle. Jos toteutit ohjelman yhdelle riville pohdi miten voisit jakaa sen monelle. Jos taas toteutit ohjelman monelle riville pohdi miten voisit tehdä sen yhdellä rivillä. Pohdi kumpi toteutuksista on yksinkertaisempi ja helpompi. Yksinkertaisuus ja helppous ovat hieman epämääräisiä käsitteitä, mutta ne liittyvät läheisesti sellaisiin ohjelmiston laatuominaisuuksiin kuten ylläpidettävyyteen ja skaalautuvuuteen, joihin mennään seuraavassa harjoituksessa.