Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Eingebettet

Open-Sourcing für eine präzisere Zeitanwendung

Facebook-Ingenieure haben eine offene Compute-Time-Appliance entwickelt und als Open Source bereitgestellt, eine wichtige Komponente der modernen Timing-Infrastruktur. Um dies zu ermöglichen, haben wir die Zeitkarte entwickelt – eine PCI-Express-Karte (PCIe), die fast jeden Standardserver in eine Zeitanwendung verwandeln kann. Mit Hilfe der OCP-Community haben wir das Open Compute Time Appliance Project gegründet und jeden Aspekt des Open Time Servers als Open Source bereitgestellt. Dieser Artikel beschreibt die Entwicklung der Zeitkarte.

Im März 2020 haben wir bekannt gegeben, dass wir dabei sind, die Server in unseren Rechenzentren (zusammen mit unseren Consumer-Produkten) auf einen neuen Zeiterfassungsdienst basierend auf dem Network Time Protocol (NTP) umzustellen. Der neue Dienst, der intern entwickelt und später als Open Source bereitgestellt wurde, war skalierbarer und verbesserte die Genauigkeit der Zeitmessung in der Facebook-Infrastruktur von 10 Millisekunden auf 100 Mikrosekunden. Eine genauere Zeiterfassung ermöglicht ein fortschrittlicheres Infrastrukturmanagement in unseren Rechenzentren sowie eine schnellere Leistung verteilter Datenbanken.

Die neue NTP-basierte Zeitarchitektur verwendet ein Stratum 1 – eine wichtige Komponente, die direkt mit einer maßgeblichen Zeitquelle wie einem Global Navigation Satellite System (GNSS) oder einer Cäsiumuhr verbunden ist, wie unten gezeigt:

Viele Unternehmen verlassen sich auf öffentliche NTP-Pools wie time.facebook.com als ihr Stratum 1. Dieser Ansatz hat jedoch auch Nachteile. Diese Pools erhöhen die Abhängigkeit von der Internetverbindung und können die allgemeine Sicherheit und Zuverlässigkeit des Systems beeinträchtigen. Wenn beispielsweise die Konnektivität unterbrochen wird oder ein externer Dienst ausfällt, kann dies zu Ausfällen oder Zeitverschiebungen für das abhängige System führen.

Um diese Abhängigkeiten zu beseitigen, haben wir eine neue dedizierte Hardware namens Time Appliance entwickelt, die aus einem GNSS-Empfänger und einer miniaturisierten Atomuhr (MAC) besteht. Benutzer von Zeitgeräten können die genaue Zeit auch bei einem Verlust der GNSS-Konnektivität anzeigen. Beim Bau unserer Zeit-Appliance haben wir auch eine Zeit-Karte erfunden, eine PCIe-Karte, die jeden handelsüblichen Server in eine Zeit-Appliance verwandeln kann.

Warum braucht man ein neues Zeitmessgerät?

Haushaltsgeräte haben ihre eigenen Vorteile. Sie funktionieren sofort nach dem Auspacken und da viele dieser Geräte seit Jahrzehnten auf dem Markt sind, sind sie kampferprobt und im Allgemeinen stabil genug, um lange Zeit ohne Aufsicht zu arbeiten.

Diese Lösungen sind jedoch auch mit Kompromissen verbunden:

Bisher mussten Unternehmen diese Kompromisse akzeptieren und innerhalb der oben beschriebenen Einschränkungen arbeiten. Wir haben entschieden, dass es an der Zeit ist, etwas anderes auszuprobieren, also haben wir uns genau angesehen, was es braucht, um eine neue Zeit-Appliance zu entwickeln – insbesondere eine, die die x86-Architektur verwendet.

Prototyping der Time Appliance

Hier ist ein Blockdiagramm dessen, was wir uns vorgestellt haben:

Alles beginnt mit einem GNSS-Empfänger, der die Tageszeit (ToD) sowie den einen Impuls pro Sekunde (PPS) bereitstellt. Wenn der Empfänger von einem hochstabilen Oszillator (z. B. einer Atomuhr oder einem ofengesteuerten Quarzoszillator) unterstützt wird, kann er eine Nanosekunden-genaue Zeit liefern. Die Zeit wird über das Netzwerk über eine handelsübliche Netzwerkkarte geliefert, die PPS in/out und Hardware-Zeitstempelung von Paketen unterstützt, wie zum Beispiel NVIDIA Mellanox ConnectX-6 Dx, das in unserer ersten Appliance verwendet wird.

Die Ausgabe des GPSDO wurde in die EXT-Zeitstempelung der ConnectX-6 Dx-Netzwerkkarte eingespeist. Darüber hinaus stellt der GNSS-Empfänger den ToD über eine serielle Schnittstelle und ein beliebtes GPS-Berichtsprotokoll namens NMEA bereit. Mit dem ts2phc-Tool konnten wir die physische Hardwareuhr der NIC auf einige zehn Nanosekunden synchronisieren, wie unten gezeigt:

Unser Prototyp hat uns überzeugt, dass der Bau eines solchen Geräts möglich ist. Es gab jedoch viel Raum für Verbesserungen.

Um die Zuverlässigkeit des Systems zu erhöhen, haben wir es in zwei große Teile unterteilt:Nutzlast und Lieferung. Die Nutzlast ist die Präzisionszeit, die im Wesentlichen ein Interpolationssystem ist, das von einem lokalen Oszillator angetrieben wird, um Zeitmessungen in Nanosekunden zwischen aufeinanderfolgenden PPS-Signalen zu erzeugen, die vom GNSS-Empfänger empfangen werden. Wir haben überlegt, den GNSS-Empfänger, den hochstabilen Lokaloszillator und die notwendige Verarbeitungslogik in einen PCIe-Formfaktor zu packen, und wir nannten es die Zeitkarte (siehe unten).

Hier ist die Skizze der Zeitkarte, die wir uns ursprünglich auf einer Serviette vorgestellt hatten:

Wir haben einen Onboard-MAC, einen Multiband-GNSS-Empfänger und einen FPGA verwendet, um die Zeitmaschine zu implementieren. Die Aufgabe der Zeitmaschine besteht darin, in Nanosekunden die erforderliche Granularität zwischen aufeinanderfolgenden PPS-Signalen zu interpolieren. Der GNSS-Empfänger liefert zusätzlich zu einem 1 PPS-Signal auch ein ToD. Bei einem Ausfall des GNSS-Empfangs verlässt sich die Zeitmaschine auf die fortlaufende Synchronisierung der Atomuhr basierend auf einem durchschnittlichen Ensemble der aufeinanderfolgenden PPS-Pulse.

Die Zeitmaschine besteht aus einer Reihe von Verarbeitungsblöcken, die auf dem FPGA der Zeitkarte implementiert sind. Diese Verarbeitungsblöcke umfassen verschiedene Filter-, Synchronisations-, Fehlerprüfungs-, Zeitstempel- und PCIe-bezogene Subsysteme, damit die Zeitkarte als Systemperipherie fungieren kann, die dem offenen Zeitserver präzise Zeit liefert.

Es sollte beachtet werden, dass die Genauigkeit eines GNSS-Empfängers innerhalb von zehn Nanosekunden liegt, während die erforderliche fortlaufende Synchronisation (Kalibrierung) des MAC innerhalb von 10 Pikosekunden liegt (1000-mal genauer).

Das klingt zunächst unmöglich. Das GNSS-System bietet jedoch eine Zeitmessung basierend auf einer kontinuierlichen Kommunikation mit der Standardzeit. Diese Fähigkeit ermöglicht es, die GNSS-Onboard-Uhr ständig mit einer Zeitquelle zu synchronisieren, die für ihre Konstellation bereitgestellt wird, sodass praktisch keine langfristigen Driftfehler auftreten. Daher wird die Kalibrierung des MAC über einen Vergleich eines MAC-gesteuerten Zählers und des GNSS-gelieferten PPS-Pulses durchgeführt. Wenn wir uns mehr Zeit für den Vergleich nehmen, können wir eine höhere Präzision der Kalibrierung für den MAC erreichen. Dies geschieht natürlich unter der Überlegung, dass der MAC ein lineares zeitinvariantes System ist.

In diesem Blockschaltbild sehen Sie ein 10-MHz-Signal der Rubidium-Uhr, das in die Zeitmaschine eintritt. Dieses Taktsignal kann durch einen 10 MHz SMA-Eingang ersetzt werden. Das Taktsignal wird in ein digitales Taktmodul und eine digitale PLL eingespeist (12,5x ergibt sich aus 25 aufwärts und geteilt durch 2), was zu einer Frequenz von 125 MHz führt. Die 125 MHz (8-Nanosekunden-Perioden) werden in die ToD-Einheit eingespeist.

Die ToD-Einheit ordnet die 8-Nanosekunden-Inkremente in digitalen Werten von 0b000001 zu, da das LSB (niedrigstwertiges Bit) 250 Pikosekunden zugeordnet ist (gesteuert von 32 Bits mit einer Genauigkeit im Subsekundenbereich auf dem gPTP).

Andererseits wird das vom GNSS gefilterte PPS-Signal verwendet, um das Ergebnis der Inkremente zu erfassen. Wenn die 125 MHz genau sind, sollten die akkumulierten Inkremente genau 1-Sekunden-Intervalle ergeben. In Wirklichkeit gibt es jedoch immer eine Diskrepanz zwischen dem akkumulierten Wert und einem theoretischen 1-Sekunden-Intervall.


Die Werte können über einen internen PI-Regelkreis (proportional und integral) angepasst werden. Die Anpassung kann entweder durch Ändern des 0b000001-Werts in Schritten von 250 Pikosekunden oder durch Feinabstimmung des 12,5-fachen PPL erfolgen. Darüber hinaus können durch die Steuerung des Rubidium-Oszillators weitere (feiner abgestimmte) Einstellungen vorgenommen werden.

Je länger ein GNSS nicht verfügbar ist, desto mehr Zeitgenauigkeit geht verloren. Die Rate der Verschlechterung der Zeitgenauigkeit wird als Holdover bezeichnet. Normalerweise wird Holdover als ein Zeitrahmen für die Genauigkeit und wie lange es dauert, ihn zu überschreiten, beschrieben. Der Holdover eines MAC liegt beispielsweise innerhalb von 1 Mikrosekunde für 24 Stunden. Dies bedeutet, dass die Zeitgenauigkeit nach 24 Stunden nicht deterministisch, aber innerhalb von 1 Mikrosekunde genau ist.

Als alternativen Ansatz setzen wir auf die neue Generation von Chip-Scale und miniaturisierten Atomuhren mit ihrer Fähigkeit, PPS-Inputs zu empfangen. Dadurch kann die Zeitmaschine der Zeitkarte die ultrapräzise Syntonisierung des hochstabilen Oszillators an die Komponente weitergeben, anstatt digitale Ressourcen zu verwenden, um das Ziel zu erreichen.

Generell gilt:Je genauer die Abstimmung, desto besser die erreichbare Halteleistung. In Bezug auf die Zustellung stellt die Verwendung einer NIC mit präzisem Timing sicher, dass Netzwerkpakete sehr genaue Zeitstempel erhalten, was für die Genauigkeit der Zeit entscheidend ist, da sie mit anderen Servern im Netzwerk geteilt wird. Eine solche NIC kann auch ein PPS-Signal direkt von der Zeitkarte empfangen.

Nach der Konzeptualisierung der Idee und verschiedenen Implementierungsiterationen konnten wir einen Prototypen zusammenstellen.

Die Zeitmaschine in Aktion

Die Zeitkarte ermöglicht es, jede x86-Maschine mit einer NIC, die Hardware-Zeitstempelung ermöglicht, in eine Zeitanwendung zu verwandeln. Dieses System ist unabhängig davon, ob es für NTP, PTP, SyncE oder ein anderes Zeitsynchronisierungsprotokoll läuft, da die Genauigkeit und Stabilität der Zeitkarte für fast jedes System ausreichend ist.

Das Schöne an der Verwendung von PCIe-Karten ist, dass das Setup sogar auf einem Heim-PC aufgebaut werden kann, solange genügend PCIe-Steckplätze verfügbar sind.

Der nächste Schritt wäre die Installation von Linux. Der Zeitkartentreiber ist im Linux-Kernel 5.15 oder höher enthalten. Oder es kann aus dem OCP GitHub-Repository auf Kernel 5.12 oder höher erstellt werden.

Der Treiber macht mehrere Geräte verfügbar, einschließlich der PHC-Uhr, GNSS, PPS und der seriellen Atomuhr:

$ ls -l /sys/class/timecard/ocp0/

lrwxrwxrwx. 1 root 0 3. August 19:49 Gerät -> ../../../0000:04:00.0/

-r–r–r–. 1 Stamm 4096 3. August 19:49 gnss_sync

lrwxrwxrwx. 1 Wurzel 0 3. August 19:49 i2c -> ../../xiic-i2c.1024/i2c-2/

lrwxrwxrwx. 1 root 0 3. August 19:49 pps -> ../../../../../virtual/pps/pps1/

lrwxrwxrwx. 1 root 0 3. August 19:49 ptp -> ../../ptp/ptp2/

lrwxrwxrwx. 1 root 0 3. August 19:49 ttyGNSS -> ../../tty/ttyS7/

lrwxrwxrwx. 1 root 0 3. August 19:49 ttyMAC -> ../../tty/ttyS8/

Der Treiber ermöglicht es uns auch, die Zeitkarte, den GNSS-Empfänger und den Atomuhrstatus zu überwachen und einen neuen FPGA-Bitstream mit der Devlink-Cli zu flashen.

Es bleibt nur noch, den NTP- und/oder PTP-Server so zu konfigurieren, dass die Zeitkarte als Referenzuhr verwendet wird. Um chrony zu konfigurieren, muss man einfach das refclock-Attribut angeben:

$ grep refclock /etc/chrony.conf
refclock PHC /dev/ptp2 tai poll 0 vertrauen

Und genießen Sie einen sehr präzisen und stabilen NTP Stratum 1 Server:

$ Chronische Quellen
210 Anzahl der Quellen =1
MS Name/IP-Adresse Stratum Poll Reach LastRx Letzte Probe
=============================================================================
#* PHC0 0 0 377 1 +4ns[ +4ns] +/- 36ns

Für den PTP-Server (zB ptp4u) muss zuerst der Zeitkarten-PHC mit dem NIC-PHC synchronisiert werden. Dies kann ganz einfach mit dem phc2sys-Tool erfolgen, das die Uhrwerte mit der hohen Präzision synchronisiert, die normalerweise im einstelligen Nanosekundenbereich liegt:

$ phc2sys -s /dev/ptp2 -c eth0 -O 0 -m

Für eine höhere Genauigkeit wird empfohlen, die Zeitkarte und die NIC mit derselben CPU-PCIe-Lane zu verbinden. Für eine höhere Genauigkeit kann man den PPS-Ausgang der Zeitkarte mit dem PPS-Eingang der NIC verbinden.

Um die Präzision zu validieren und zu bestätigen, haben wir ein externes Validierungsgerät namens Calnex Sentinel verwendet, das über mehrere Switches und eine unabhängige GNSS-Antenne mit demselben Netzwerk verbunden ist. Es kann PPS-Tests sowie NTP- und/oder PTP-Protokolle durchführen:

Die blaue Linie repräsentiert die NTP-Messergebnisse. Die Genauigkeit bleibt während des 48-Stunden-Messintervalls innerhalb von ±40 Mikrosekunden.

Die orangefarbene Linie repräsentiert die PTP-Messergebnisse. Der Offset beträgt praktisch 0 im Nanosekundenbereich.

Wenn wir 1 PPS zwischen der Zeitkartenausgabe und der internen Referenz des Calnex Sentinel vergleichen, sehen wir, dass der kombinierte Fehler innerhalb von ±200 Nanosekunden liegt:

Aber noch wichtiger ist, dass diese Messungen die Stabilität der Zeitgeräteausgaben zeigen.

Im Falle eines GNSS-Signalverlusts müssen wir sicherstellen, dass die Zeitdrift (auch bekannt als Holdover) der atomar unterstützten Zeitkarte innerhalb von 1 Mikrosekunde pro 24 Stunden bleibt. Hier ist eine Grafik, die den Holdover der Atomuhr (SA.53s) über ein 24-Stunden-Intervall zeigt. Wie Sie sehen, bleibt die PPS-Drift innerhalb von 300 Nanosekunden, was innerhalb der Atomuhr-Spezifikation liegt.

Das modulare Design der Zeitkarte ermöglicht den Austausch der Atomuhr gegen einen ofengesteuerten Quarzoszillator (OCXO) oder einen temperaturkompensierten Quarzoszillator (TCXO) für eine kostengünstige Lösung mit Kompromissen bei den Holdover-Fähigkeiten.

Open-Sourcing für das Design der Zeitanwendung

Ein Gerät zu bauen, das sehr präzise, ​​kostengünstig und frei von Herstellersperren ist, war für sich allein schon eine Errungenschaft. Aber wir wollten einen größeren Einfluss auf die Branche haben. Wir wollten es wirklich frei machen und es für jeden offen und erschwinglich machen, vom Forscher bis zum großen Cloud-Rechenzentrum.

Aus diesem Grund haben wir uns mit dem Open Compute Project (OCP) zusammengetan, um ein brandneues Time Appliance Project (TAP) zu entwickeln. Unter dem Dach von OCP haben wir im GitHub-Repository des Time Appliance Project Open-Source erstellt, einschließlich der Spezifikationen, Schaltpläne, Mechanik, BOM und des Quellcodes. Solange sich das Drucken der Leiterplatte und das Löten winziger Komponenten nicht beängstigend anhört, kann jeder seine eigene Zeitkarte für einen Bruchteil der Kosten eines normalen Zeitgeräts bauen. Wir haben auch mit mehreren Anbietern wie Orolia zusammengearbeitet, die Zeitkarten bauen und verkaufen werden, und Nvidia, die den präzisionstimingfähigen ConnectX-6 Dx (und den präzisionstimingfähigen BlueField-2 DPU) verkaufen.

Wir haben auf www.opentimeserver.com eine Open Time Server-Spezifikation veröffentlicht, die detailliert erklärt, wie die Hardware (Zeitkarte, Netzwerkkarte und ein Commodity-Server) und die Software (Betriebssystemtreiber, NTP- und/oder PTP-Server) kombiniert werden ) um das Zeitgerät zu bauen. Die Erstellung einer Appliance basierend auf dieser Spezifikation gibt den Technikern, die das Gerät warten, die volle Kontrolle, wodurch Überwachung, Konfiguration, Verwaltung und Sicherheit verbessert werden.

Die Zeitanwendung ist ein wichtiger Schritt auf dem Weg zur Verbesserung der Zeitmessinfrastruktur für alle, aber es gibt noch mehr zu tun. Wir werden weiterhin an anderen Elementen arbeiten, einschließlich der Verbesserung der Präzision und Genauigkeit der Synchronisierung unserer eigenen Server, und wir beabsichtigen, diese Arbeit weiterhin mit der Open-Computing-Community zu teilen.


Eingebettet

  1. Sanduhr
  2. Python-Schlaf()
  3. Zeit ist Geld:Tipps zur Verwendung von Wartungssoftware, um Zeit zu sparen und effizienter zu investieren
  4. Zeit für Hersteller, alte Ideen zur Bestandsverwaltung zu verwerfen
  5. Supply Chain Leaders, es ist Zeit, Offensive zu spielen
  6. Digitale Zwillinge:Helfen Sie den Zügen der Westküste, pünktlich zu fahren?
  7. Python - Datum &Uhrzeit
  8. Was ist ein HMI?
  9. Crescent Crown wird kosten- und zeiteffizienter durch die Implementierung von Automatisierung
  10. Wie Sie Ihre Fertigung und Ihren Versand optimieren können