m_karl schrieb:
Das Werkzeug (W) spricht jeweils ein paar Takte, und dann antwortet der Akku (A). Baudrate 2400, ca. 40 bits. Zunächst 5 Fragen/Antworten zur initialisierung, welche nur am Anfang auftreten. Danach kann man 2 Kommunikationen beobachten, die sich etwa alle 600 ms wiederholen.
Ich weiß natürlich nicht wie das Signal decodiert gehört. Weil 5 V das "Leerlaufsignal" ist, hab ich fürs herausschreiben mal 5 V = "0" und 0 V = "1" festgelegt. Ich schätze ein Startbit muss es fast geben, deshalb das erste in Klammern "(1)"
Es ist nur eine Datenleitung, oder? Wie unterscheidest du, ob ein Datenstrom vom Werkzeug oder vom Akku ausgeht?
Bevor irgendwelche wilden Annahmen bezüglich Startbits getroffen werden, solltest du schauen, welches Hardwareprotokoll vorliegt. Das erkennt man entweder an den beteiligten ICs (sofern man Datenblätter findet) oder an der externen Beschaltung.
Dann kann man sich noch die Flankenform ansehen. Weit verbreitet ist ein Open-Drain Aufbau bei bidirektionaler Kommunikation. Die Folge: Die steigende Flanke des Signals ist deutlich langsamer und leicht verrundet, die fallende Flanke ist schnell und sauber. Wenn es schwer zu erkennen ist, weil die Leitungslänge sehr kurz ist, hilft ein 470 pF Kondensator an der Datenleitung gegen GND, um den Effekt zu verstärken. Insbesondere bei schnelleren Baudraten lohnt es sich noch, die Art der Terminierung nachzumessen.
Erst wenn man eine grobe Vorstellung hat, was man da vor sich hat, fängt man an, aus dem Signal eine Abfolge von Symbolen zu interpretieren. Vorher ist es meist nicht zielführend, weil es Übertragungsverfahren gibt, wo es keine direkte Zuordnung zwischen Pegel und Symbol gibt:
1-Wire nutzt z.B. die Dauer des Low-Pegels zur Kodierung. Ein kurzer Low-Pegel ist eine logische 1, ein langer Low-Pegel ist eine logische 0. Die Phasen, in denen der Pegel auf high ist, sind bedeutungslos.
LIN benutzt hingegen wieder die Pegel, hat aber eine Menge zusätzliche Informationen in jedem Paket.
Dann gibt es noch Verfahren, die Bit-Stuffing verwenden, um die Clocks von Master und Slave synchron zu halten. Wenn bei CAN z.B. fünf aufeinander folgende Bits gleich sind, wird anschließend mitten in der Nachricht ein zusätzlicher Pegelwechsel durchgeführt, der nicht zum Nutzdatenstrom gehört und nur der Synchronisierung dient, quasi ein Startbit mitten in der Nachricht. Sowas muss man rausfiltern, sonst ergibt der Datenstrom keinen Sinn.
Dann gibt es lustige Verfahren, bei denen der physikalische Pegel immer geändert wird, wenn eine logische 0 übertragen wird und gleich bleibt, wenn eine logische 1 übertragen wird (oder genau anders herum, beides ist verbreitet). Dann hat der aktuelle Pegel des Signals keinen Bezug zum Symbol. (Stichwort für die Suche: Non Return to Zero bzw. NRZ-S).
Den Pegel als Bitfolge aufzuschreiben ist dann zum Scheitern verurteilt.
Also zuerst grob prüfen, welcher Bus vorliegen könnte und dann für jeden in Frage kommenden Typ prüfen, ob die Paketlängen passen können und ob man die entsprechenden Strukturen im Datenstrom wiederfindet. Das können spezifische Pausen sein, oder Sync-Bits oder Paritätsbits oder eine CRC aber auch die Adresse eines Slaves (Länge der Adresse in Bit).
Das gute ist: Für nur eine Datenleitung gibt es nicht so viele in Frage kommende Verfahren.
Pech hat man, wenn der Hersteller sich etwas Eigenes ausgedacht hat.
Wenn man das geschafft hat, kann man den Nutzdatenstrom von den festen Datenbereichen des Protkolls abtrennen und mit der Analyse des Inhalts anfangen.
Dazu lohnt es sich dann, einen Versuch mehrfach zu wiederholen und sich nur die Unterschiede anzusehen. Dann kannst du vielleicht Felder erkennen, die die Uhrzeit darstellen oder den Ladezustand oder einen Paketzähler oder eine Serialnummer von Werkzeug oder Akku. Letzteres setzt voraus, dass du mehrere Akkus und am besten auch Maschinen zur Verfügung hast.
Wenn der Hersteller sich etwas Mühe gegeben hat und die Schnittstelle auch zum Schutz gegen Nachbauakkus nutzen möchte (ggf. in der Zukunft), muss der Akku sich korrekt authentifizieren (irgendein Challenge Response Verfahren mit Nonce). Dann ist dein Versuch an der Stelle zu Ende. Auch Replay-Attacken funktionieren da nicht.
Und bevor die Frage kommt: Ich habe keine Metabo Akkus, keine Metabo Werkzeuge, kein Oszi und keine Ahnung. Ich kann also nicht helfen.