Architecture of Industrial Device Interfaces
Konttinen, Antti (2021)
Konttinen, Antti
2021
Automaatiotekniikan DI-ohjelma - Master's Programme in Automation Engineering
Tekniikan ja luonnontieteiden tiedekunta - Faculty of Engineering and Natural Sciences
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ä
2021-11-11
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202110217751
https://urn.fi/URN:NBN:fi:tuni-202110217751
Tiivistelmä
Device interfaces are needed when a system needs to communicate with devices, which aren’t directly compatible with the system. The interface is used to translate the data passing from the system to the device to make communication possible. Industrial environments have strict requirements for the dependability and performance of the software because real and potentially dangerous machinery and processes are involved. This makes the architecture of an industrial device interface a crucial factor when designing new implementation because otherwise the device interface could malfunction and cause real harm to the environment.
This thesis targets to find a suitable architecture for an industrial device interface by using an architectural pattern as the basis. Integration methods for industrial environments are studied to gather information about the concepts and requirements for the selection of the architecture. Four different architectural patterns (layered, event-driven, microkernel, microservice) are studied and compared to find the best alternative for the architecture. The remaining of the architectural patterns are evaluated to determine if some of their key features could be implemented to the overall architecture.
Performance, maintainability, configurability, safety, and security were determined as the main requirements for the device interface. The chosen architecture uses the microkernel architectural pattern as the baseline. The microkernel architecture uses a core system to implement the necessary functionalities for the software to be operational. Plugin components connect to the core system and offer additional features on top of the core system. In the device interface, the core system handles the communication to the external system and initialization of the plugin components, while the plugins act as device drivers to connect to the devices. Microservice type of architecture was chosen to be supported by allowing multiple core systems to be run parallel with each other.
The designed architecture was tested by implementing a demo interface supporting communication with a Modbus slave device. The results of testing showed that the implementation fulfilled the requirements defined for the device interface rather well. The performance was on a good level and it was easily configurable. Maintainability for the plugin components was good, but if the core system would require changes, it could affect other parts as well. Security was handled well, but safety could become a problem if the core system would fail. Overall, the implementation complied with the decided architecture, even though definite conclusions couldn’t be made based on the implementation, because the tests were rather limited. Laiterajapintoja tarvitaan järjestelmien kommunikoidessa laitteiden kanssa, jotka eivät ole suoraan yhteensopivia käytössä olevien järjestelmien kanssa. Rajapintoja käytetään järjestelmien ja laitteiden välillä liikkuvan tiedon muokkaamiseksi yhteensopivaksi kommunikoinnin mahdollistamiseksi. Teollisuuden ympäristöillä on tiukat vaatimukset sovelluksen käyttövarmuudelle ja tehokkuudelle johtuen niihin liittyvistä mahdollisesti vaarallisia laitteista ja prosesseista. Sen vuoksi teollisuuden laiterajapintojen arkkitehtuuri on tärkeässä roolissa uusia toteutuksia suunniteltaessa, koska muutoin laiterajapinta voisi toimia virheellisesti ja aiheuttaa todellista vahinkoa ympäristölle.
Tämän opinnäytetyön tarkoituksena on löytää teollisuuden laiterajapinnoille soveltuva arkkitehtuuri käyttämällä hyödyksi arkkitehtuurimalleja. Työssä tutkitaan teollisuusympäristöihin liittyviä integrointimenetelmiä sekä käsitteitä, jotta arkkitehtuurin valintaan vaikuttavat vaatimukset voidaan määritellä. Neljä erilaista arkkitehtuurimallia (kerros, tapahtumapohjainen, mikropalvelu sekä mikrokernel) valitaan vertailtavaksi arkkitehtuurille parhaan vaihtoehdon löytämiseksi. Jäljelle jääneiden arkkitehtuurimallien ominaisuuksia arvioidaan, voidaanko miitä käyttää hyödyksi lopullisessa arkkitehtuurissa.
Suorituskyky, ylläpidettävyys, konfiguroitavuus sekä turvallisuus valittiin laiterajapinnan tärkeimmiksi vaatimuksiksi. Lopullinen arkkitehtuuri pohjautuu mikrokernel-arkkitehtuurimalliin. Mikrokernel-arkkitehtuurissa käytetään mikroydintä sovelluksen välttämättömien ominaisuuksien toteuttamiseksi. Ytimen moduulit yhdistyvät mikroytimeen ja tarjoavat ylimääräisiä ominaisuuksia mikroytimen rinnalle. Suunnitellussa laiterajapinnassa mikroydintä käytetään ulkoisten järjestelmien väliseen kommunikointiin sekä ytimen moduulien alustamiseen, jotka toimivat laiteajureina ympäristöistä löytyville laitteille. Mikropalvelun kaltaista arkkitehtuuria tuetaan mahdollistamalla useamman mikroytimen rinnakkainen toiminta.
Lopullinen arkkitehtuuri testattiin toteuttamalla testirajapinta, joka tuki kommunikointia Modbusorjalaitteen kanssa. Toteutuksen testaus osoitti, että testirajapinta täytti sille asetetut vaatimukset melko hyvin. Suorituskyky oli hyvällä tasolla ja rajapinta oli helposti konfiguroitavissa. Ytimen moduulien ylläpidettävyys oli hyvä, mutta mikroytimeen tehtävät muutokset voivat mahdollisesti vaikuttaa sovelluksen muihin osiin. Tietoturvan käsittelyssä ei ollut ongelmia, mutta toiminnallinen turvallisuus voisi kärsiä, jos mikroydin menisi vikatilaan. Kaiken kaikkiaan toteutus noudatti hyvin suunniteltua arkkitehtuuria, vaikkakaan täysin varmoja johtopäätöksiä ei voitu tehdä toteutuksen pohjalta, koska testitapaukset olivat melko rajalliset.
This thesis targets to find a suitable architecture for an industrial device interface by using an architectural pattern as the basis. Integration methods for industrial environments are studied to gather information about the concepts and requirements for the selection of the architecture. Four different architectural patterns (layered, event-driven, microkernel, microservice) are studied and compared to find the best alternative for the architecture. The remaining of the architectural patterns are evaluated to determine if some of their key features could be implemented to the overall architecture.
Performance, maintainability, configurability, safety, and security were determined as the main requirements for the device interface. The chosen architecture uses the microkernel architectural pattern as the baseline. The microkernel architecture uses a core system to implement the necessary functionalities for the software to be operational. Plugin components connect to the core system and offer additional features on top of the core system. In the device interface, the core system handles the communication to the external system and initialization of the plugin components, while the plugins act as device drivers to connect to the devices. Microservice type of architecture was chosen to be supported by allowing multiple core systems to be run parallel with each other.
The designed architecture was tested by implementing a demo interface supporting communication with a Modbus slave device. The results of testing showed that the implementation fulfilled the requirements defined for the device interface rather well. The performance was on a good level and it was easily configurable. Maintainability for the plugin components was good, but if the core system would require changes, it could affect other parts as well. Security was handled well, but safety could become a problem if the core system would fail. Overall, the implementation complied with the decided architecture, even though definite conclusions couldn’t be made based on the implementation, because the tests were rather limited.
Tämän opinnäytetyön tarkoituksena on löytää teollisuuden laiterajapinnoille soveltuva arkkitehtuuri käyttämällä hyödyksi arkkitehtuurimalleja. Työssä tutkitaan teollisuusympäristöihin liittyviä integrointimenetelmiä sekä käsitteitä, jotta arkkitehtuurin valintaan vaikuttavat vaatimukset voidaan määritellä. Neljä erilaista arkkitehtuurimallia (kerros, tapahtumapohjainen, mikropalvelu sekä mikrokernel) valitaan vertailtavaksi arkkitehtuurille parhaan vaihtoehdon löytämiseksi. Jäljelle jääneiden arkkitehtuurimallien ominaisuuksia arvioidaan, voidaanko miitä käyttää hyödyksi lopullisessa arkkitehtuurissa.
Suorituskyky, ylläpidettävyys, konfiguroitavuus sekä turvallisuus valittiin laiterajapinnan tärkeimmiksi vaatimuksiksi. Lopullinen arkkitehtuuri pohjautuu mikrokernel-arkkitehtuurimalliin. Mikrokernel-arkkitehtuurissa käytetään mikroydintä sovelluksen välttämättömien ominaisuuksien toteuttamiseksi. Ytimen moduulit yhdistyvät mikroytimeen ja tarjoavat ylimääräisiä ominaisuuksia mikroytimen rinnalle. Suunnitellussa laiterajapinnassa mikroydintä käytetään ulkoisten järjestelmien väliseen kommunikointiin sekä ytimen moduulien alustamiseen, jotka toimivat laiteajureina ympäristöistä löytyville laitteille. Mikropalvelun kaltaista arkkitehtuuria tuetaan mahdollistamalla useamman mikroytimen rinnakkainen toiminta.
Lopullinen arkkitehtuuri testattiin toteuttamalla testirajapinta, joka tuki kommunikointia Modbusorjalaitteen kanssa. Toteutuksen testaus osoitti, että testirajapinta täytti sille asetetut vaatimukset melko hyvin. Suorituskyky oli hyvällä tasolla ja rajapinta oli helposti konfiguroitavissa. Ytimen moduulien ylläpidettävyys oli hyvä, mutta mikroytimeen tehtävät muutokset voivat mahdollisesti vaikuttaa sovelluksen muihin osiin. Tietoturvan käsittelyssä ei ollut ongelmia, mutta toiminnallinen turvallisuus voisi kärsiä, jos mikroydin menisi vikatilaan. Kaiken kaikkiaan toteutus noudatti hyvin suunniteltua arkkitehtuuria, vaikkakaan täysin varmoja johtopäätöksiä ei voitu tehdä toteutuksen pohjalta, koska testitapaukset olivat melko rajalliset.