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?
>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.
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.
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?