Für die Implementierung der zyklischen IO-Daten sollte das Grundprinzip eines Zero-Copy-Stacks gelten. Dabei wird bei der Verarbeitung von Daten weitgehend auf das Kopieren von Datenpuffern verzichtet. Erhält der Stack IO-Daten, die zu versenden sind, so werden diese direkt in einen statischen Puffer übertragen, der das zu versendende Frame enthält. Damit lässt sich der Puffer für Ausgangsdaten auf 1500 Byte reduzieren.
Auch IO-Daten, die ein IO-Device empfängt, kopiert der Stack in einen Empfangspuffer. Bei der weiteren Verarbeitung der Daten wird lediglich per Pointer auf den Puffer zugegriffen; sonstige Kopieraktionen finden nicht statt. Eine Ausnahme stellt die Verarbeitung von RCP-Daten dar, wie dies bereis beschrieben wurde. Somit lässt sich auch hier der Empfangspuffer auf 1500 Byte reduzieren. Last but not least ist ein modularer Aufbau des Stacks zu wählen. Das heißt: Alle nicht zwingend von der IEC-Spezifikation geforderten Elemente sollten per Designtool beziehungsweise Compiler-Optionen deaktivierbar sein.
Zusammenfassend lässt sich festhalten: Die Profinet-Spezifikation bietet bei sorgfältiger Betrachtung viele Optimierungsmöglichkeiten, von denen in diesem Beitrag nur einige beschrieben wurden. Diese stützen sich auf Erkenntnisse, die die Firma Port während der Entwicklung eines eigenen Profinet-IO-Stacks speziell für kleine Embedded-Systeme gesammelt hat. Zur Entwicklungsunterstützung hat man sich hier für die Integration eines Design-Tools auf Eclipse-Basis entschieden, welches die komfortable Auswahl benötigter Features sowie die Generierung entsprechender Funktionsrümpfe für den Profinet-Stack erlaubt. Außerdem wird dabei automatisch eine entsprechende Geräte-Datei (GSD) generiert und mit den jeweiligen Änderungen an der Applikation synchronisiert.
Autor: Marcus Tangermann ist Geschäftsführer Technologie der Firma Port, Halle/Saale.