Tietokoneiden näyttöjä, joissa näkyy kuvaa automaatiolaboratorion laitteistosta. Monitoreiden takana näkyy sama laitteisto kuin kuvissa.

timohei.net / Opintojaksot / Soveltava ohjelmointi / Python-ohjelmointi /
Harjoitustyö (Python)

Harjoitustyönä ohjelmoidaan Ohjaustekniikan projekti -kurssilla tutuksi tulleen höyrynuohoimen ohjaus Pythonilla. Olen tehnyt valmiiksi sovelluspohjan, jonka sisään sovellus tehdään ja jonka avulla sovellus myös testataan.

Harjoitustyön palautus

Lähetä tiedosto oma_sovellus.py minulle sähköpostilla. Pelkkä tiedoston palautus ei riitä kurssin läpäisyyn, vaan sovelluksen rakenteista ja toiminnasta pitää olla ymmärrys, minkä osoitat esittelemällä sovelluksen minulle erikseen sovittuna aikana Teams-palaverissa.

Ohjelmoitava osio

Nuohoimesta ohjelmoidaan perusautomatiikka ja kääntöviive.

Perusautomatiikka

  1. Nuohoimen ajo nuohottavaan tilaan (ulos) käynnistetään NUOHOUS-painikkeen painalluksesta. Logiikkasovelluksessa NUOHOUS-painike luetaan tulosta 1, mutta tekemässäni sovelluspohjassa vastaava tieto saadaan luettua Python-muuttujasta nuohousnappi. Sovelluspohja on ohjelmoitu niin, että painamalla näppäintä 1 muuttuja nuohousnappi menee tilaan True ja pysyy siinä tilassa napin painamisen ajan. Muuttuja menee tilaan False, kun näppäin päästetään ylös. Sovelluspohja tottelee vain Q-kirjaimen lähellä olevaa numeronäppäintä; erillisen numeronäppäimistön ykkösen painelu ei tee mitään. Nappia ei paineta koko ajoaikaa, joten tässä on käytettävä pitopiiriä.
  2. Sovellus pitää ohjauslähtöä SK_ULOS (lähtö 6, Python-muuttuja ulosohjaus) päällä niin kauan, että ulkorajakytkin (tulo 6, Python-muuttuja ulkoraja) aktivoituu, minkä jälkeen sovellus kytkee ko. lähdön pois päältä.
  3. Painalletaan SISÄÄN-painiketta (tulo 2, Python-muuttuja sisaannappi, näppäin 2), jolloin nuohoimen ajo takaisin lepotilaan käynnistyy. Tässäkin käytetään pitopiiriä.
  4. Sovellus pitää ohjauslähtöä SK_SISAAN (lähtö 5, (sisaanohjaus) päällä niin kauan, että sisärajakytkin (tulo 5, sisaraja) aktivoituu, minkä jälkeen sovellus kytkee ko. lähdön pois päältä.

Kääntöviive

Kun nuohoin tulee ulkorajalle (ulkoraja = True), käynnistetään 5 sekunnin viive (Pythonin Timer), jonka kuluttua sisäänajo käynnistetään.

Ohjelmointiympäristö

Itse olen käyttänyt ohjelman kirjoittamiseen Notepad++ -editoria.

IDLE ei sovellu tämän harjoituksen tekemiseen, koska sovelluspohjani käyttää näytölle tulostamiseen erikoiskoodeja, joita IDLE ei tunnista. Sovellus pitää ajaa Windowsin komentoikkunassa, jonka saa auki näppäämällä Windows-näppäin+R ja kirjoittamalla cmd<enter>.

Oma ohjelmointi- ja testausympäristöni näytti tältä (klikkaa isommaksi):

Olen asetellut ohjelmat niin, että Notepad++ varaa näytön vasemman puolikkaan ja Windowsin komentoikkuna oikean puolikkaan. Komentoikkunassa on annettu komento python nuohoinsimulaattori.py ja nuohoin on alkutilassa eli sisärajalla.

Sovelluspohja

Lataa harjoituksessa käytettävät tiedostot klikkaamalla tiedostojen nimiä:

  1. nuohoinsimulaattori.py
    • Tiedosto, jonka käynnistät aina sovellustasi testatessa Windowsin cmd-komentoikkunassa komennolla python nuohoinsimulaattori.py. Ohjelma pysähtyy <ESC>-näppäimellä.
    • Älä tee tähän tiedostoon mitään muutoksia!
  2. plc_simulaatio.py
    • Tiedosto, joka toteuttaa logiikkasimulaation ja tarjoaa käyttöliittymäfunktiot ja jota nuohoinsimulaattori.py kutsuu.
    • Älä tee tähänkään tiedostoon mitään muutoksia!
  3. oma_sovellus.py
    • Tähän tiedostoon täydennät funktioon oma_sovellus() tarvittavat toiminnallisuudet. Tiedostossa on valmiiksi
      1. funktion alku def oma_sovellus(muuttuja1, muuttuja2, ...)
      2. tarvittavat import-käskyt sekä
      3. lopussa muutama rivi muuttujien arvojen käsittelyyn.
    • Olen kirjoittanut tiedostoon kommentteja, joiden mukaan ohjelman saa tehtyä.
    • Älä muuta pohjassa valmiiksi olevia ohjelmarivejä!

Oma sovellus

Kun nuohoinsimulaattori.py käynnistetään, se

plc_simulaatio.py:n funktio paivita_simulaattori kutsuu oma_sovellus()-funktiota 0,2 sekunnin välein niin kauan kuin nuohoinsimulaattori.py on käynnissä. Tämä täytyy muistaa - tekemääsi sovellusta kutsutaan siis aina uudelleen ja uudelleen ja kaikki sen käskyt (ehto- ja luuppirakenteet tietenkin huomioiden) suoritetaan joka suorituskerralla.

Alla on kuvakaappaus oma_sovellus.py-tiedostosta, jossa on kommenttien lisäksi vinkkiä käytettävistä ohjelmarakenteista. Sovelluksen voi tehdä hyvin monella eri tavalla, joten jos haluat tehdä ohjelman jotenkin muuten, aina vain parempi (varsinkin jos tiedät, mitä teet). Ladattavasta tiedostosta olen poistanut mallirakenteet ja jättänyt paikoilleen vain valmiit ohjelmaosat neljällä ylimmällä rivillä ja kolmella viimeisellä käskyjä sisältävällä rivillä.

Kuvan voi klikata suuremmaksi.

Python-ohjeita

Pythonin alkeet on kuvattu kurssin muilla sivuilla ja käyty läpi tunneilla. Tässä esitetyt ohjeet menevät hieman syvemmälle.

Kaikki kuvat voi klikata suuremmaksi.

Muuttujan alustus sovelluksen ensimmäisellä suorituskierroksella

Muuttujan saaminen näkyville funktion sisällä

Pythonin ajastinfunktio Timer

Päivitetty 28.8.2022

<<  Edellinen
(16) Internet-yhteyden yli viestiminen
Sivu 17/17Takaisin ensimmäiseen >>
(1) Python-ohjelmointi
© Timo Heikkinen | timo piste heikkinen at oamk piste fi