@Gerold: (wir waren dazu ja schon kurz per PN in Kontakt)
Ich möchte mich in nächster Zeit auch endlich mal daran machen, die Programmierung des Sevcon etwas zu "optimieren". Mir geht es v.a. um eine Anpassung der Reku in den verschiedenen Fahrprofilen.
Es wäre sicher nicht schlecht, wenn wir hier ein etwas konkreteres "How-to" zusammenstellen und diskutieren, als das bisher der Fall war.
Die nötige Hard- und Software sind weiter oben in diesem Thread schon beschrieben:
viewtopic.php?p=231338#p231338
viewtopic.php?p=234453#p234453
Daneben braucht man die sog. "Sevcon CANopen Master Object Dictionary", die man per google findet, zumindest als pdf.
Es gibt offensichtlich auch eine xls-Version davon ("Master_Object_Dictionary_Database-3.xls" oder ähnliche Dateinamen), dafür habe ich aber bisher keine vertrauenserweckende Downloadquelle gefunden.
In diesem Dokument findet man sämtliche Parameter des Sevcon mit Beschreibungen.
Und hier fängt es jetzt an, interessant zu werden, denn ich finde, es sollte sich nicht jeder Nutzer alle Zusammenhänge neu erarbeiten müssen.
Mir sind im Moment folgende Punkte nicht ganz klar:
1.
Was bedeutet im Dictionary die Spalte "Version"?
Die Profile (z.B. Register 2921) gibt es immer doppelt, also Version 1 und Version 2. Unterschiedlich sind die Einheiten, in V1 überwiegend in %, in V2 überwiegend in Nm. Die zulässigen Wertebereiche sind unterschiedlich. Welche Version trifft beim S01 zu?
2.
Wie sind die Profile den Fahrprofilen am S01 zugeordnet?
im Dictionary gibt es wohl die 3 Standardprofile:
Traction baseline profile
Driveability Select 1 Profile
Driveability Select 2 Profile
und dann noch spezielle Profile, die wohl aktiv werden wenn das untere Limit Akkuspannung erreicht wird etc.:
Low Speed Profile
BDI Low Profile
3.
zur twizy-cfg:
man braucht also nur die Befehle "r" und "w", oder?
Oder brauche ich auch "pre-op mode" und "op-mode", und was ist das?
4.
Zu den Befehlen "r" und "w":
bei der twizy-cfg sind unten ein paar Beispiele angegeben, z.B.
"Get firmware version: rs 100a 00"
und da steht:
"<id> & <sub> define the SDO register to access, need to be given as hexadecimal numbers"
Warum ist im Beispiel "rs 100a 00" <sub> zweistellig, obwohl im dictionary als <subindex> nur "0" steht? Muss das immer 2-stellig angegeben werden, oder ist es egal?
Wenn ich z.B. konkret auslesen will: Driveability Select 1 Profile, Subindex 13 "Ramp down rate during neutral braking"
was ist dann der korrekte Befehl von den folgenden:
r 2921 13
r 2921 d
r 2921 0d
Vermutllich der letzte? Oder geht "d" allein auch?
5.
Die Sache mit den negativen Zahlen und dem Zweierkomplement wie für twizy-cfg auf github beschrieben ist für mich widersprüchlich.
Brauchen wir das überhaupt bei den für uns interessanten Registern?
Auf der github-Seite gibts eine Tabelle mit offsets dafür.
Für Integer8 steht da ein z.B. offset von 256.
Warum 256 und nicht 128? Integer8 kann doch nur 0-255? oder seit wann hat integer8 9 bits?
Im dictionary ist für Integer8-Werte i.d.R. ein Wertebereich -128 bis 127 angegeben. Das passt irgendwie nicht zusammen, bzw. deutet eben auf einen offset von 128 hin, wie das auch für einen 8-Bit-Wert üblich wäre.
Patrick