Beispielprogramm 2
Lesen und Interpretation von Zeittelegrammen
In diesem Beispiel wird ein Weg aufgezeigt, wie verschiedenste serielle Zeitprotokolle in der SPS aufbereitet und interpretiert werden können. Dazu werden IEC61131-PLC-Bausteine vorgestellt, die den in der PLC eintreffenden Bitstrom interpretieren und ggf. die Zeit / Ortsinformationen extrahieren. Mit dieser Information können z.B. Steuerungen synchronisiert oder Bewegungen aufgezeichnet werden.
In diesem Beispiel wird davon ausgegangen, dass die Daten über ein 22-Byte-Interface von einer Beckhoff EL / KL60xx seriellen Datenaustauschklemme geliefert werden.
Hintergrundinformation
Nicht nur im maritimen Bereich werden Zeit- und Ortsinformationen über serielle Busse transportiert: meist existiert eine Quelle, die über RS232 / RS485, USB oder Ethernet ihre Informationen an untergeordnete Listener/Listener zyklisch oder nach Trigger verteilt.
Weltweit existieren eine sehr große Anzahl von Telegrammformaten zur Verteilung von Zeit- und Ortsinformationen, auch "Sentences" genannt. Solch ein Telegramm besteht aus n Byte Daten und zeichnet sich aus durch:
- Start- und Endezeichen STX, ETX zur Telegramm-Erkennung, ggf. auch mehrere Endezeichen
- eine definierte und feste Länge
- einen definierten Aufbau
- ggf. Checksumme
- ggf. Typbezeichnungen im Sentence
Verschiedenste Organisationen und Firmen haben für spezifische Einsatzzwecke offene oder proprietäre Formate entwickelt. Deshalb werden in diesem Beispiel 2 Beispielimplementationen vorgestellt, die kundenseitig leicht für spezifische andere Protokolle geändert werden können. Die Telegrammformate im Beispiel sind Meinberg Standard und NMEA0183 v2.3 Typ RMC.
Informationsquellen
Als Datensender im seriellen Bereich werden z. B. GPS- oder Funkuhrengateways verwendet. Diese Geräte empfangen das jeweilige Zeitsignal (GPS über Satellit oder Funkuhr über Langwelle) und setzen es auf die serielle drahtgebundene Übertragung um, z.B. RS232 mit 8N1. Dabei hält das Gateway oft auch eine lokale Taktquelle vor, um bei kurzzeitigem Ausfall des Referenzsignals (GPS, Funksender) über eine gewisse Zeit weiter verlässliche Zeitinformationen verteilen zu können. In Mitteleuropa kann der deutsche DCF77-Sender verwendet werden.
Dabei können aus dem Referenzsignal ggf. noch weitere Informationen verwendet werden:
- GPS: Standortinformationen (W/N und Höhe), anstehende Zeitumstellung DCF77: Wetterinformationen, Großschadenslagen
- DCF77: Wetterinformationen, Großschadenslagen
Synchronisierung untergeordneter Time-Slaves
Im Allgemeinen sollen untergeordnete Slaves dem Zeitgateway nachgeregelt werden, d.h. sie sollen sich in ihrer Zeit aufsynchronisieren. Dazu sind nötig:
- der Offset: die absolute Abweichung der eigenen Uhr zur Referenzzeit des Gateways – diese Information kann z.B. azyklisch seriell übertragen werden wenn bekannt ist, wann die Zeitinformation als gültig anzusehen ist. Der serielle Transportweg aus deinem Beispiel ermöglicht die Gewinnung dieser Offset-Information.
- das Frequenzverhältnis: ein hochgenau zyklisches Signal vom Gateway zu den Slaves erlaubt das Ausregeln von Driftvorgängen und gibt ggf. auch den Zeitpunkt an, wann der obige absolute Offset gültig ist. Beispiel für ein solches Signal ist das weitverbreitete PPS (Pulse per Second).
Wird das serielle Telegramm vom Gateway zyklisch auf den Bus gelegt, kann der Zeitpunkt des ersten Bits oft als PPS-Signal interpretiert werden. In den Bausteinen dieses Beispiels geht diese Information verloren; es wird nur die absolute Zeitinformation ausgewertet.
Zeitformate
Weit verbreitet sind Zeittelegramme nach dem NMEA0183-Standard. Dabei ist zu beachten:
- Innerhalb der NMEA0183-Standards gibt es aktuell (2009) 8 Versionen von NMEA1083 1.5 bis 4.00 – der Aufbau von Telegrammen kann sich zwischen den Versionen geändert haben
- Allein in NMEA1083 v2.30 sind über 70 verschiedene Formate definiert, dazu können Gerätehersteller eigene Formate erstellen
- Das Telegramm wird Sentence genannt
- Eine TalkerID (2 Zeichen) und eine TypID (3 Zeichen) am Beginn definieren den verwendeten Sentence-Typ
- Es wird eine Checksumme über das Telegramm berechnet
- Informationen sind unter www.nmea.org oder anderweitig online einsichtlich.
Des weiteren existieren viele proprietäre Formate wie Meinberg Standard, Siemens SINEC H1, SAT 1703 oder militärische wie IRIG-Codes (USA).
Anwendung des Beispielprogramms
Im PLC-Projekt sind 2 FunctionBlocks (FB) enthalten, die exklusiv mit einer EL/KL600x verlinkt werden müssen. Dann holen Sie von der Klemme die empfangenen Bytes ab und interpretieren nach Möglichkeit den Inhalt. Die FB decken ab:
- Meinberg Standard
- NMEA0183 v2.3 Typ RMC
Für andere Zeitformate lassen sich danach eigene Interpretations-FB anhand eines bekannten Telegrammaufbaus erstellen, wenden Sie sich dazu an Ihren Gerätehersteller.
Im Beispiel verwendete Hardware: EK1100 und EL6001 (auch EL600x, KL600x)
Der FB der getestet werden soll, muss mit seinen Prozessdaten im Systemmanager mit der Klemme verlinkt werden (22-Byte-Prozessabbild und Control/Status-Word).
Im Beispiel ist der NMEA-Baustein verlinkt. Die Baudrate der Klemme muss auf Ihren Sender eingestellt werden.
Referenzen:
- www.beuth.de, IEC61162: angelehnt an NMEA2000
- http://gpsinformation.net privat, über NMEA, viele Formate: http://www.gpsinformation.org/dale/nmea.htm
http://www.nmea.de/nmea0183datensaetze.html - http://www.meinberg.de/german/info/irig.htm, IRIG-Codes