So, eben abgeschlossen. Habe nicht wenig Zeit investiert. Siehe Download.
Zitat:
Zitat:
Oct-16-2013: JLog mit Castle Creations komplett überarbeitet: Firmwares R7x und 17x sowie auch, MPX-Telemetrie betreffend, Firmwares R63, 66, 163, 166, 93, 96, 103 und 106. JLog und Castle Link Live: Modifikationen, um zu verhindern, dass ein Castle ICE HV (mit Optokoppler) stochastisch den von JLog invertierten Gasimpuls missversteht. Anti-Hazard-Mechanismus + Integratoren, um JLog mehr resistent zu machen gegen falsche Impulse und Impulse mit falscher Zeitstellung (durch Erdschleifen etc.). — Geänderte Telemetrie Bundle in den Firmwares, – MPX, JETIv2 (Add-on) und Unidisplay nun nur noch im Bundle mit JR-Telemetrie (Major Releases R66, 76, 166, 176, 96, 106). — Neuer JLC 5.1.1.7, um das abzubilden (plus kleiner Bugfix). —— JLog with Castle Creations completely reworked: Firmwares R7x and 17x, as well as, concerning MPX telemetry, firmwares R63, 66, 163, 166, 93, 96, 103 and 106. JLog and Castle Link Live: Modifications to avoid that a Castle ICE HV (w/ opto-coupler) stochastically misunderstands throttle pulses inverted by JLog. Anti-hazard mechanism + integrators to make JLog more resistant against false pulses and pulses with stochastic wrong time setting (by ground loops etc). – Changed telemetry bundles in firmwares, – MPX, JETIv1 (add-on) and Unidisplay now only bundled with JR telemetry (major releases R66, 76, 166, 176, 96, 106). – New JLC 5.1.1.7 reflecting this (plus a little bugfix).
Was war das Erscheinungsbild?
Nun, zunächst gab es gar kein's, bzw. war kein spezifisches durch mich bemerkbar.
Ich hatte das vor geraumer Zeit implementiert, und es lief eben. Allerdings hatte ich immer ICE LV, mit BEC.
Dann gab es 1..2x Trouble, Erdschleifenverdacht, ich achtete aber auch gar nicht auf die Frage, ob es ein ICE HV ist im konkreten Falle, - in meinen Augen waren beide gleich bzgl. Castle Link Live, ICE LV und HV.
Dann wurde es zum ersten Mal verdächtig: Andreas ("helikopterfreund") hatte komische Fehllesungen durch JLog, z.B. utopische Drehzahlwerte im Stillstand. Das war ein ICE HV. Gleichzeitig hatte ich einen ICE LV von Andreas und konnte seine Probleme mit dem LV überhaupt nicht nachvollziehen. -- Wir machten dann so eine "Remote Entwicklung", er hat den ESC, ich code im Blindflug, - und dann war das gefixt. Nur im Ergebnis konnte ich keinen Zusammenhang herstellen, nur vermuten, dass es offenbar immense Exemplarstreuungen bei den CC mit Optokoppler (HV) geben kann. -- Letzteres erhärtete sich sukzessive anhand der Erfahrungen anderer User.
So richtig deutlich wurde es erst kürzlich durch weitere Erlebnisse der dritten Art von einem U.S. User mit ICE 120 HV, durch einen ICE2 HV 40, den ersten HV, den ich in die Hände bekam. Genauer gesagt, es waren zwei. Der erste hat partout meinen Gasimpuls stochastisch missverstehen wollen (willkürliche Anlauferscheinungen im Sekundenbruchteil, Stottern), er verabschiedete sich dann auch bald in die Ewigen Jagdgründe, - der zweite verhielt sich wesentlich ziviler mit JLog, war aber auch nicht koscher bzw. zufriedenstellend.
Somit konnten Linus und ich eingangs nur zwei Dinge konstatieren:
1. Ein ICE HV, also mit Optokoppler, verhält sich anders als ein ICE LV, ohne Optokoppler, mit BEC. Während es mit einem LV nie Probleme gab, konnte ein HV u.U. komische Effekte zeigen, und zwar in beide Richtungen, im Verständnis des Link Live Impulskinos durch JLog, im Verständnis des durch JLog zu invertierenden Gasimpulses durch den ICE HV.
2. Es gibt ganz offenbar Exemplarstreuungen bei den ICE HV. Je nach Glück oder Unglück des Käufers geht es von "problemloses Zusammenspiel mit JLog" über stochastische Ausreißer in durch JLog gelesene Daten und gelegentliche impulshafte Anlaufattitüden des CC, wenn er lange mit Gas Null an JLog steht (man muss drauf achten, um es zu bemerken), bis hin zu ständig und heftig springenden Datenwerten auch im Stillstand und teilweise sogar Stottern des CC im Lauf.
Nun ja.., man schaue sich mal die Steuerplatinen der CC an.. Das graust'n Toten, keine rgelmäßige Ausrichtung der Bauelemente, oft nicht richtig auf deren Pads, systematische Position eines Kondensators auf halb sieben. Nicht nur bei Deutschen Erbsenzählern fiele so was klar unter Ausschuss. Tja, nachdem man das (angeblich) in Kansas fertigte, geht so ein Elektronikschrott 1:1 in Kundenhände. Dass die Dinger preisgünstig sind, rechtfertigt nicht so eine megamiserable Fertigungsqualität. -- Was muss man da wohl hinsichtlich der Design-Qualität mutmaßen?..
Noch was Technisches:
- Im ICE HV sind zwei Optokoppler auf der Gasleitung, einer inbound für den Gasimpuls, einer outbound für den Datenimpuls, den der ESC im Protokoll "Castle Link Live" senden kann, wenn enabled per Setup Tool "Castle Link". Dann muss der Gasimpuls invertiert kommen, statt high-aktiv low-aktiv, was hier Aufgabe von JLog ist, schließlich muss er nach jedem Impuls auf den Datenimpuls des CC hören. Der HV hat kein BEC, die Elektronik im ESC (Prozessor, Driver) versorgt sich selbst. Obwohl es auch ohne geht seitens Castle Link Live, verrät ein Blick auf das Platinenlayout, dass der Outbound-Optokoppler eigentlich erwartet, dass man auf den roten Draht der Gasleitung + R/C-Spannung legt! Castle Link Live erfordert außerdem einen Pullup <=2k auf der Gassignalleitung, den JLog2.5 enthält, per Software zugeschaltet, mit JLog2 macht das JCC.
- Lt. Auskunft von Castle um 3 Ecken verwendet ein Edge HV keinen Optokoppler. - Leider hatten wir noch keinen Edge in den Händen.
----------
Nun zu dem, was getan wurde:
Also, hier will ich nicht wirklich in's Detail gehen, - es würde Euch langweilen, bzw. würdet Ihr Euch nach Bedarf und Möglichkeit auf Euer Nichtelektronikersein zurückziehen. Was man sagen muss: Das Ganze ist komplex. Die verschiedenen Erscheinungsbilder haben nicht alle dieselbe Ursache. Es gibt auch keine Pauschalität hinsichtlich Schuld und Unschuld zwischen CC und JLog. Und wir müssen uns immer noch eingestehen, dass uns nicht wirklich klar ist, warum nur ein ICE HV diese ganzen Probleme zur Erscheinung bringen kann. Dazu bedurfte es eines kompletten Reverse Engineering des ICE, wofür wir weder Zeit haben, noch haben wir im Moment besonders viel Lust darauf. Wie gesagt, das Beäugen der Steuerplatine macht Ekelpickel. Ich habe jetzt auch lieber erst mal das Meinige getan, bevor ich mir eine Demotivationspille abhole, also tatsächlich in Kontakt mit der Entwicklung von Castle trete. Danny, unser Amerikanischer Master Reseller, hat ja einen Kontakt vermittelt.
Ich habe mich also ersatzweise auf die Mitschuld von JLog konzentriert. (Nur, warum wird die nicht praktisch wirksam mit einem ICE LV?..) Das betrifft a) den Weg des Gasimpulses via JLog, b) das zeitrichtige Lesen der Datenimpulse des CC, die Zeit ist ja hier das Maß für einen Wert. Außerdem habe ich zu b) die ohnehin notwendige State Machine um die CC-Daten herum erweitert (der CC liefert, ebenso wie der JIVE und teilweise auch der KOSMIK, in verschiedenen Betriebszuständen ([Nicht}Kommutierung und Anlauf) Mist in den Daten). On top gibt es nun einen ziemlich deftigen Anti-Hazard-Mechanismus, um Fehlimpulse auszublenden, und als Kompensation dessen einen Integrator auf jedem Wert, da der Antihazard den Verlauf der Datenwerte sonst allzu "eckig" macht, was zumindest im Log doof aussähe. Der Antihazard kompensiert auch Unzulänglichkeiten von JLog, nicht immer zur rechten Zeit die Datenimpulszeit feststellen zu können, ist gleichzeitig ein gewisses Pflaster gegen Einstrahlungen in die Leitg., vor allem gegen gelesene Zombie Impulse, die durch Erdschleifen entstehen können.
Eigentlich ist das ja Penauts, den Gasimpuls zu invertieren. Tja.., in Hardware, wenn man diese in weiser Voraussicht auf seinem Device vorsah, nicht aber grundsätzlich gleichermaßen in Software.. Klar doch, habe ich einen Gegencheck gemacht: Nehme ich mir einen Arduino, 10 Zeilen Programm, und alles ist goldgelb. Man pollt den Gaseingangspin (GPIO Input) und gibt auf dem Gasausgangspin das Gegenteil aus. Selbst dabei kann die Impulslänge schon verändert werden, aber eine Mikrosekunde ist eher Peanuts, obwohl bereits ca. 1,25 Promille des Gasweges.
Jlog hat aber parallel etwas mehr zu tun, es gibt einige parallele, zum Teil auch sehr zeitktische (bei bestimmten Telemetrien) Prozesse. Ergo hat einfach alles interruptgesteuert zu erfolgen. Dieses Invertieren des Gasimpulses steuert ein sog. Pin Change Interrupt. Nur leider ist der Prozessor in JLog2 und 2.5 nicht besonders geeignet für einen absolut zeitkritischen Prozess (wir wollen ja absolut just-in-time auf den Zustandswechsel des Gasimpulses reagieren, wir wollen ja sehr genau den Abstand des Datenimpulses vom Ende des Gasimpulses messen). Es gibt weder eine programmierbare "State Machine" in Hardware, wie in einem NXP ARM, z.B., die das Invertieren in Hardware machen könnte, noch eine priorisierte Interrupt Vector Chain, jeder kann jeden unterbrechen in der MCU des gegenwärtigen JLog.
So kann es also passieren, dass JLog zustandsabhängig mit einer gewissen Verzögerung auf einen Zustandswechsel des Gaseinganges reagiert. Die Folge ist eine impulshafte Fluktuation der Gasimpulslänge. Peakt so ein Hazard über 10% relatives Gas, kann der ESC im Stillstand (Gas nominal Null) mit einem hörbaren "Anlaufversuch" reagieren.
In umgekehrter Weise kann sich JLog selbst Fluktuation in die gemessenen Datenimpulsabstände (500..9000us) einbringen, bzw. dekalibriert er sich u.U. stochastisch mal für einen Datenframe, weil er den Kalibrierungsimpuls falsch las, sozusagen zu spät auf die Uhr schaute.
Anhand des hier vorliegenden ICE2 40 HV wurden beide Problemkreise durch Tuning (Gasimpulsinvertierung) bzw. o.g. Filtermaßnahmen solange bearbeitet, bis es absolut keine Effekte mehr gab. Das passierte je Firmware, also je Telemetrie, denn gerade die jeweilige Telemetrie ist es, die Probleme des Interruptssystems zum Tragen bringen kann in Bezug auf die Ausübung von Castle Link Live.
Allerdings ist damit nicht gesagt, dass mit einem Extremexemplar eines ICE HV dadurch auch alles koscher ist, besser wird es auf jeden Fall.
Zu diesem Filter, Anti-Hazard:
Ein Datenframe im Castle Link Live besteht aus 12 Time Slot. Ausgehend von der Standardgasimpulsfrequenz von 50Hz (die man nicht groß überschreiten sollte, der maximale Datenimpulsabstand erfordert das), dauert es also bereits 12x20ms=240ms zwischen zwei Updates eines Datums. Das ist schon mal nicht gerade Rakete, aber noch im Rahmen des Üblichen (R/C-Telemetriesysteme). Der Anti-Hazard will einen definierten Änderungsbetrag eines Wertes 4x hinterander sehen, bevor er ihn übernimmt, - 4x240ms=960ms, tja.., wo gehobelt wird, fallen Späne..
Um jetzt dem Datenverlauf das Eckige zu nehmen, läuft jedes akzeptierte Datum danach in einen Integrator, der macht, dass es im Log sexy rund aussieht. OK, seitens des Just-in-Time kann das bei Weitem nicht mit einem JIVE mithalten, z.B., aber das täte es auch ohne Anti-Hazard bereits nicht. -- Also, nach meinem in mittlerweile 3 Jahren entwickelten "Feeling" für diese Sachen, ist das durchaus noch OK.
Was der ICE selbst macht:
Genau, daher u.A. "komplex", what you see hat eben nicht immer dieselbe Ursache. (Gleichzeitig kann das als "Indiz" dienen, dass auch dem Design der CC nicht zu trauen ist.)
Ubat fluktuiert grundsätzlich, und "genau" ist hinsichtlich einer Messung durch einen CC eh nichts.
Der ICE2 40 HV hier: Die Betriebsspannung beträgt ganz genau 25,0V. Er zeigt im Mittel 24,4V. Die Fluktuation des Messergebnisses durch den CC beträgt ca +/- 0,3V mit Ausreißern. Das misst ER, nachzulesen in seinem eigenen Log, wenn man es mitlaufen lässt.
Noch besser: Mit steigendem Strom steigt auch die Spannung, bei 17A sind es bereits ca. 1,5V mehr, obwohl real die Spannung sinkt.
Tja.., beides hat dieselbe Ursache, designtechnisch direkt als Anfängerfehler zu bezeichnen. Ich würde aber eher sagen, es ist dem Bestreben, es möglichst billig zu machen, geschuldet, und es zeigt ein weiteres Mal, dass Castle hinsichtlich solcher Design Bugs einfach mal absolut schmerzlos ist:
Man misst mit einem Low Side Shunt, also in der Minusleitung zum Akku. Dadurch produziert man sich eine schwimmende Masse. Das Ergebnis ist, dass der Spannungsabfall über dem Shunt sich im Übersetzungsverhältnis des Spannungsteilers auf Ubat addiert. Digitale Artefakte auf der Spannung führen zu dieser ständigen Fluktation i.H.v. ca. 2% und mehr.
Dazu gehört auch, dass der ICE im Stillstand ständig einen Batteriestrom misst, der fluktuiert und bis an 1A reichen kann, - dieselbe Ursache.
Die State Machine in JLog macht das jetzt einfach platt, Null Ampere, wo in Wirklichkeit nix nennenswertes fließt.
Wg. der neuen JLog Firmwares, JLog2.5 und JLog2, siehe Download. Dazu auch ein neuer JLC!