TunerStudio für eigene Projekte

Antworten
Benutzeravatar
Hemi
Site Admin
Beiträge: 113
Registriert: Sa Jan 05, 2008 9:44 pm
Wohnort: Korntal-Münchingen
Kontaktdaten:

TunerStudio für eigene Projekte

Beitrag von Hemi »

Mahlzeit zusammen,

sind heure Leute an Bord, die TunerStudio auch bei ihren eigenen Projekten einsetzen?
Ich habe ein Verhalten, was ich mir nicht erklären kann und wollte erstmal fragen, bevor ich Romane schreibe :)

Danke Euch!
Grüße
Heinrich

Mein GitHub: GitHub
ibizafreak
Beiträge: 87
Registriert: So Nov 13, 2016 5:14 pm

Re: TunerStudio für eigene Projekte

Beitrag von ibizafreak »

Definiere „eigene Projekte“ :-)

Also ich stimme damit meinen Wagen ab. Ist das jetzt ein eigenes Projekt oder gehts im Erweiterungen usw.?

Grüße
Seat Ibiza Cupra 2 - Allradumbau
2.0l 16V Turbo (ABF)
2017-2020: GTX30/76
2020- : Precision PT6466 Gen2
NG-Motorsport Zylinderkopf
02Q 6-Gang Getriebe aus S3 8P
KDFI 1.4 PnP - MS2/Extra 3.4.2
Benutzeravatar
Hemi
Site Admin
Beiträge: 113
Registriert: Sa Jan 05, 2008 9:44 pm
Wohnort: Korntal-Münchingen
Kontaktdaten:

Re: TunerStudio für eigene Projekte

Beitrag von Hemi »

Nein, das ist kein "eigenes Proejkt". :)

Eigenes Projekt: ein Stück Elektronik, was nichts direkt mit MS und Konsorten zu tun hat. Ich nutze es für die Konfiguration von meinem Breitbandlambda-Kontroller und für ein Luftmassenmesser-Adapter. Also was ganz anderes als MS/Speeduino und Konsorten.
Grüße
Heinrich

Mein GitHub: GitHub
Benutzeravatar
Alfagta
Beiträge: 2405
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: TunerStudio für eigene Projekte

Beitrag von Alfagta »

Ja ich nutze es für viele "eigene" Projekte.

Was ist dein verhalten?
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
Hemi
Site Admin
Beiträge: 113
Registriert: Sa Jan 05, 2008 9:44 pm
Wohnort: Korntal-Münchingen
Kontaktdaten:

Re: TunerStudio für eigene Projekte

Beitrag von Hemi »

Moinsen.

Ich versuche es mal zu erklären, die INI vom Projekt habe ich angehängt.

Es geht um die Page 2, sie ist als zwei Arrays von uint16_t definiert, mit Faktor 0.001 und Offset 0. Also, wenn ich einen Wert von 1,123 haben will, sendet TS 1123 zur MCU. So weit so gut.

Ich setze einen Wert, sagen wir mal 1.234 (das gebe ich im CurveEditor ein), TS schickt dann 1234 zur MCU, ich schreibe das in die Konfig, alles super. Im Debugger sieht mein Empfangspuffer dann so aus:
grafik.png
grafik.png (10.09 KiB) 5613 mal betrachtet
Jetzt ändere ich diesen Wert (alt 1.234) auf 0, das klappt auch, Empfangspuffer sieht so aus:
grafik.png
grafik.png (10.28 KiB) 5613 mal betrachtet
Ich ändere den Wert wieder auf 1.234 und Empfangspuffer sieht so aus:
grafik.png
grafik.png (12.01 KiB) 5613 mal betrachtet
Alles richtig.

Wenn ich jetzt den Wert von 1.234 marginal ändere, auf sagen wir mal 1,172, dann sieht mein Empfangspuffer so aus:
grafik.png
grafik.png (9.57 KiB) 5613 mal betrachtet
Das bedeutet dann:
-> Offset ist 0, word(payload[4], payload[3])
-> Länge ist 1, word(payload[6], payload[5])
-> Wert ist 148, word(payload[8], payload[7])

Was macht er hier für ein Mist? Ich hätte erwartet, dass Länge 2 ist und der Wert dann 1172 ist...
Nach dem Schreiben in die Page habe ich dann 0.148 drin stehen, was natürlich falsch ist...

Hast Du eine Idee, was da schief läuft?

Danke Dir
Dateianhänge
tunerstudio.ini
(3.65 KiB) 195-mal heruntergeladen
Grüße
Heinrich

Mein GitHub: GitHub
Benutzeravatar
Alfagta
Beiträge: 2405
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: TunerStudio für eigene Projekte

Beitrag von Alfagta »

Hallo,

wieso er macht doch alles richtig.
Er tauscht im Byte mit Offset 0 das aus was sein muss.

Sieh dir mal 1234 Binär an
(Bit 15....Bit 0)
0000010011010010
So etzt sehen wir uns 1172 Binär an
(Bit 15....Bit 0)
0000010010010100

Also in den Bits 8-15 ändert sich nichts, die bleiben unverändert.
In den Bits 0-7 ändert sich was und bei der Zahl 1172 steht eben im Byte 0 148 drinnen.

Du musst es also so machen, das was TS dir sendet auf Offset 0 in deiner Tabelle schreiben.

Ich glaube man kann dieses Verhalten aber deaktivieren, tsWriteBlocks=off sollte bewirken das immer die ganze Variable / der ganze Wert geschrieben wird.

Er sollte dann für änderung von 1234 auf 1172 2 Bytes senden statt einem Byte.

Hoffe ist verständlich erklärt...
Zuletzt geändert von Alfagta am Fr Okt 04, 2024 8:26 am, insgesamt 1-mal geändert.
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
Hemi
Site Admin
Beiträge: 113
Registriert: Sa Jan 05, 2008 9:44 pm
Wohnort: Korntal-Münchingen
Kontaktdaten:

Re: TunerStudio für eigene Projekte

Beitrag von Hemi »

Achtusch**sse...

Ja, das ist verständlich erklärt. Es sieht in der Tat so aus, dass wenn die Änderung nur marginal ist, dann wird nur LSB übertragen... wenn ich nämlich von 1.234 auf 1.333 ändere, dann funktioniert es.

Der Wert 1333 sieht binär dann so aus:
0000010100110101

Und da es im Vergleich zu 1234 eine Änderung im MSB bedeutet, werden zwei Bytes geschickt und meine Software merged es richtig in die Kennlinie...

Der Parameter tsWriteBlocks heißt nur, dass er die Werte "on block" schreibt, ohne eine Pause zwischen den einzelnen Bytes zu machen.

Ich habe heute Mittag eine Mail an Chris von EFI Analytics geschickt, mal schauen, was er dazu sagt.

Danke Dir auf jeden Fall!
Grüße
Heinrich

Mein GitHub: GitHub
Benutzeravatar
Alfagta
Beiträge: 2405
Registriert: Mo Jan 24, 2011 2:24 pm
Kontaktdaten:

Re: TunerStudio für eigene Projekte

Beitrag von Alfagta »

Ja stimmt hast recht mit dem tsWriteBlocks, hab eben nachgelesen...
Da wartet er nicht auf das interWriteDelay sondern schreibt so schnell es geht.

Aber zu deinem Fall, TS macht alles eichtig nur du musst es in deinem uC korret handeln.
Es funktioniert alles wie gewünscht...

Code: Alles auswählen

	uint8_t *src = (uint8_t*)&BuffCmd[6];
	uint8_t *dst = (uint8_t*)&cfg;
	for (uint8_t i = 0; i <len; i++) {
		*(dst+i+offs) = *(src+i);
	}
So mache ich das, funktioniert problemlos.
offs und len kommen aus dem Buff 2,3 sowie 4,5...

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
Hemi
Site Admin
Beiträge: 113
Registriert: Sa Jan 05, 2008 9:44 pm
Wohnort: Korntal-Münchingen
Kontaktdaten:

Re: TunerStudio für eigene Projekte

Beitrag von Hemi »

Alfagta hat geschrieben: Fr Okt 04, 2024 8:36 am Ja stimmt hast recht mit dem tsWriteBlocks, hab eben nachgelesen...
Da wartet er nicht auf das interWriteDelay sondern schreibt so schnell es geht.
Ja, ganz genau.
Dieses Verhalten, dass nur "Deltas" (so nenne ich es mal) übertragen werden, habe ich nirgends in den Dokus gelesen.
Habe es umgebaut und es geht.

Alfagta hat geschrieben: Fr Okt 04, 2024 8:36 am Aber zu deinem Fall, TS macht alles eichtig nur du musst es in deinem uC korret handeln.
Es funktioniert alles wie gewünscht...

Code: Alles auswählen

	uint8_t *src = (uint8_t*)&BuffCmd[6];
	uint8_t *dst = (uint8_t*)&cfg;
	for (uint8_t i = 0; i <len; i++) {
		*(dst+i+offs) = *(src+i);
	}
So mache ich das, funktioniert problemlos.
offs und len kommen aus dem Buff 2,3 sowie 4,5...

Gruß
Ich mache es ähnlich

Code: Alles auswählen

uint16_t page_indentifier = word(payload[2], payload[1]);
uint16_t offset = word(payload[4], payload[3]);
uint16_t length = word(payload[6], payload[5]);
uint16_t value = word(payload[8], payload[7]);

if (length == 1)
{
	uint8_t val = payload[7];
	set_page2_value (page_indentifier, offset, &val, length);

}
else
{
	uint16_t val = word(payload[8], payload[7]);
	set_page2_value (page_indentifier, offset, &val, length);
}
Die Variable payload ist der extrahierte Payload aus der Message, die an die ECU geschickt wurde, nach der Prüfung der CRC (CRC rechne die MCU in Hardware) und etc.

und die Funktion zum Überschreiben:

Code: Alles auswählen

void set_page2_value (uint8_t page_indentifier, uint16_t offset, void* value, uint16_t length)
{
	switch (page_indentifier)
	{
		case 2:
		{
			memcpy((uint8_t*)&input_maf + offset, value, length);
		}
		break;
	}
}
So funktioniert es auf jeden Fall und wird auch richtig eingesetzt. Jetzt werde ich es mal von U16 auf F32 umbauen, dann kann ich den DSP direkt mit Floats füttern ohne casten zu müssen. DSP macht eine kubische Spline-Interpolation.

Vielen Dank Dir für die Hilfe!
Grüße
Heinrich

Mein GitHub: GitHub
Antworten