Uudelleenkäytettävän koneenohjausjärjestelmän suunnittelu ja toteutus
Paarlahti, Perttu Sakari (2018)
Paarlahti, Perttu Sakari
2018
Sähkötekniikka
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2018-09-05
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201808292227
https://urn.fi/URN:NBN:fi:tty-201808292227
Tiivistelmä
Machine control system makes a machine operate safely and according to the operator’s commands. Nowadays ever-increasing portion of the system functionality is implemented by software. Control system’s software is run by one or multiple programmable control units. Control units may have various kinds of IO-connections with its sensors and actuators. Control units are interconnected with communication buses. There is a vast variety of communication bus implementations, and each bus implementation may have multiple different high-level protocols available. Malfunctioning machines are dangerous, and therefore legislators and domain specific standards have set specific requirements for machine safety.
Prior to existence of cheap and durable enough control units, machine control systems were implemented connecting relays and cam timers. There was very little flexibility for changing system requirements. Due to limited hardware resources, early programmable control units were programmed with very low-level programming languages and using procedural programming paradigm. As hardware capabilities of control units improved, using high-level programming languages and object-oriented programming paradigm became viable options.
Software reuse has become urgent as machine control system software requirements have increased over time. Hardware dependency and varying requirements are making machine control system software reuse difficult. Without efficient and systematic software reuse, machine manufacturers are not able to compete with reasonable prices and latest technologies. Object-oriented programming becoming more wide-spread in embedded software has improved software reusability. Object-oriented programming by it-self does not guarantee reusability. The system still needs to be carefully designed especially for reusability. Following the SOLID-principles for object-oriented programming helps designing the system to be reusable and easy to understand, maintain and develop further.
I have been developing a new machine control system for loading and hauling machines for Sandvik during the last year. The new control system is intended to be reusable between various kinds of machine types and models in the future. This thesis describes how object-oriented programming, design for reusability and common machine control system design patterns can be applied in practice. Even though the system has been designed to be reusable, only the future usage of the new control system will reveal its actual reusability. Koneenohjausjärjestelmä saa koneen toimimaan turvallisesti ja operaattorin komentojen mukaisesti. Yhä suurempi osa koneenohjausjärjestelmien toiminnallisuudesta toteutetaan nykyisin ohjelmistolla. Koneenohjausjärjestelmän ohjelmiston suorituksesta vastaa yksi tai useampi ohjelmoitava ohjausyksikkö. Ohjausyksiköillä voi olla lukuisia erilaisia IO-liitäntöjä, joilla ne liittyvät antureihinsa ja toimilaitteisiinsa. Ohjausyksiköt liittyvät toisiinsa kommunikaatioväylien avulla. Väylätoteutuksia on olemassa useita, ja kullakin väylätoteutuksella voi olla useita korkean tason protokollia. Koneet ovat väärin toimiessaan vaarallisia, minkä vuoksi koneiden turvallisuudelle on asetettu erityisiä vaatimuksia laissa ja sovellusalakohtaisissa standardeissa.
Koneenohjausjärjestelmien ohjaus toteutettiin ennen riittävän edullisten ja kestävien ohjausyksiköiden kehittymistä releillä ja ajastimilla, mikä tarjosi hyvin vähän joustovaraa vaatimusten muuttamiselle. Ensimmäiset ohjelmoitavat ohjausyksiköt ohjelmoitiin rajallisten laitteistoresurssien vuoksi hyvin matalan tason ohjelmointikielillä ja proseduraalista ohjelmointiparadigmaa noudattaen. Ohjausyksikköjen suorituskyvyn kehittyminen on mahdollistanut korkean tason ohjelmointikielten käyttämisen ja olio-ohjelmoinnin soveltamisen.
Koneenohjausjärjestelmien ohjelmiston vaatimusten kasvaessa ohjelmiston uudelleenkäytöstä on tullut tärkeää. Uudelleenkäyttöä vaikeuttavat ohjelmiston laitteistoläheisyys ja vaihtelevat ominaisuudet. Ilman tehokasta ja systemaattista ohjelmiston uudelleenkäyttöä koneenvalmistaja ei pysty kilpailemaan koneiden kohtuullisella hinnalla ja uusimmalla teknologialla. Olio-ohjelmointikielten yleistyminen sulautetuissa järjestelmissä parantaa ohjelmiston uudelleenkäytettävyyttä. Olio-ohjelmoinnin käyttö itsessään ei kuitenkaan takaa uudelleenkäytettävyyttä, vaan ohjelmisto on suunniteltava huolellisesti erityisesti uudelleenkäyttöä varten. Olio-ohjelmoinnin SOLID-periaatteet auttavat uudelleenkäytettävän ja helposti ymmärrettävän, jatkokehitettävän ja ylläpidettävän ohjelmiston suunnittelussa.
Olen viimeisen vuoden aikana kehittänyt Sandvikille uutta koneenohjausjärjestelmää kaivoslastaus- ja -kuljetuskoneille. Järjestelmän on tarkoitus olla uudelleenkäytettävä laajalle kirjolle erilaisia koneita ja konemalleja tulevaisuudessa. Tässä diplomityössä kuvataan, miten olio-ohjelmointia, uudelleenkäytettävän ohjelmiston suunnitteluperiaatteita ja muita koneenohjausjärjestelmien yleisiä suunnittelumalleja on sovellettu käytännössä. Vaikka uudelleenkäytettävyys on otettu suunnittelussa huomioon, vasta järjestelmän käyttöönotto tulevaisuudessa paljastaa todellisen uudelleenkäytettävyyden.
Prior to existence of cheap and durable enough control units, machine control systems were implemented connecting relays and cam timers. There was very little flexibility for changing system requirements. Due to limited hardware resources, early programmable control units were programmed with very low-level programming languages and using procedural programming paradigm. As hardware capabilities of control units improved, using high-level programming languages and object-oriented programming paradigm became viable options.
Software reuse has become urgent as machine control system software requirements have increased over time. Hardware dependency and varying requirements are making machine control system software reuse difficult. Without efficient and systematic software reuse, machine manufacturers are not able to compete with reasonable prices and latest technologies. Object-oriented programming becoming more wide-spread in embedded software has improved software reusability. Object-oriented programming by it-self does not guarantee reusability. The system still needs to be carefully designed especially for reusability. Following the SOLID-principles for object-oriented programming helps designing the system to be reusable and easy to understand, maintain and develop further.
I have been developing a new machine control system for loading and hauling machines for Sandvik during the last year. The new control system is intended to be reusable between various kinds of machine types and models in the future. This thesis describes how object-oriented programming, design for reusability and common machine control system design patterns can be applied in practice. Even though the system has been designed to be reusable, only the future usage of the new control system will reveal its actual reusability.
Koneenohjausjärjestelmien ohjaus toteutettiin ennen riittävän edullisten ja kestävien ohjausyksiköiden kehittymistä releillä ja ajastimilla, mikä tarjosi hyvin vähän joustovaraa vaatimusten muuttamiselle. Ensimmäiset ohjelmoitavat ohjausyksiköt ohjelmoitiin rajallisten laitteistoresurssien vuoksi hyvin matalan tason ohjelmointikielillä ja proseduraalista ohjelmointiparadigmaa noudattaen. Ohjausyksikköjen suorituskyvyn kehittyminen on mahdollistanut korkean tason ohjelmointikielten käyttämisen ja olio-ohjelmoinnin soveltamisen.
Koneenohjausjärjestelmien ohjelmiston vaatimusten kasvaessa ohjelmiston uudelleenkäytöstä on tullut tärkeää. Uudelleenkäyttöä vaikeuttavat ohjelmiston laitteistoläheisyys ja vaihtelevat ominaisuudet. Ilman tehokasta ja systemaattista ohjelmiston uudelleenkäyttöä koneenvalmistaja ei pysty kilpailemaan koneiden kohtuullisella hinnalla ja uusimmalla teknologialla. Olio-ohjelmointikielten yleistyminen sulautetuissa järjestelmissä parantaa ohjelmiston uudelleenkäytettävyyttä. Olio-ohjelmoinnin käyttö itsessään ei kuitenkaan takaa uudelleenkäytettävyyttä, vaan ohjelmisto on suunniteltava huolellisesti erityisesti uudelleenkäyttöä varten. Olio-ohjelmoinnin SOLID-periaatteet auttavat uudelleenkäytettävän ja helposti ymmärrettävän, jatkokehitettävän ja ylläpidettävän ohjelmiston suunnittelussa.
Olen viimeisen vuoden aikana kehittänyt Sandvikille uutta koneenohjausjärjestelmää kaivoslastaus- ja -kuljetuskoneille. Järjestelmän on tarkoitus olla uudelleenkäytettävä laajalle kirjolle erilaisia koneita ja konemalleja tulevaisuudessa. Tässä diplomityössä kuvataan, miten olio-ohjelmointia, uudelleenkäytettävän ohjelmiston suunnitteluperiaatteita ja muita koneenohjausjärjestelmien yleisiä suunnittelumalleja on sovellettu käytännössä. Vaikka uudelleenkäytettävyys on otettu suunnittelussa huomioon, vasta järjestelmän käyttöönotto tulevaisuudessa paljastaa todellisen uudelleenkäytettävyyden.