PGN in J1939 konvertieren

#7811631
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

Angehängte Dateien:
#7811669
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"

Angehängte Dateien:
Persönliche Seite #7811673
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 von einem Moderator gelöscht.
#7811689
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

#7811697
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)

Angehängte Dateien:
#7811759
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...

Angehängte Dateien:
#7811823
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

Angehängte Dateien:
#7811832
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.

Persönliche Seite #7811833
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.

#7811842
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

Angehängte Dateien:
Persönliche Seite #7811881
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.

#7811923
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

Angehängte Dateien:
#7811964
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?

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren