Hallo zusammen, ich habe eine ECU, die über einen PMOS (MTP2955) ein Magnetventil gegen Masse ansteuert. Die Last sitzt ganz normal am Drain und Source ist mit U_Bat verbunden. Beim Aufstarten macht die Software nun etwas Seltsames: Sie steuert den PMOS Transistor an und prüft, ob sich U_Bat erhöht (um mindestens 3V). Dann schaltet sie den PMOS ab und prüft, ob die Spannung wieder auf den Ursprungswert sinkt (plus ca. 1V Reserve)! Falls beides zutrifft, wird ein Fehler gesetzt. Warum wird das gemacht? Vermutlich soll geprüft werden, ob über das Magnetventil ein Strom injiziert wird. Ich verstehe aber nicht, wie das funktionieren soll: (1) Wo soll der Strom herkommen? Im Fahrzeug gibt es nur eine Bordnetzspannung. (2) Mal angenommen, es gibt tatsächlich irgendwo ein höheres Spannungsniveau (bspw. weil die ECU Unterspannung hat, der Rest des Bordnetzes aber nicht) und mal angenommen, das Magnetventil hat einen Kurzschluss dahin: Der PMOS wird doch so oder so leitend, da an Drain nun immer die erhöhte Spannung anliegt, am Gate aber max. U_Bat (was höheres kennt die ECU ja nicht). Folglich öffnet der PMOS und U_Bat steigt - und zwar unabhängig von der Ansteuerung! Das heißt, das testweise Ansteuern der Software würde gar nichts bringen. (3) Ergänzend hat der PMOS auch noch die Body Diode, die den vorherigen Punkt (2) unterstützt. Irgendwo habe ich einen Denkfehler drin. Hat jemand eine Tipp?
:
Bearbeitet durch User
> Aufstarten Ist das das Gegenteil von zulanden? > Hat jemand eine Tipp? Ohne einen korrekten(!) Schaltplan in verständlicher Form sicher nicht.
Ben B. schrieb: >> Hat jemand eine Tipp? > Ohne einen korrekten(!) Schaltplan in verständlicher Form sicher nicht. Mei was schwadronierst Du hier schon wieder? Musst Du wirklich in jedem Thread einen gehaltlosen Beitrag abkippen? Steffen H. schrieb: > Irgendwo habe ich einen Denkfehler drin. Hat jemand eine Tipp? Auf welcher Seite vom PMOS wird denn gemessen? Kann es sein, dass die Schaltung prüfen soll, ob die Pumpe überhaupt angeschlossen ist? Ich glaube Drain und Source sind bei Deiner Darstellung falsch herum. Woher kennst Du die Softwareprüfung?
Martin S. schrieb: > Auf welcher Seite vom PMOS wird denn gemessen? Es wird die Betriebsspannung gemessen. Der Fehlerspeichereintrag erfolgt, wenn sich die Betriebsspannung beim Ansteuern des PMOS erhöht. Martin S. schrieb: > Kann es sein, dass die > Schaltung prüfen soll, ob die Pumpe überhaupt angeschlossen ist? Das wird bereits an anderer Stelle geprüft. Ich will es trotzdem nicht ausschließen. Nur: Wie soll das mit der beschriebenen Methode funktionieren? Martin S. schrieb: > Woher kennst Du die Softwareprüfung? Aus dem Quellcode. Irgend eine Idee?
Steffen H. schrieb: > Martin S. schrieb: >> Auf welcher Seite vom PMOS wird denn gemessen? > > Es wird die Betriebsspannung gemessen. Der Fehlerspeichereintrag > erfolgt, wenn sich die Betriebsspannung beim Ansteuern des PMOS erhöht. Dann gibt es entweder ein Szenario, bei dem das Ansteuern des Ventils die Betriebsspannung erhöht, oder es gibt Eckdaten der Hardware, die Du uns nicht mitteilst bzw. selbst nicht kennst. > Martin S. schrieb: >> Kann es sein, dass die >> Schaltung prüfen soll, ob die Pumpe überhaupt angeschlossen ist? > > Das wird bereits an anderer Stelle geprüft. Ich will es trotzdem nicht > ausschließen. Nur: Wie soll das mit der beschriebenen Methode > funktionieren? So ergibt das keinen Sinn. Aus Spaß wird der Programmierer das aber wohl kaum implementiert haben. > Irgend eine Idee? Entweder hast Du irgendwas nicht verstanden, Du verpasst irgendwo etwas wichtiges oder Du liest den Quellcode falsch oder der Programmierer hatte einen Knoten im Gehirn und hat die Berechnung falsch aufgeschrieben. Wir werden das hier nicht nachvollziehen können.
Steffen H. schrieb: > Beim Aufstarten macht die Software nun etwas Seltsames: Sie steuert den > PMOS Transistor an und prüft, ob sich U_Bat erhöht (um mindestens 3V). > Dann schaltet sie den PMOS ab und prüft, ob die Spannung wieder auf den > Ursprungswert sinkt (plus ca. 1V Reserve)! Falls beides zutrifft, wird > ein Fehler gesetzt. Könnt es nicht sein, dass die ECU prüft ob ein Kurzschluss beim Magnetventil vorliegt, und ob die Versorungsspannung nicht einknickt (Falls Batterie (fast) leer)?
Martin S. schrieb: > Entweder hast Du irgendwas nicht verstanden, Du verpasst irgendwo etwas > wichtiges oder Du liest den Quellcode falsch oder der Programmierer > hatte einen Knoten im Gehirn und hat die Berechnung falsch > aufgeschrieben. Ja klar, eins davon ist es. Und um Ersteres auszuschließen wende ich mich an Euch. Martin S. schrieb: > Wir werden das hier nicht nachvollziehen können. Warum nicht? Was fehlt Dir? Falls weitere Infos benötigt werden, versuche ich natürlich, sie zu liefern. Philipp G. schrieb: > Könnt es nicht sein, dass die ECU prüft ob ein Kurzschluss beim > Magnetventil vorliegt, und ob die Versorungsspannung nicht einknickt > (Falls Batterie (fast) leer)? Das war auch mein erster Gedanke und es wäre so naheliegend. Aber ich habe es mehrmals im Quellcode und auch im Debugger überprüft: es ist definitiv anders herum! Er steuert das Magnetventil an und prüft, ob die Spannung steigt! So und nicht anders herum. Leider. Eine Kurzschlussdiagnose gibt es, wie gesagt, auch. Sie findet aber an anderer Stelle statt.
Steffen H. schrieb: > Ja klar, eins davon ist es. Und um Ersteres auszuschließen wende ich > mich an Euch. Na, dann zeig doch mal den relevanten Ausschnitt im Quellcode... Oder ist der wieder super-geheim+?
Steffen H. schrieb: > Das war auch mein erster Gedanke und es wäre so naheliegend. Aber ich > habe es mehrmals im Quellcode und auch im Debugger überprüft: es ist > definitiv anders herum! Er steuert das Magnetventil an und prüft, ob die > Spannung steigt! So und nicht anders herum. Leider. Ok, und was steuert dieses Magnetventil? Wenn es während dem Anlassvorgang ausgewertet wird (~8V), oder kurz danach (Lichtmaschine, Ubat > 14.0) dann wäre das ja eine Möglichkeit.
c r schrieb: > Na, dann zeig doch mal den relevanten Ausschnitt im Quellcode... Oder > ist der wieder super-geheim+? Nein, wie kommst Du darauf? Ich bin nur der Meinung, dass ich ihn verstanden habe. Aber vielleicht habe ich ja wirklich etwas übersehen. Ich bin gespannt auf Deine RM! Es handelt sich übrigens um eine CPU32.
1 | D7.b = 0x01; |
2 | do
|
3 | {
|
4 | // Get ECU supply voltage for reference
|
5 | D3.w = RJURR[5]; |
6 | |
7 | // Drive EV 0
|
8 | PWM6B = 0x4F; |
9 | TPUPARCH6[3] = 0x005A; |
10 | TPUPARCH6[5] = 0x0000; |
11 | |
12 | // Wait for appr. 10 ms
|
13 | wait_ms(10); |
14 | |
15 | // Check behaviour of ECU supply voltage
|
16 | if(RJURR[5] > (D3.w + 0x1E)) |
17 | {
|
18 | RAM_62122++; |
19 | RAM_51002 |= 0x0080; |
20 | }
|
21 | else
|
22 | {
|
23 | RAM_62122 = 0x00; |
24 | RAM_55112 = 0x00; |
25 | D7.b = 0x00; |
26 | RAM_51002 &= 0xFF7F; |
27 | }
|
28 | |
29 | // Release EV 0
|
30 | TPUPARCH6[5] = 0x002F; |
31 | |
32 | // Check behaviour of ECU supply voltage
|
33 | if(RAM_62122 > 0) |
34 | {
|
35 | RAM_55110++; |
36 | wait_ms(50); |
37 | if(RJURR[5] < (D3.w + 0x0A)) |
38 | {
|
39 | if(RAM_55110 == 25) |
40 | D7.b = 0x00; |
41 | }
|
42 | else
|
43 | RAM_51002 &= 0xFF7F; |
44 | }
|
45 | }
|
46 | while(D7.b == 0x01); |
Philipp G. schrieb: > Ok, und was steuert dieses Magnetventil? Es steuert den Öldruck für eine hydraulische Kupplung. Philipp G. schrieb: > Wenn es während dem > Anlassvorgang ausgewertet wird (~8V), oder kurz danach (Lichtmaschine, > Ubat > 14.0) dann wäre das ja eine Möglichkeit. Die Diagnose wird beim Aufstarten der ECU durchgeführt (Klemme 15). Aber selbst wenn, bliebe es mir ein Rätsel, wie der Ausgang zum Magnetventil oberhalb der Bordspannung liegen sollte. Und auch wenn er das täte, warum wird dafür das Magnetventil angesteuert? Was ist das Ziel dieser Diagnose?
Steffen H. schrieb: > Es steuert den Öldruck für eine hydraulische Kupplung. Ist denn auf dem Hydrauliksystem überhaupt Druck drauf? Wird Klemme 15 während des Anlassvorgangs spannungsfrei geschaltet, sodass es nach dem Loslassen des Anlassers zu einem erneuten Einschalten der Betriebsspannung kommt? Letzterer Fall könnte sogar halbwegs plausibel sein, denn wenn nach dem Anlassvorgang die Boardspannung steigt (Boardspannung ohne Lichtmaschine ist niedriger als mit), dann weiß er, ob der Motor läuft. Handelt es sich um ein 24V Netz? Dann wären die 3-4V Spannungsdifferenz sogar plausibel!
Steffen H. schrieb: > Philipp G. schrieb: >> Könnt es nicht sein, dass die ECU prüft ob ein Kurzschluss beim >> Magnetventil vorliegt, und ob die Versorungsspannung nicht einknickt >> (Falls Batterie (fast) leer)? > > Das war auch mein erster Gedanke und es wäre so naheliegend. Aber ich > habe es mehrmals im Quellcode und auch im Debugger überprüft: es ist > definitiv anders herum! Er steuert das Magnetventil an und prüft, ob die > Spannung steigt! So und nicht anders herum. Leider. kann es sein das der Programmierer deswegen nicht zu befragen ist weil abwesend? (will jetzt nicht schreiben verstorben, gekündigt, abgehauen) solche SW durfte ich auch mal richten als ich in der Prüftechnik neu anfing. 1. Programmierer hatte Fehler drin, Messkarte nur einpolig kontaktiert, kann passieren, dumm halt nur das 10.000 Baugruppen ausgeliefert wurden, einige werden aber schon funktioniert haben. 2. Programmierer hatte gemogelt und nur Luftmessungen gemacht und wurde nach ausserhalb zum Abteilungsleiter befördert. Vor Programmfehler ist niemand sicher, nicht mal Windows und Linux
Martin S. schrieb: > Ist denn auf dem Hydrauliksystem überhaupt Druck drauf? Wird Klemme 15 > während des Anlassvorgangs spannungsfrei geschaltet, sodass es nach dem > Loslassen des Anlassers zu einem erneuten Einschalten der > Betriebsspannung kommt? > > Letzterer Fall könnte sogar halbwegs plausibel sein, denn wenn nach dem > Anlassvorgang die Boardspannung steigt (Boardspannung ohne Lichtmaschine > ist niedriger als mit), dann weiß er, ob der Motor läuft. Hmm, Klemme 15 bleibt intakt beim Anlassen. Es würde auch nicht erklären, warum die Software das Ventil ansteuert, denn das müsste sie dafür nicht. Im Gegenteil, es wäre sogar gefährlich, da die Kupplung dann stellt. Joachim B. schrieb: > kann es sein das der Programmierer deswegen nicht zu befragen ist weil > abwesend? Ganz genau. Die Software ist alt und der Autor nicht bekannt. Aber was hilfts, ich muss da durch. Mir macht es aber durchaus Spaß, Rätsel zu lösen. Nur bei diesem verstehe ich den Hintergrund nicht. Wobei ich inzwischen eine Idee habe... Joachim B. schrieb: > Vor Programmfehler ist niemand sicher, nicht mal Windows und Linux :-)
Steffen H. schrieb: > Im Gegenteil, es wäre sogar gefährlich, da die Kupplung > dann stellt. Nicht zwangsläufig. Eventuell will man damit den Gegendruck abbauen. Aber das sind jetzt alles Mutmaßungen. Sonst habe ich keine Ideen.
Steffen H. schrieb: >> Ok, und was steuert dieses Magnetventil? > > Es steuert den Öldruck für eine hydraulische Kupplung. Kannst Du weitere Details des Systems preisgeben? Ist das eine Kupplung die den zu startenden Motor kraftmässig mit irgendwas verbindet? Dann wäre folgendes *möglich*: 1. unter de Annahme das das anzukuppelnde system (noch) rotative energie hat (warum auch immer wir kennen das system nicht, im einfachen Fall ein großes schwungrad was sich noch dreht oder ein Hamsterrad wo der Hamster gerade läuft)... 2. unter der Annahme das dein Motor in diesem Moment aus ist (warum auch immer, ausgegangen oder lief nie) und das Magnetventil die Kupplung getrennt hat... -> Wenn Du in diesem Moment den Motor starten würdest (OHNE das es Deine Abfrage gäbe) bestünde die Möglichkeit jetzt durch die Kupplung den Motor Kraftmässig auf das noch drehende system aufzukuppeln. Vielleicht ist das nicht erwünscht oder gar eine gaanz schlechte idee?(wir kannen die Hintergründe ja nicht) -> Deine Abfrage würde durch betätigen der Kupplung die rotative Energie des unbekannten Systems auf den stehenden Motor bringen. evntl reicht die Trägheit oder die Kompression des Motors NICHT aus um das System zu bremsen/stoppen, der Motor würde also schnell genug drehen damit der Generator (Lichtmaschine) so schnell dreht das Ugen>Ubat+3V. Es fände also enegetisch Rückspeisung aus dem angekuppelten System in den Motor statt. Um zu erkennen ob das wirklich rückgespeiste Energie war(oder ob genau in diesem Moment jemand ein Ladegerät an die Batterie angeschlossen hat oder einen anderen großen Verbraucher vom der Batterie weggeschaltet hat und dadurch die SPannung wieder steigt) wird danach wieder ausgekuppelt und Ubat nochmal gemessen, wenn Die wieder kleiner ist dann lag Rückspeisung vor. Und In diesem Fall soll wohl ein Fehler abgelegt werden. Von weitem betrachtet scheint dieser Umweg über die Ladespannung des Generators nicht der einfachste Weg zu sein, aber ohne alle Details zu kennen kann man nicht sagen ob das der sicherste/billigste/zuverlässgste/einfachste/Patenfreie/coolste/sonstwas ?? weg ist.
:
Bearbeitet durch User
Ja, das ist eine hervorragende Idee! Es kann sich zwar nicht um mechanische Energie handeln, da nichts angetrieben wird. Aber stattdessen um Magnetische im Elektroventil. Insofern könntest Du goldrichtig liegen! Ich nehme inzwischen an, dass es sich um eine Diagnose der Masseverbindung handelt (Masseversatz). Danke für Deine und Eure Tipps! Steffen
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.