Javascript als Bindeglied zwischen IT und Embedded Devices

Autor
Christoph Stoidner

Datum
20. Oktober 2015

Veröffentlicht bei
Internet of Things – vom Sensor bis zur Cloud, München

Zusammenfassung
Eine Javascript-Engine auf dem (Deeply) Embedded System soll Software-Entwicklern mit weniger Embedded Know-How die Möglichkeit geben das Gerät in die individuelle IT-Infrastruktur (Internet, Intranet, ...) zu integrieren. Die eigentliche Anwendung bzw. Firmware (vom Embedded-Spezialist wie üblich in C o. Ä. implementiert) bietet sich der JS-Engine via APIs an. Die JS-Engine kann damit auf Daten und Funktionen der Firmware zugreifen. In der JS-Engine stehen übliche Technologien wie Webservices, JSON, XML, etc. zur Verfügung. Sämtliches technisches Detailwissen ist vom Embedded-Spezialist bereits durch die JS-API abstrahiert. Die Anbindung via Javascript kann vom Gerätehersteller, vom OEM oder sogar vom Endkunden vorgenommen werden - ganz ohne die Notwendigkeit spezieller Toolchains etc.

Software-Stack für IoT in Industrie und Automatisierung

Autor
Konrad Hubert

Datum
20. Oktober 2015

Veröffentlicht bei
Internet of Things – vom Sensor bis zur Cloud, München

Zusammenfassung
Typische IoT-Anwendungen im industriellen Umfeld haben ähnliche wiederkehrende Anforderungen. Diese Arbeit präsentiert einen Linux-basierten Software-Stack, speziell entwickelt und zugeschnitten für IoT. Der Stack bietet zum einen die für Industrieanlagen typischen Funktionalitäten und zum anderen Dienste zum Datenaustausch mit (Cloud-)Servern im Internet oder Intranet. Auf Basis des Stacks ist eine einfache Realisierung von Geräten für den M2M-Markt möglich.

Internet der Dinge - Programmierung von Eingebetteten Systemen mit JavaScript

Autor
Dirk Lange

Datum
29. Dezember 2014

Veröffentlicht bei
Technische Hochschule Mittelhessen, Gießen

Zusammenfassung
Im Rahmen dieser Bachelorarbeit wird untersucht, wie JavaScript zur Programmierung eines Eingebetteten Systems genutzt werden kann. Dazu wurde während einer Voruntersuchung eine JavaScript-Engine (JS-Engine) auf solch einer Plattform lauffähig installiert. Es ist daher bereits möglich, einfache Routinen zu implementieren und auszuführen. Durch den Einsatz eines solchen Systems wird keine spezielle Toolchain mehr benötigt, da Programme nicht mehr aufwendig kompiliert werden müssen. Zudem gilt JavaScript als leicht zu erlernende, aber doch mächtige Programmiersprache. Sie wird zumeist von Webentwicklern genutzt, welche die Sprache, im Gegensatz zu C, durch den alltäglichen Gebrauch beherrschen. Allerdings ist diese Sprache nicht für einen Einsatz auf einem Ein gebetteten System entwickelt worden und es gibt somit keine Möglichkeit zur Ansteuerung von Hardwarekomponenten. Daher werden während dieser Arbeit Konzepte und Erweiterungen entwickelt, die eine Verwendung von General-Purpose Input/Output (GPIO)s und ähnlichen Komponenten erlauben. Hierzu geh ̈ort auch die Implementierung eines Application Programming Interface (API)s zur Verarbeitung von mehreren zeitgesteuerten/zyklischen Threads.

Konzeptionierung und Realisierung einer Command-Shell für Eingebettete (Linux-) Systeme

Autor
Konrad Hubert

Datum
18. August 2014

Veröffentlicht bei
Technische Hochschule Mittelhessen, Gießen

Zusammenfassung
Im Rahmen dieser Bachelorarbeit wurde eine Shell implementiert, die eine zentrale Rolle in einem neuen Echtzeitbetriebssystem der Firma Beck IPC GmbH einnehmen wird. Die Shell wurde in einem Arbeitspaket, aus einem Projekt mit dem Entwicklungspartner arvero GmbH, beschrieben und entspricht den Funktionalitäten der Shell im bisher eingesetzten Echtzeitbetriebssystem von Beck IPC. In dem besagten Projekt wird ein Echtzeitbetriebssystem realisiert, welches auf einem Eingebettetem System laufen soll. Die Besonderheit dieses Betriebssystems ist der Linux-Kernel in der untersten und die DOS ähnliche Oberfläche auf der obersten Schicht. Die neue Shell steht dabei der bisherigen in nichts nach, sondern verbessert bzw. erweitert diese in Bezug auf Benutzerfreundlichkeit, Effizienz und Erweiterbarkeit. Dazu gehören nicht nur vorhergehende Spezifikationen und Analysen, sondern auch Tests, die die Qualität und Sicherheit der Software erhöhen und dadurch mehr Vertrauen schaffen. Somit ist klar, dass die Shell auf keinen vorhandenen oder schon fertigen Programmteilen basiert, sondern von Grund auf neu realisiert werden muss. Dies beinhaltet einen Parser, die Logik und natürlich die Shell an sich mit ihren Ein- und Ausgabefunktionen. Dabei stellen Telnet und die serielle Schnittstelle die Kommunikationskanäle für den Anwender dar.

Meine SPS kann Linux, und nun? - Ein Linux-basierter Software-Stack für industrielle Eingebettete Systeme

Autor
Christoph Stoidner

Datum
9. Mai 2014

Veröffentlicht bei
Linux Tag, Berlin

Zusammenfassung
Linux im industriellen Anlagenbau und der Automatisierungsindustrie ist längst keine Besonderheit mehr. Viele Hersteller liefern inzwischen Maschinensteuerungen, SPSen oder Kleinstgeräte, welche für die Applikationsentwicklung neben proprietären SPS-Programmiersystemen auch offene Linux-Systeme für die Programmierung in C/C++ anbieten. Ein solches offenes System hat fraglos viel Charme und zahllose Vorteile. Im Vergleich zu einem proprietären SPS-Programmiersystemen fehlen jedoch wesentliche, für industriellen Anwendungen typische, Infrastruktur-Funktionalitäten: Zur frühzeitigen Fehlererkennung und Vermeidung von Störungen oder Unfällen ist ein zuverlässiges Alarm-Management notwendig. Der Datenaustausch mit anderen Geräten wird meist mittels verschiedene Feldbus-Protokolle abgewickelt. Für dezentrale Systeme ist ein Fernzugriff über Internet oder dedizierte Funknetze erforderlich. Auch bei zentralisierten Systemen wird der Wunsch immer größer auch vom entfernten Standort aus oder mobil auf Diagnose-Information und Live-Daten zugreifen zu können. Für die Konfiguration und Bedienung der Anwendung muss auf einfachste Weise eine grafische Oberfläche zusammenstellbar sein - verwendbar für den Zugriff per Browser oder auf einem angeschlossenes Display. Nicht zuletzt muss ein sicheres und einfaches Konzept für Software-Updates existieren - auch vom entfernten Standort aus nutzbar. Die Erfahrung hat gezeigt, dass das Fehlen einer oder mehrerer dieser Funktionalitäten den Anwendungsentwickler meist vor große Probleme stellt und die Entwicklungszeit sowie das Risiko deutlich vergrößert. Es existieren verschiedene Ansätze Software-Stacks aus anderen Bereichen auch für industrielle Anwendungen zu nutzen. Der bekannteste Vertreter dabei ist die Android-Plattform. Neben dem ausgefeilten App-Konzept bietet vor allem die konmfortable grafische Benutzeroberfläche einen großen Fortschritt für die Anwendungsentwicklung. Dennoch bleiben dabei im speziellen SPS-Umfeld viele typische Anforderungen auf der Strecke. Um neben dem Charme eines offenen Linux-Systems auch die typische SPS-Funktionalität zu erlangen haben wir gemeinsam mit unserem Kunden einen Software-Stack entwickelt, welcher speziell den Anforderungen von industriellen eingebetteten Anwendungen Rechnung trägt. Basis des Stacks ist natürlich ein Linux-System. Wichtige Kernanforderungen sind dabei eine harte Echtzeitfähigkeit, geringe CPU-Auslastung sowie ein minimaler Speicherbedarf. Somit wird eine hohe Skalierbarkeit erreicht, was auch die Verwendung auf "Low-Performance"-Systemen erlaubt. Darauf aufbauend realisieren verschiedenen Komponenten die erforderlichen Funktionalitäten: Ein Alarmmanager erlaubt das Reagieren auf Fehlersituation, informiert angebundenen Systeme per M2M-Kommunikation oder den Betreiber per E-Mail oder SMS. Ein Diagnosesystem sammelt Anwendungsspezifische Logging-Informationen. Verschiedene Feldbus-Protokolle (z.B. CANopen, EtherCAT, Modbus, M-BUS, EC 60870-5-104 oder IEC 61850) können zur Kommunikation mit angeschlossenen Geräten verwendet werden. Daneben bieten Basisdienste wie FTP oder HTTP(s) einen komfortablen Kommunikationskanal zu übergeordneten Systemen. Zur Live-Daten-Erfassung sowie Fernadministration können Daten mit einem Portal-Server ausgetauscht werden. Die eigentliche Anwendung wird in C/C++ oder einer SPS-typischen Sprache entwickelt. Für kleine Steuer- und Regelaufgaben existiert eine Browser-basierte Programmierumgebung. Zur Bedienung der Anwendung kann eine individuelle Visualisierung entworfen werden, welche im Browser oder auf einem angeschlossenen Display angezeigt wird. Der Update der Anwendungssoftware kann mit signierten Paketen via Browser oder entfernten Webserver erfolgen. Der Software-Stack ergänzt das Linux-System um die typischen Anforderungen industrieller eingebetteter Anwendungen. Dabei bleibt die Flexibilität und der Charme des offenen Systems erhalten und dem Anwendungsentwickler wird eine Menge Arbeit erspart.

Component-Based Software Development of PLC Applications

Autor
Christoph Stoidner

Datum
25. März 2012

Zusammenfassung
The software applications of today’s industrial manufacturing systems are getting more and more complex, but the times scheduled for developing and testing software are continually shortened. To keep the quality and meet the deadlines, new software development methods have to be used. The component-based software development (CBSD) paradigm addresses these challenges, but existing CBSD approaches do not meet the specific requirements of PLC based manufacturing applications. This paper presents a novel CBSD approach that is suited for PLC manufacturing systems and is compatible with IEC61131-3. Furthermore, a software framework called CBSD4PLC is introduced. It is based on the proposed approach and can be used by automation engineers to create PLC applications in a component-based manner.

Seamless Integration of PLC Control Applications with SOA Business Services

Autor
Christoph Stoidner

Datum
28. März 2011

Zusammenfassung
The adoption of service-oriented architecture (SOA) technologies in industrial application domains enables the seamless integration of business software with manufacturing applications based on programmable logic controllers (PLCs) and promises increased interoperability. Unfortunately, the SOA and PLC worlds are quite different with respect to event processing, concurrency models, timing requirements, system performance and programming environments. In particular, efficient state-based event handling and cyclic realtime execution on PLCs differ from best-effort scheduling and flexible on-demand service execution on general-purpose servers. This article presents an approach to integrate SOA technologies into manufacturing processes, based on our previously proposed SOAP4PLC engine and our sequence-controlled services paradigm. An automation engineer can use familiar IEC 61131-3 programming languages to implement a control application and subsequently can export selected modules as SOA services. To evaluate the proposed approach, we present a use case for interfacing SOA based business software with PLC control applications using SOA services. The use case realizes an electric vehicle charging system with an extensible grid-aware smart-charging utility business infrastructure.

Invoking Web Services from Programmable Logic Controllers

Autor
Christoph Stoidner, Bernd Freisleben

Datum
13. September 2010

Veröffentlicht bei
IEEE Conference on Emerging Technologies and Factory Automation (ETFA), Bilbao

Zusammenfassung
The adoption of service-oriented architectures based on web services in industrial application domains enables the seamless integration of business software with manufacturing tasks and promises increased interoperability. To be able to invoke a manufacturing task running on a programmable logic controller (PLC) as a web service from a business application, the SOAP4PLC engine has been proposed. In this paper, an extension of the SOAP4PLC engine is presented to invoke a web service based business application from a PLC application. A use case is shown in which the extended SOAP4PLC engine is used to interface a PLC application concerned with realizing the functionality of a charging station for electrical vehicles with a web service based accounting system.

SOAP4PLC: Web Services for Programmable Logic Controllers

Autor
Markus Mathes, Christoph Stoidner, Steffen Heinzl, Bernd Freisleben

Datum
20. Februar 2009

Veröffentlicht bei
17th Euromicro International Conference on Parallel, Distributed and Network-based Processing, Weimar

Zusammenfassung
The use of service-oriented architectures based on web services in the manufacturing layer of industrial enterprises yields vertical integration and promises increased interoperability and flexibility. Unfortunately, two main obstacles complicate the use of web services in the manufacturing layer. First, the hardware/software used in this layer differs from the hardware/software used in other layers. Second, the manufacturing layer is maintained by automation engineers who typically are not familiar with web services. This paper presents the first SOAP engine for programmable logic controllers to advance the use of web services in the manufacturing layer. The engine offers a low memory footprint to respect the low computational power of programmable logic controllers and allows to export web services automatically without intervention of an automation engineer.

Sequence-Controlled Web Services for Programmable Logic Controllers

Autor
Christoph Stoidner, Markus Mathes, Bernd Freisleben

Datum
24. März 2009

Veröffentlicht bei
13th IFAC Symposium on Information Control Problems in Manufacturing, Moskau

Zusammenfassung
The use of service-oriented architectures based on web services in the manufacturing layer of industrial enterprises enables vertical integration and promises increased interoperability. Unfortunately, the differing execution patterns - cyclic execution on programmable logic controllers vs. on-demand execution on industrial PCs - complicate the use of web services in the manufacturing layer. This paper introduces sequence-controlled web services that permit to easily export a control module as a web service. An automation engineer can use familiar IEC 61131-3 programming languages to implement the control application and subsequently can export selected modules as web services.

Time-Constrained Services (TiCS): A Framework forUsing Real-time Web Services in Industrial Automation

Autor
Markus Mathes, Christoph Stoidner, Roland Schwarzkopf, Steffen Heinzl, Tim Dörnemann, Helmut Dohmann, Bernd Freisleben

Datum
9. Oktober 2009

Veröffentlicht bei
Service Oriented Computing and Applications, London

Zusammenfassung
The use of web services in industrial automation, e.g. in fully automated production processes like car manufacturing, promises simplified interaction among the manufacturing devices due to standardized protocols and increased flexibility with respect to process implementation and reengineering. Moreover, the adoption of web services as a seamless communication backbone within the overall industrial enterprise has additional benefits, such as simplified interaction with suppliers and customers (i.e. horizontal integration) and avoidance of a break in the communication paradigm within the enterprise (i.e. vertical integration). The Time-Constrained Services (TiCS) framework is a development and execution environment that empowers automation engineers to develop, deploy, publish, compose, and invoke time-constrained web services. TiCS consists of four functional layers—tool support layer, real-time infrastructural layer, real-time service layer, and hardware layer—which contain several components to meet the demands of a web service based automation infrastructure. This article gives an overview of the TiCS framework. More precisely, the general design considerations and an architectural blueprint of the TiCS framework are presented. Subsequently, selected key components of the TiCS framework are discussed in detail: the SOAP4PLC engine for equipping programmable logic controllers with a web service interface, the SOAP4IPC engine for processing web services in real-time on industrial PCs, the WS-TemporalPolicy language for describing time constraints, and the TiCS Modeler for composing time-constrained web services into a time-constrained BPEL4WS workflow.