Forum: PC Hard- und Software Systemtime per pps sehr genau syncronisieren (~1us)


von Michael D. (nospam2000)


Lesenswert?

Hallo Forum,

ich suche eine Möglichkeit die Systemzeit eines x86-x64 (auch amd64 
genannt) Linux PCs möglichst genau mit einem PPS (pulse-per-second) 
Signal eines uBlox8 GPS Receivers zu synchronisieren. Der PC soll dann 
als IEEE1588 time grandmaster arbeiten und die Zeit per Netzwerk 
weitergeben.

Bei einem Raspberry Pi ist PPS kein Problem, da kann man einen GPIO 
nehmen und muss dem PPS Kernel-Modul nur die Pin-Nummer konfigurieren. 
Leider haben die Raspis kein IEEE1588 Hardware-Sync tauglichen 
Netzwerkkarten (bis auf den CM4).

Für x86 System gibt es ähnliche Lösungen, z.B. kann man den DCD oder RI 
Pin einer seriellen Schnittstelle verwenden. Zu ISA Zeiten wurde von 
serial chip 8250/16550 direkt ein Interrupt ausgelöst, wenn DCD oder RI 
signalisiert wurde.

Heutzutage sind UARTs aber ggf. über USB oder PCIe angebunden. Es wird 
bei den heutigen PC Rechnern immer schwieriger eine kurze Reaktionszeit 
zwischen der Flanke des PPS Signals und dem Auslesen der Systemtime bzw. 
eines TSC oder anderen Timers hinzubekommen.

Ich bin mir nicht sicher, wie genau das PPS Signal des GPS Receivers 
ist, 1us sollte aber m.E. machbar sein. Wenn da aber noch komplexe 
Busprotokolle wie PCIe und die Interrupt-Reaktionszeit der CPU 
dazukommen, dann wird es wohl schwierig dies zu erreichen.

Meine Idee ist, die Erfassung des PPS Zeitpunktes nicht direkt über den 
Zeitpunkt des IRQ zu machen sondern bei der PPS Flanke den Zählerstand 
des TSC (oder eines besser passenden Timers) in einem Latch zu 
speichern, danach kann man dann in aller Ruhe die Phasenlage des TSC zum 
Anfang der Sekunde zu ermitteln. Ich befürchte nur, dass es da nichts 
dazu gibt.

Eine andere Möglichkeit wäre, wenn ein PC Timer ebenfalls ein PPS Signal 
erzeugen würde, dann könnte ich mit einer externen MCU die Phasenlagen 
der beiden PPS Signale vergleichen z.B. über Input Capture des AVR.

Hat jemand eine Idee, wie man das GPS Receiver PPS Signal möglichst 
latenzfrei im PC auswerten kann? Es wird eine DIY Bastellösung gesucht, 
keine fertigen Karten von Meinberg oder anderen Anbietern. Es geht mehr 
um das Interesse wie das am besten gehen kann um was zu lernen.

  Michael

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Wäre es eine Option, einen Ethernet-fähigen µC zu nehmen, dort das 
PPS-Signal auszuwerten und den IEEE1588-Master zu machen? Das sollte 
auch nicht so schwierig zu implementieren sein, wenn man den 
best-master-clock-Algorithmus nicht braucht.

von Michael D. (nospam2000)


Lesenswert?

Rolf M. schrieb:
> Wäre es eine Option, einen Ethernet-fähigen µC zu nehmen, dort das
> PPS-Signal auszuwerten und den IEEE1588-Master zu machen?

Ja, das wäre die Rückfallstrategie. Ich habe hier noch einen Banana Pi 
R1, theoretisch könnte das mit dem funktionieren.

Es interessiert mich nur, ob das mit X86 Hardware wirklich so schwer 
ist, oder ich die einfachen Lösungen nur nicht sehe.

 Michael

von Chris (Gast)


Lesenswert?

Man braucht eine parallel karte MIT msi-X dann geht es.

von Roland E. (roland0815)


Lesenswert?

Michael D. schrieb:
> ...
> Es interessiert mich nur, ob das mit X86 Hardware wirklich so schwer
> ist, oder ich die einfachen Lösungen nur nicht sehe.
> ...

Das hängt von deinem Linux ab. Es gibt echtzeitfähige Linux. Das ist 
Voraussetzung dafür, wiederholbar genau arbeiten zu können. Wie genau, 
sagt dir dann das Linux.

von Michael D. (nospam2000)


Lesenswert?

Chris schrieb:
> Man braucht eine parallel karte MIT msi-X dann geht es.

Hast du da einen Anhaltspunkt, welche Karten bzw. Chipsätze das sind?

Bei Amazon habe ich mal gesucht und folgende Karten gefunden:
 mit Chipsatz MCS9901 => siehe 
https://bz-attachments.freebsd.org/attachment.cgi?id=106094
 - Digitus DS-30020-1

 mit Chipsatz WCH382L => siehe http://www.wch-ic.com/products/CH382.html
 - DeLock 90412
 - Donkey PC

Beim MCS9901 steht was von MSI im Datenblatt drin, aber kein MSI-X. 
Macht das einen Unterschied bei der Interrupt-Latenz?

  Michael

von chris (Gast)


Lesenswert?

MSI ist ein Halbleiterhersteller, MSI/MSI-X ist eine HW/Driver Spec von 
Intel, welche die (L)APIC benutzt, also out of band multiprocessor 
Speicher update interface. Das muss man aufpassen dass dies nicht 
verwechelt wird.
https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/msg-signaled-interrupts-paper.pdf
https://www.mouser.com/datasheet/2/38/XPCIe840_Product_Brief-8949.pdf
Es gibt genug boards im Preis Segment von 11-12 Euro mit solchen Chips
die das haben, da sind teilweise die Lieferkosten entscheidend dass man
hier oder dort das Produkt bevorzugt.
Auch gibt es diverse Mainboards, welche mit MSI/MSI-X probleme haben,
oder Chipsets/Bridges , dies darf man nicht aus den Augen lassen,
https://www.kernel.org/doc/html/v5.8/PCI/msi-howto.html
Auch musst du den Adress Range der Karte beachten, ihn vom legacy in den
memory Bereich verschieben, denn sonst werden kuenstliche delays 
eingefuehrt.
Ob jetzt parallel oder Serial, das ist egal, nur der Pegelwandler von
0.7V zu 3.3V ist einfacher fuer high speed als der zu 10V, wo der Rise 
time
und die threshold voltage schon jitter verursachen.

von Michael D. (nospam2000)


Lesenswert?

zur Software: hier habe ich was gefunden um einen PPS zu erzeugen:
https://www.eevblog.com/forum/metrology/pps-output-using-linux-on-a-pc/

von Flachtroll (Gast)


Lesenswert?

Macht es Sinn einem PC eine Genauigkeit von 1us aufdruecken zu wollen, 
obwohl er damit nichts anfangen kann ? Es gibt mehr oder weniger gar 
nichts im PC, das damit etwas anfangen kann. Ein Windows Desktop hat 
eine Zeitscheibe von 10ms, ein Windows Server eine von 50ms. 
Irgendwelche Hardware, welche das koennen soll, muss ausserhalb eines 
Windows sein. zB ein ATMega, oder ein PIC. Fuer erhoehte Anforderungen 
ein FPGA.

von Michael D. (nospam2000)


Lesenswert?

Flachtroll schrieb:
> Macht es Sinn einem PC eine Genauigkeit von 1us aufdruecken zu wollen,
> obwohl er damit nichts anfangen kann ?

Ja, es geht um einen Linux PC welcher auch den PREEMPT RT Patch hat, 
da macht das Sinn.

> Es gibt mehr oder weniger gar nichts im PC, das damit etwas anfangen kann.

Doch, der Haupt-Usecase für diesen Rechner ist grandmaster für eine 
IEEE1588 Zeitsynchronisation.

Eines der Ziele des Experiments ist zu kären wie weit man damit kommt 
und ob es überhaupt Sinn macht, d.h. ob der Aufwand für IEEE1588 den 
Vorteil gegenüber NTP Wert ist.

Einer der Unterpunkte ist, wie hoch die Reaktionszeit eines PCs auf 
externe Ereignisse ist bzw. wie schnell mal Signale ausgeben kann, d.h. 
wie hoch jeweils die Latenzzeit ist.

 Michael

: Bearbeitet durch User
von Cartman (Gast)


Lesenswert?

> Bei einem Raspberry Pi ist PPS kein Problem, da kann man einen GPIO
> nehmen und muss dem PPS Kernel-Modul nur die Pin-Nummer konfigurieren.

Ich wuerde mal bezweifeln, dass die Qualitaet der an der Takterzeugung
beteiligten Komponenten das wirklich hergibt.

Ein Controller der von einem nachstimmbaren OCXO getaktet wird,
waere wohl passender.
Dann muesste man den Jittereintrag der durch die PLLs zur internen
Taktversorgung hervorgerufen wird, evaluieren.

Ich glaube, du stellst dir das alles zu trivial vor.
Genaue Zeit ist eine grosse Herausforderung.

von oszi40 (Gast)


Lesenswert?

Michael D. schrieb:
> grandmaster arbeiten und die Zeit per Netzwerk weitergeben.

"Sehr GENAU" scheint mir etwas optimistisch, wenn ich nur an 
unterschiedliche CPU-Befehlsausführungszeiten und einen Ping mit 10ms 
denke. Das soll aber nicht heißen, dass es evtl. eine NTP-ähnliche 
Lösung geben könnte? https://de.wikipedia.org/wiki/Network_Time_Protocol

Nützlich wäre jetzt evtl., die Differenzen zwischen Deiner Zeit und der 
NTP-Zeit längere Zeit auszuwerten, um grundsätzliche Fehler wie 
Schaltsekunden usw. zu erkennen.

von Brownie (Gast)


Lesenswert?


von Rolf M. (rmagnus)


Lesenswert?

oszi40 schrieb:
> Michael D. schrieb:
>> grandmaster arbeiten und die Zeit per Netzwerk weitergeben.
>
> "Sehr GENAU" scheint mir etwas optimistisch, wenn ich nur an
> unterschiedliche CPU-Befehlsausführungszeiten und einen Ping mit 10ms
> denke.

Bei mir liegen die Pings im lokalen Netz je nach Rechner eher bei 100 
bis 300 µs. Ist halt kein Windows.

> Das soll aber nicht heißen, dass es evtl. eine NTP-ähnliche
> Lösung geben könnte? https://de.wikipedia.org/wiki/Network_Time_Protocol

IEEE1588 alias PTP macht das gleiche win NTP, nur sehr viel präziser. 
Für die hohe Genauigkeit erfordert es aber einen Netzwerk-Adapter mit 
Hardware-Zeitstempel, da die Durchlaufzeit durch den IP-Stack und selbst 
die Softare-Zeitstempelung im Receive-Interrupt zu latenzbehaftet ist. 
Wir sprechen dann aber auch von Genauigkeiten im Nanosekunden-Bereich.

: Bearbeitet durch User
von oszi40 (Gast)


Lesenswert?

Rolf M. schrieb:
> Bei mir liegen die Pings im lokalen Netz je nach Rechner eher bei 100
> bis 300 µs. Ist halt kein Windows.

Kommt ganz darauf an, welche Hardware dazwischen ist. Trotzdem habe ich 
noch leichte Zweifel bei ns-Genauigkeit z.B. bei höherer Netzlast und 
eventuellen Paketverlusten.

von Rolf M. (rmagnus)


Lesenswert?

oszi40 schrieb:
> Kommt ganz darauf an, welche Hardware dazwischen ist.

Ein Switch erzeugt eine gewisse Latenz, insbesondere wegen 
store-and-forward. Bei mehreren Switches erhöht sich das entsprechend.
Hab grad mal hier in meinem Heimnetz etwas gepingt: Bei einer Verbindung 
über den eingebauten Switch eine Fritzbox plus einen zusätzlichen 
billig-Switch messe ich ca. 340 µs im Schnitt. Bei einem anderen 
Zielrechner, der direkt an dem Switch hängt (also ohne die Frizbox) 
messe ich ca. 70 µs weniger.

> Trotzdem habe ich noch leichte Zweifel bei ns-Genauigkeit z.B. bei
> höherer Netzlast und eventuellen Paketverlusten.

Die sollten an sich keine Rolle spielen. Wenn ein Paket gesendet und 
auch empfangen wird, kann auf beiden Seiten der jeweilige NIC einen sehr 
genauen Hardware-Zeitstempel davon erzeugen. Daran ändern Netzlast und 
Paketverlust auch nichts, sofern die PTP-Pakete noch einigermaßen 
durchkommen.

von Εrnst B. (ernst)


Lesenswert?

Generell scheint das Synchronisieren über PPS ein größeres Problem zu 
sein.

Wenn ich hier einen NTPd mit einem der Pools laufen lasse, fallen mir 
immer wieder Server auf, die stark vom PTB-NTP abweichen, sich aber mit 
Ref-ID .PPS. und Stratum=1 in den Vordergrund drängen wollen...

von Michael D. (nospam2000)


Lesenswert?

Εrnst B. schrieb:
> Wenn ich hier einen NTPd mit einem der Pools laufen lasse, fallen mir
> immer wieder Server auf, die stark vom PTB-NTP abweichen, sich aber mit
> Ref-ID .PPS. und Stratum=1 in den Vordergrund drängen wollen...

Habe ich auch gesehen. Ich denke, das liegt aber auch meiner 
asymmetrischen DSL Verbindung (50 MBit/s down, 10 MBit/s) up.

Bei Delays im zweistelligen Millisekundenbereich ist die Aussagekraft 
von "offset" anzuzweifeln. Da hilft nur ein lokaler GPS Empfänger mit 
eigenem PPS.

  Michael

von Cartman (Gast)


Lesenswert?

> billig-Switch messe ich ca. 340 µs

Von Arista gibt es "Low Latency Switche" die wenn ich mich
richtig erinnere auf Werte von ca. 500 ns kommen.
Das geht mit "Store and Forward" natuerlich nicht.
Aber "Cut Through" kann das.

Der TO sollte sich vielleicht auch mal Verfahren wie
"White Rabbit" ansehen...

von Michael D. (nospam2000)


Lesenswert?


: Bearbeitet durch User
von Christoph Z. (christophz)


Lesenswert?

Rolf M. schrieb:
> Ein Switch erzeugt eine gewisse Latenz, insbesondere wegen
> store-and-forward.

Darum brauchst du ja auch einen Switch der IEEE1588 unterstützt.

Wenn ihr IEEE1588 aka PTP nicht kennt, guckt es euch mal an, ist 
technisch sehr interessant, genau auch weil wir alle einig sind, dass 
Zeitsynchronisation nicht einfach ist.

IEEE1588 ist die Grundlange unter anderem in diesen Standards:
- EtherCat
- LXI
- AVB
- TSN
- AES67
- Profinet IRT

Cartman schrieb:
> Der TO sollte sich vielleicht auch mal Verfahren wie
> "White Rabbit" ansehen...

Das nimmt man, wenn IEEE1588-2008 (PTPv2) nicht mehr reicht. Ist 
mittlerweile auch in IEEE1588-2019 eingeflossen als High-Accuracy 
Erweiterung:
https://ohwr.org/projects/wr-std/wiki/wrin1588

Brownie schrieb:
> https://blog.dan.drown.org/apu2-ntp-server-2/

Sehr interessant. Wusste, das die Chips so etwas können aber nicht, wie 
weit das im Linux Kernel unterstützt wird.

von Fortran unter RSX-11 auf PDP-11 (Gast)


Lesenswert?

Roland E. schrieb:
> Das hängt von deinem Linux ab. Es gibt echtzeitfähige Linux. Das ist
> Voraussetzung dafür, wiederholbar genau arbeiten zu können. Wie genau,
> sagt dir dann das Linux.

Naja! Linux ist, wie alle anderen unixoiden Betriebssysteme von FreeBSD 
bis MacOS grundsätzlich erstmal ein Time-sharing-OS!
Und time-sharing-betriebssysteme eignen sich nun fuer alles, nur eben 
nicht für Echtzeitfähigkeit!
Ich will damit sagen, dass ein "echtzeitfaehiges Linux" aus dieser 
Perspektive gesehen, ne ziemliche Bastelei und Gewurtschtel sein dürfte.

Z.B. RSX-11 wäre ein klassisches Echtzeit-OS ( es muss ja nicht wie vor 
40 Jahren auf PDP-11 Blech von DEC laufen ;-)

von Rolf M. (rmagnus)


Lesenswert?

Christoph Z. schrieb:
> Wusste, das die Chips so etwas können aber nicht, wie weit das im Linux
> Kernel unterstützt wird.

Was die Hardware in der Hinsicht kann, kann man unter Linux per ethtool 
-T herausfinden. Das sieht für den eingebauten Netzwerkadapter am PC 
z.B. so aus:
1
Time stamping parameters for enp4s0:
2
Capabilities:
3
        hardware-transmit
4
        software-transmit
5
        hardware-receive
6
        software-receive
7
        software-system-clock
8
        hardware-raw-clock
9
PTP Hardware Clock: 0
10
Hardware Transmit Timestamp Modes:
11
        off
12
        on
13
Hardware Receive Filter Modes:
14
        none
15
        all

Für einen USB-Adapter (die das in der Regel nicht können) sieht es 
dagegen dann so aus:
1
Time stamping parameters for enx00133ba015cc:
2
Capabilities:
3
        software-receive
4
        software-system-clock
5
PTP Hardware Clock: none
6
Hardware Transmit Timestamp Modes: none
7
Hardware Receive Filter Modes: none

von Pandur S. (jetztnicht)


Lesenswert?

Allenfalls waere interessant was das Ganze soll, bevor an einer Loesung 
rumgedrueckt wird, die eh sinnlos ist, weil am Zweck vorbei.

Nehmen wir mal an, wir haetten diesen Hypergenauen Zeitserver ... was 
kommt dann damit ? Diese Zeitstempel gehen an Windowssysteme ?

von Michael D. (nospam2000)


Lesenswert?

Pandur S. schrieb:

> Nehmen wir mal an, wir haetten diesen Hypergenauen Zeitserver

Wir nehmen nicht an, wir haben ihn.

> Allenfalls waere interessant was das Ganze soll, bevor an einer Loesung
> rumgedrueckt wird, die eh sinnlos ist, weil am Zweck vorbei.

Es geht um Prozessautomatisierung. Um Abläufe genau zu synchronisieren 
und Daten zu erfassen kann man das entweder über einen verteilten Takt 
oder eben über genaue Zeitstempel machen.

Ein weiterer Anwendungsfall ist das Thema Sequence of Events oder 
einfach nur Auswertung von verteilten Logs für die Fehleranalyse.

Je nach Prozess reicht die Genauigkeit welche NTP liefern kann nicht 
mehr aus, da braucht man dann was besseres.

Windows ist hier fehl am Platz. Eigentlich steht in meinem Eingangspost 
im ersten Satz nur was von Linux.

 Michael

: Bearbeitet durch User
von Flieger (Gast)


Lesenswert?

Fuer eine lokale Geschichte, wuerde ich mir den aufwenigen Mist sparen 
und das Signal per Hardware an Hardware verteilen, Also eigener Bus an 
die Messhardware. Was sollen aufwendige systeme ? Allenfalls zur lokalen 
Parametrisierung und visualisierung.
Auch wenn das System sehr verteilt waere und man mit PPS arbeiten 
muesste uerde ich lokale Busse verwenden, ohne ueber Ethernet zu gehen.
Das Ethernet wird wertlos sofern die Zeitstempel nicht maximal 
priorisiert waeren, heisst sonst nicht anderes liefe.

von Benj (Gast)


Lesenswert?

vlfrx kann aus den PPS pulsen an der Soundkarte die Zeit auf <100 ns 
genau ableiten. Da müsstest du "nur" noch eine Erweiterung für die 
Synchronisation mit der Systemzeit schreiben.
http://abelian.org/vlfrx-tools/

von foobar (Gast)


Lesenswert?

> [PPS per GPS] Der PC soll dann als IEEE1588 time grandmaster
> arbeiten und die Zeit per Netzwerk weitergeben.

Solange sich alle an den "Großmeister" halten, ist es vollkommen egal, 
zu was der wie synchron ist.

von Michael D. (nospam2000)


Lesenswert?

foobar schrieb:
> Solange sich alle an den "Großmeister" halten, ist es vollkommen egal,
> zu was der wie synchron ist.

In einer nicht idealen Welt kann mal leider keine Aussage über "alle" 
machen. Es wird sicher noch ein paar Rechner mit niedrigeren 
Anforderungen geben und geschlossene IoT Hardware, die nicht bei PtP 
mitspielt. Die unterstützen dann vielleicht nur NTP.

Allerdings ist es sicher richtig, dass für Automatisierungaufgaben die 
PtP Timedomain zur NTP Timedomain nur so genau synchronisiert sein muss, 
wie die NTP Timedomain in sich, sprich ein gap von 5 ms wäre sicher 
verkraftbar.

Wenn der PtP Timestamp um Minuten von der Wanduhr abweicht, dann ist das 
auch nicht gut.

  Michael

von Rolf M. (rmagnus)


Lesenswert?

Flieger schrieb:
> Fuer eine lokale Geschichte, wuerde ich mir den aufwenigen Mist sparen
> und das Signal per Hardware an Hardware verteilen, Also eigener Bus an
> die Messhardware. Was sollen aufwendige systeme ?

Was es richtig aufwändig macht, ist, sich da selber was auszudenken und 
umzusetzen. PTP gibt's schon, ist genau dafür da und muss nur 
konfiguriert werden.

> Das Ethernet wird wertlos sofern die Zeitstempel nicht maximal
> priorisiert waeren, heisst sonst nicht anderes liefe.

Nein.

von Michael D. (nospam2000)


Lesenswert?

Michael D. schrieb:
> Es gibt Intel I210 Netzwerkkarten, welche 4 SCP pins auf Stiftleisten
> rausgeführt haben:

Die heißen natürlich SDP (Software-Definable Pins) und nicht SCP Pins.

  Michael

von Michael D. (nospam2000)


Lesenswert?

Hi,

hier noch ein Link auf eine Master Thesis von 2013:
"Hardware Assisted IEEE1588 Clock Synchronization Under Linux"
von Bálint Ferencz.

https://github.com/AaronWebster/igb-pps-guide

Es geht speziell um die I210-T1 Netzwerkkarte und unter anderem wie man 
die SDP Pins für die Synchronisation Messungen konfigurieren kann.

Er hat noch weitere Artikel geschrieben:
https://scholar.google.com/citations?user=-1JxeGEAAAAJ&hl=en
die meisten sind aber kostenpflichtig über IEEE paywall.

 Michael

: Bearbeitet durch User
von oszi40 (Gast)


Lesenswert?

Michael D. schrieb:
> SDP (Software-Definable Pins)

Alles sehr schön, nur braucht jeder Befehl eine gewisse Zeit, die auch 
verschieden sein könnte. So ganz einfach wirds wohl nicht.

von Christoph Z. (christophz)


Lesenswert?

Flieger schrieb:
> Fuer eine lokale Geschichte, wuerde ich mir den aufwenigen Mist sparen
> und das Signal per Hardware an Hardware verteilen, Also eigener Bus an
> die Messhardware.

Die 70er Jahre möchten ihre GPIB Kabel zurück...

Darauf gab es mehrere Trigger Pins für solche Zwecke. Dicke teure Kabel, 
Interface Chip eigentlich nur von NI produziert, maximal 15 Adressen, 
nur Trigger möglich aber keine Zeitsynchronisation etc.

von Georg A. (georga)


Lesenswert?

oszi40 schrieb:
> Alles sehr schön, nur braucht jeder Befehl eine gewisse Zeit, die auch
> verschieden sein könnte. So ganz einfach wirds wohl nicht.

Nachdem die Netzwerkkarte da nicht als dummes GPIO benutzt wird, gibt es 
keine Befehle. Die Pins werden von der Karte direkt aus ihrem internen 
Timer (SYSTIM) heraus angesteuert und der wiederum kann über PTP 
synchronisiert werden.

https://www.mouser.com/pdfDocs/333016_I210_Datasheet_v_3_6.pdf

Kapitel 7.8.3.3.3 "Synchronized Output Clock on SDP " und
7.8.3.2 "1588 Timer Registers: SYSTIM, TIMADJ and TIMINC"

von Purzel H. (hacky)


Lesenswert?

Timing- und Synchronisierloesungen gibt es fuer jedes Budget, und jede 
Anforderung.
Bisher wurden wir nur unterrichtet, dass es um ein verteiltes System 
geht, aber nicht ueber die Ausdehnung. Irgendwann kommt die Laufzeit 
rein.

Den Zeitstempel iteressiert bei Echtzeitsystemen oft niemanden, sondern 
man benoetigt eher einen gemeinsamen Trigger, um ein Ereignis 
auszuloesen.
Da gibt es Loesungen fuer zusammenhaengende Systeme, per Lichtfaser in 
den Femtosekunden Bereich hinunter. Die Frage nach dem Jitter kommt dann 
auf.

Zeitstempel von extremhoher aufloesung werden bei nachtraeglichem 
Batchprozessing von aufgenommenen Daten verwendet, zb von 
Radioteleskopen auf verschiedenen Kontinenten

: Bearbeitet durch User
von Georg A. (georga)


Lesenswert?

Purzel H. schrieb:
> Den Zeitstempel iteressiert bei Echtzeitsystemen oft niemanden, sondern
> man benoetigt eher einen gemeinsamen Trigger, um ein Ereignis
> auszuloesen.

Naja, das ist ja irgendwie dann doch fast dasselbe, wenn man mehr als 
ein Ereignis nur alle heiligen Zeiten hat. Dann muss man anhand von 
Zeitstempel und einer Regel aus der Ereignisrate auf allen Devices einen 
sychronen periodischen Eventclock produzieren.

Das gibts so bei professionellem Audio over IP (zB. Dante oder AES67) 
als auch bei professionellem Video (AFAIR hat zB. ARRI so ein System, um 
alle ihre Kameras via IP auf synchronen Shutter auch bei völlig krummen 
Frameraten zu bringen). Und die Anforderungen an die Synchronizität sind 
selbst bei langweiligen Audio mit 48-196kHz nicht ganz ohne. Der 
Unterschied der via PTP erzeugten Sampleclocks auf den verteilten 
Geräten sollte da deutlich kleiner als 500ns sein, damit der AoIP-Weg 
quasi einem analogen XLR-Kabel entspricht.

von Purzel H. (hacky)


Lesenswert?

> Naja, das ist ja irgendwie dann doch fast dasselbe ..

Aber auch nur fast. Wenn ich Zeitstempel alle 10us, heisst 100kHz habe, 
und mit 44kHz (oder 96kHz) sample, muss ich jeden einzelnen Punkt 
vorwaerts interpolieren. Dann verteile ich doch besser gleich die 44kHz 
(oder 96kHz), dann wird's einfacher.

von Christoph Z. (christophz)


Lesenswert?

Purzel H. schrieb:
> Den Zeitstempel iteressiert bei Echtzeitsystemen oft niemanden, sondern
> man benoetigt eher einen gemeinsamen Trigger, um ein Ereignis
> auszuloesen.

Echtzeitsysteme die z. B. auf EtherCAT basieren setzten eine andere 
Denkweise vom Entwickler voraus. Da durch die Verarbeitung und 
Ausdehnung Latenzen entstehen, die grösser wurden als das Zeitbudget 
geht man eher weg von Getriggertensystemen zu Zeitpunktgesteuerten 
Systemen.

Dafür brauchen alle Aktoren eine synchronisierte Uhr.
Die Steuerung rechnet dann aus, zu welchem Zeitpunkt welcher Aktor was 
machen muss und teilt dem Aktor mit, was er machen muss und zusätzlich 
wann er das tun soll.

Klassicherweise hat ein Aktor einen Befehl bekommen und auch gleich 
ausgeführt.

Gewisse Problemstellungen werden so massiv vereinfacht (z. B. Förderband 
mit synchronisierten Motoren), für andere passt dieser Ansatz nicht 
(schnelle Regler wo nicht mehr genug Zeit zur Verfügung steht eine 
Aktion in der "Zukunft" auszulösen).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.