Forum: Fahrzeugelektronik PGN in J1939 konvertieren


von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe eine Projekt bekommen, an dem ich und meine Kollegen an die 
Grenzen stoßen, da das nicht unser täglich Brot ist.

Wir wollen einen Generator, welcher derzeit über I/O mit einem 
Steuergerät kommuniziert, nun per CAN BUS kommunizieren lassen.
Vorab, die Verbindung funktioniert und auf dem Steuergerät werden schon 
Daten vom Generator angezeigt (2 Werte die schon voreingestellt waren)

Nun hat uns der Hersteller vom Steuergerät gesagt, dass sie das nicht 
mehr unterstützen und wir weitere Werte selbst einbauen müssen und das 
über J1939 Parameter auch einfach geht. Leider haben die keinen mehr in 
der Firma der uns das erklären kann.

Wir wollen den PGN Wert "65281" beispielhaft haben. Allerdings wissen 
wir nicht was wir bei "Frame number"."Postition" und "lenght" eintragen 
sollen.

Ehrlich - wir haben keine Ahnung und sind am Ende, da uns weder 
Steuergerät Hersteller oder Generatoren Hersteller helfen können/wollen.
Für jemanden der sich auskennt, der lacht da wohl drüber ;)

Bilder sind im Anhang... bei Fragen bitte einfach melden!

Vielen dank schon mal

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Zeig bitte mal die Spaltenüberschriften der Tabelle Generator.jpg

Das Steuergerät kann von sich aus kein J1939 oder? Das nutzt nur nackte 
CAN-Frames?

: Bearbeitet durch User
von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Hallo,
danke für den Hinweis.  (Siehe Anhang)

Die Frage kann ich dir leider nicht beantworten. Vielleicht hilft dir 
das Zitat aus der Anleitung?

"Note: Since InteliConfig 2.53.0, the way to configure user J1939 
parameters has changed a bit. In particular,
the frames and the own datapoints are defined. Each datapoint must have 
a defined frame to which it
belongs. First, you need to define the Frame and only then the 
individual data points that belong to the given
frame"

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Thomas B. schrieb:
> Note: Since InteliConfig 2.53.0, the way to configure user J1939
> parameters has changed a bit

Na dann unterstützt es offensichtlich J1939. Aber bist du sicher dass 
der Screenshot von Version 2.53.0 oder höher ist? Sieht eher so aus als 
wäre das da nicht so implementiert wie beschrieben

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Die Informationen reichen nicht. Um die "Frame Number" zu ermitteln wird 
mindestens noch die S(ource)A(ddress) und die Prio der PGN benötigt. Am 
einfachsten ist wenn ihr mal einen CAN-Trace vom Generator zieht.

Position sollte dann 1.1 und Length vermutlich 2 bzw. 16 sein je nachdem 
was in dem Tool eingestellt wird (Bits bzw. Bytes)

Das hier https://www.csselectronics.com/pages/j1939-pgn-conversion-tool 
kann auch ganz nützlich sein. Auch 
https://www.csselectronics.com/pages/j1939-explained-simple-intro-tutorial 
ist als Tutorial nicht schlecht.


Gruß

Matthias

Beitrag #7811677 wurde vom Autor gelöscht.
von Thomas B. (thomasbartmann)


Lesenswert?

Niklas G. schrieb:
> Thomas B. schrieb:
>> Note: Since InteliConfig 2.53.0, the way to configure user J1939
>> parameters has changed a bit
>
> Na dann unterstützt es offensichtlich J1939. Aber bist du sicher dass
> der Screenshot von Version 2.53.0 oder höher ist? Sieht eher so aus als
> wäre das da nicht so implementiert wie beschrieben

Der Screenshot ist vom Generator.

das "2.53.0 oder höher" bezieht sich auf die Steuerung und und die ist

Version 2.53.0.82

von daher müsste es passen

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Thomas B. schrieb:
> Der Screenshot ist vom Generator.

Warum heißt er dann "Steuerung" 😁 Dann zeig doch mal einen Screenshot 
von der Steuerung!

von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Μαtthias W. schrieb:
> Hi
>
> Die Informationen reichen nicht. Um die "Frame Number" zu ermitteln wird
> mindestens noch die S(ource)A(ddress) und die Prio der PGN benötigt. Am
> einfachsten ist wenn ihr mal einen CAN-Trace vom Generator zieht.
>
> Position sollte dann 1.1 und Length vermutlich 2 bzw. 16 sein je nachdem
> was in dem Tool eingestellt wird (Bits bzw. Bytes)
>
> Das hier https://www.csselectronics.com/pages/j1939-pgn-conversion-tool
> kann auch ganz nützlich sein. Auch
> https://www.csselectronics.com/pages/j1939-explained-simple-intro-tutorial
> ist als Tutorial nicht schlecht.
>
>
> Gruß
>
> Matthias

Hallo,

Danke für die Links. Die kenn ich schon. Helfen mir aber nur bedingt.

Im Anhang noch eine Tabelle. Vielleicht steht da was brauchbares drin?

Mit dem Konverter kommen ja SA und P raus. Hilft das nicht? (siehe 
Anhang)

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Thomas B. schrieb:
> Mit dem Konverter kommen ja SA und P raus. Hilft das nicht? (siehe
> Anhang)

Wenn du die exakte CAN-ID auf der Leitung hast, ja. z.B. aus einem 
DBC-File oder aus einem Mittschnitt...

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Niklas G. schrieb:
> Thomas B. schrieb:
>> Mit dem Konverter kommen ja SA und P raus. Hilft das nicht? (siehe
>> Anhang)
>
> Wenn du die exakte CAN-ID auf der Leitung hast, ja. z.B. aus einem
> DBC-File oder aus einem Mittschnitt...

So schauts aus. Oder aus anderen Nachrichten die in der "Steuerung" 
bereits konfiguriert sind. Oder aus der Doku vom Generator.

von Thomas B. (thomasbartmann)


Lesenswert?

Niklas G. schrieb:
> Thomas B. schrieb:
>> Der Screenshot ist vom Generator.
>
> Warum heißt er dann "Steuerung" 😁 Dann zeig doch mal einen Screenshot
> von der Steuerung!

Jetzt hast mich verwirrt :D

Generator schickt die CAN Signale

Steuerung empfängt die Can Signale. Die Steuerung muss auf 2.53.0 sein 
und das ist sie.
Das Zitat ist von der Steuerung

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Thomas B. schrieb:
> Steuerung empfängt die Can Signale. Die Steuerung muss auf 2.53.0 sein
> und das ist sie.

Dann zeig doch DAVON mal einen Screenshot. Von den Einstellungen für den 
J1939-Empfang in der Steuerung.

von Dieter S. (ds1)


Lesenswert?

Vielleicht kann man sich ja die bereits definierte Konfiguration 
ansehen, dann sollte klar sein was gemeint ist.

von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Μαtthias W. schrieb:
> Niklas G. schrieb:
>> Thomas B. schrieb:
>>> Mit dem Konverter kommen ja SA und P raus. Hilft das nicht? (siehe
>>> Anhang)
>>
>> Wenn du die exakte CAN-ID auf der Leitung hast, ja. z.B. aus einem
>> DBC-File oder aus einem Mittschnitt...
>
> So schauts aus. Oder aus anderen Nachrichten die in der "Steuerung"
> bereits konfiguriert sind. Oder aus der Doku vom Generator.

Ich hab im Anhang die Doku. vielleicht hilft dir die ja was? Ich hätte 
jetzt nichts gefunden...

von Thomas B. (thomasbartmann)


Lesenswert?

Dieter S. schrieb:
> Vielleicht kann man sich ja die bereits definierte Konfiguration
> ansehen, dann sollte klar sein was gemeint ist.

Das hatte ich auch gedacht, aber die sind in der Steuerung 
"Softwareintern" abgespeichert. Da komm ich nicht ran

von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Niklas G. schrieb:
> Thomas B. schrieb:
>> Steuerung empfängt die Can Signale. Die Steuerung muss auf 2.53.0 sein
>> und das ist sie.
>
> Dann zeig doch DAVON mal einen Screenshot. Von den Einstellungen für den
> J1939-Empfang in der Steuerung.

Mehr gibts leider nicht

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Da steht doch die Device Address. 144. Also sollte deine gesuchte Frame 
Number eine dieser acht CAN-IDs sein (alle Prioritäten):

0x00FF0190
0x04FF0190
0x08FF0190
0x0CFF0190
0x10FF0190
0x14FF0190
0x18FF0190
0x1CFF0190

von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Μαtthias W. schrieb:
> Da steht doch die Device Address. 144. Also sollte deine gesuchte Frame
> Number eine dieser acht CAN-IDs sein (alle Prioritäten):
>
> 0x00FF0190
> 0x04FF0190
> 0x08FF0190
> 0x0CFF0190
> 0x10FF0190
> 0x14FF0190
> 0x18FF0190
> 0x1CFF0190

Haha :D

Man merkt dass du dich auskennst und ich halt keine Ahnung hab :D

Drei Fragen

1) Wie kommst du auf die frame number?
(ich will ja was lernen)

2) kannst mir nochmal "einfach" erklären was die Prioritäten bewirken? 
Aussagen?
3) Muss ich bei den restlichen Werten nichts mehr ändern?

Danke

: Bearbeitet durch User
von Dieter S. (ds1)


Lesenswert?

Du könntest mit den Einstellungen experimentieren.

Falls sie mit "Frame number" die PGN meinen und "Position" bzw. "Length" 
in Bits gezählt wird wäre ein Versuch (falls das MSB mit "1.1" 
bezeichnet wird):

1
Frame number: 0xFF01
2
Position:     1.1
3
Length:       16

Es könnte aber auch die Position "1.0", "1.8" oder "1.7" für das MSB 
sein. Die "Frame number" könnte auch die CAN ID sein, das wird also 
schnell recht umfangreich.

Idealerweise kann man bei solchen Experimenten beobachten was auf dem 
CAN-Bus genau passiert.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Μαtthias W. schrieb:
> Da steht doch die Device Address. 144. Also sollte deine gesuchte Frame
> Number eine dieser acht CAN-IDs sein (alle Prioritäten):

Das Steuergerät kennt ja anscheinend den spezifischen Generator (D500). 
Die PGNs und CAN-IDs sind im PDF ja sogar wunderbar dokumentiert 
(0CFDA600 - 64934).

Ich würde davon ausgehen dass man da gar nichts mehr detailliert 
konfigurieren muss. Nur die Device ID muss stimmen. Das ist ja 
eigentlich auch der Sinn von J1939.

von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Μαtthias W. schrieb:
> Da steht doch die Device Address. 144. Also sollte deine gesuchte Frame
> Number eine dieser acht CAN-IDs sein (alle Prioritäten):
>
> 0x00FF0190
> 0x04FF0190
> 0x08FF0190
> 0x0CFF0190
> 0x10FF0190
> 0x14FF0190
> 0x18FF0190
> 0x1CFF0190

MAtthias W. bekommt 100 Punkte von mir. ;)

Siehe Anhang Frame 1 schickt mir einen Wert.
Jetzt bitte noch die Erklärung, dann würd ich das für den zweiten 
Temperatursensor gerne selber probieren

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Thomas B. schrieb:
> Μαtthias W. schrieb:
>> Da steht doch die Device Address. 144. Also sollte deine gesuchte Frame
>> Number eine dieser acht CAN-IDs sein (alle Prioritäten):
>>
>> 0x00FF0190
>> 0x04FF0190
>> 0x08FF0190
>> 0x0CFF0190
>> 0x10FF0190
>> 0x14FF0190
>> 0x18FF0190
>> 0x1CFF0190
>
> MAtthias W. bekommt 100 Punkte von mir. ;)
>
> Siehe Anhang Frame 1 schickt mir einen Wert.
> Jetzt bitte noch die Erklärung, dann würd ich das für den zweiten
> Temperatursensor gerne selber probieren

Die PGN ist in den CAN-Identifier eingebaut. Siehe diese Grafik
https://www.csselectronics.com/cdn/shop/files/j1939-pgn-18-bit-extended-can-identifier-pdu.svg

Da deine PGN im High-Byte => 240 ist (0xFF) ist ein PDU2 (broadcast). SA 
ist die Adresse vom Sender also aus Steuerung_2.JPG die Device Address. 
Dann sind nur noch sechs Bit für die Priorität übrig. Das legt der 
Sender fest und kann von 0 (höchste) bis 7 (niedrigste) gehen. Position 
und Length geben dann die Position und Länge des Werts (SPN) im 
Datenfeld des CAN-Telegrams an. 1.1 steht dabei für erstes Byte, Bit und 
0 und die Länge ist dann in Bits oder Bytes definiert.

von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Μαtthias W. schrieb:
> Thomas B. schrieb:
>> Μαtthias W. schrieb:
>>> Da steht doch die Device Address. 144. Also sollte deine gesuchte Frame
>>> Number eine dieser acht CAN-IDs sein (alle Prioritäten):
>>>
>>> 0x00FF0190
>>> 0x04FF0190
>>> 0x08FF0190
>>> 0x0CFF0190
>>> 0x10FF0190
>>> 0x14FF0190
>>> 0x18FF0190
>>> 0x1CFF0190
>>
>> MAtthias W. bekommt 100 Punkte von mir. ;)
>>
>> Siehe Anhang Frame 1 schickt mir einen Wert.
>> Jetzt bitte noch die Erklärung, dann würd ich das für den zweiten
>> Temperatursensor gerne selber probieren
>
> Die PGN ist in den CAN-Identifier eingebaut. Siehe diese Grafik
> 
https://www.csselectronics.com/cdn/shop/files/j1939-pgn-18-bit-extended-can-identifier-pdu.svg
>
> Da deine PGN im High-Byte => 240 ist (0xFF) ist ein PDU2 (broadcast). SA
> ist die Adresse vom Sender also aus Steuerung_2.JPG die Device Address.
> Dann sind nur noch sechs Bit für die Priorität übrig. Das legt der
> Sender fest und kann von 0 (höchste) bis 7 (niedrigste) gehen. Position
> und Length geben dann die Position und Länge des Werts (SPN) im
> Datenfeld des CAN-Telegrams an. 1.1 steht dabei für erstes Byte, Bit und
> 0 und die Länge ist dann in Bits oder Bytes definiert.

Danke, mir ist jetzt einiges klarer, wobei ich manche Sachen noch nicht 
ganz verstehe. Das würde ich aber nochmal mit meinem Kollegen abklären.

Was mir aber überhaupt nicht klar wird ist:

Wenn ich die Werte wie in der Tabelle gefordert bekomme ich keine 
plausible Rückmeldung auf die Temperatur.... Zudem wechselt der Wert 
alle 5 sekunden, also muss noch ein Fehler versteckt sein

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Du musst die Slot Definition noch anpassen. Deine ist für eine SPN von 
einem Byte und einer Temperaturauflösung von 1°C. Deine SPN in der PGN 
ist aber zwei Byte groß und hat eine Auflösung von 0,1°C. Das ist in der 
Tabelle in deinem ersten Post ersichtlich.

von Thomas B. (thomasbartmann)


Angehängte Dateien:

Lesenswert?

Μαtthias W. schrieb:
> Du musst die Slot Definition noch anpassen. Deine ist für eine SPN von
> einem Byte und einer Temperaturauflösung von 1°C. Deine SPN in der PGN
> ist aber zwei Byte groß und hat eine Auflösung von 0,1°C. Das ist in der
> Tabelle in deinem ersten Post ersichtlich.

Ich versteh wirklich nicht was ich falsch mache.....

Ich meine dass ich jetzt alle Werte eingegeben hab, aber es kommt nur 
Käse raus... (siehe Anhang)

Kann es sein, dass die Frame Adresse doch nicht richtig ist und ein 
anderer Wert ausgelesen wird?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Resolution passt schonmal. Für dich wichtig ist aber Data Range. In 
diesem Bereich spielen sich die Daten ab. Als Offset sollte also 
wahrscheinlich -128.1 da stehen. Ich kenn das Tool aber nicht. Zeichne 
doch die Telegramme auf dem Bus auf.

Matthias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
Lade...