Für Geräte der Industrie 4.0

Vielseitiger Prozessor mit Funk-Transceiver

7. Juni 2018, 14:54 Uhr | Von Dror Gluska und Stefan Tauschek
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Einfach handhabbare Entwicklungswerkzeuge

Für seine Entwicklungsumgebung ESP-IDF legte Espressif großen Wert darauf, die Anwendung für Entwickler so einfach wie möglich zu machen. Innerhalb des SDKs gibt es APIs (Application Programming Interface) und POSIX-Thread-kompatible APIs (POSIX – Portable Operating System Interface) zur Steuerung der Hardware, Treiber, und C++-Bibliotheken (stdlib), sogar glob, regex, tar und miniz werden unterstützt. All dies macht die Programmierung eines ESP32-Systems relativ einfach und auch die Portierung existierender Software wird damit deutlich erleichtert.

Das ESP-IDF hat auch ein paar hilfreiche Komponenten, die bei der Entwicklung robuster Anwendungen helfen, darunter ein SPI-Dateisystem (Serial Peripheral Interface) mit Unterstützung sowohl von FAT (File Allocation Table) als auch SPIFFS (Serial Peripheral Interface Flash File System). Mit dem Dateisystem lassen sich Log-Dateien und Datensätze speichern wobei das SPI-EEPROM einen Wear Leveling Layer beinhaltet, der dabei hilft, die Anzahl möglicher Schreiboperationen zu vergrößern. Parameter lassen sich dabei separat im nichtflüchtigen Speicher (NVM – Non-volatile Memory) sichern, wodurch sie durch Formatierung des Dateisystems nicht beeinträchtigt werden. Und sollte die Größe des SPI-Flash-Speichers nicht reichen, kann auch die SD-Card-Bibliothek genutzt werden, um externen Speicher einzubinden.

Eine Cloud-Anbindung ist z.B. wesentlich für Anwendungen zum Monitoring und zur Steuerung großer Anlagen. Die Entwicklungsumgebung ESP-IDF beinhaltet Funktionen zur Verbindung mit der Amazon-Cloud (AWS IoT – Amazon Web Services IoT) und mit der Microsoft-Cloud (Azure IoT), sowie eine API für Kurznachrichten (TelegramBot) und die essenziellen IoT-Protokolle CoAP (Constrained Application Protocol) und MQTT (Message Queuing Telemetry Transport).

Das leichtgewichtige Internetprotokoll (lwIP) ist ein IPv4/IPv6-TCP/IP-Protokollstapel mit einigen interessanten Eigenschaften, wie etwa Namensauf­lösung DNS/mDNS (Domain Name System/Multicast DNS), SNMP (Simple Network Management Protocol), DHCP (Dynamic Host Configuration Protocol), AutoIP zur selbständigen Konfiguration von Netzwerken, PPP (Point-to-Point Protocol) und L2TP (Layer 2 Tunneling Protocol) – die Basis für Netzwerke. Damit lassen sich z.B. DHCP-Server, SNTP-Client/Server (Simple Network Time Protocol), Ping-Werkzeuge, HTTP(S)-Client/Server (Hypertext Transfer Protocol Secure), CoAP-Client/Server und OpenSSL-Client/Server (SSL – Secure Sockets Layer), realisieren. Für HTTP/2-Client/Server ist im EDF-SDK die C-Bibliothek Nghttp2 integriert, diese Implementation wird beispielsweise auch für Alexa Voice Services (AVS) eingesetzt. Kryptographische Funktionen erlauben die beiden Bibliotheken mbedTLS und libsodium [3] – beide sind ähnlich, haben aber ihre jeweiligen Vor- und Nachteile.

Die FreeRTOS-APIs beinhalten das Task-Management, einschließlich Scheduler und Monitoring sowie Datenstrukturen wie beispielsweise Queues/Stacks, Ringbuffer und Locking-Mechanismen wie Semaphoren und Mutexe (von Mutual Exclusion).

Das Betriebssystem FreeRTOS ist kostenlos, kann aber nicht alle Wünsche erfüllen. Für manche Projekte sind Funktions- oder Wartungsgarantien erforderlich und technischer Support. Für solche Fälle eignet sich die kommerzielle Alternative OpenRTOS [5], das exakt gleiche Betriebssystem aber mit einem anderen Lizenzmodell. Eine weitere Alternative für sicherheitskritische Anwendungen ist SafeRTOS [6].

Espressif hat zum Debugging [7] OpenOCD (Open On-Chip-Debugger) [8] zusammen mit der Unterstützung von JTAG implementiert und das ESP-IDF bietet eine Unit-Testapplikation basierend auf Unity (Unit Testing for C, [9]. Auch Nutzer von PlatformIO können diese Debugging-Verfahren verwenden.

Die Entwicklungsumgebung für den ESP32 ist unter Apache [10] lizenziert, allerdings ist bei Entwicklung kommerziell verwendeter Implementierungen bei jeder Software-Komponente das Lizenzierungsmodell unbedingt zu prüfen. FreeRTOS hat ein anderes Lizenzierungsmodell, einige LCD-Treiber haben wiederum andere etc. Der beste Rat an dieser Stelle ist es, einen spezialisierten Rechtsanwalt zu konsultieren, bevor eine kommerzielle Anwendung auf den Markt gebracht wird.

Echtzeit-Betriebssystem

Die Einarbeitung in eine neue Software-Entwicklungsumgebung (SDK) mit all seinen Spezialitäten und Limitierungen folgt einer Lernkurve, die sehr steil ist. Es kann viele Stunden dauern, bis ein erstes, einfaches Programmbeispiel fehlerfrei läuft. Der Wechsel zu einem anderen Echtzeit-Betriebssystem (RTOS) kann daher großen Aufwand bedeuten – und häufig stellt sich später heraus, dass dort die gleichen Strukturen und APIs verwendet werden.

Aber warum sollte ein Entwickler überhaupt ein populäres RTOS einsetzen? Zum einen beschleunigt dies ganz erheblich die Einarbeitung in ein komplexes SoC mit seiner technischen Dokumentation von mehreren Hundert Seiten. Auf der anderen Seite beschleunigt es aber auch die Entwicklung eigener Anwendungen und erhöht die Sicherheit, weil vielfach getestete Bibliotheken zum Einsatz kommen. Dies ist einer der großen Vorteile als Mitglied der inzwischen doch recht großen Espressif-Entwicklergemeinde: Viele Entwickler haben sich schon in die technische Dokumentation ein­gelesen, Treiber und Beispielcode entwickelt, Probleme identifiziert, gelöst und in der Community veröffentlicht. Wenn auch nicht alle Beiträge von bester Qualität sind, so gibt es doch meist zu jeder Aufgabenstellung wertvolle Hinweise und hilfreiche Lösungsansätze.

Der ESP32 kann zusätzlichen mit zwei alternativen Echtzeit-Betriebssystemen genutzt werden: Simba [11] und NuttX [12].

Einsatz in der Industrie

Das Relaismodul LinkNode R8 von LinkSprite Technologies nutzt den ESP32 für die Funkkommunikation.
Bild 5. Das Relaismodul LinkNode R8 von LinkSprite Technologies nutzt den ESP32 für die Funkkommunikation.
© Macnica

Obwohl das SoC ESP32 von Espressif kein Ersatz für kommerziell erhältliche Speicherprogrammierbare Steuerungen und SCADA-Geräte (Supervisory Control and Data Akquisition) ist, kann es diese Zielsetzungen doch recht elegant unterstützen, als Sensor- oder Aktor-Modul beispielsweise (Bild 5). Kommunikations- und Steuerungsaufgaben sind eine recht einfache Übung für das SoC und falls ein paar Ein-/Ausgänge fehlen sollten, so kann ein simpler externer Multiplexer helfen, solange die Zeitvorgaben dabei nicht verletzt werden.

    Mit dem Programmier-Werkzeug Node-RED lassen sich Geräte, APIs und internetbasierte Dienste miteinander verknüpfen.
    Bild 6. Mit dem Programmier-Werkzeug Node-RED lassen sich Geräte, APIs und internetbasierte Dienste miteinander verknüpfen.
    © Macnica

    Wie aber steht es um die Software? Derzeit gilt Node-RED [13] als populärste IoT-Entwicklungs- und Steuerungssoftware (Bild 6). Sie ist einfach zu bedienen und es existieren viele Tutorials dazu – sowohl als Fachaufsätze als auch als Videos. Weitere Optionen sind Eclipse Kura [14] und Project Flogo [15].

    Geht es hingegen mehr um industrielle Anwendungen, werden andere Frameworks oder Entwicklungsumgebungen bevorzugt, hier eine kleine Auswahl aus der Open-Source-Gemeinde:

    • Rapid SCADA [16], eine Open-Source SCADA-Software mit umfangreicher Ausstattung.
    • Eclipse NeoSCADA [17], eine flexibel nutzbare Sammlung von Software-Werkzeugen, die auf viele verschiedene Arten kombiniert werden können. Sie bietet Entwicklungsbibliotheken, Schnittstellenanwendungen, Werk­zeuge zur Konfigurierung, Eingangs- und Ausgangs-Anwendungen.
    • IndigoSCADA [18] ist ein SCADA-System mit kleinem Speicherbedarf, dass vollständig in C und C++ entwickelt wurde. Es unterstützt zahlreiche Betriebssysteme und Protokolltreiber.
    • ScadaBR [19] ist eine Open-Source-Software für die Entwicklung von Automatisierungs-, Datenerfassungs- und Überwachungsanwendungen.
    • SZARP [20] ist ein voll ausgestattetes SCADA-Systen zur Überwachung sich nur langsam verändernder indus­trieller Prozesse beispielsweise bei Heizkraftwerken. SZARP ist freie Software, veröffentlicht unter GNU General Public License 2.0.

    Kurzer Weg zum Prototyp

    Software-Entwicklungsumgebungen bieten eine hervorragende Möglichkeit, die Eigenschaften eines Prozessors zu verstehen. Obwohl C++ eine einfach zu erlernende Sprache ist, gibt es mitunter Anforderungen, die Möglichkeiten des ESP32 in einer anderen Programmiersprache zu beschreiben – beispielsweise wenn Quereinsteiger aus anderen Bereichen, wie z.B. Physik oder Biologie, Machbarkeitsstudien (PoC – Proof of Concept) realisieren wollen.

    Als Alternativen zu C++ und Free­RTOS können genutzt werden:

    • Lua RTOS [21], ein Echtzeitbetriebssystem speziell für eingebettete Systeme mit minimalen Anforderungen an Flash-Speicher und RAM.
    • MicroPython [22], eine Implementierung der Programmiersprache Python 3.x für Mikrocontroller und kleine, eingebettete Systeme.
    • Basic – Ein Basic Interpreter ist im ESP32 integriert, allerdings ist er in den Dokumenten nicht beschrieben.

     

    Literatur

    [1] Industry 4.0: the fourth industrial revolution – guide to Industrie 4.0. i-SCOOP, www.i-scoop.eu/industry-4-0

    [2] Industry 4.0 Market by Technology, Vertical, Region - Global Forecast to 2022. Markets and Markets, Report SE 5279, Mai 2017, https://www.marketsandmarkets.com/Market-Reports/industry-4-market-102536746.html

    [3] The Sodium crypto library (libsodium). www.gitbook.com/book/jedisct1/libsodium/details

    [4] PlatformIO is an open source ecosystem for IoT development. https://platformio.org

    [5] OpenRTOS – A New Approach To Embedded Software. Wittenstein high integrity systems, www.highintegritysystems.com/openrtos

    [6] SafeRTOS – Safety Certified RTOS. Wittenstein high integrity systems, www.highintegritysystems.com/safertos

    [7] JTAG Debugging. Espressif Systems, ESP-IDF Programming Guide, https://dl.espressif.com/doc/esp-idf/latest/api-guides/jtag-debugging/index.html

    [8] Open Source On-Chip Debugger OpenOCD. Hochschule Augsburg, http://www.openocd.net

    [9] VanderVoord, M.; Karlesky M. und Williams, G.: UNITY – Unit Testing for C (especially Embedded Software). http://www.throwtheswitch.org/unity

    [10] Licensing of Distributions. The Apache Software Foundation, www.apache.org/licenses

    [11] Moqvist, E.: Welcome to Simba’s documentation. http://simba-os.readthedocs.io

    [12] NuttX Real-Time Operating System. www.nuttx.org

    [13] Node-RED – Flow-based programming for the Internet of Things. JS Founda­tion, https://nodered.org

    [14] Eclipse Kura. www.eclipse.org/kura.

    [15] Project Flogo – Ultralight Edge Microservices Framework. www.flogo.io

    [16] Rapid SCADA. http://rapidscada.org.

    [17] Eclipse NeoSCADA. www.eclipse.org/eclipsescada

    [18] IndigoSCADA Section. Enscada s.r.l., www.enscada.com/a7khg9/Indigo­SCADA.html

    [19] ScadaBR. Sensorweb, www.scadabr.com.br

    [20] SZARP - Open Source SCADA Software. https://szarp.org/en

    [21] Lua RTOS for ESP32. https://github.com/whitecatboard/Lua-RTOS-ESP32

    [22] MicroPython – a lean and efficient Python implementation for micro­controllers and constrained systems. https://github.com/micropython/micropython

     

    Die Autoren

    Dror Gluska
    Dror Gluska ist Software-Entwickler und ein »Maker«.
    © Dror Gluska

    Dror Gluska

    ist ein erfahrener Software-Entwickler und ein »Maker«, lange bevor der Begriff »Maker« populär wurde.

    Er ist stets auf der Suche nach Dingen, die es zu entwickeln und verbessern gibt, sieht sich aber auch als Mentor und Unterstützer für junge Software-Entwickler. Sein Leitsatz ist: »Wenn es nicht kaputt ist, mach‘ es kaputt und finde so heraus, wie es funktioniert«.

    Kontakt per E-Mail-Formular seines Blogs: http://drorgluska.com

    Stefan Tauschek
    Stefan Tauschek ist Applikationsingenieur und technischer Berater bei Macnica.
    © Macnica

    Stefan Tauschek

    studierte Nachrichtentechnik an der Fachhochschule München und arbeitete nach seinem Abschluss über mehrere Jahre in der Entwicklung von Multimediakomponenten, Videoverarbeitung und Streaming-Media-Verfahren.

    Heute ist er Applikationsingenieur und technischer Berater bei Macnica und unterstützt Kunden bei der Realisierung von Projekten aus dem Bereich Bildverarbeitung, Netzwerke und Industrieautomatisierung.

    stefan.tauschek@macnica.com


    1. Vielseitiger Prozessor mit Funk-Transceiver
    2. Ein Programm, das niemals ausfällt
    3. Einfach handhabbare Entwicklungswerkzeuge
    4. ESP32 - Hard- und Software

    Lesen Sie mehr zum Thema


    Jetzt kostenfreie Newsletter bestellen!

    Weitere Artikel zu MACNICA GmbH

    Weitere Artikel zu Mikrocontroller

    Weitere Artikel zu Mikroprozessoren

    Weitere Artikel zu SBCs / CPU-Boards / CoM / SoM

    Weitere Artikel zu IoT / IIoT / Industrie 4.0

    Weitere Artikel zu Industrie-Computer / Embedded PC