Ambulanssisimulaattorin kommunikointi ohjelmoitavalle logiikalle
Pärssinen, Leevi (2020)
Lataukset:
Pärssinen, Leevi
2020
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202003022916
https://urn.fi/URN:NBN:fi:amk-202003022916
Tiivistelmä
Insinöörityön tarkoituksena oli selvittää, miten saadaan opiskelijoiden Unity-pelimoottorilla luoma ambulanssipeli kommunikoimaan TwinCAT-nimisen ohjelmiston kanssa. Tarkoituksena oli ohjata reaaliajassa fyysistä ajotuolia ambulanssipelin sisällä tapahtuvilla asennon muutoksilla. Ajotuolin ohjausjärjestelmään kuului kuusi pneumaattisesti ohjattua lihasta, jotka paineilmaa syöttäessä pullistuvat, logiikkaterminaali sekä logiikkaohjelma, joka toimii tietokoneella TwinCAT-ohjelmistossa.
Alkuperäinen idea oli käyttää Mevean kinematiikkasimulointiohjelmaa, joka toimii yhteistyössä Unityn kanssa ja jolla on mahdollisuus kommunikoida PLC-ohjelman muuttujien kanssa TwinCAT-ohjelmistossa. Todettiin kuitenkin, että tätä ei ole mahdollista toteuttaa, koska Mevea ei huomioisi kosketuspintoja Unityn puolella, kun pelin maailmaa ei ollut mahdollista siirtää suoraan Mevean puolelle.
Seuraavaksi tutkittiin, olisiko mahdollista kirjoittaa ambulanssin asema-arvot tekstitiedostoon ja lukea ne TwinCAT-ohjelmiston ”FileRead”-komennolla. Komento ei kuitenkaan pystynyt lukemaan muuttuvaa tiedostoa tai tiedosto tulisi avata ja sulkea jatkuvasti, mikä puolestaan ei olisi tehokasta.
Toimivaksi ratkaisuksi ongelmaan osoittautui TwinCAT ADS (Automation Device Specification). Sen avulla saadaan kirjoitettua data Unity:n puolelta suoraan PLC-ohjelman muuttujiin. Unity ei suoraan tukenut TwinCAT ADSia, mutta onneksi saksalainen yritys nimeltään oli luonut Unity-lisäosan, johon oli lisätty TwinCAT ADS -tuki.
Lisäosan avulla saatiin tuotua signaalit TwinCAT-ohjelmistossa toimivasta PLC-ohjelmasta. Myös skriptini, joka kirjoittaa ambulanssin Eulerin kulmat, nopeus- ja kiihtyvyysarvot signaaleihin, onnistui. Sen avulla arvot päivittyvät PLC-ohjelmaan reaaliajassa.
Alkuperäinen idea oli käyttää Mevean kinematiikkasimulointiohjelmaa, joka toimii yhteistyössä Unityn kanssa ja jolla on mahdollisuus kommunikoida PLC-ohjelman muuttujien kanssa TwinCAT-ohjelmistossa. Todettiin kuitenkin, että tätä ei ole mahdollista toteuttaa, koska Mevea ei huomioisi kosketuspintoja Unityn puolella, kun pelin maailmaa ei ollut mahdollista siirtää suoraan Mevean puolelle.
Seuraavaksi tutkittiin, olisiko mahdollista kirjoittaa ambulanssin asema-arvot tekstitiedostoon ja lukea ne TwinCAT-ohjelmiston ”FileRead”-komennolla. Komento ei kuitenkaan pystynyt lukemaan muuttuvaa tiedostoa tai tiedosto tulisi avata ja sulkea jatkuvasti, mikä puolestaan ei olisi tehokasta.
Toimivaksi ratkaisuksi ongelmaan osoittautui TwinCAT ADS (Automation Device Specification). Sen avulla saadaan kirjoitettua data Unity:n puolelta suoraan PLC-ohjelman muuttujiin. Unity ei suoraan tukenut TwinCAT ADSia, mutta onneksi saksalainen yritys nimeltään oli luonut Unity-lisäosan, johon oli lisätty TwinCAT ADS -tuki.
Lisäosan avulla saatiin tuotua signaalit TwinCAT-ohjelmistossa toimivasta PLC-ohjelmasta. Myös skriptini, joka kirjoittaa ambulanssin Eulerin kulmat, nopeus- ja kiihtyvyysarvot signaaleihin, onnistui. Sen avulla arvot päivittyvät PLC-ohjelmaan reaaliajassa.