MENU
Contact Us




Projekt

OPC UA Stack Portierung auf PIC32

Portierung des Matrikon Flex OPC UA SDK auf PIC32MZ mit und ohne FreeRTOS



CPU

PIC32(MIPS)

Hersteller

Microchip

OS

NoOS
FreeRTOS

Kompetenzen

OPC UA
Linker files
Microchip Harmony

Projektgröße:

Schwierigkeit:




Anfrage/Problem:

Der Kunde wollte den Matrikon Flex OPC UA Server auf einem PIC32MZ Mikrocontroller mit FreeRTOS betreiben. Das Matrikon Flex OPC UA SDK unterstützt FreeRTOS jedoch nicht nativ und es ist keine Version für den PIC32MZ-Mikrocontroller verfügbar. Das Ziel dieses Projekts war es, den auf dem Matrikon Flex OPC UA SDK basierenden OPC UA Server auf der PIC32MZ Custom Hardware zum Laufen zu bringen. Eine weitere Komplikation, die es zu bewältigen galt, war die Anpassung des Matrikon Flex OPC UA Servers zusammen mit der Kundenapplikation mit den begrenzten Flash- und RAM-Ressourcen auf dem Gerät. Dies erforderte auch eine weitere Optimierung des Matrikon SDKs, damit es zur Anwendung passt.

Lösungsansatz:

Das Matrikon Flex OPC UA SDK ist mit Standard-C++ implementiert und benötigt nur C++ 11-Unterstützung zusammen mit einigen plattformspezifischen Netzwerk-, Dateisystem- und Timer-APIs. Da der Stack bereits in plattformspezifische und portable Teile aufgeteilt ist, waren die durchzuführenden Änderungen leicht zu identifizieren. Um den Matrikon Flex zu portieren, haben wir zunächst einen Bare-Metal-Prototypen vorbereitet, um den Matrikon Flex OPC UA Server auf dem PIC32MZ ohne jegliche Sicherheit zu betreiben. Dieser Prototyp wurde verwendet, um sowohl den Platzbedarf als auch die Leistung des OPC-UA-Servers zu messen. Anfänglich war der Footprint des OPC UA Servers zu groß und erforderte zusätzliche Optimierungen, um ihn weiter zu reduzieren. Wir identifizierten zusätzliche Konfigurationsänderungen und andere Code-Optimierungstechniken, die die Verwendung eines kleineren Nodesets und die Verwendung der für den PIC32MZ spezifischen Compiler-Optimierungsflags beinhalteten. Wir verwendeten auch das Linux-Kernel-Utility ksize (https://github.com/intel/luv-yocto/blob/master/scripts/tiny/ksize.py) in modifizierter Form, um die generierten Objekte zu analysieren und die Bereiche zu identifizieren, die großen Code produzierten. Solche Codeabschnitte wurden dann weiter analysiert, um Abschnitte zu identifizieren, die wir weiter optimieren konnten.

Architektur:

Ergebnisse:

Der Matrikon Flex OPC UA Stack wurde auf die PIC32-Plattform für NoOS portiert und wir konnten den aktiven OPC UA Server mit der für die Anwendung akzeptablen FLASH- und RAM-Größe innerhalb des geschätzten Zeit- und Arbeitsaufwandes erreichen.

Ressourcen: