17/03/2025
Taktsynchrones ProfiNET auf PC-Basis
(Sybera GmbH, www.sybera.de, [email protected])
Taktsynchrones ProfiNET auf PC-Basis – Geht das überhaupt ?
ProfiNET und Taktsynchronität war lange Zeit ausschließlich den MikroController-basierten SPS-Systemen
vorbehalten, z.B. einer Siemens-S7. Auf PC-Basis hingegen scheint dies ein Widerspruch in
sich zu sein – nicht so für Sybera.
Mit einem Standard-PC, und einem PTP-fähigen Ethernet-Chip (z.B. der Intel I-210) sollte es möglich
sein, taktsynchrones ProfiNET umzusetzen. Dieser Chip besitzt einen hochgenauen PTP-Timer der die
Grundlage für das IRT Protokoll liefert. Und genau das werden wir nun testen.
Ich habe hier einen kleinen Standard-PC mit solch einem Intel I210 Ethenet-Chip, den wir nun als
ProfiNET-Controller nutzen werden.
Für unsere Demonstration nutzen wir zwei Anriebe von Stöber.
Der IRT-fähige ProfiNET-Stack von Sybera realisiert das Protocol und die Ansteuerung der ProfiDrive
Antriebe.
Als erstes erstellen wir eine Konfiguration.
Dazu nutzen wir die Software PnioVerify von Sybera. Mit dieser Software können wir für den
taktsynchronen Betrieb alles konfigurieren:
Die Vergabe des Stationsnamen und der IP-Adresse
Die Selektion von Slot- und SubSlot-Elementen
Die Timing-Einstellungen
Der Topologie Aufbau
Und die Isochron-Mode Einstellungen für die Antriebe
Ich habe nun PnioVerify gestartet. Die GSDML-Datei für die Antriebe habe ich zuvor in das Verzeichnis
von PnioVerify kopiert. Jetzt kann ich den Bus nach Antrieben scannen. Für jeden Antrieb wähle ich die
entsprechende Type.
Im nächsten Schritt wähle ich die Module für die Antriebe, und lösche die nicht erforderlichen
SubModule aus der Liste. Nun konfiguriere ich die Verbindungen. Mit einem Rechts-Click auf das Modul
öffne ich den Dialog. Falls noch kein Stationsnamen oder IP-Adresse vergeben wurde, mache ich das
jetzt. Ebenso wähle ich die RT-Klasse-3, also IRT.
Für den IRT-Betrieb muss die Topologie festgelegt werden. In unserem Fall wird der Master-Port mit
dem 1. Port des 1. Antriebs verbunden. Der 2. Port des 1. Antriebs wird nun mit dem 1. Port des 2.
Antriebs verbunden.
Nachdem die Topologie festgelegt wurde, müssen die FrameSendOffsets der Module, also der
Zeitversatz für den taktsynchronen Betrieb, festgelegt werden. Dazu ist es notwendig, die Delay-Zeit des
Master-Ports zu ermitteln. Ebenso empfiehlt sich, das FrameGap, also der Abstand zwischen den
Frames, etwas zu erhöhen. Nun können die Offsets berechnet werden. Zuletzt müssen die
Einstellungen für die Taktsynchronität definiert werden. Dazu markiere ich das entsprechende Modul
und öffne den Dialog zum Einstellen der Submodule mit einem Rechts-Click.
Nun markiere ich in der Liste das SubModul und klicke auf den Button „Set IsoMode“.
Hier kann ich alle notwendigen Einstellungen für die Taktsynchronität festlegen. Die Randbedingungen
für den taktsynchronen Betrieb werden hierbei von der jeweiligen Applikation vorgegeben. Nun
speichere ich die Konfiguration ab.
Jetzt erstellen wir unsere Applikation. Dazu nutzen wir das VisualStudio von Microsoft. Der ProfiNETStack
von Sybera wird dazu als C-Bibliothek in neues Projekt eingebunden. In unserem Beispiel haben
wir mit dieser Bibliothek eine einfache Konsolen-Applikation erstellt. Der C++ Code besteht dabei aus
zwei Teilen:
Dem Windows Code für die Verwaltungsaufgaben und der visuellen Darstellung, und dem Echtzeit-
Code für den zyklischen Datenaustausch und die Steuerung der Antriebe. Schauen wir uns zunächst
den Windows Teil etwas genauer an.
Als erstes wird ein globaler Speicher für die Verwaltung der Antriebsvariablen erstellt. Dieser Speicher
kann sowohl innerhalb der Echtzeit, als auch im Windows Teil genutzt werden. Dabei werden die
Antriebselemente in so genannten DRIVESET Strukturen verwaltet.
Nun wird der Ethernet-Modus für den IRT-Betrieb angepasst. In der Parameter-Struktur für den Stack-
Aufbau wird der Pfad auf die zuvor erstellte Konfigurationsdatei angegeben. Nun kann der ProfiNET
Stack aktiviert werden.
Nach erfolgreicher Ausführung werden die Parameter für den Betrieb des ProfiNET-Stacks
zurückgegeben. Diese umfassen unter anderem die Verwaltungsliste der vorgegebenen Stationen für
die weitere Programmierung.
Nun kann optional für jede Station der Stationsname und die IP-Adresse vergeben werden, sofern dies
nicht schon bei der Konfiguration erfolgt ist.
Jede einzelne Station kann nun für den ProfiNET-Betrieb aktiviert werden. Danach sind wir im
zyklischen Betrieb und können die ProfiDrive-Parameter für die Antriebe einstellen. Jetzt können die
Antriebe aktiviert werden und der funktionale Betrieb beginnt.
Im Echtzeit Teil der Applikation sind einige Strukturen vordefiniert. Die Applikationstask umfasst hierbei
das SignOfLife, welches für den taktsynchronen Betrieb ausgeführt werden muss. Ebenso sind die
Strukturen für den zyklischen Datenaustausch vorgegeben.
Für den funktionalen Betrieb ist für uns die Funktion DoLogic interessant, da wir hier auf die Nutzdaten
der Antriebe Zugriff haben. Zu beachten ist, dass die Nutzdaten im BigEndian Mode übertragen werden.
Wir ermitteln uns also die Pointer auf die Eingangs- und Ausgangs-Variablen und konvertieren diese in
das Little-Endian Format für unser DriveSet.
Wir wollen nun die Antriebe mit einer vorgegebenen Drehzahl starten. Der Synchronbetrieb richtet sich
hierbei nach dem Telegramm 5 der ProfiDrive Spezifikation und besteht unter anderem aus den
Variablen Solldrehzahl, Fehlertoleranz und Verstärkungsfaktor. Schauen wir uns das nun in der Praxis
an.
Zuletzt wollen wir den Hochlauf der Antriebe mit der Software Wireshark analysieren. Dazu nutze ich
den NetAnalyzer der Fa. Hilscher, mit dem die Ethernet-Kommunikation ohne Zeitverschiebung auf
Nanosekunden-Basis aufgezeichnet werden kann.
Ich starte nun die Applikation. Beobachten wird dabei den Antrieb und die NetAnalyzer Software.
Nachdem genügend Frames aufgezeichnet wurden, beende ich die Aufnahme und konvertiere diese in
das Wireshark-Format.
Nun öffne ich diese Datei mit Wireshark und sehe gleich im Anfang-der-Aufzeichnung das DCP und
ARP-Protokoll für das Auffinden des Stationsnamens und der IP-Adresse. Danach kann ich das
Einmessen der Delay-Zeiten verfolgen, das über das PTCP-Protokoll erfolgt. Nun beginnt das
azyklische ProfiNET Protokoll, mit den Services CONNECT, WRITE und CONTROL.
Um einen besseren Überblick zu erhalten, setzte ich einen Filter, so dass nur das azyklische ProfiNET
Protokoll angezeigt wird. Hier sehe ich nun alle erforderlichen ProfiNET-Services, einschließlich der
ProfiDrive-Parametrierung. Ich entferne den Filter wieder und sehe mir nun die zyklische Kommunikation
etwas genauer an.
Ein Zyklus besteht dabei in unserem Fall aus 4 ProfiNET-Frames, zwei für den Master Output und zwei
für den Master Input. Ich markiere den Beginn eines Zyklus und setzte eine Zeitreferenz. Nun kann ich
den Abstand zum nächsten Zyklus messen und dieser beträgt mit einem leichten Jitter ca. 1
Millesekunde.
Gerne beantworten wir Ihre Fragen in einem persönlichen Gespräch.