Nicht zu 100% geladen?

Falls Du Interesse am neuen elektrischen smart #1 hast... - Besuche unser neues Forum! smart #1 Forum (Hinweis kann durch Klick auf das x geschlossen werden!)
  • Nachdem sich hier wieder mal jemand als Zentrum angesprochen fühlt und sich mit fremden Federn schmückt, hier ein paar technische Details, die man (noch) nicht in anderen Blogs lesen und wie man das Tool eigentlich verwenden kann.

    Schauen wir uns doch mal die Funktion an die uns das gute ED4scan bietet, das im Prinzip das ähnliche wie beim BMSdiag macht und jederzeit kostenlos vom Git vom Entwickler heruntergeladen werden kann genauer an.

    Man kann es auch fertig in einem Shop kaufen oder selber zusammenbauen und 100€ sparen.

    Also was passiert denn wenn man die Funktion SetACMax mit dem eingegebenen Befehl "set ac_max 20 -yes]" aufruft ;)

    boolean canDiag::setACmax(ChargerDiag_t *myOBL, boolean debug_verbose) {


    myOBL->newAmps_setpoint = constrain(myOBL->newAmps_setpoint, 6, 20);

    //Serial.println(myOBL->newAmps_setpoint);


    byte _rqMsg[8] = {0x04, 0x2E, 0x61, 0x41, 0x50, 0x00, 0x00, 0x00};

    _rqMsg[4] = myOBL->newAmps_setpoint * 4; //Define new AC max current


    Genau der eingegebene Wert wird überprüft ob er zwischen 6 und 20 Ampere liegt. Was wohl passieren würde, wenn man an dieser stelle statt 20 den Wert 32 eintragt?
    Noch nicht viel da einer zweiten Stelle nochmal auf 20 Ampere abgefragt wird.
    Vielleicht hier? :


    if (OBL.OBL7KW && (BMS.KeyState == 0) && strcmp(args[1], "ac_max") == 0 && strcmp(args[3], "-yes") == 0) {

    OBL.newAmps_setpoint = constrain((byte) cmdStr2Num(args[2], 10), 6, 20);

    if (DiagCAN.setACmax(&OBL, false)) {

    if (DiagCAN.getChargerCtrlValues(&OBL, false)) {

    if (OBL.Amps_setpoint == OBL.newAmps_setpoint) .......


    Würde dann die Funktion SetACMax mit dem eingegebenen Befehl "set ac_max 32 -yes]" wohl etwas bestimmtes machen ? ;)

    Aber das ist ja nur der Weg wie man auf 7,2KW umstellen kann oder halt auch auf kleinere Werte.
    Aber das "teuerere" erweiterte ED4scan ist hier ja nicht wirklich die Wahl. Denn das auch ins OVMS einzubauen würde es erlauben die Werte jederzeit Remote einzustellen.
    Ok was müsste man dazu machen?

    Schauen wir uns mal folgende Zeile an:
    byte _rqMsg[8] = {0x04, 0x2E, 0x61, 0x41, 0x50, 0x00, 0x00, 0x00};
    Hier ist das ganze Wunderwerk der Einstellung.
    Es ist ein UDS Befehl auf dem CAN-BUS via der ODB Schnittstelle. Sprich jeder billigst ELM327 kann das wenn man den richtigen Befehl and die richtige CAN ID schickt.
    Die CAN IDs für das UDS Protokoll des OBL sind die

    const PROGMEM uint32_t rqID_CHGCTRL = 0x719;

    const PROGMEM uint32_t respID_CHGCTRL = 0x739;


    Die Framelänge ist immer 8 Bytes.
    Im Frame ist der UDS Befehl.
    Der besteht auf 4 Bytes (das ist die erste Zahl im Frame, die wird nicht mitgezählt)
    Das UDS Kommando lautet 0X2E, 0x61 und 0x41 mit dem Parameter 0x50)
    Der Wert in Ampere wird mal 4 Stelle gezählt ab 0 eingetragen und überschreibt den Wert 0x50.

    Somit kann man sogar den Stromwert in 250mA Schritten angeben.


    Das ganze macht übrigens auch das DDT4ALL innerhalb dem ganzen Software wusst.


    Somit wie funktioniert es denn jetzt mit dem ELM327 und einem einfachen Terminalprogramm mit jedem Mobile oder auch mit einer kleinen APP?

    Genau zwei Befehlszeile und alles ist passiert


    ATSH 719

    04 2E 61 41 80 00 00 00


    dann sind 32A eingestellt

    oder

    ATSH 719

    04 2E 61 41 50 00 00 00


    dann sind 20A eingestellt


    und falls es mal einen gespeicherten Fehlercode im OBL gibt

    vielleicht mal

    ATSH 719

    04 14 FF FF FF 00 00 00


    ausprobieren. Dazu muss man nicht extra einen Tester anschliessen oder in die Werkstatt fahren :)


    Ich weiss das ist ziemlich tiefer Tobak, aber das ist wirkliches Wissen das geteilt wird.


    Ob 2 Zahlen, die in einer freien Software gändert werden 50 Euro Wert sind muss jeder für sich selber entscheiden.

    Die Arduino IDE ist ja sowieso schon drauf und die 2 Stellen im Code sollte so jeder der ein wenig versteht leicht finden.

    Ich empfehle nebenbei statt der Arduino Umgebung zum ED4scan auslesen die Software Coolterm.


    Viel Spass beim selber probieren. Bei Fragen helfe ich sonst gerne weiter.


  • Selbstverherrlichung in ihrer reinsten Form und eine wunderbare Ablenkung davon, dass Du keine Situation auslässt um gegen mich zu stänkern.

    Selbst wenn Du dazu einen thread kapern musst und komplett am Thema vorbei schießen.


    Immerhin, die Anleitung ist natürlich immer gerne gesehen. :)

  • Innocent

    Hat das Thema geschlossen.