Hallo,
ich stehe vor der Aufgabe, Daten von mehreren Schnittstellen (bis zu 3
serielle Schnittstellen und 3 Ethernet Schnittstellen) in einem PC
Programm zu verarbeiten. Die Frage ist nun, wie gehe ich sowas am besten
an?
Mein Ansatz wäre gewesen, die Daten von allen Schnittstellen mit einem
(leistungsstarken) Mikrocontroller zu sammeln und dann gebündelt über
eine Schnittstelle (z.B RS232) zum Windows PC zu übertragen. Die
Vorteile wären meines Erachtens:
-) Wenn der PC mal abstürzt, dann kann ich die Daten auf dem
Mikrocontroller über ein paar Stunden im Flash zwischenspeichern
-) Windows muss nur eine Schnittstelle verwalten (verminderte
Fehleranfälligkeit)
-) Ich kann die Daten im Mikrocontroller bereits ein bisschen
aufbereiten und erste Plausibilitätschecks der Daten machen.
Da ich aber immer mehr Systeme sehe, wo Windows für Anwendungen
eingesetzt wird, wo ich eigentlich einen Mikrocontroller oder DSP
erwartet hätte, bin ich nun doch etwas ins grübeln gekommen. Mache ich
mir vielleicht zu viele Gedanken und Windows packt das ohnehin mit
links? Wie würdet ihr das machen?
P.S: Die UARTs übertragen mit max. 19200 Baud und auf der Ethernet
Schnittstelle werden max. alle 500ms Daten übertragen.
Unwissender schrieb:> ich stehe vor der Aufgabe, Daten von mehreren Schnittstellen (bis zu 3> serielle Schnittstellen und 3 Ethernet Schnittstellen) in einem PC> Programm zu verarbeiten.
Mit einer solch immensen Zahl an Schnittstellen kamen die PCs schon vor
30 Jahren mühelos zurecht. ;-)
Wenn dein PC oft genug abstürzt, um entsprechende Gedanken zu
rechtfertigen, dann hast du den falschen PC.
Mehrere serielle Schnittstellen und Netzwerk-Karten sind, korrekte
Konfiguration vorrausgesetzt, kein Problem. Das einzige Problem ist dass
du nicht wirklich realtime-artig schnell antworten kannst (wie das zB
zur steuerung von CNC-Maschinen oder so nötig wäre). Der Datendurchsatz
an sich ist aber unkritisch.
Der Vorteil von einfach nur Windows zu verwenden ist, dass die
Programmierung dort vermutlich viel unaufwändiger ist, da man mehr
Speicher hat und auch "einfache" Sprachen wie ruby verwenden kann.
Gleiches gilt natürlich auch für Linux. Das könnte man dann auch auf was
kleineres wie ein Cubieboard o.ä. packen.
A. K. schrieb:> Mit einer solch immensen Zahl an Schnittstellen kamen die PCs schon vor> 30 Jahren zurecht. ;-)
Ich weiß auch nicht, vielleicht bediene ich Windows einfach falsch, aber
an meinem PC kommt es immer mal wieder vor, dass Windows aus mir
unerfindlichen Gründen ein Schnittstelle nicht kennt. Meistens hilft
dann ein einfaches aus - und wieder einstecken, in seltenen Fällen
geht's dann nur noch mit einem Neustart. Da wäre es dann schon ganz toll
wenn in der Zwischenzeit die Daten irgendwo zwischengespeichert werden.
Unwissender schrieb:> Ich weiß auch nicht, vielleicht bediene ich Windows einfach falsch, aber> an meinem PC kommt es immer mal wieder vor, dass Windows aus mir> unerfindlichen Gründen ein Schnittstelle nicht kennt.
Vor 30 Jahren gab es auch noch kein USB. ;-)
Nimm eine serielle Schnittstellenkarte, dann bist du den Zirkus mit
unsauberen Treibern von USB-Seriell-Karten los. Oder nimm saubere
USB-Konverter mit sauberen Treibern.
Oh ha ...
3 (in Worten drei)serielle Schnittstellen und dann auch noch Daten vom
Ethernet (wieder drei an der Zahl, dazu noch im 500ms-Takt)
Hölle-Hölle!
Da wirste sicher 'n high-end Multi-Core System mit nicht unter 22.0000
GHz brauchen. Gut - vielleicht nur 10.000; der
Mikrocontroller-Datenkonzentrator reisst es schon raus. So eine geballte
Rechenleistung sollte man wirklich nicht unterschätzen!
Mal ehrlich, hast du auch nur den blassesten Schimmer von dem was du da
tust?
Mein Rat ist: Lass einfach die Finger davon: Was immer du da mit deinem
halben Dreiviertelwissen verzapfst, es wird Probleme ohne Ende machen.
Such dir jemanden der es kann und dir zum Festpreis liefert (sollte
wirklich nicht schwer sein). Macht das Leben einfacher und du blamierst
dich nicht bis auf die Knochen ...
K.
Nur mal langsam! Wenn du meinen Beitrag aufmerksam gelesen hättest, dann
hättest du vielleicht gemerkt, dass ich in keinem Wort erwähnt habe,
dass Windows dafür zu langsam ist...
Und keine Sorge, ich blamier mich schon nicht. Zum Glück gibt es ja so
kompetente Leute wie dich, die mit hilfreichen Ratschlägen nur so um
sich werfen.
@A.K: Danke, werde deine Ratschläge beherzigen. Jetzt wo ich so darüber
nachdenke, wird mir klar, dass ich eigentlich immer nur mit billigen USB
Konvertern Probleme hatte. Die mit nem FTDI Chipsatz funktionierten
eigentlich immer recht problemlos.
@ Dr. Sommer: Realtime ist bei den Datenübertragungsraten wirklich kein
Thema, das stimmt. Ich denke ich werde es einfach mal darauf ankommen
lassen und das einfach mal implementieren und ausprobieren. In Python
sollte das ja recht schnell erledigt sein.
K. schrieb:> Oh ha ...> 3 (in Worten drei)serielle Schnittstellen und dann auch noch Daten vom> Ethernet (wieder drei an der Zahl, dazu noch im 500ms-Takt)>> Hölle-Hölle!>> Da wirste sicher 'n high-end Multi-Core System mit nicht unter 22.0000> GHz brauchen. Gut - vielleicht nur 10.000; der> Mikrocontroller-Datenkonzentrator reisst es schon raus. So eine geballte> Rechenleistung sollte man wirklich nicht unterschätzen!>> Mal ehrlich, hast du auch nur den blassesten Schimmer von dem was du da> tust?>> Mein Rat ist: Lass einfach die Finger davon: Was immer du da mit deinem> halben Dreiviertelwissen verzapfst, es wird Probleme ohne Ende machen.>> Such dir jemanden der es kann und dir zum Festpreis liefert (sollte> wirklich nicht schwer sein). Macht das Leben einfacher und du blamierst> dich nicht bis auf die Knochen ...>> K.
Ich kann aus langjähriger Erfahrung mit Windowsanwendungen im
Dauerbetrieb nur unterstreichen, dass es sinnvoll ist, die ca. 100 EUR
für eine serielle Schnittstellenkarte zu investieren (z.B. von Moxa).
Wie viel Daten, wie schnell?
Wie schon an anderer Stelle gesagt: Windoof kommt schon sehr lange mit
mehreren Schnittstellen(karten) zurecht.
Wenn Du Angst vor Verlusten hast, stecke ein paar Cleverle rein, mit
eigenem Speicher und Controller.
Früher war es mal üblich, wenn Dein Rechner abstürzt, nach der Ursache
zu suchen. Wenn's natürlich nicht stört...
Eine gute Karte, eine ordentliche Konfiguration, dann kannst Du diese
als Ursache ausschließen.
K. schrieb:> So eine geballte> Rechenleistung sollte man wirklich nicht unterschätzen!
:-)
Ja, gell. Ist immer wieder lustig.
Ein Nasenpopel-PC vom Aldi hat heutzutage die x-zig-fache Rechenleistung
eines Grossrechners von vor 30 Jahren.
Der einzige Unterschied: Den PC hast du für dich alleine, während der
Grossrechner in einer Versicherung gleichzeitig alle 1023
Versicherungsvertreter an ihren Terminals bedienen musste und das auch
hingekriegt hat.
Ach ja, einen Unterschied gibts noch: Der PC kostet 300 Euro. Der
Grossrechner hat damals ab 300-tausend DM aufwärts gekostet.
Karl Heinz Buchegger schrieb:> Ach ja, einen Unterschied gibts noch: Der PC kostet 300 Euro. Der> Grossrechner hat damals ab 300-tausend DM aufwärts gekostet.
Einen weiteren Unterschied gibts aber auch noch: Der Grossrechner hatte
keine seriellen Schnittstellen mit zeichenweiser Interaktion. Sondern
Blockmode-Terminals, die zudem zunächst mit Vorrechnern kommunizierten.
So dass der Grossrecher nur in grösseren Abständen vom
Versicherungsvertreter behelligt wurde, nicht bei jedem einzelnen
Tastendruck und jedem einzelnen ausgegebenen Zeichen.