Skip to main content

CODESYS Virtual Safe Time Provider

Der CODESYS Virtual Safe Time Provider ist eine Standard-Schnittstelle, über die der Anwender eine zweite und externe Zeitbasis an das CODESYS Virtual Safe Control übergeben kann.

Die Implementierung erfolgt als Client, der auf einem anderen System mit einer unabhängigen Zeitbasis laufen muss.

Installation

Die Installation des CODESYS Virtual Safe Time Provider SL erfolgt über der CODESYS Control SL Deploy Tool. Für weitere Informationen siehe Szenario "The Safe House": vPLC + vSafe + ProfiSafe + Time Provider + Lizenzserver.

Wichtig

Der CODESYS Virtual Safe Time Provider SL darf nicht auf dem selben Host wie das CODESYS Virtual Safe Control SL laufen.

Funktionsweise

Der Time Provider dient als zweite Zeitquelle für das CODESYS Virtual Safe Control SL und schickt einen Zeitstempel in einem definierten Intervall als Nachricht über das Netzwerk.

Diese Nachricht kann dann von verschiedenen Empfängern (CODESYS Virtual Safe Controll SL, redundanter Time Provider) empfangen und ausgewertet werden.

Das CODESYS Virtual Safe Control SL führt die Applikation mit einer definierten Zykluszeit aus, in der mindestens ein Zeitstempel eines externen Zeitgebers ankommen muss.

Wichtig

Das Sendeintervall des Time Provider sollte kleiner als die halbe Zykluszeit der Applikation konfiguriert werden.

_rtsl_img_time_provider1.png

Um die Stabilität aufgrund von Netzwerk- oder Schedulingproblemen des Time Provider und damit der CODESYS Virtual Safe Control SL zu erhöhen, kann der Time Provider redundant ausgeführt werden.

Hierbei wird zwischen zwei Arten unterschieden.

Time Provider-Redundanz

Bei der Time Provider-Redundanz laufen zwei Time Provider-Instanzen auf zwei voneinander unabhängigen Hosts. Eine Instanz agiert dabei als aktiver Sender, die andere Instanz überwacht passiv das Senden der Zeitstempel.

Sobald das Senden des Zeitstempels der aktiven Instanz verzögert wird, oder ausbleibt, übernimmt die passive Instanz direkt das Senden mit dem letzten bekannten Offset der aktiven Instanz. Somit kommt es zu keinen Ausfällen der CODESYS Virtual Safe Control SL. Dabei ist es wichtig, dass beide Instanzen auf dem gleichen Netzwerk laufen. Nur dann kann die passive Instanz die gesendeten Nachrichten der aktiven Instanz überwachen.

_rtsl_img_time_provider2.png

Wichtig

Wenn ein aktiver Time Provider in einem Netzwerk eine andere aktive Instanz auf dem Bus bemerkt, bleibt die Instanz mit der höchstprioren IP-Addresse aktiv und alle anderen Instanzen gehen in den passiven Modus.

Netzwerk-Redundanz

Bei der Netzwerk-Redundanz verwenden die Time Provider-Instanzen jeweils ein eigenes Netzwerk im Gegensatz zu der Time Provider-Redundanz. Dennoch ist es notwendig, dass die passive Time Provider-Instanz die Nachrichten der aktiven Instanz empfängt, um bei einer Verzögerung oder Ausbleiben das Senden zu übernehmen.

_rtsl_img_time_provider3.png

Wichtig

Die Netzwerk-Redundanz ist aktuell noch nicht implementiert.

Konfiguration

Option

Beschreibung

Standardwert

-a/--address

Target-IP-Adresse

127.0.0.1 (localhost)

-p/--port

Target-Port

60000

-c/--cycletime

Sendeintervall der Time Provider-Zeitstempel in [ms]

3

-P/--priority

SCHED_FIFO Scheduling-Priorität

55

-C/--cpu_pin

CPU-Pinning

Alle Threads werden auf eine definierte CPU gepinnt, angefangen mit dem Wert 0.

0

-r/--redundancy

Redundanzmodus

Deaktiviert

-s/--syslog

Protokollierung des syslog nach /dev/log

Deaktiviert

--stat_print_time

Diagnoseintervall in [s]

60

Wichtig

Der Standardwert der IP-Adresse ist 127.0.0.1 (localhost). Sie sollten diesen Wert nur für die Inbetriebnahme und Test verwenden. Der Time Provider liefert eine unabhängige Zeitbasis und darf somit nicht lokal betrieben werden. Wenn Sie den Standardwert verwenden, gibt der Time Provider eine Warnung aus.

Diagnose

Die Fehler, die bei der Auswertung der Zeitstempel auf der Seite der CODESYS Virtual Safe Control SL auftreten können:

  • Der konfigurierte Port ist bereits in Benutzung.

    Wenn der konfigurierte Port bereits verwendet wird und nicht geöffnet werden kann, wird folgende Meldung ausgegeben:

    Could not open port <Port number> it is already in use!

  • Das Senden des Zeitstempels in der aktiven Instanz wird verzögert oder findet nicht statt.

    Wenn ein Zeitstempel des aktiven Senders verzögert wird oder nicht gesendet wird und eine passive Time Provider-Instanz das Senden übernimmt, wird folgende Diagnosemeldung ausgegeben:

    Started sending: take over from higher priority time provider <priority>

    Wenn die höherpriore Time Provider-Instanz wieder verfügbar ist und das Senden von der ehemaligen passiven Instanz übernimmt, wird folgende Meldung ausgegeben:

    Stopped sending: higher priority time provider is active: <priority>

  • Zyklische Statistiken zu den Zeitstempeln (aktive Instanz/Sender)

    Die Statistiken zu den versendeten Zeitstempeln werden im konfigurierten Intervall (Option –stat_print_time) in der Auflösung Mikrosekunden [us] ausgegeben. Dabei wird das minimale sowie das maximale Sendeintervall ausgegeben, sowie eine Durchschnittswert über den konfigurierten Zeitraum:

    Statistics: min: <minimum sending interval>, max: <maximum sending interval>, avg: <average sending interval> - send time interval

  • Zyklische Statistiken zu den Zeitstempeln (passive Instanz/Receiver)

    Da die passive Instanz die versendeten Zeitstempel der aktiven Instanz empfängt, können die empfangenen Informationen zu Diagnosezwecke ausgewertet werden.

    Die Statistiken werden im konfigurierten Intervall (Option –stat_print_time) in der Auflösung Mikrosekunden [us], sowie prozentual [%] ausgegeben. Dabei wird das minimale sowie das maximale Intervall ausgegeben, sowie eine Durchschnittswert über den konfigurierten Zeitraum.

    _rtsl_img_time_provider4.png

    Statistics: min: <minimum deviation>, max: <maximum deviation>, avg: <average deviation> - remote to sample time deviation

    Statistics: min: <minimum sample intervall>, max: <maximum sample intervall>, avg: <average sample intervall> - sample time interval

    Statistics: min: <minimun remote intervall>, max: <maximum remote intervall>, avg: <average remote intervall> - remote time interval

  • Zähler für verlorene Nachrichten

    Wenn ein Zeitstempel von der aktiven Instanz nicht verschickt wird, wird ein Zähler erhöht und ausgegeben:

    Statistics: lost messages: <number of lost messages>