Ich bitte euch hier mal um Hilfe für ein Trouble-Shooting-Problem, das ich habe. Die Schaltung besteht aus einem µC, der verschiedene Eingangsbedingungen erhält und über eine State-Machine daraus zwei Ausgangswerte macht, mit denen mechanische Kupplungen geschaltet werden. Also zum Beispiel so: Schalte Kupplung eins, WENN Drehzahlsensor 1 länger als 3 Sekunden 0 UND Schalter 17 an UND Schalter 25 aus UND Öltemperatur > 40 °C. Sowas in der Art. Das ganze ist nach höchsten Sicherheitsstandards zugelassen. Weil wir die Software nicht auf den gewünschten Level zertifizieren konnten, haben wir um zwei wichtige Eingabewerte noch diskrete Logik außenrum gebaut und die mit dem µC-Ausgang ver-"und"-et. Das Produkt funktioniert beim Kunden in hundertfacher Ausführung seit Jahren ohne einen einzigen Fehler. Vor kurzem habe ich allerdings eine Platine bekommen, die komplett verrückt spielt. Das Ding schaltet die Kupplung zu, wenn es das nicht soll, und schaltet sie mittendrin ohne Grund ab. Es liegt NICHT an der diskreten Logik, denn diese hat in unserem Fall das schlimmste verhindert. Mein erster Schritt war, die Firmware auszulesen und gegen unsere Kopie zu verifizieren - jedes einzelne Bit stimmt. Der zweite Schritt war dann, ein Test-Programm hochzuladen, mit dem ich die einzelnen Ein- und Ausgänge abfragen/setzen kann, um den µC selbst zu überprüfen. Alles ok. Trotzdem spielt diese Platine verrückt. Das Problem lässt sich zwar schnell lösen (neue Platine mit neuem µC zum Kunden), jedoch sind wir sehr daran interessiert, die Ursache herauszufinden, um möglichen zukünftigen Ausfällen vorzubeugen. Limitiert haben wir die Lebensdauer übrigens auf 6 Jahre - wegen des Flash-Speichers. Im Moment sind wir knapp bei 5 Jahren. Allerdings spricht gegen diese Ursache, daß das Programm noch korrekt im Speicher steht. Prozessor ist ein ATMEGA48. Wer hat Ideen?
1. Kalte Lötstellen 2. gealterte Elkos (muss man nicht unbedingt auf den ersten Blick erkennen können)
>Mein erster Schritt war, die Firmware auszulesen und gegen unsere Kopie >zu verifizieren - jedes einzelne Bit stimmt. Der zweite Schritt war >dann, ein Test-Programm hochzuladen, mit dem ich die einzelnen Ein- und >Ausgänge abfragen/setzen kann, um den µC selbst zu überprüfen. Alles ok. Mein erster Schritt wäre gewesen einfach den uC zu tauschen. Dann sieht man doch ob es wieder geht oder nicht, und man kann diesen ausschließen. Auslesen oder neuprogrammieren ist ja wohl sowas von "nicht aussagekräftig".
1. Magnus punkten stimm ich zu, kommt schon öfter ma vor. 2. Ich hatte es jetzt schon öfters, das eine Schaltung mit einem Mega ne zeitlang funktioniert hat, dann irgendwas unerklärliches passiert ist und danach der Mega nur noch Mist gebaut hat. Beim Auslesen des Programm war aber alles in Ordnung. Trotzdem war der Mega kaputt.. muss zumindest so gewesen sein, da ein austausch Mega mit dem selben Programm auf der selben Platine danach alles richtig gemacht hat. Also wenn es geht, ma nen neuen Mega mit frischem Programm rein und ausprobieren. MfG Max
Funktioniert die Platine nur beim Kunden oder auch bei euch in der Firma nicht? Dann könnte man schon mal äußere Einflüsse ausschließen, wie z.B. ein Gerät in der Nähe das nicht ausreichenden entstört ist. Mich wurde mal dein Layout der Spannungsversorgung und die Beschaltung der Eingänge interessieren. Lass mal den µC kontinuierlich einen Ausgang takten alle anderen Pin als Ausgänge konfigurieren, wenn er dann nicht aus dem Tritt kommt weißt du das er sich etwas über die Eingänge einfängt. Und kannst dann hier näher nach schauen.
Wird bei der Schaltung irgendein Speicher zur speicherung von Daten/Variablen verwendet? mfg
Wenn Ram/EEPROM im Prozessor defekt ist, kann es auch ganz üble Probleme geben. Gerade beim Ram, wo ja der Stack drüber läuft. Ich denke, jeder, der häufiger Microcontroller einsetzt, hat irgendwann mal so einen verrückten Controller erlebt. Ich meine damit Controller, die garantiert Dinge tun, die man niemals im Leben so programmiert hat. Oder die jahrelang geplant funktionieren und dann manchmal was ganz anderes tun.
Hall Gerhard, wenn das System nur mit der diskreten Sicherheitslogic zugelassen wurde hat das schon einen Grund! Vor allem die alten AVR's haben da enorme Probleme. Verwendet Ihr den internen EEPROM Speicher? Warum genau habt Ihr die Zertifikation nicht erhalten? Leg doch mal den Schaltplan hier herein! gruss Gerhard schrieb: > Ich bitte euch hier mal um Hilfe für ein Trouble-Shooting-Problem, das > ich habe. > > Die Schaltung besteht aus einem µC, der verschiedene Eingangsbedingungen > erhält und über eine State-Machine daraus zwei Ausgangswerte macht, mit > denen mechanische Kupplungen geschaltet werden. Also zum Beispiel so: > Schalte Kupplung eins, WENN Drehzahlsensor 1 länger als 3 Sekunden 0 UND > Schalter 17 an UND Schalter 25 aus UND Öltemperatur > 40 °C. Sowas in > der Art. > > Das ganze ist nach höchsten Sicherheitsstandards zugelassen. Weil wir > die Software nicht auf den gewünschten Level zertifizieren konnten, > haben wir um zwei wichtige Eingabewerte noch diskrete Logik außenrum > gebaut und die mit dem µC-Ausgang ver-"und"-et. > > Das Produkt funktioniert beim Kunden in hundertfacher Ausführung seit > Jahren ohne einen einzigen Fehler. Vor kurzem habe ich allerdings eine > Platine bekommen, die komplett verrückt spielt. Das Ding schaltet die > Kupplung zu, wenn es das nicht soll, und schaltet sie mittendrin ohne > Grund ab. Es liegt NICHT an der diskreten Logik, denn diese hat in > unserem Fall das schlimmste verhindert. > > Mein erster Schritt war, die Firmware auszulesen und gegen unsere Kopie > zu verifizieren - jedes einzelne Bit stimmt. Der zweite Schritt war > dann, ein Test-Programm hochzuladen, mit dem ich die einzelnen Ein- und > Ausgänge abfragen/setzen kann, um den µC selbst zu überprüfen. Alles ok. > > Trotzdem spielt diese Platine verrückt. Das Problem lässt sich zwar > schnell lösen (neue Platine mit neuem µC zum Kunden), jedoch sind wir > sehr daran interessiert, die Ursache herauszufinden, um möglichen > zukünftigen Ausfällen vorzubeugen. > > Limitiert haben wir die Lebensdauer übrigens auf 6 Jahre - wegen des > Flash-Speichers. Im Moment sind wir knapp bei 5 Jahren. Allerdings > spricht gegen diese Ursache, daß das Programm noch korrekt im Speicher > steht. > > Prozessor ist ein ATMEGA48. Wer hat Ideen?
Moin Jungs, erstmal danke für die zahlreichen Tips. Ich sitze gerade vor der Platine und forsche weiter. > 1. Kalte Lötstellen Habe gerade alles nachgelötet -> Fehler bleibt. > 2. gealterte Elkos (muss man nicht unbedingt auf den ersten Blick > erkennen können) Elkos gibt es (aus gutem Grund) keine. > Funktioniert die Platine nur beim Kunden oder > auch bei euch in der Firma nicht? Fehler ist hier reproduzierbar. > Mich wurde mal dein Layout der Spannungsversorgung > und die Beschaltung der Eingänge interessieren. LM2674 Schaltregler auf 5V, lokal mit R-C entkoppelt. Alle Eingänge werden einzeln über Komparatoren mit Hysterese getrieben. ESD, EMV und Filterung geschieht vor den Komparatoren. > Wird bei der Schaltung irgendein Speicher zur speicherung von > Daten/Variablen verwendet? Nur die Register vom ATMEGA48 und ein wenig RAM für den Stack. > Warum genau habt Ihr die Zertifikation nicht > erhalten? Leg doch mal den Schaltplan hier herein! Schaltplan kann ich nicht posten. Das Problem bei der Zertifizierung war, daß keine Erfahrungen mit dieser Prozessorfamilie vorlagen. Wir haben den erzeugten Maschinencode überprüft, aber das war noch nicht genug. Ehrlich gesagt war es mir als Entwickler auch etwas heikel, mich alleine auf den µC zu verlassen. So haben wir zusammen mit dem Kunden für das Schalten der Kupplungen Bedingungen entwickelt, die schlimme Folgen haben und solche, die in der Praxis relativ harmlos sind. Der µC übernimmt die logische Verknüpfung aller Eingänge, die Logik außenrum hat nur zwei Eingänge und verhindert zum Beispiel, daß die Kupplung (formschlüssig!) bei Drehzahl betätigt wird.
Nachdem ich alles andere ausgeschlossen habe, kann ich nun definitiv sagen, daß der ATMEGA48 physikalisch defekt ist. Ich habe ihn ausgelötet und auf eine Experimentierplatine gesetzt. Ein schnell geschriebener RAM-Test läuft ohne Probleme. Die Register sind ebenfalls ok. Die Software läßt sich weiterhin ohne Fehler programmieren und auslesen. Auch jeder einzelne I/O-Port funktioniert wie erwartet. Aber: Von Zeit zu Zeit spielt der gesamte ATMEGA völlig verrückt und schaltet wild Ausgäng an und aus. Das ganze scheint unabhängig von äußeren Einflüssen zu sein und so wie es aussieht, läuft das Programm im Hintergrund unbeeindruckt weiter. Wir warten jetzt erst einmal ab, ob es noch weitere Ausfälle gibt. Eine neue Version der Schaltung gibt es schon seit zwei Jahren, diese kommt ohne µC aus und wird in der Produktion von neuen Steuergeräten schon eingesetzt. Notfalls werden wir alle alten Steuergeräte durch die neue Version ersetzen. Aber interessant ist das ganze schon.
Habt ihr Atmel deswegen mal angeschrieben? Würde mich interessieren, was die dazu sagen. Gruß, Sebastian
mit welcher Spannung versorgst du den Schaltregler könnte es sein das es hier mal zu größeren Ausreissern gekommen ist und er das nicht vollständig ausregeln konnte. Ich habe keine Ahnung wie ein AVR auf kurze Überspannung im niedrigen Bereich 1-2V reagiert. Vielleicht willst du ja einen AVR opfern und tust der normalen Versorgungsspannugn mal 6-7V Impulse überlagern um zu sehen ob ihn das vielleicht auch mit nimmt. Ich schalte meinen Linearregler auch immer eine kleine Filterung aus 100µH und 15V Supressordiode vor um wirklich sicherzugehen. Habe bei mir nämlich den Fall das ein Stromstoßrelais ab und an einen 1000V Impuls erzeugt den ich dann auch vermindert auf der Sekundärseite des Trafos beobachten kann. In einer Firma mit größen Geräten / Maschinen wird das sicherlich nicht selten vorkommen. Ist der µC jetzt fest verlötet oder kannst du probeweise einen anderen auf die Platine setzen.
In Richtung Schaltnetzteil und dessen Durchlässigkeit für äußere Störungen habe ich auch schon gedacht. Das Netzteil wurde nach DO-160 für ein Bordnetz von 28V DC getestet. Da wir hier sehr interessiert daran sind, woran es gelegen hat, werden wir morgen mal mit einem Satz ATMEGAs herumprobieren. Alte Originalplatinen mit ATMEGAs mit gleichem Datecode haben wir hier noch zu hunderten liegen.
Du könntest es auch zum Fraunhofer Institut schicken und die schleifen/ätzen den Atmel dann mal auf. Damit kann man feststellen, ob wodurch der fehler verursacht wird, z.B. überspannung oder so. Kostet halt ein bisschen was ... Bernhard
@ Bernhard Mayer (bernhard84) >Du könntest es auch zum Fraunhofer Institut schicken und die >schleifen/ätzen den Atmel dann mal auf. Na bevor man das macht, sollte man systematisch testen. Das kostet aber auch, nämlich Zeit und damit Geld. Der Chef wird sagen. OK, die Hardware hat die Katastrophe verhindert, gut so. Es ist ein Einzelfall, gut so. Wegschmeissen und durch neue ersetzen, fertig. MFG Falk
Vielleicht ein Einzelfall, vielleicht aber auch der erste Vorbote einer ganzen Reihe von Ausfällen. Man weiß das ja nie so genau. Da dich dein Chef da offensichtlich mindestens zwei komplette Tage dran forschen lässt, obwohl in der Produktion schon eine neue Version deiner Schaltung aufliegt, gleichzeitig das Stichwort DO-160 fiel, scheint es in Richtung Luftfahrt zu gehen. Da wäre es dann evtl. schon interessant, möglichst frühzeitig abzuklären, woran es gelegen hat und ob es voraussichtlich ein Einzelfall bleiben wird. Wird der 28V-DC-Bus aus einem Generator gespeist? Wenn ja, wie sichert ihr den Schaltregler gegen Über- und Unterspannung ab? Nach welcher Kategorie DO-160 wurde getestet? Ich tippe auch intuitiv auf einen durch Überspannung angetöteten µC. Es könnten aber auch extrem tiefe oder hohe Temperaturen einen solchen Fehler auslösen.
Gerhard schrieb: > Aber: Von Zeit zu Zeit spielt der gesamte ATMEGA völlig verrückt und > schaltet wild Ausgäng an und aus. Das ganze scheint unabhängig von > äußeren Einflüssen zu sein und so wie es aussieht, läuft das Programm im > Hintergrund unbeeindruckt weiter. Du meinst, dass nur die Ausgänge wild umschalten unabhängig vom Prozessorkern. Woran erkennst du, dass das Programm noch weiterläuft?
ist in der Luftfahrt nicht sowieso alles doppelt vorgeschrieben als z.B. 2 Potis und 2 µC die beide die gleichen Werte ausspucken müssen...?
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.