Hallo Leute,
ich mache gerade ein Konzept für eine ultra hoch verfügbaren, Fehler
toleranten CAN-Bus.
Hierzu brauche ich auch Redundanzen.
Klar ist, das ich mind. zwei parallele Busse benötige. Datenblätter wie
z.B. die des SN65HVD267 zeigen eine einfache Art eines Redundanten
Busses, bei dem einfach zwei Transceiver auf zwei unterschiedlichen
Bussen hängen und deren Signale einfach "Verundet" an einen Kontroller
laufen.
http://www.ti.com/lit/ds/symlink/sn65hvd267.pdf Seite 22
Die Lösung scheint zwar einfach, aber was passiert, wenn ein Transceiver
jetzt dauerhaft (z.B. durch Schädigung) falsche Signale liefert oder ein
Bus dauerhaft unterbrochen ist? -> Diese Lösung lässt also keine Fehler
zu, funktioniert aber auch danach ggf. nicht mehr.
Ich will aber eine Lösung, bei der Fehler aufgespürt werden und trotzdem
eine Kommunikation möglich wäre.
Dazu müste ich also den Redundanten Bus zweifach ausführen, oder?
Auch ganz interessant ist z.B. dieses Paper:
http://klabs.org/mapld04/abstracts/woodroffe_a.pdf
Da wird eine Art "Muxer" zwischen zwei Busse in der Grafik gezeigt, der
scheinbar ggf. im Fehlerfall umschalten kann. Hat jemand zu solchen
Methoden eine ausführlicheren hinweis für mich?
Gibt es eigentlich schon (Peripherie-) Kontroller die CAN-FD
verarbeiten? Ich habe zwar schon viele Transceiver gesehen, die das
beherrschen, auch ein paar FPGA Implementationen, aber noch keinen
kaufbaren Chip.
Andere Frage:
Ist es eigentlich mit unserer digitalen Elektronik möglich, diese über
Jahrzehnte betriebsbereit (also laufen lassen, nicht lagern) zu halten,
wenn man für eine konstant "gute" Bedingung sorgt?
Atmel sagt z.B. über den ATmega88, das sein Speicher bei 25°C seinen
Inhalt 100Jahre halten könnte. Beziehen sich solche Werte auf
"gelagerte" Komponente oder welche, die im 24/7 Einsatz sind?
Z.B. die 8051 stammen aus dem Anfang der 80'er, hat jemand ein Gerät
damals Entwickelt, das bis heute ununterbrochen läuft?
Rafal schrieb:> http://www.ti.com/lit/ds/symlink/sn65hvd267.pdf Seite 22> Die Lösung scheint zwar einfach, aber was passiert, wenn ein Transceiver> jetzt dauerhaft (z.B. durch Schädigung) falsche Signale liefert oder ein> Bus dauerhaft unterbrochen ist? -> Diese Lösung lässt also keine Fehler> zu, funktioniert aber auch danach ggf. nicht mehr.
Wie so oft:
Du schickst die Daten über zwei Kanäle und vergleichst.
Wenn gleich, dann OK.
Wenn unterschiedlich, dann Fehler --> goto SAFESTATE.
das ganze kannst du natürlich beliebig aufbohren:
3 Kanäle
4 Kanäle
etc.
Rafal schrieb:> Ist es eigentlich mit unserer digitalen Elektronik möglich, diese über> Jahrzehnte betriebsbereit (also laufen lassen, nicht lagern) zu halten,> wenn man für eine konstant "gute" Bedingung sorgt?
Die Voyager Sonden laufen seit 1977 permanent durch, Kontakt zum Rechner
besteht bis heute noch.
Rafal schrieb:> Aber ich will selbst im Fehlerfall Daten übertragen können!
Was wenn du auf ebiden Leitungen einen Fehler hast?
Und auf 3? Oder 4?
Immer kann das nicht gehen, du kannst nur die Wahrscheinlichkeit
ausrechnen, wie viele Kanäle es noch gibt bzw. auf wie vielen Kanälen
ein Fehler auftritt.
Rafal schrieb:> Ja, das weiß ich doch schon - hab ich vielleicht falsch angedeutet!>> Aber ich will selbst im Fehlerfall Daten übertragen können!
Na dann halt:
3 Kanäle:
alle OK --> prima
2 OK, 1 kaputt --> Fehler, dennoch Übertragung auf den 2 guten Kanälen
1 OK, 2 kaputt -->Fehler, goto SAFESTATE
Irgendwann hat sichs halt ausgefehlert. Wenn alle drei Kanäle kaputt
sind, dann geht eben eine Datenübertragung nicht mehr. Punkt.
Also wenn nur der BUS redundant sein soll, nimm einen µC mit dual CAN,
dann zwei Transceiver und vergleiche es. Wenn du noch mehr Redundanz
brauchst, nimm zwei Baugruppen, die identisch sind und bei einem Fehler
der andere einspringt. Also nimm dein CAN-Board 2x mit jeweils einem
(oder auch zwei) Bus.
So läuft das sehr zuverlässig u.a. in Kraftwerken. (Mit SPS) 100%
Ausfallsicherheit wirst du nie bekommen, aber so fällt eine Baugruppe
aus und du kannst sie problemlos tauschen.
Das Spiel geht ja mit dem Controller weiter. Woher weißt du, dass der
einen Fehler richtig erkannt hat? Es könnte ja der Controller defekt
sein.
Das Stichwort heißt: mehrkanalig
rtfm schrieb:> Und wenn du systematische Fehler in der HW ausschließen willst, dann> nimmst du noch zwei verschiedene Controller.
Es sind sogar drei in meinem Fall!
Zwei unterschiedliche die als Com-Interface an CAN hängen sollen und ein
FPGA, der dreifach redundante Software abarbeitet...
Detlef Kunz schrieb:> Was passiert, wenn der FPGA ausfällt?
Also es gibt ZWEI µCs (jeweils eins mit hoffentlich fault-tolerant CAN)
und ein FPGA.
Der FPGA hat mit Absicht kein Interface! Die µCs könnten aber Ihren
"CAN-Buffer" dem FPGA zur Verfügung stellen.
Alle "Programmierbaren" laufen auf Zeit Redundanz (also machen alles
mindestens zwei mal nacheinander).
Sollte ein µC oder der FPGA ausfallen, ist das zwar kritisch für die
zukünftige Ausfallsicherheit - es kann aber die ihm zugeteilte Aufgabe
erfüllen. -> Es geht halt im Übertragenem Sinne sie "Kontrollleuchte" an
:-)
Rafal schrieb:> Vielleicht eine Dumme Frage,>> aber was haltet ihr von einem TMR-CAN-Voter, wie im Anhang gezeigt?> Ob Sowas klappen würde?
Ob der einzelne & mit seinem zusätzlichen Propagation-Delay stört..?
Die gesamte Logikschaltung könnte auch das Propagation-Delay im CAN
stören, wenn ich so an das ACK am ende denke.. müssten halt schnelle
Gatter sein..
Aber Mbit CAN willst du in deiner Anwendung wohl eh nicht?
Ich frage mich auch, ob du nicht vielleicht erkennen können willst, ob
sich ein Fehler ankündigt? Mit der Vergatterung kriegst du ja nix mehr
mit..
Major Krampas schrieb:> Der Ausfall der Anlage muß aber unbedingt an 2 Stellen gemeldet werden,> falls einer der Beobachter eingeschlafen sein sollte...
Da will man man ein seriöses Konzept und dann das...
Aja, es gibt das komplette System noch ein zweites mal als "Backup".
Als Cold-Spare.
Auf dieses wird umgeschaltet, wenn:
- mind. ein "Programierbarer" der drei in einem System Ausfällt
- ein System neu gestartet/gebootet wird -> Behebt manchmal schon Fehler
- Diagnose eines Systems
- Übertemperatur eines Systems / Abkühlzeit
- das System länger als 300msec nicht mehr geantwortet hat.
Das komplette System verkraftet "Ausfallzeit" von max 800msec
dunno.. schrieb:> Aber Mbit CAN willst du in deiner Anwendung wohl eh nicht?
Richtig!
250k Busfrequenz