Quantex GmbH
DE RU EN EL
Ihre Region: Europa

GET_CONFIG / SET_CONFIG v4.04 v5.0

Protokollparameter

Letzte Änderung:

GET_CONFIG — Lesen der Protokollparameter

Gibt die aktuellen Werte der Protokollparameter für den angegebenen Kanal zurück. Die Parameter können auf die Standardwerte gesetzt oder zuvor über SET_CONFIG geändert worden sein.

IoctlID 0x01
pInput SCONFIG_LIST* — Liste der angeforderten Parameter
pOutput NULL (das Ergebnis wird in pInput geschrieben)

SET_CONFIG — Schreiben der Protokollparameter

Setzt die Werte der Protokollparameter für den angegebenen Kanal. Die Parameter werden sofort wirksam und beeinflussen den nachfolgenden Datenaustausch.

IoctlID 0x02
pInput SCONFIG_LIST* — Liste der zu setzenden Parameter
pOutput NULL

Datenstrukturen

typedef struct {
    unsigned long Parameter;  // Parameter-ID
    unsigned long Value;      // Parameterwert
} SCONFIG;

typedef struct {
    unsigned long NumOfParams;  // Anzahl der Parameter in der Liste
    SCONFIG *ConfigPtr;         // Zeiger auf das SCONFIG-Array
} SCONFIG_LIST;

Rückgabe-Fehlercodes

Code Beschreibung Mögliche Ursachen und Lösungen
STATUS_NOERROR Funktion erfolgreich ausgeführt
ERR_DEVICE_NOT_CONNECTED Keine Verbindung zum Adapter
  • Adapter ausgeschaltet oder außerhalb der Reichweite
  • Lösung: Prüfen Sie die Stromversorgung und die Verbindung
ERR_INVALID_CHANNEL_ID Ungültige Kanal-ID
  • ChannelID wurde nicht über PassThruConnect bezogen
  • Lösung: Führen Sie PassThruConnect aus
ERR_NULL_PARAMETER NULL anstelle eines Zeigers übergeben
  • pInput ist NULL
  • Lösung: Übergeben Sie einen Zeiger auf SCONFIG_LIST
ERR_NOT_SUPPORTED Parameter wird nicht unterstützt
  • Parameter ist für dieses Protokoll nicht gültig
  • Lösung: Prüfen Sie die Kompatibilität des Parameters mit dem Protokoll
ERR_INVALID_IOCTL_VALUE Unzulässiger Parameterwert
  • Der Wert liegt außerhalb des zulässigen Bereichs
  • Lösung: Prüfen Sie die zulässigen Werte des Parameters
ERR_FAILED Unbestimmter Fehler
  • Interner Fehler
  • Lösung: Rufen Sie PassThruGetLastError() auf

Protokollparameter

Allgemeine Parameter (alle Protokolle)

Parameter Wert Beschreibung Standard
LOOPBACK 0x03 Loopback-Modus: 0 — aus, 1 — ein 0
Die vollständige Liste der allgemeinen Parameter finden Sie im Standard SAE J2534-1.

K-Line-Parameter (ISO 9141 / ISO 14230)

Zeitparameter werden in Millisekunden angegeben.

Parameter Wert Beschreibung Standard
P1_MAX 0x07 Maximale Inter-Byte-Zeit vom Steuergerät (ms) 20
P3_MIN 0x0A Minimale Zeit zwischen Ende der Antwort und neuer Anfrage (ms) 55
P4_MIN 0x0C Minimale Inter-Byte-Zeit vom Tester (ms) 5
Die vollständige Liste der K-Line-Parameter finden Sie im Standard SAE J2534-1.

CAN-Parameter

Parameter Wert Beschreibung Standard
BIT_SAMPLE_POINT 0x17 Bit-Abtastpunkt in % (60-90) 80
SYNC_JUMP_WIDTH 0x18 Synchronisations-Sprungbreite in % (1-25) 15
HS_CAN_TERMINATIONJ2534-2 0x805E CAN-Terminierung: 0 — aus, 3 — ein 0

ISO 15765-Parameter (CAN UDS)

Parameter Wert Beschreibung Standard
ISO15765_BS 0x1E Block Size (BS) für den Empfang segmentierter Nachrichten 0 (keine Begrenzung)
ISO15765_STMIN 0x1F STmin für den Empfang — minimale Zeit zwischen CF (ms) 0
N_CR_MAX v5.0 0x805F Maximale Wartezeit auf Consecutive Frame (ms) 1000
CAN_MIXED_FORMAT J2534-2 0x8000 Gemischtes Format (siehe Details) 0
Die vollständige Liste der ISO 15765-Parameter finden Sie im Standard SAE J2534-1.

CAN_MIXED_FORMAT — Gemischtes Format J2534-2

Der Parameter CAN_MIXED_FORMAT gilt nur für ISO 15765-Kanäle. Er ermöglicht den Empfang und die Übertragung sowohl formatierter ISO 15765-Nachrichten als auch unformatierter CAN-Frames auf demselben Kanal.

Wert Konstante Beschreibung
0 CAN_MIXED_FORMAT_OFF Alle Nachrichten werden als ISO 15765 verarbeitet (Standard)
1 CAN_MIXED_FORMAT_ON Nachrichten werden als ISO 15765 oder als unformatierte CAN-Frames verarbeitet
2 CAN_MIXED_FORMAT_ALL_FRAMES Nachrichten werden als ISO 15765, als unformatierte CAN-Frames oder als beides verarbeitet
Wichtig: Beim Ändern dieses Parameters:
Bei Verwendung des gemischten Formats:

CAN FD-Parameter J2534-2

Parameter Wert Beschreibung Standard
FD_CAN_DATA_PHASE_RATE 0x805C Datenübertragungsrate in der CAN FD-Datenphase (Bit/s) 0 (nicht gesetzt)
Die vollständige Liste der CAN FD-Parameter finden Sie im Standard SAE J2534-2 rev.2020-12, Seite 87, Tabelle 90.

SW-CAN-Parameter (Single-Wire CAN)

Parameter Wert Beschreibung Standard
SW_CAN_HS_DATA_RATE 0x8010 Geschwindigkeit des High-Speed-Modus (Bit/s) 83333
Die vollständige Liste der SW-CAN-Parameter finden Sie im Standard SAE J2534-2 rev.2020-12, Seite 29, Tabelle 9.

J1962_PINS — Umschaltung der OBD-II-Kontakte

Der Parameter J1962_PINS (0x8001) ermöglicht es, Signalleitungen an verschiedene Kontakte des OBD-II-Steckers anzuschließen. Der Wert wird als 16-Bit-Zahl angegeben: höherwertiges Byte — Primary Pin (PP), niederwertiges Byte — Secondary Pin (SS).

Primary Pin wird für K-Line, CAN-H, J1850+ verwendet. Secondary Pin — für L-Line, CAN-L, J1850-.

ScanDoc Compact

J1962-Umschaltschema — ScanDoc Compact
Konstante Wert Kontakt
PP_1 / SS_1 0x01 Pin 1
PP_2 / SS_2 0x02 Pin 2
PP_3 / SS_3 0x03 Pin 3
PP_6 / SS_6 0x06 Pin 6 (CAN-H)
PP_7 / SS_7 0x07 Pin 7 (K-Line)
PP_11 / SS_11 0x0B Pin 11
PP_12 / SS_12 0x0C Pin 12
PP_13 / SS_13 0x0D Pin 13
PP_14 / SS_14 0x0E Pin 14 (CAN-L)
PP_15 / SS_15 0x0F Pin 15 (L-Line)

TP 2.0-Parameter (VAG) J2534-2

Das Protokoll TP 2.0 wird in VAG-Fahrzeugen (Volkswagen, Audi, Skoda, Seat) zur Diagnose verwendet.

Für TP 2.0 werden auch die Parameter DATA_RATE, LOOPBACK, BIT_SAMPLE_POINT, SYNC_JUMP_WIDTH und J1962_PINS unterstützt. Standardwerte: LOOPBACK = 0, BIT_SAMPLE_POINT = 80%, SYNC_JUMP_WIDTH = 15%.
Parameter Wert Beschreibung Standard
TP2_0_T_BR_INT 0x8044 Broadcast interval — Intervall zwischen 5 Nachrichten einer Broadcast-Übertragung (ms) 20
TP2_0_T_E 0x8045 Maximale Wartezeit auf Channel Acknowledge oder Connection Acknowledge (ms) 100
TP2_0_MNTC 0x8046 Anzahl der Wiederholungsversuche für Verbindungssteuerungsnachrichten 10
Die vollständige Liste der TP 2.0-Parameter finden Sie im Standard SAE J2534-2 rev.2020-12, Seite 78, Tabelle 77.

UART Echo Byte-Parameter J2534-2

Das Protokoll UART Echo Byte wird zur Diagnose älterer Fahrzeuge verwendet (SAE J2809, SAE J2818). Alle Zeitparameter werden in Millisekunden angegeben.

Parameter Wert Beschreibung SAE J2809 SAE J2818
UEB_T0_MIN 0x8028 Minimale Leerlaufzeit vor der Übertragung des Adressbytes t0 T_R0
UEB_T1_MAX 0x8029 Maximale Zeit zwischen Stimulation und Beginn des Sync-Bytes t1 t_r1
UEB_T2_MAX 0x802A Maximale Zeit zwischen Sync-Byte und KeyByte 1 t2 t_r2
Die vollständige Liste der UART Echo Byte-Parameter finden Sie im Standard SAE J2534-2 rev.2020-12, Seite 46, Tabelle 36.

Beispiele

GET_CONFIG — Lesen der Parameter

Beispiel in C/C++

#include "j2534_dll.hpp"

unsigned long ChannelID;  // Von PassThruConnect erhalten
SCONFIG Config[2];
SCONFIG_LIST ConfigList;
long ret;

// DATA_RATE und ISO15765_STMIN abfragen
Config[0].Parameter = DATA_RATE;
Config[0].Value = 0;
Config[1].Parameter = ISO15765_STMIN;
Config[1].Value = 0;

ConfigList.NumOfParams = 2;
ConfigList.ConfigPtr = Config;

ret = PassThruIoctl(ChannelID, GET_CONFIG, &ConfigList, NULL);
if (ret == STATUS_NOERROR)
{
    printf("DATA_RATE: %lu bps\n", Config[0].Value);
    printf("ISO15765_STMIN: %lu ms\n", Config[1].Value);
}

Beispiel in Kotlin (Android)

// channelID von ptConnect erhalten
val params = listOf(
    PtConfig(parameter = DATA_RATE, value = 0u),
    PtConfig(parameter = ISO15765_STMIN, value = 0u)
)

val result = j2534.ptIoctl(channelID, GET_CONFIG, params.size, params.toByteArray())
if (result.status == STATUS_NOERROR) {
    val resultParams = result.toConfigList()
    resultParams.forEach { config ->
        Log.i("J2534", "Parameter ${config.parameter}: ${config.value}")
    }
}

Beispiel in Python

from ctypes import *

config = (SCONFIG * 2)()
config[0].Parameter = DATA_RATE
config[1].Parameter = ISO15765_STMIN

config_list = SCONFIG_LIST()
config_list.NumOfParams = 2
config_list.ConfigPtr = config

ret = j2534.PassThruIoctl(channel_id, GET_CONFIG, byref(config_list), None)
if ret == 0:
    print(f"DATA_RATE: {config[0].Value} bps")
    print(f"ISO15765_STMIN: {config[1].Value} ms")

Beispiel in C#

var configs = new SCONFIG[2];
configs[0].Parameter = DATA_RATE;
configs[1].Parameter = ISO15765_STMIN;

var configList = new SCONFIG_LIST {
    NumOfParams = 2,
    ConfigPtr = configs
};

int ret = J2534.PassThruIoctl(channelId, GET_CONFIG, ref configList, IntPtr.Zero);
if (ret == 0)
{
    Console.WriteLine($"DATA_RATE: {configs[0].Value} bps");
    Console.WriteLine($"ISO15765_STMIN: {configs[1].Value} ms");
}

SET_CONFIG — Setzen der Parameter

Beispiel in C/C++ — Konfiguration von ISO 15765

#include "j2534_dll.hpp"

unsigned long ChannelID;  // Von PassThruConnect für ISO15765 erhalten
SCONFIG Config[3];
SCONFIG_LIST ConfigList;
long ret;

// ISO 15765-Parameter setzen
Config[0].Parameter = ISO15765_STMIN;
Config[0].Value = 0;  // Keine Verzögerung zwischen CF
Config[1].Parameter = ISO15765_BS;
Config[1].Value = 0;  // Keine Blockbegrenzung
Config[2].Parameter = ISO15765_PAD_VALUE;
Config[2].Value = 0xCC;  // Füllbyte 0xCC

ConfigList.NumOfParams = 3;
ConfigList.ConfigPtr = Config;

ret = PassThruIoctl(ChannelID, SET_CONFIG, &ConfigList, NULL);
if (ret != STATUS_NOERROR)
{
    char error[256];
    PassThruGetLastError(error);
    printf("SET_CONFIG-Fehler: %s\n", error);
}

Beispiel in C/C++ — Konfiguration von J1962_PINS

#include "j2534_dll.hpp"

unsigned long ChannelID;
SCONFIG Config[1];
SCONFIG_LIST ConfigList;
long ret;

// K-Line an Pin 3, L-Line an Pin 11 anschließen
Config[0].Parameter = J1962_PINS;
Config[0].Value = PP_3 | SS_11;  // 0x030B

ConfigList.NumOfParams = 1;
ConfigList.ConfigPtr = Config;

ret = PassThruIoctl(ChannelID, SET_CONFIG, &ConfigList, NULL);
if (ret == STATUS_NOERROR)
{
    printf("K-Line an Pin 3, L-Line an Pin 11 angeschlossen\n");
}

Beispiel in Kotlin (Android)

// channelID von ptConnect erhalten
val params = listOf(
    PtConfig(parameter = ISO15765_STMIN, value = 0u),
    PtConfig(parameter = ISO15765_BS, value = 0u),
    PtConfig(parameter = ISO15765_PAD_VALUE, value = 0xCCu)
)

val result = j2534.ptIoctl(channelID, SET_CONFIG, params.size, params.toByteArray())
if (result.status == STATUS_NOERROR) {
    Log.i("J2534", "ISO 15765-Parameter gesetzt")
} else {
    Log.e("J2534", "SET_CONFIG-Fehler: ${result.status}")
}

Beispiel in Python

from ctypes import *

config = (SCONFIG * 2)()
config[0].Parameter = DATA_RATE
config[0].Value = 500000  # 500 kbps
config[1].Parameter = CAN_MIXED_FORMAT
config[1].Value = 1  # Gemischtes Format aktivieren

config_list = SCONFIG_LIST()
config_list.NumOfParams = 2
config_list.ConfigPtr = config

ret = j2534.PassThruIoctl(channel_id, SET_CONFIG, byref(config_list), None)
if ret == 0:
    print("CAN-Parameter gesetzt")

Beispiel in C#

var configs = new SCONFIG[2];
configs[0].Parameter = DATA_RATE;
configs[0].Value = 500000;  // 500 kbps
configs[1].Parameter = HS_CAN_TERMINATION;
configs[1].Value = 3;  // Terminierung aktivieren

var configList = new SCONFIG_LIST {
    NumOfParams = 2,
    ConfigPtr = configs
};

int ret = J2534.PassThruIoctl(channelId, SET_CONFIG, ref configList, IntPtr.Zero);
if (ret == 0)
{
    Console.WriteLine("Parameter gesetzt");
}