LabVIEWForum.de - Mehrere CAN-Signale senden

LabVIEWForum.de

Normale Version: Mehrere CAN-Signale senden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe folgendes Problem. Für die Ansteuerung einer Fahrzeug ECU muss ich dieser zum starten mehrer CAN-Signale senden. Mit Hilfe der Beispiele hab ich mir das im Anhang befindliche Programm erstellt, mit BusMonitor von MAX habe ich bereits überprüft ob Signale gesendet werden, was auch funkioniert. Aber sobald ich meine ECU anschließe ist die einzige Reaktion dass das angeschlossene Display aufblitzt.
Nun zu meiner Frage, liegt es an dem von mit verwendeten Sawtooth Waveformer? Mit LabVIEW befasse ich mich erst seit kurzem und das war die einzige Möglichkeit die ich gefunden habe mehrere Signale gleichzeitig zu senden. Gibt es hierfür eine bessere Lösung?
Weiteren Problem ist, dass ich Signale mit unterschiedlicher Cycle Time senden muss. Kann ich Signalblöcken mit der XNET Session unterschiedliche Frequenzen zuweisen?

Vielen Dank schonmal vorab.
Hallo hoal,

bitte immer selbst auf Crossposts hinweisen!

Zum CAN:
Über den CAN-Bus werden einzelne Signale ("signals") übertragen, die wiederum in Botschaften ("messages") zusammengefasst werden. Man kann Botschaften (nahezu) beliebig definieren und ihnen auch eine "Samplerate" zuordnen.
So, wie dein VI ausieht, simulierst du ggü. der ECU das ABS-System!?

Zitat:liegt es an dem von mit verwendeten Sawtooth Waveformer?
Sehr wahrscheinlich. Weil:
Zitat:Für die Ansteuerung einer Fahrzeug ECU muss ich dieser zum starten mehrer CAN-Signale senden.
Hoffentlich hast du eine Anleitung zu deiner ECU: dort sollte nämlich beschrieben sein, welche Signale erwartet werden - und auch welche Werte diese Signale haben müssen. Einfach da einen Sägezahl zu senden, kann die diversen Überwachungsroutinen in der ECU sehr schnell durcheinander bringen! Beispiel: wieso steigt der ClutchPressure gleichförmig an, um dann auf Null zu fallen?

Also wie üblich: Anleitung lesen, sinnvolle Werte bereitstellen.

Zitat:das war die einzige Möglichkeit die ich gefunden habe mehrere Signale gleichzeitig zu senden.
Abgesehen davon, dass es weitere Signalgenerator-Funktionen gibt: mehrere Signale sendet man, indem man entsprechende CAN-Botschaften definiert. Die Signale generiert man, indem man entsprechende Werte bereitstellt. Und die Rate, mit der Botschaften gesendet werden, sollte in der CAN-Datenbank (z.B. dbc-file) definiert sein.

Mit XNet arbeite ich nicht, kann dir also nicht direkt mit deinem VI weiterhelfen…
Danke für deine schnelle Antwort.

Nein ich arbeite mit einer anderen ECU aber Details dazu darf ich Aufgrund der Geheimhaltung nicht posten.
Hättest du ein Beispiel-Programm für mich in dem die Botschaften gesendet werden und wie diese zuvor definiert wurden?


Was ich bereits versucht habe war der direkte Aufruf einer Massage aus der Database, allerdings erhielt ich immer eine Fehlermeldung (siehe Anhang). Da ich keine Lösung fand, verwarf ich diese Idee.

Meintest du vll soetwas?
Hallo hoal,

hast du dir die Hilfe zur CAN-Funktion durchgelesen?
Da steht drin, wo man die CAN-Database anzugeben hat!

So:
[attachment=55448]
Die DBC-Datei wird als Pfad angeschlossen, das String-Array definiert die zu verarbeitenden Signale!
Rtmfx
Im NI Examplefinder gibt es eine wunderbare Sammlung von Einstiegsbeispielen zu XNET:
[attachment=55449]

Fang doch erst einmal mit dem Einzelsetzen von Signalen anstatt Waveforms an!

Gruß, Jens
Okay ich hab jetzt eines der Beispiele leicht modifiziert.
Jetzt hätte ich allerdings eine Verständniss Frage, ich wähle in meiner Oberfläche ein Signal aus, dieses ist mit einem Init. Value = 7 definiert. Im BusMonitor wird jedoch der wesentlich mehr angezeigt.
Versehe ich das richtig, dass sobald ich ein Signal auswähle die gesamte Message gesendet wird?

Gruß hoal
Hallo hoal,

Zitat:Versehe ich das richtig, dass sobald ich ein Signal auswähle die gesamte Message gesendet wird?

Ich wiederhole mich:
Zitat:Zum CAN: Über den CAN-Bus werden einzelne Signale ("signals") übertragen, die wiederum in Botschaften ("messages") zusammengefasst werden.
Du kannst nur ganze Botschaften verschicken. Halbe/teilweise Botschaften gehen nicht…
Referenz-URLs