SLSS CANAnalyser – Die Entwicklung

Übersicht der Entwicklungsschritte 

Um den Hauptbeitrag etwas zu kürzen und trotzdem alle Entwicklungsschritte zeigen zu können, habe ich für alle Interessierten die „früheren“ Entwicklungsschritte meiner SLSS CANAnalyser Software* auf diese Seite ausgelagert. So kann man ganz gut nachvollziehen wie sich aus der ursprünglichen Idee, eine universelle Klasse für die Kommunikation mit Micro-Controller-Boards zu erstellen, diese Software entwickelt hat.  

 

(06.09.2022) – Version 1.0.2.0 (Update des Micro-Controller Codes nötig)

Ich habe endlich einmal wieder die Zeit gefunden um den SLSS CANAnalyser ein wenig weiterentwickeln zu können. Diese habe ich dafür genutzt um ein wichtiges Feature mit der veröffentlichten Version 1.0.2.0 veröffentlichen zu können. Ab sofort werden CAN-Botschaften, welche nicht alle 8 Datenbyte nutzen, in ihrer originalen Länge angezeigt. Die leeren Bytes werden nicht mehr durch 0x00 aufgefüllt sondern innerhalb des SLSS CANAnalyser als leere Zellen dargestellt. 

 

Screenshot des Empfangs von CAN Botschaften kürzer als 8 Byte

 

Das gleiche gilt für das Senden von CAN Botschaften. Hier muss man nicht mehr wie bisher alle 8 Datenbyte ausfüllen, sondern nur noch die tatsächlich zu versendenden Bytes. Um diese beiden Verbesserungen implementieren zu können, musste ich unter anderem den Code des Micro-Controllers überarbeiten. Damit man nun bei mehreren CAN-Dongle einen Überblick hat, ob der Micro-Controller Code auf dem aktuellen Stand ist, habe ich hierfür ebenfalls eine Abfrage eingebaut.

 

Screenshot des Empfangs von CAN Botschaften kürzer als 8 Byte

 

(05.06.2021) – Version 1.0.0.2

In den letzten Tagen nutzte ich die Software um die CAN-Kommunikation meines SLSS CarNet* Projektes zu verbessern. Dabei sind mir ein paar Sachen zum Bedienkomfort des SLSS CANAnalyser eingefallen und einige Bugs, welche sich anscheinend mit Version 1.0.0.1 eingeschlichen haben, habe ich ebenfalls behoben. Die neuen Dateien der Version 1.0.0.2 stehen bereits zum Download bereit. Eine detaillierte Übersicht der Änderungen / Verbesserungen befindet sich zum einen im Git-Repository* und zum anderen in der neu hinzugefügten Datei „ChangeLog.txt“ innerhalb des Installationsordners. 

 

(21.05.2021) – Version 1.0.0.1

Die Version 1.0.0.1 mit dem erweiterten Funktionsumfang steht nun zum Download und Testen bereit. In dieser Version werden nun auch Extended CAN Dataframes unterstützt. Diese werden durch ein [EXT] im Bereich „Raw Data“ und eine grüne Textfärbung innerhalb des Empfangsbereich kenntlich gemacht.

Screenshot empfangener Datenframes sowohl im CAN2.0A, als auch CAN 2.0B Format

 

Im Sendebereich hat man nun ebenfalls die Auswahlmöglichkeit, ob die angelegte Botschaft als CAN2.0A Datenframe mit 11-bit Identifier oder CAN2.0B Datenframe mit 29-bit Identifier versendet werden soll. Wird die gleiche ID auf beide Verfahren angewendet (in der Praxis eher unwahrscheinlich), so werden die Daten beim Empfang in der Software getrennt gelistet, womit auch hierfür eine Unterscheidung gegeben ist.

 

Screenshot mit neuer „Extended“ Spalte und der dazugehörigen ID-Checkbox unterhalb der ID-Textbox

 

(01.05.2021)

Das beschriebene Problem mit dem Paketverlust konnte ich durch Anpassung des Micro-Controller-Codes erfolgreich beheben. Beim Vollduplex-Betrieb (gleichzeitiges Senden und Empfangen) im Automatikmodus treten nun ebenfalls keine Verluste mehr auf. Eine aktivierbare Loopback-Funktion des Controllers (Empfang der eigenen Daten) werde ich in den kommenden Tagen einmal testen. Diese möchte ich gern per Checkbox in den Verbindungseinstellungen aktivier-, respektive deaktivierbar umsetzen. Das angesprochene Video zu den aktuellen Sendefunktionen habe ich zwischenzeitlich ebenfalls erstellt und kann hier* angesehen werden.

Funktionstest während der Entwicklung

Zum aktuellen Zeitpunkt (01.05.2021) teste ich die Kommunikation und das ordnungsgemäße Funktionieren der Software, indem ich einen kleinen Simulations-Bus mittels eines zweiten CAN-Moduls aufgebaut habe, welches dauerhaft Daten über die nun implementierte Sendefunktion auf den CAN-Bus sendet. Da ich somit den Datenumfang und die Datenzusammensetzung kenne, kann ich anhand der empfangenen Signale überprüfen ob die Angaben in der Software dem gesendeten Signalaufkommen entsprechen. Zu einem späteren Zeitpunkt werde ich den Empfang der Daten dann an einer CAN-Schnittstelle (wahrscheinlich Komfort-CAN am Radio) meines Fahrzeuges testen, und hoffentlich auch da Rückschlüsse aus den empfangenen Daten ziehen können. 

UPDATE: zweiter langfristiger Empfangstest

Bei meinem zweiten langfristigen Test der Kommunikation zwischen Micro-Controller und Software habe ich das Programm erneut eine längere Zeit laufen und Daten analysieren lassen. Dabei wurden 3.396.520 CAN-Datenframes aufgezeichnet. Dank der verbesserten Kommunikationseinstellungen und der asynchronen Datenerfassung kam es hierbei zu keinerlei Fehlern mehr. Um die weiterentwickelten Neuerungen, welche ich seit dem letzten Test in die Software implementiert hab mit abtesten zu können, wurde sowohl eine DBC-Liste, als auch mehrere Suchraster im Reverse Engineering definiert, welche den Test ebenfalls fehlerfrei absolvierten. 

 

Screenshot des Empfangstests mit 3.396.520 gelesen CAN Botschaften

 

(28.04.2021)

Die Sendefunktion konnte ich in den letzten Tagen dahingehend fertigstellen, dass nun auch das automatische Senden von kompletten Botschaftsabfolgen problemlos möglich ist. Da diese „Liste“ ebenfalls gespeichert und auch wieder geladen werden kann, könnte man damit eine Art Restbus-Simulation umsetzen, welche in einem eigenen Fenster und ggf. auch auf einem zusätzlichen Modul ausgeführt werden kann. Leider gehen aktuell beim Senden und gleichzeitigem Empfangen von Botschaften über das gleiche Modul noch einige Paket beim Empfangen „verloren“. Ob dies an den CAN-Modulen selbst oder an der Kommunikation zwischen Software und Arduino liegt, muss ich erst noch herausfinden.

Das Speichern und Laden von geänderten CANData Viewer Datensätzen ist ebenfalls in den letzten Tagen fertig geworden, womit die Arbeit an diesem Modul für mich erst einmal abgeschlossen ist. Ein Video zu den aktuellen Funktionen werde ich in den kommenden Tagen ebenfalls erstellen und anschließend hier anfügen. 

 

(30.03.2021)

In den letzten Tagen habe ich die Funktion für das Laden und Auswerten von aufgezeichneten Daten überarbeitet. Diese Daten werden jetzt nicht mehr in die ursprünglichen Tabellen zurück geladen, sondern in einem separaten Editorfenster geöffnet. Darin ist es nun möglich die aufgezeichneten Daten mittels einer Textboxeingabe nach Übereinstimmungen zu durchsuchen. Wird eine Übereinstimmung gefunden, so wird diese durch die sofortige Änderung der Hintergrundfarbe der betreffenden Zelle(n) angezeigt. Außerdem ist es in diesem Editor möglich nachträglich Zeilen und Spalten hinzuzufügen und zu entfernen. So können die aufgezeichneten Daten zum Beispiel mit Kommentaren oder Verweisen versehen, oder unnötige Spalten / Zeilen gelöscht werden. Um die aufgezeichneten Daten nicht zu verfälschen, aber etwaige Änderungen am bearbeiteten Datensatz trotzdem speichern zu können, werde ich ein weiteres Dateiformat für im Editor geänderte Datensätze implementieren. Eine Demonstration des neuen Editorfensters kann man im folgenden Video sehen https://youtu.be/s2MiYrtsFAg*!   

 

Screenshot des SLSS CANData Viewer mit markierten Sucheinträgen

 

(10.03.2021)

Bei meiner Analyse von einigen im Internet veröffentlichten CAN Botschaften ist mir aufgefallen, dass teilweise auch ASCII kodierte Zeichen und somit ganze Botschaft-Strings übertragen werden. Da diese Daten sich auf Basis der reinen Anzeige von Zahlenwerten nicht so einfach erkennen lassen, habe ich kurzerhand ein weiteres Modul mit dem Namen „ASCII Text Analyser“ in meine Software integriert, welches nun zur Laufzeit die gelesenen CAN-Daten in ASCII-Zeichen konvertiert. Da im Hauptfenster der eingehenden CAN-Daten der Platz bereits recht gut ausgefüllt ist und eine weitere Spalte die Übersichtlichkeit beeinträchtigen würde, habe ich mich dazu entschlossen für diese Aufgabe ein weiteren Reiter anzulegen. Da die Filtereinstellungen auch auf die hier eingetragenen Daten wirken, kann man diese Liste ebenfalls auf die gewünschten Elemente verkürzen. Die Speicher- und Excel-Exportfunktion wird natürlich auch bei dieser neuen Tabelle mit zur Anwendung kommen. Eine Demonstration der Funktion kann man im folgenden Video sehen https://youtu.be/7b98BXDKrOI*!

 

Screenshot des ASCII Text Analyser mit ausgewerteten Botschaften 

 

(04.03.2021)

Nachdem ich mittlerweile viele Funktionen umgesetzt habe, habe ich mich nun dazu entschlossen eine erste Version des SLSS CANAnalyser zum Download bereitzustellen. Die Hoffnung dahinter ist vielleicht den einen oder anderen „Tester“ für meine Software zu finden und so ein Feedback von anderen Anwendern und Anwendungsbereichen zu erhalten. Die Umsetzung der Funktionen, welche zum aktuellen Zeitpunkt noch nicht in der Software integriert sind, werde ich natürlich weiterhin parallel vorantreiben.    

 

(26.02.2021)

Die letzten Tage habe ich die Funktionen für das Laden und Speichern der im Programm gesetzten Einstellungen umgesetzt. So ist es nun durch das Laden einer einzigen Datei möglich, zügig zwischen verschiedenen Mess-Setups hin und her zu springen.

Des Weiteren habe ich die erste Funktion für das Analysieren der CAN-Daten implementiert. Mit dieser ist es möglich einen in der Größe einstellbaren Suchpuffer zu erzeugen, welcher anschließend mit den Daten des jeweiligen Suchbereichs (Einzel-ID oder alle IDs) beschickt wird. Erreicht der Puffer seine maximale Größe, wird der jeweils älteste Eintrag (Position 1) aus dem Suchpuffer herausgeschoben, um an letzter Position Platz für den neuen Wert zu bekommen (gleitendes Suchfenster). Die eingehenden Daten werden in einem von der GUI entkoppelten Prozess auf eine Änderung innerhalb der Datenbytes, welche größer oder kleiner der eingegebenen Suchschwelle ausfällt, überprüft. Wird ein Erreichen oder Überschreiten dieser Schwelle festgestellt, so wird die Fundstelle in einen „Fundkatalog“, welchen man in einem separaten Fenster aufrufen kann, aufgenommen. So hat man jederzeit eine kompakte Übersicht über die Werteänderung der einzelnen Bytes.

Da ich vor einigen Tagen die Möglichkeit hatte mich mit jemanden austauschen zu können, welcher beruflich mit dem Thema „CAN Analyse“ am Kraftfahrzeug zu tun hat, habe ich ein wenig Einblick bekommen wie eine Suche nach Signalen auf dem Bus ablaufen kann. Da hier, anders als bei meinem Ansatz, meist aufgezeichnete Daten analysiert werden, habe ich die Möglichkeit auch gespeicherte Daten auswerten zu können, beim Erstellen meiner Suchklasse gleich von Anfang an mit eingeplant. So ist es im späteren Verlauf möglich ein weiteres Tool für die „Offline“-Analyse der erzeugten Messdaten zu realisieren.

Zu den neuen Entwicklungen habe ich wieder ein kurzes Video erstellt, welches weiter unter in diesem Artikel oder durch das Klicken dieses Links* (https://youtu.be/Wxy8ATX7CIE) aufgerufen werden kann.       

 

(18.02.2021)

Um die Reaktion der grafischen Oberfläche (Hauptanwendungsfenster) beim Empfangen der Daten zu verbessern, habe ich fast alle Prozesse, welche mit dem Empfang von Daten in Zusammenhang stehen, in Hintergrundprozesse (Tasks) ausgelagert.  

 

Screenshot der Live-Anzeige der angelegten CAN-DBC Signale inkl. umgerechneter Messwerte

 

(31.01.2021)

Nachdem die Filterfunktionen implementiert waren, fiel mir auf, dass es von Vorteil wäre die Live-Ansicht zwischendurch pausieren oder stoppen zu können, ohne die Verbindung zur Hardware trennen zu müssen. Um dies zu erreichen, installierte ich mehrere Knöpfe, ähnlich der Steuerelemente eines Mediaplayers, womit nun genau diese Funktionalität möglich ist. Mittels eines „Aufzeichnen“-Knopfes ist es außerdem möglich die Datenerfassung im Langzeit-Log, welches sich immer mehr zum Aufnahme-Bereich wandelt 🙂 , zu steuern.

Zum Exportieren der aufgezeichneten Daten kann man diese nun per Knopfdruck in eine Excel-Datei „verschieben“. Hier sind aktuell noch kleinere Arbeiten am Feedback (speichern abgeschlossen, fehlgeschlagen, etc.) nötig.

 

Screenshot des Programmfensters mit den neuen „Player“-Buttons

 

(28.01.2021)

Das Filtern nach CAN-IDs ist implementiert und komplett funktionsfähig. Der Filter wird auf den Live-Anzeigebereich der empfangenen CAN-Botschaften angewendet und blendet nicht gewünschte Frames aus. Die Aufzeichnung läuft im Hintergrund jedoch weiter um beim Wiedereinblenden die aktuell seit Start empfangenen Daten anzeigen zu können. Zur Verbesserung der Performance versuche ich die Sortier- und Aktualisierfunktionen der Liste in eigene Tasks auszulagern, um Rechenleistung für die weiteren geplanten Funktionen frei zu bekommen und die Programmperformance zu verbessern.

 

Screenshot Filterfenster der eingehenden CAN-IDs

 

Hauptbeitrag und weitere Entwicklungsschritte 

Ich hoffe die vorherigen Zeilen zeigen ein wenig wie sich die Software über die letzten Monate entwickelt hat. Durch das Umsetzen der einzelnen Komponenten, konnte ich mein Wissen sowohl im Bereich der Programmierung, als auch im Aufbau und der Funktionsweise von Bus-Systemen erweitern.

Weitere Informationen zum SLSS CANAnalyser befinden sich im Hauptbeitrag, welchen man durch das Navigieren über den folgenden Link https://www.langer-sebastian.de/slss-cananalyser/* erreichen kann.