Excel Tipps zur Datenbus Darstellung
#1
Hallo liebes Forum, 
ich bin neu hier und hab gleich einen richtigen Hammer.

Kurz zum Aufbau: 
Wir bauen Sonderfahrzeuge und lesen dazu den Fahrzeugdatenbus aus. Jetzt müssen diese Daten irgendwie verständlich an den Steuergerätehersteller. 
So eine ID besteht aus dem Indentifier (z.B 60D) die Nachrichten haben 8 Bytes mit je 8 Bits. 
So eine Nachricht sieht also so aus: 60D  -  D8 12 00 00 3F 3F 2F 00 die Bytes sind in hexadezimal angegeben. 

Jetzt werden die Fahrzeugfunktionen untersucht, in dem Fall D8, das ist dezimal 216, entspricht 1 1 0 1 1 0 0 0
Bit 7 = Türkontakt Heckklappe
Bit 6 = Schiebetür rechts
Bit 5 = Schiebetür links
Bit 4 = Beifahrertür
Bit 3 = Fahrertür
Bit 2 = Standlicht
Bit 1 = Abblendlicht
Bit 0 = unbekannt - immer 0 

Alle möglichen Binärzahlen bekomme ich hin. bin DEZ2BIN

Jetzt kommen wir zur eigentlich Aufgabe an der ich mich jetzt schon einigen Stunde aufhänge. 
Für den Steuergerätehersteller ist die Hexadezimalzahl wichtig/entscheidend.
Nun gibt es da aber 256 Stück, da Bit 0 immer 0 ist möchte ich diese Möglichkeiten gerne automatisch entfernen lassen. (Meinem Gehirn nach, jede zweite)
Und jetzt kommt meine eigentliche Frage!
Kann ich irgendwie die Binärzahl "zerpflücken" um automatisch zuzuordnen welche Binärzahl welche Funktionen macht?
Das ich quasi hinterlege das beispielsweise Bit 5 die "Schiebetür links" ist und Excel quasi die aktivieren Bits aneinanderreiht.

So wäre meine Traumvorstellung als Anhang. 

Ich hoffe das war jetzt irgendwie verständlich, sonst gerne nachfragen, jeder Tipp ist willkommen!

Vielen Dank für schon mal für eure Tipps!

Mit freundlichen Grüßen
CarMagician


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2
Hallo,

es ist möglich jedes Bit abzufragen. In VBA wäre für das erste Bit von links:

Code:
iHx = 130
Bit8 = iHx and 128

Da die Zahl größer 127 ist, ist das erste Bit von links gesetzt, dis Antwort also wahr.

mfg

(PS: im Arbeitblatt sollte es BAnd oder so ähnlich heisen.)

Code:
Sub Car_Bus()
Dim FF ' Fahrzeugfunktionen

FF = Array("null", "Abblendlicht", "Standlicht", "Fahrertür", "Beifahrertür", "Schiebetür links", "Schiebetür rechts", "Türkontakt Heckklappe")
res = &HD8
For i = 0 To 7
    If &HD8 And 2 ^ i Then Debug.Print i, FF(i)
Next i
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • CarMagician
Antworten Top
#3
Danke schonmal, bislang habe ich immer mit "händisch" aufgenommenen Makros gearbeitet. 
Den Code habe ich gut eingefügt bekommen allerdings passiert während der Ausführung nichts. 
Muss ich da noch was anpassen?
Antworten Top
#4
Die Ausgabe erfolgt mit "Debug.Print" in ein Fenster des VBE. Anstelle müßte die Zelle angegeben werden.
Antworten Top
#5
Hallo,

hier noch eine Möglichkeit ohne VBA.

Die Begriffe sind im Namensmanager hinterlegt.


Angehängte Dateien
.xlsx   Beispiel.xlsx (Größe: 10,83 KB / Downloads: 5)
Cadmus
Antworten Top
#6
Oder so:

Du brauchst nur in Spalte A ein dezimalnummer zu setzen und du bist fertig.
Und du brauchst 77 und 79 usw. auch.


Angehängte Dateien
.xlsb   __oder_so.xlsb (Größe: 9,91 KB / Downloads: 7)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Super vielen Dank für eure ganzen Tipps und Mühen! Das hat schon mal super funktioniert. 

Jetzt "arbeite" ich daran Muster zu erkennen um Daten zu finden die sich langsam ändern oder einfach mit dem blanken Auge nicht zu erkennen sind. 

Die Daten sind Hexadezimal (kann man ja nach belieben auch umwandeln)

Ich habe also eine Spalte mit dem Timestamps und eine Spalte mit den hexadezimalen Daten. 
Das ganze möchte ich dann als Linien-Diagramm darstellen, jetzt habe ich allerdings zwischen 10 und 15.000 Datenpunkte, das macht Excel nicht so gerne mit. 
Oftmals sind die Daten aber wiederholt, weil die Nachrichten ja teils mehrmals pro Sekunde kommen, die Änderungen aber deutlich langsamer sind. 

Beispiel "Außentemperatur", habe die Rohdaten mal als Anhang angehängt. 
Um die Menge drastisch zu reduzieren würde ich gerne nur die "Änderungspunkte" behalten, wie man im zweiten Anhang sieht. 
Die Duplikate könnte ich ja entfernen, aber dann sind ja alle doppelten Einträge weg. 

Ich brauche quasi zu jedem neuen Wert in der einen Spalte den Anfangs-Timestamp und den End-Timestamp. Egal was ich versuche es werden immer Daten verschluckt. 

Hat einer dazu noch eine Idee?

MfG


Angehängte Dateien Thumbnail(s)
       
Antworten Top
#8
Hallo,

BC
1D4für Filter
22FALSCH
32WAHR
42WAHR
52WAHR
62FALSCH
74FALSCH
84FALSCH
93FALSCH
103WAHR
113WAHR
123WAHR
133WAHR
143WAHR
153FALSCH
165FALSCH
175WAHR
185WAHR
195WAHR
205FALSCH

ZelleFormel
C2=UND(B1=B2;B2=B3)
Verwendete Systemkomponenten: [Windows (64-bit) NT 10.00] / MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.7.1) erstellt. ©Gerd alias Bamberg

Gruß Uwe
Antworten Top
#9
Ihr seid ja wirklich spitze! 
Jetzt wollte ich das gerne per Graph darstellen. 
Dabei habe ich ein Problem, wahrscheinlich einen Denkfehler. 
Ich habe meine spezifischen Daten so weit eingekürzt bis ich nur noch meinen Timestamp und meinen Wert habe. 
Das ganze auf teilweise mehreren zehntausend Zeilen, dank der super Funktion von Kuwer habe ich dann in meiner Liste nur doch den Start- und Endpunkt eines Wertes stehen, mit dem passenden Zahlenwert. 

Wenn ich jetzt in Excel ein Diagramm einfüge dann nimmt Excel die Timestamps irgendwie nicht für voll. 

Beispiel: Wir haben bei dem Fahrzeug die Hupe im Datenbus gesucht, mein Kollege sollte Morsen, im SOS-Muster. 
Ohne weitere Anpassungen sieht der Graph in Excel dann so aus wie im Anhang.

Wie man gerade an den ersten Werten schon sieht nimmt das Diagramm den zeitlichen Ablauf gar nicht wahr, warum auch.
Aber ich vermute da gibt es bestimmt eine Möglichkeit damit Excel das ganze als Millisekunden wahrnimmt?

Liebe Grüße


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#10
Hallöchen,

ziehe das mal breiter dann siehst Du eventuell mehr Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste