Hi, ich habe paar Schwierigkeiten auf meinen Raspberry Pi 3 (Model B+) die CANbus Werte auszulesen bzw. zu senden. Unten eine kurze Übersicht meine Konfiguration, ich hoffe ihr könnt mir helfen:
KONFIGURATION:
- Raspberry Pi 3 (Mod.B+) + Waveshare RS485+CAN Hat -> CANbus funktioniert im LXTerminal, bin mir aber nicht sicher ob der CANbus in Codesys tatsächlich läuft (siehe unten)
ROTEX Wärmepumpe HPSU über CAN-L + CAN-H an o.g. CAN Hat angeschlossen – Die WP kommuniziert über den CAN-Bus in der 11-Bit-Variante (Basisformat), siehe unteren Link Google Translate
Siemens Logo SPS -> mittels ModBUS TCP an Codesys = Ich kann Werte auslesen (siehe unten)
SITUATION / PROBLEM:
Im LXTerminal sende ich folgendes (Wasserdruck):
can0 10A [7] 31 00 1C 00 00 00 00
Hier ist das 4. Und 5. Byte für mich interessant (05 14), bedeutet 0514 hex -> dez = 1300 / 10 => 1,30 bar
Das Problem bei mir ist, dass ich es im Codesys nicht schaffe die o.g. Befehle zu senden und empfangen!
Ich habe bis dato nur mit ModBUS gearbeitet und komme nicht drauf wo ich den Identifier + DLC + Datenfelder (7 Byte) einstellen bzw. übermitteln und auslesen kann!
ZIEL:
Möchte nur paar Werte (Temperaturen, Wärmemenge, Modus, etc.) aus der Wärmepumpe an die Logo SPS über den PI übertragen.
Also wie kann ich im Codesys am einfachsten so eine Art Gateway CANbus <-> ModBUS herstellen?
Habe mir das so vorgestellt, 1x in der Minute den Befehl z.B. für Wasserdruck (siehe oben) in CANbus senden. Auf Antwort warten und dann die Werte über Codesys an ModBUS senden, so dass die LogoSPS die auslesen kann.
Ich bin es gewohnt in FBS (Funktionsbausteinsprache) zu arbeiten, gibt es hier eine Möglichkeit?
CANbusAPIExample.project
Damit kann man CANlayer 2 Kommunikation machen, denke das ist was du dafür brauchst... also CAN Telegramme empfangen und verwenden.
Grüße
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
besten Dank für den Tipp. Habe es aus beruflichen Gründen erst dieses Wochenende geschafft meinem Projekt wider zu widmen.
Hab das Paket bzw. Beispiel eingespielt, nur leider bringe ich es nicht zum Laufen. Der CANBus selber scheint zu laufen, nur finde ich nirgends die Blöcke z.B. „CANDriver_11bit (FB) / CANSender / CANSingleIdReceiver …“ aus der „CANBus Example“ PDF-Anleitung.
Ich wäre euch sehr dankbar wenn mir jemand helfen könnte, gibt es evtl. eine Schritt für Schritt Anleitung hierfür? DANKE!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, habe nach langen hin und her festgestellt, dass ich einen blöden Fehler gemacht habe. Ich habe anstelle „CANBus Example“ das „CANopen Example“ Package installiert.
Habe nun das „CANbusAPIExample“ geladen uns so wie es ausschaut ist die CANbus Verbindung zu der Wärmepumpe hergestellt. Zumindest wird unter „g_countMsg_ST“ die Anzahl der Nachrichten mitgezählt, die mit der Anzahl unter LxTerminal mit „candump can0“ übereinstimmt.
Leider schaffe ich es nicht bestimmte Werte unter z.B. ID/Identifier „can0 180 [7]“ auszulesen (siehe meinen ersten Post), was mache ich hier falsch (HEX / DEZ / DWORD???)?
- Habe im „CAN.RECEIVER_SINGLE_ID“ unter „dwCanId“ folgendes eingestellt „16#180“ (HEX?)-> bekomme bzw. finde nirgends die Werte!?
- Habe im „CAN.RECEIVER_SINGLE_ID“ unter „dwCanId“ folgendes eingestellt „16#384“ (DEZ?) -> bekomme bzw. finde nirgends die Werte!?
Wo werden die Werte dann ausgegeben, bzw. wo kann ich die auslesen?
Hi, ich bin langsam am Verzweifeln, ich schaffe es nicht bestimmte Werte bzw. Nachrichten aus dem CANbus auszulesen (siehe CANbus Transfer im rechten Fenster), wie bereits beschrieben scheint die Kommunikation mit dem Raspberry zu funktionieren, da die Nachrichten brav mitgezählt werden (siehe g_countMsg_ST im linken Fenster).
Ich habe schon das „ganze“ Forum durchsucht, die Dokumentation (CANBus_Example_de.pdf _.pdf durchgelesen, bin aber leider nicht weitergekommen!
Im Anhang findet Ihr auch mein derzeitiges Projekt, wenn euch das was hilft.
**Ich brauche eure Unterstützung, hoffentlich kann mir einer von euch helfen bzw. erklären wie ich die o.g. IDENTIFIER einstelle und Werte auslese, DANKE! **
ich würde an deiner Stelle als erstes mal die Einträge Can-Bus, CanOpen-Manager und CanOpen_Device aus dem Projektbaum entfernen.
Aktuell wird ansonsten ein CanOpen Bus gestartet und gleichzeitig in Diener ST_PRG nochmal ein CanDriver für Kommunikation auf Layer2!
Entweder CanOpen oder Layer2 aber nicht beides gleichzeitig, soweit ich das beurteilen kann, beißt sich das.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, ich habe paar Schwierigkeiten auf meinen Raspberry Pi 3 (Model B+) die CANbus Werte auszulesen bzw. zu senden. Unten eine kurze Übersicht meine Konfiguration, ich hoffe ihr könnt mir helfen:
KONFIGURATION:
- Raspberry Pi 3 (Mod.B+) + Waveshare RS485+CAN Hat -> CANbus funktioniert im LXTerminal, bin mir aber nicht sicher ob der CANbus in Codesys tatsächlich läuft (siehe unten)
ROTEX Wärmepumpe HPSU über CAN-L + CAN-H an o.g. CAN Hat angeschlossen – Die WP kommuniziert über den CAN-Bus in der 11-Bit-Variante (Basisformat), siehe unteren Link
Google Translate
Siemens Logo SPS -> mittels ModBUS TCP an Codesys = Ich kann Werte auslesen (siehe unten)
SITUATION / PROBLEM:
Im LXTerminal sende ich folgendes (Wasserdruck):
can0 10A [7] 31 00 1C 00 00 00 00
Und bekomme folgendes zurück:
can0 180 [7] 22 0A 1C 05 14 00 00
Hier ist das 4. Und 5. Byte für mich interessant (05 14), bedeutet 0514 hex -> dez = 1300 / 10 => 1,30 bar
Das Problem bei mir ist, dass ich es im Codesys nicht schaffe die o.g. Befehle zu senden und empfangen!
Ich habe bis dato nur mit ModBUS gearbeitet und komme nicht drauf wo ich den Identifier + DLC + Datenfelder (7 Byte) einstellen bzw. übermitteln und auslesen kann!
ZIEL:
Möchte nur paar Werte (Temperaturen, Wärmemenge, Modus, etc.) aus der Wärmepumpe an die Logo SPS über den PI übertragen.
Also wie kann ich im Codesys am einfachsten so eine Art Gateway CANbus <-> ModBUS herstellen?
Habe mir das so vorgestellt, 1x in der Minute den Befehl z.B. für Wasserdruck (siehe oben) in CANbus senden. Auf Antwort warten und dann die Werte über Codesys an ModBUS senden, so dass die LogoSPS die auslesen kann.
Ich bin es gewohnt in FBS (Funktionsbausteinsprache) zu arbeiten, gibt es hier eine Möglichkeit?
Related
Talk.ru: 7
Hi,
denke du musst mit diesem Beispiel loslegen:
https://store.codesys.com/can-bus-example.html
CANbusAPIExample.project
Damit kann man CANlayer 2 Kommunikation machen, denke das ist was du dafür brauchst... also CAN Telegramme empfangen und verwenden.
Grüße
Edwin
Hallo Edwin,
besten Dank für den Tipp. Habe es aus beruflichen Gründen erst dieses Wochenende geschafft meinem Projekt wider zu widmen.
Hab das Paket bzw. Beispiel eingespielt, nur leider bringe ich es nicht zum Laufen. Der CANBus selber scheint zu laufen, nur finde ich nirgends die Blöcke z.B. „CANDriver_11bit (FB) / CANSender / CANSingleIdReceiver …“ aus der „CANBus Example“ PDF-Anleitung.
Ich wäre euch sehr dankbar wenn mir jemand helfen könnte, gibt es evtl. eine Schritt für Schritt Anleitung hierfür? DANKE!
Hi, habe nach langen hin und her festgestellt, dass ich einen blöden Fehler gemacht habe. Ich habe anstelle „CANBus Example“ das „CANopen Example“ Package installiert.
Habe nun das „CANbusAPIExample“ geladen uns so wie es ausschaut ist die CANbus Verbindung zu der Wärmepumpe hergestellt. Zumindest wird unter „g_countMsg_ST“ die Anzahl der Nachrichten mitgezählt, die mit der Anzahl unter LxTerminal mit „candump can0“ übereinstimmt.
Leider schaffe ich es nicht bestimmte Werte unter z.B. ID/Identifier „can0 180 [7]“ auszulesen (siehe meinen ersten Post), was mache ich hier falsch (HEX / DEZ / DWORD???)?
- Habe im „CAN.RECEIVER_SINGLE_ID“ unter „dwCanId“ folgendes eingestellt „16#180“ (HEX?)-> bekomme bzw. finde nirgends die Werte!?
- Habe im „CAN.RECEIVER_SINGLE_ID“ unter „dwCanId“ folgendes eingestellt „16#384“ (DEZ?) -> bekomme bzw. finde nirgends die Werte!?
Wo werden die Werte dann ausgegeben, bzw. wo kann ich die auslesen?
Related
Talk.ru: 7
Hi, ich bin langsam am Verzweifeln, ich schaffe es nicht bestimmte Werte bzw. Nachrichten aus dem CANbus auszulesen (siehe CANbus Transfer im rechten Fenster), wie bereits beschrieben scheint die Kommunikation mit dem Raspberry zu funktionieren, da die Nachrichten brav mitgezählt werden (siehe g_countMsg_ST im linken Fenster).
Ich habe schon das „ganze“ Forum durchsucht, die Dokumentation (CANBus_Example_de.pdf _.pdf durchgelesen, bin aber leider nicht weitergekommen!
Im Anhang findet Ihr auch mein derzeitiges Projekt, wenn euch das was hilft.
**Ich brauche eure Unterstützung, hoffentlich kann mir einer von euch helfen bzw. erklären wie ich die o.g. IDENTIFIER einstelle und Werte auslese, DANKE! **
2019 02 10 CANbusAPIExample API_2 0x180.project [208.14 KiB]
Originally created by: D. Kugler
ich würde an deiner Stelle als erstes mal die Einträge Can-Bus, CanOpen-Manager und CanOpen_Device aus dem Projektbaum entfernen.
Aktuell wird ansonsten ein CanOpen Bus gestartet und gleichzeitig in Diener ST_PRG nochmal ein CanDriver für Kommunikation auf Layer2!
Entweder CanOpen oder Layer2 aber nicht beides gleichzeitig, soweit ich das beurteilen kann, beißt sich das.