Fehlerschaltung für BUS-System erstellen

Begonnen von Inferno, 28. August 2017, 11:56:10

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Inferno

Hallo,

Da ich ja nun im 2. Technikerjahrgang (KFZ-Technik) bin und nun die Projektarbeit ansteht, hab ich mir überlegt eine CAN-Datenbus-Modellwand mit Fehlerschaltungen zu bauen.

Die Steuergeräte werden von einem Schlachtfahrzeug genommen. Mögliche Fehlerbilder wären: Unterbrechung von CAN-Low / High, Kurzschluss High/Low, Kurzschluss nach Masse, Kurzschluss nach Plus, erhöhter Leitungswiderstand, ggf. auch noch mehr.

Problem an der Sache ist nun, wie ich eine Schaltung konstruiere die nur einen Fehler gleichzeitig zulässt, also zumindest dass kein Kurzschluss nach Masse/Plus gleichzeitig schaltbar ist.

Überlegung wäre ein Mikroprozessor dazu, allerdings habe ich keine Ahnung wie man diesen programmiert und welchen man benutzt dafür. Gibt es da Tutorials? Kennt sich einer damit aus?

Vielen Dank schonmal!

Grüße


PS2 V7 M.I 80GB WD
PS2 V13 Crystal 2.0Pro
Xbox V1.1 mit originalem DuoX2
NDS + Flashme V7 + EZ FLASH IV 512MB

Xbox360

RalleBert

Hmm, wieviele Fehler insgesammt willst Du denn simulieren? Das wäre ja dann auch interessant zu wissen, um eine anwendbare Lösung zu finden.
Idee: Man könnte es ganz einfach mittels Steckbuchsen machen, da muß man dann halt aufpassen, das man keinen Kurzschluss schaltet. Ansonsten mit verriegelten Relais, um ohne Programmieraufwand davon zu kommen, eventuell Logikgatter.

- veni, vidi, ferruminavi -
- ich kam, ich sah, ich l?tete -

Inferno

Also Fehler Ingesamt dürften sich so auf 8 belaufen. Eventuell auch 10, muss ich noch morgen mit dem Kollegen genau besprechen.

Ich les mich auch gerne in die Materie ein, Abgabedatum ist der 31.01.2017, somit ist da auch noch Zeit und zwischendurch auch Ferien. Daran solls nicht scheitern, wenn es den mit Mikroprozessor am besten ginge.

Steckbuchsen scheiden aus, da die Azubis 99,9% einen Kurzschluss damit bauen und somit mehrere Bauteile töten werden. Also wenn Steckbuchsen, dann nur um die Leitungsunterbrechung zu Simulieren.



PS2 V7 M.I 80GB WD
PS2 V13 Crystal 2.0Pro
Xbox V1.1 mit originalem DuoX2
NDS + Flashme V7 + EZ FLASH IV 512MB

Xbox360

Takeshi

Logik-Gatter sind schon keine so schlechte Idee. Du kannst einen MOSFET nach Masse schalten und einen zur Versorgung. Du kannst dann den Pegel beider MOSFETs mit einem Logikgatter äußeren. Nehmen wir als Beispiel den für Masse. Du nimmst ein externes Signal (high oder low) für diesen MOSFET, gibst es auf ein Logikgatter und gehst mit dem Ausgang auf den MOSFET. Außerdem gibst du den Ausgang des Logikgatters für den MOSFET an der Versorgung auch noch mit auf das Logikgatter des Masse- MOSFETs. Nur wenn das direkte Ansteuersignal des oberen "aus" ist, lässt sich der untere einschalten. Ich kann das, wenn du magst, auch später kurz aufzeichnen.
So kannst du verschiedene Szenarien simulieren und verhinderst direkt, dass mehrere an sind, die nicht gleichzeitig an sein dürfen. Nachvollziehbar ist das auch leichter als mit einem Mikrocontroller.

Inferno

Das klingt gut! Da würde der Programmieraufwand entfallen und ich kann keinen direkt Kurzschluss von Masse und Plus herstellen.

Um die Skizze würde ich dich bitte, ich kann mir das zwar schon vorstellen, allerdings mit der Skizze schon Skizzen anfertigen wie ich mir das später vorstelle.

Danke!


PS2 V7 M.I 80GB WD
PS2 V13 Crystal 2.0Pro
Xbox V1.1 mit originalem DuoX2
NDS + Flashme V7 + EZ FLASH IV 512MB

Xbox360

Takeshi

Ich kam bisher noch nicht dazu, aber das kommt noch.

Takeshi

So, habe es nun einmal als Blockschaltbild gezeichnet, siehe Anhang.

Signal 1 und 2 sind deine Ansteuersignale-um Fehler zu simulieren.

Jeder Logik-Block geht auf einen MOSFET und hat als Eingang (A) eines der erwähnten Steuer-Signale. Weitere Eingänge sind die Ausgänge anderer Logik-Blöcke, deren Zustand einen Einfluss auf diesen Block haben soll. In diesem einfachen Fall ist es der jeweils andere Block. Wenn du aber noch weitere Blöcke hast (zum Beispiel Kurzschluss dieses Signals zu anderem Bus-Signal oder Kurzschluss des anderesn Bus-Signals gegen Vcc/GND), können die ebenfalls darauf einwirken, müssen aber nicht.

Der MOSFET stellt eine Brücke zwischen den beiden Anschlüssen dar, fungiert als schalter.

Die Logik für die beiden Blöcke ist hier natürlich (erst mal) gleich. Der Ausgang Q soll logisch 1 sein, wenn A ebenfalls 1 und B dagegen 0 ist, andernfalls soll der Ausgang 0 sein. In Programmiersprache wäre das
Q = A & !B
(A und nicht-B)
Du brauchst also ein AND-Gatter mit zwei Eingängen und einen Invertierer für B. Ein Invertierer ist ein Schmitt-Trigger.
Jetzt stellt sich noch die Frage, ob du einen P-MOS oder N-MOS verwendest, oder gar einen Analogschalter. Bei dem MOSFET 2 gegen GND kannst du super einen N-MOS verwenden, bei dem MOSFET 1 gegen Vcc wird es schwieriger, da das Ansteuersignal ja höher sein muss als das Source-Potential und Source wäre auf dem Signal, kann damit schwanken und eventuell sogar größer werden als das digitale Signal des Logik-Gatters. Aber das Problem hast du unabhängig davon, ob du das mit Logik-Gattern oder einem Mikrocontroller realisierst.
Ein Analog-Schalter hat den Vorteil, dass er richtungsunabhängig ist, du kannst immer einen High-Pegel auf den Eingang geben, die Pegel der Ausgänge sind egal, sollten nur zwischen GND und Vcc liegen.

(Hab mir noch das originale Diagramm-Bild hinzugefügt, falls ich noch was ändern muss)

Inferno

Danke!

Sehe ich das richtig, dass ich als Signal 1 und Signal 2 einfache Kippschalter nutzen könnte? Also für das Ansteuerungssignal der Logik-Bausteine?

Gibt es ein ein gutes Simulationsprogramm für die Schaltung? In der Schule nutzen wir Yenka, allerdings weiß ich nicht ob damit der Schaltplan + Testlauf simulierbar wäre.

Ob P-MOS oder N-MOS, der BUS liefert Spannungsspitzen von ~4-5V. Ich habe allerdings 5V und 12V zur Verfügung, da ich das ganze mit PC-Netzteil bestromt werden soll.



PS2 V7 M.I 80GB WD
PS2 V13 Crystal 2.0Pro
Xbox V1.1 mit originalem DuoX2
NDS + Flashme V7 + EZ FLASH IV 512MB

Xbox360

Takeshi

Du kannst für die Signale einen Kippschalter oder auch Taster verwenden, einen Jumper, was du magst. Wen du etwas verwendest, das einen Kurzschluss macht (also genannte Dinge), dann setzt du am besten einen Widerstand an das Signal gegen GND (Pull-Down-Widerstand genannt), der kann 10 kΩ haben. Mit einem Schalter schließt du dann das Signal mit der Versorgungsspannung kurz. So hast du immer einen definierten Pegel. Mit einem Kippschalter zwischen zwei Pegeln umzuschalten ist nicht sicher, da die Schalter prellen und manche für kurze Zeit gar nichts verbinden.

Zur Schaltungssimulation nutze ich meistens LTSpice.

Die meisten Logik-Bausteine gehen eh nur bis 5 V.

Inferno

Also, der Prototyp der Wand hab ich erstmal fertiggestellt. Funktioniert soweit auch. Nun gehts ans bestellen für die Fehlerschaltungen.

Ich würde das ganze nun so Aufbauen:

Unterbrechung CAN-LOW -> Wippschalter
Unterbrechung CAN-High -> Wippschalter
CAN-LOW mit Widerstand -> Wippschalter mit 300Ohm Widerstand
Kurzschluss High/Low -> Wippschalter
Kurzschluss High -> VCC/GND -> wie von dir beschrieben.
Kurzschluss Low -> VCC/GND -> wie von dir beschrieben.

Realisiert hätte ich das nun mit einer Lochrasterplatine, IC_GATE_AND_2_IN_NC7SZ08M5X, dem Pulldown Widerstand mit 10kOhm + Wippschalter an Logic Eingang A.

Das IC werde ich 2x benötigen wenn ich das richtig sehe? Welchen Mosfet nehme ich nun am besten? Der Schmitt-Trigger fehlt wohl auch noch.

Hast du da noch n Tipp?

Danke!


PS2 V7 M.I 80GB WD
PS2 V13 Crystal 2.0Pro
Xbox V1.1 mit originalem DuoX2
NDS + Flashme V7 + EZ FLASH IV 512MB

Xbox360

Takeshi

Dabei gibt es noch ein kritisches Szenario. Du Kannst eine Datenleitung gegen Masse, die andere gegen Vcc kurzschließen und gleichzeitig die beiden Datenleitungen kurzschließen, womit du einen Kurzschluss der Versorgung hättest. Da musst du wissen, ob du diesen Fehler abfangen willst.

Um zu entscheiden, welche MOSFETs du da verwenden kannst, müsste man wissen, was für ein maximaler Strom bei Kurzschluss fließt. Als Kleinsignal-MOSFET kannst du den BSS123 (N-MOS) und BSS84 (P-MOS) verwenden, das sind Wald-und-Wiesen-Transistoren.

Der MOSFET 1 müsste ja ein P-MOS sein, heißt er schaltet, wenn er auf LOW gezogen wird. MOSFET 2 ist ein N-MOS und schaltet durch, wenn er HIGH ist.
Damit darf die Logik 1 nur dann eine 0 ausgeben, wenn B 0 ist. Da wäre es schlau das Signal A low-aktiv zu machen. Dann wäre das ein OR-Gatter.
Die Logik 2 dagegen darf nur dann 1 ausgeben, wenn B 1 ist. Hier ergibt es Sinn den Eingang A high-aktiv zu machen, womit hier ein AND-Gatter rauskommt.

Hier findest du die Bezeichnungen der Logikgatter.
74HC1G08 und 74HC1G32 wären ja jetzt optimal für dich, aber weiß nicht, ob du mit dem Gehäuse was anfangen kannst.

Inferno

Stimmt, bei den Szenario bräucht ich wohl vorher noch ein NAND-Gatter, damit nur eines zeitgleich geschaltet werden kann?  Wenn ich nach der Logik-Tabelle gehe wäre das Ja:

Kein Fehler -> Signal
Fehler 1 an Fehler 2 aus -> Signal
Fehler 2 an, Fehler 1 Aus -> Signal
Fehler 1 + 2 an -> kein Signal.

An welche Pins würde den welches Signal am P-MOS kommen? Damit ich mir mal Handschriftlich einen Schaltplan skizzieren kann. Hatte mit MOSFET nie viel zu tun.

Der Kurzschlussstrom wird denke ich nicht hoch sein, da ja keine richtigen Verbraucher mit dran hängen. Am besten aber den Kurzschluss mal mit Multimeter messen?

Das Gehäuse ist denk ich kein Problem, notfalls muss man eben eine Platine entwerfen. Wird auch noch irgendwie gehen.


PS2 V7 M.I 80GB WD
PS2 V13 Crystal 2.0Pro
Xbox V1.1 mit originalem DuoX2
NDS + Flashme V7 + EZ FLASH IV 512MB

Xbox360

Takeshi

Entschuldige, dass ich noch nicht geantwortet habe, war mir bisher zu komplex, so dass ich dafür noch keine Zeit gefunden habe. Kommt aber noch, Tab ist offen.

Inferno

Kein Problem, bin momentan eh erst daran das ganze Gehäuse zu bauen und die CAD-Zeichnung für das Gehäuse fertigzustellen, allerdings muss ich am 31.01. die Ausarbeitung und das Projekt abgeben, also falls du noch eine Idee hast, langsam wirds zeitlich knapp  ;D

Oder wird das ganze dann doch mit Mikrocontroller einfacher?


PS2 V7 M.I 80GB WD
PS2 V13 Crystal 2.0Pro
Xbox V1.1 mit originalem DuoX2
NDS + Flashme V7 + EZ FLASH IV 512MB

Xbox360