GPS-Daten und RTC über CAN-Bus übertragen

CKP
Beiträge: 301
Registriert: Mi Jul 09, 2014 4:41 pm
Wohnort: Stuttgart

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von CKP »

kann es evtl sein, dass ich für die signed int mehr Bits brauche?
Weil ich habe das jetzt mal ganz simpel getestet und das funktioniert ja auch nicht.

Siehe Anhang


Mist wurde vom Forum verkleinert.
aber im Code steht folgendes:

Code: Alles auswählen


unsigned int uiXAxis=1025;
signed int uiYAxis=-12;
signed int uiZAxis=-109;



  memset(&stmp, 0, sizeof(stmp));
    stmp[0]=(char) (uiXAxis >> 0x08); 
    stmp[1]=(char) (uiXAxis && 0xFF);
    stmp[2]=(char) (uiYAxis >> 0x08);
    stmp[3]=(char) (uiYAxis && 0xFF);
    stmp[4]=(char) (uiZAxis >> 0x08);
    stmp[5]=(char) (uiZAxis && 0xFF);
   stmp[6]=euler.x()/2; //0  bis 360  umwandeln und als 1U empfangen;
   //stmp[6]=euler.y(); // -90 bis 90 als 1S empfangen;
   stmp[7]=euler.z()/2; // -180 bis 180 ; durch 2 teilen, als 1S empfangen und wieder *2 multiplizieren;
  
   
  CAN.sendMsgBuf(0x7B, 0, 8, stmp); 
Und die Offset Werte von CAN-ADC 1-3 habe ich auf 0 ; 2 ; 4 gestellt

Und trotzdem zeigt es mir für die negativen Werte immer nur -255 an
Dateianhänge
can_test.jpg
can_test.jpg (224.08 KiB) 4567 mal betrachtet
Benutzeravatar
Alfagta
Beiträge: 2381
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von Alfagta »

Also laut der library sind die euler werte double.

Nene wenn du einen arduino uno hast sind int datentypen 16Bit.

Gruß
Wer aufhört besser zu werden hat aufgehört gut zu sein
Alfa 156 GTA
Alfa 75 Race Car MS III
Alfa 164 V6 Turbo
Test MS II
Tunerstudio V3.0.60.61 Registered
MLog View V4.3.30 Registered
MLog View HD V4.3.30 Registered
Benutzeravatar
Alfagta
Beiträge: 2381
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von Alfagta »

Hey,

ich sitze heute schon eindeutig zu lange am pc!!!!

Kleiner fehler große wirkung.
(uiZAxis && 0xFF); ist natürlich völlig falsch das muss
(uiZAxis & 0xFF); heißen.

Probiere das bitte.

Und mache folgendes für die Zahlen.

Code: Alles auswählen

unsigned int uiX;
int iY;
int iZ;

uiX = (unsigned int) (euler.x * 100.0);
iY = (int) (euler.y * 100.0);
iZ = (int) (euler.z * 100.0);

  memset(&stmp, 0, sizeof(stmp));
    stmp[0]=(char) (uiX>> 0x08); 
    stmp[1]=(char) (uiX & 0xFF);
    stmp[2]=(char) (iY >> 0x08);
    stmp[3]=(char) (iY & 0xFF);
    stmp[4]=(char) (iZ >> 0x08);
    stmp[5]=(char) (iZ & 0xFF);
In der MS bei divide 100 eintragen!

Bei mir läuft das jetzt so!
Wer aufhört besser zu werden hat aufgehört gut zu sein
Alfa 156 GTA
Alfa 75 Race Car MS III
Alfa 164 V6 Turbo
Test MS II
Tunerstudio V3.0.60.61 Registered
MLog View V4.3.30 Registered
MLog View HD V4.3.30 Registered
Benutzeravatar
lpgo
Beiträge: 141
Registriert: Mo Sep 19, 2011 10:15 pm
Wohnort: NL

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von lpgo »

Ich habe hiervon nicht fiel ahnung, aber ich wurde mal anfangen um feste Werte inzutragen und die dan Senden...
also X achse = 20
Y achse = 30
Z achse = 40

Manchmal möchte mann zuviel auf einmal machen und ist es meistens ne kleinigkeit dass es nicht funktioniert..


Wenn dann diese Werte richting ankommen dann klappt die verbindung und kann mann weiterschauen ob die realen Werte auch gut gehen..

Wenn die Werte nicht richtig ankommen dann muss man suchen woran der fehler liegt...

Ich mache es immer so wenn ich etwas testen will (Ich hacke alles ein kleine stuckchen und arbeite mich immer weiter hoch....)
Citroën 2cv mit BMW R1200 RT Machine, 110 statt 12 ps.. Alles eingetragen.

Citroën Ami 650cc mit Smart Turbo/intercooler mit KDFI 1.3 Autogas (LPG).....

1-2-Spark meine eigene programmierbare elektronische Zuendung
Benutzeravatar
Alfagta
Beiträge: 2381
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von Alfagta »

So wie ich es jetzt geschrieben ahbe läuft es!

Da die CAN ADC speicherwerte in der MS jedoch keine floating datentypen sind kann die ms keine komma zahlen anzeigen.
Es wäre eine möglichkeit mit custom ini im TS. Und einer Formel für die Datalogs.
Dann könnest bei beiden Nachkomastellen anzeigen lassen.
Musst du wissen wie du es willst.
Wenn du komm stellen haben willst machen wir das es läuft : :evil:
Wer aufhört besser zu werden hat aufgehört gut zu sein
Alfa 156 GTA
Alfa 75 Race Car MS III
Alfa 164 V6 Turbo
Test MS II
Tunerstudio V3.0.60.61 Registered
MLog View V4.3.30 Registered
MLog View HD V4.3.30 Registered
CKP
Beiträge: 301
Registriert: Mi Jul 09, 2014 4:41 pm
Wohnort: Stuttgart

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von CKP »

ja perfekt läuft, du bist der geilste :mrgreen:
Vielen Dank!

Kommastellen sind eigentlich für die Funktion nicht so wichtig. Habe das mit den *100 und /100 deswegen weggelassen.
Bzw. müsste man ja eh wieder noch mehr anpassen damit die überhaupt angezeigt werden, wie du schon geschrieben hast.
Brauche die Schräglage hauptsächlich für eine TC_slip_threshold MAP, welche eben in Abhängigkeit der Schräglage die Schlupfgrenze verändert. Das ist erstmal so die Basisfunktion. Könnte man dann später noch etwas ausgefeilter machen.
Aber ohne Schräglage kann man beim Motorrad leider nicht wirklich was mit der TC anfangen. Deshalb wollte ich das umsetzen :D

Das mit dem GPS Sensor fande ich ganz gut. Hatte bisher immer einen Qstarz mit 10Hz über Bluetooth dran und hätte dann die Position über Tablet, Smartphone etc mitgeloggt. Hat so auch gut funktioniert.
Aber so fest integriert ist mir schon lieber. Sonst vergesse ich nur den aufzuladen. :lol:
Und im ersten Test hat das GPS Shield schon sehr gut funktioniert. Und das war noch mit der internen Antenne.
Ideal wäre natürlich wenn ich mir noch nen GPS-Laptimer schreiben könnte. Gibt da auch was im Netz. Aber ich schätze das wird mit dem Uno fast ein bisschen eng werden.

Jetzt muss es nur noch klappen, dass ich RTC und GPS Position über CAN senden kann. Aber da teste ich mal morgen weiter :)
Benutzeravatar
Alfagta
Beiträge: 2381
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von Alfagta »

Okay fein wenn es jetzt auch bei dir läuft.

Wenn du es einfach machen willst schaust du mit welchen ID die MS die RTC Daten anfordert.
Mit den Daten der ersten 3 Bytes kann man dan schön eine Antwort ID basteln.
Dann prüfst du wenn die ID passt als RTC Id antwortest du mit der vordefinierten id und mit den Daten.


Wenn nötig kann ich die Excel Liste anpassen das man aus den ersten 3 Bytes die nötigen infos bekommt.
Gruß
Wer aufhört besser zu werden hat aufgehört gut zu sein
Alfa 156 GTA
Alfa 75 Race Car MS III
Alfa 164 V6 Turbo
Test MS II
Tunerstudio V3.0.60.61 Registered
MLog View V4.3.30 Registered
MLog View HD V4.3.30 Registered
CKP
Beiträge: 301
Registriert: Mi Jul 09, 2014 4:41 pm
Wohnort: Stuttgart

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von CKP »

So weiter gehts.

Ich habe jetzt zuerst bei der MS RTC Einstellung die Daten gemäß Anleitung für den I/O Extender eingegeben.
Sprich:
  • Remote CAN ID: 10
    Table: 7
    Offset: 110
Wenn ich jetzt über das Can Shield schaue was auf dem Bus liegt, zeigt er mir folgendes an:

Code: Alles auswählen

get data from ID: 
56
7	73	168	
Das CAN Datenpaket welches ich verschicke möchte sieht aktuell so aus:

Code: Alles auswählen

//Am Anfang:
byte Can_RTC[8] = {};

//In der Loop:
unsigned int sekunden=15;
unsigned int minuten=14;
unsigned int stunden=13;
unsigned int tag=26;
unsigned int monat=7;
unsigned int jahr=2015;

    Can_RTC[0] = sekunden;
    Can_RTC[1] = minuten;
    Can_RTC[2] = stunden;
    Can_RTC[3] = 0;
    Can_RTC[4] = tag;
    Can_RTC[5] = monat;
    Can_RTC[6] = (char)(jahr >> 0x08);
    Can_RTC[7] = (char)(jahr & 0xFF);
Jetzt stelle sich die Frage wie ich die Daten genau schicken muss, wegen 29bit Header.
Zuerst die ID
Extendet Frame: 1 // Das sollte ja theoretisch für einen 29bit header stehen. Ist das dann auch vom Aufbau der gleiche, welchen die Megasquirt möchte?
Data Lenght: 8 // Sollte ja auch hier das Maximum sein. Verstehe das mit dem Table und Offset noch nicht ganz. Gibt der nur an wo die MS die Daten ablegt oder auch wo in der Nachricht die Daten enthalten sind?

Zusammengesetzt bei meinem Shield also:
CAN.sendMsgBuf(0x(ID!), 1, 8, Can_RTC);

Bei der ID blicke ich ehrlich gesagt noch nicht durch. Welche ich da jetzt angeben soll.

Die ID welche die MS abfragt sollte ja dann die 56 sein, welche ich abfange (siehe oben)

Wie gehe ich jetzt richtig vor?
Dein Excel Sheet öffnen "Data to ID", jetzt wie folgt eingeben?
  • From ID: 0
    To ID: 56
    Table: 7
    Offset: 110
??
Dann würde ich folgende HEX-ID für den BUS bekommen: 1B91C38

Wenn ich die jetzt bei meiner Send-Message eintrage, klappt das aber noch nicht. Schätze ich muss hier anders vorgehen.

Auch wenn ich jetzt das Data Paket von der Ms analaysiere:

Code: Alles auswählen

7	73	168
Mit deiner Info:
Byte 0 = Table in der MS
Byte 1 und Teile von Byte 2 sind der Offset in der MS
Die ersten 4 Bits von byte 2 sind die Anzahl der Bytes die du senden sollst.
Byte 0 stimmt ja schon mal mit dem Table Wert überein, welchen in beim RTC Setting festgelegt habe. Aber aus dem Rest werde ich nicht schlau.
Benutzeravatar
Alfagta
Beiträge: 2381
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von Alfagta »

Hey,

hab die Excel gestern noch erweitert...

Gib jetzt die id ein und die ersten 3 Bytes.

Mit den Infos der ersten 3 Bytes baust du dir dann mit dats to id deine benötigte id zusammen.
Message Type ist msg_rsp.

Bis auf Jahr ist alles in der ms ein insigned char.
Jahr dann mit bit shift (so Wie gestern) auf 2 Bytes teilen....
Wer aufhört besser zu werden hat aufgehört gut zu sein
Alfa 156 GTA
Alfa 75 Race Car MS III
Alfa 164 V6 Turbo
Test MS II
Tunerstudio V3.0.60.61 Registered
MLog View V4.3.30 Registered
MLog View HD V4.3.30 Registered
CKP
Beiträge: 301
Registriert: Mi Jul 09, 2014 4:41 pm
Wohnort: Stuttgart

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von CKP »

nochmals Danke -> Es läuft :)
Dateianhänge
RTC-Megasquirt.jpg
RTC-Megasquirt.jpg (89.27 KiB) 4498 mal betrachtet
Benutzeravatar
Alfagta
Beiträge: 2381
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von Alfagta »

Prima freut mich.

Prüftst du jetzt nach ob es die rtc id ist und antwortest dann mit einer vordefinierten id?

Gruß
Wer aufhört besser zu werden hat aufgehört gut zu sein
Alfa 156 GTA
Alfa 75 Race Car MS III
Alfa 164 V6 Turbo
Test MS II
Tunerstudio V3.0.60.61 Registered
MLog View V4.3.30 Registered
MLog View HD V4.3.30 Registered
CKP
Beiträge: 301
Registriert: Mi Jul 09, 2014 4:41 pm
Wohnort: Stuttgart

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von CKP »

Also die ID ist für ACC, GPS und RTC gleich.

Es unterscheiden sich immer nur das zweite und dritte Byte.

Ich passe dann immer nur den Offset an und schicke eben eine zweite, dritte Nachricht etc. Ohne irgendwas zu prüfen.

Also bis jetzt funktionieren die drei Eulerwinkel über Receiving und für die mit 29bit Header:
Acceleration und RTC perfekt.
Nur GPS bin ich gerade noch am testen.

Da ist ja alles auf zwei Nachrichtien aufgeteilt. Ich glaube ich kann die schon richtig zuordnen. Nur findet da wohl noch eine Umrechung vor dem Senden und nach dem Empfangen statt.

Nur Altitude und Course funktionieren bis jetzt.
Aber ich den Rest bekomme ich auch noch irgendwie hin.
Inzwischen auch Speed. Muss das nur richtig umrechnen
Zuletzt geändert von CKP am So Jul 26, 2015 7:17 pm, insgesamt 1-mal geändert.
Benutzeravatar
Alfagta
Beiträge: 2381
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von Alfagta »

Hey,

ja da gibts ned Umrechnung.

Code: Alles auswählen

/* 
gps_latdeg       = scalar, S08,  128, "", 1,0 
gps_latmin       = scalar, U08,  129, "", 1,0 
gps_latmmin      = scalar, U16,  130, "", 1,0 
gps_londeg       = scalar, U08,  132, "", 1,0 
gps_lonmin       = scalar, U08,  133, "", 1,0 
gps_lonmmin      = scalar, U16,  134, "", 1,0 
 */ 

signed char latdeg; 
unsigned char latmin,lonmin,londeg; 
unsigned int latmmin,lonmmin; 
double intpart; 
latdeg, londeg, latmin, lonmin, latmmin, lonmmin = 0; 
latdeg = GPS.location.rawLat().deg; 
latmin = (GPS.location.lat()-GPS.location.rawLat().deg)*60; 
latmmin = ((GPS.location.rawLat().billionths * 3 / 50000) - latmin * 1000) * 10; 
londeg = GPS.location.rawLng().deg; 
lonmin = modf(abs(GPS.location.lng()),&intpart)*60,3; 
lonmmin = ((GPS.location.rawLng().billionths * 3 / 50000) - lonmin * 1000) * 10; 
/*
gps_lonEW        = scalar, U08,  136, "", 1,0 // bit 0 = E/W 
gps_altk         = scalar, S08,  137, "", 1,0 
gps_altm         = scalar, S16,  138, "", 0.1,0 
gps_speedkm      = scalar, U16,  140, "", 0.1,0 
gps_course       = scalar, U16,  142, "", 0.1,0 
*/
txmsg.buf[0] = GPS.location.rawLng().negative ? 1 : 0; 
txmsg.buf[1] = GPS.altitude.kilometers(); 
txmsg.buf[2] = ((GPS.altitude.meters() * 10) >> 0x08); 
txmsg.buf[3] = (GPS.altitude.meters() * 10) & 0xFF); 
txmsg.buf[4] = GPS.speed.kmph() >> 0x08; 
txmsg.buf[5] = GPS.speed.kmph() & 0xFF; 
txmsg.buf[6] = GPS.course.deg() >>0x08; 
txmsg.buf[7] = GPS.course.deg() & 0xFF; 

Musst halt sehen wie deine Werte vorliegen
Wer aufhört besser zu werden hat aufgehört gut zu sein
Alfa 156 GTA
Alfa 75 Race Car MS III
Alfa 164 V6 Turbo
Test MS II
Tunerstudio V3.0.60.61 Registered
MLog View V4.3.30 Registered
MLog View HD V4.3.30 Registered
CKP
Beiträge: 301
Registriert: Mi Jul 09, 2014 4:41 pm
Wohnort: Stuttgart

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von CKP »

Das Problem bei dem ersten GPS Daten Paket (mit longitude, latitude etc) ist, dass mir hier die MS3 einfach überall nur "0" anzeigt.
Die Werte welche versendet werden habe ich auch immer per Hand variiert um zu sehen ob mal irgendwann was angezeigt wird.
Aber da tut sich leider gar nichts, egal ob ganz kleine oder große Werte.

Liegt natürlich die Vermutung nahe, dass gar nichts ankommt. Aber ich habe die ID jetzt schon drei mal gecheckt und da sollte alles passen.

Der I/O-Extender verwendet auch das TinyGPS. Ideal wäre es natürlich wenn ich da für die einzelnen Daten mal Beispiele hätte um die per Hand einzutippen.
Weil die Eingangswerte von dem TinyGPS sind:
gps.location.lat // Latitude in degrees (double)
gps.location.lng // Longitude in degrees (double)
gps.location.rawLat().deg); // Raw latitude in whole degrees
gps.location.rawLat().billionths // ... and billionths (u16/u32)
gps.location.rawLng().deg; // Raw longitude in whole degrees
gps.location.rawLng().billionths // ... and billionths (u16/u32)
Benutzeravatar
Alfagta
Beiträge: 2381
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: GPS-Daten und RTC über CAN-Bus übertragen

Beitrag von Alfagta »

Wie sehen die request und answear id's aus für die gps daten?
Stell die mal ein.
Zeig mal den Code teil her wie du ihn jetzt hast.

Gruß
Wer aufhört besser zu werden hat aufgehört gut zu sein
Alfa 156 GTA
Alfa 75 Race Car MS III
Alfa 164 V6 Turbo
Test MS II
Tunerstudio V3.0.60.61 Registered
MLog View V4.3.30 Registered
MLog View HD V4.3.30 Registered
Antworten