23.09.2018, 14:06 | #1 |
Silber-Mitglied Name: Johannes
Registriert seit: 21.10.2011
Ort: Bad Krozingen
Beiträge: 1.219
|
RTK7 CAN-Bus verstehen
Hallo Leute!
Letzte Woche sind zwei CAN-Bus Module mit SPI-Schnittstelle aus China angekommen. Und jetzt versuche ich mich in den CAN-Bus ein zu fuchsen. Mein Ziel ist es einzelne Nachrichte im CAN-Bus abzufangen und diese der passenden Funktion zu zu ordnen. Später will ich dann einen CAN-Node mittels Arduino bauen um selbst die RTK7 zu steuern. Als Hardware nutze ich eine Arduino, der mir die Brücke zwischen Mac und CAN-Bus ermöglichen soll. Der Arduino gibt die empfangenen Nachrichten über den Seriellen Monitor aus. Als CAN-Shield nutze ich ein MCP2515 wie dieses (LINK) und die mcp_can Library (LINK). Grundlegende Infos gibt es z.B. hier: http://henrysbench.capnfatz.com/henr...work-tutorial/ Mit meinem Testaufbau (Arduino Uno & Arduino MEGA (SPI-Belegung unterschiedlich) kann ich eine zuverlässliche Kommunikation zwischen Sender und Empfänger aufbauen. Code:
//Empfänger #include "spi.h" #include "mcp_can.h" // the cs pin of the version after v1.1 is default to D9 // v0.9b and v1.0 is default D10 const int SPI_CS_PIN = 10; MCP_CAN CAN(SPI_CS_PIN); // Set CS pin void setup() { Serial.begin(115200); while (CAN_OK != CAN.begin(CAN_125KBPS)) // init can bus : baudrate = 500k { Serial.println("CAN BUS Shield init fail"); Serial.println(" Init CAN BUS Shield again"); delay(100); } Serial.println("CAN BUS Shield init ok!"); } void loop() { unsigned char len = 0; unsigned char buf[8]; if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming { CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf unsigned long canId = CAN.getCanId(); Serial.println("-----------------------------"); Serial.print("Get data from ID: 0x"); Serial.println(canId, HEX); for(int i = 0; i Code:
// Sender #include "mcp_can.h" #include "SPI.h" // the cs pin of the version after v1.1 is default to D9 // v0.9b and v1.0 is default D10 const int SPI_CS_PIN = 53; MCP_CAN CAN(SPI_CS_PIN); // Set CS pin void setup() { Serial.begin(115200); while (CAN_OK != CAN.begin(CAN_125KBPS)) // init can bus : baudrate = 500k { Serial.println("CAN BUS Shield init fail"); Serial.println(" Init CAN BUS Shield again"); delay(100); } Serial.println("CAN BUS Shield init ok!"); } unsigned char stmp[8] = {0, 0, 0, 0, 0, 0, 0, 0}; void loop() { // send data: id = 0x00, standrad frame, data len = 8, stmp: data buf stmp[7] = stmp[7]+1; if(stmp[7] == 100) { stmp[7] = 0; stmp[6] = stmp[6] + 1; if(stmp[6] == 100) { stmp[6] = 0; stmp[5] = stmp[6] + 1; } } CAN.sendMsgBuf(0x00, 0, 8, stmp); delay(100); // send data per 100ms } Die Boud-Rate ist bereits auf 125kbs wie aus dem RTK7-Programm ausgelesen angepasst. Im Bild unten seht ihr die Ausgabe aus der RTK7. Doch wenn ich dann den Empfänger an den CAN-Bus der die ZSE verlässt anschließe kommt nichts sinvolles an. Bei Betätigen der HKL-Taste am HA änder sich zwar der Serielle Monitor aber die Nachricht sieht nicht nach einer CAN-Nachricht aus. Was denkt ihr mache ich Falsch? Meines Wissens baut das CiA 447 auf CAN-Open auf. Ist die Nachrichtenstruktur nicht erhalten wie bei CAN-Open? Ich bin auf eure Ideen gespannt und hoffe ihr könnt mir helfen. Vielen Dank und Grüße JOHANNES |
Schau mal vorbei: Meine Sammlung Viele Klangcodierungen als Hörprobe.
Suche weitere MP3-Dateien von noch nicht eingefügten Sondersignalen. Bitte via PN melden. DANKE Geändert von Doc112 (23.09.2018 um 14:11 Uhr). |
|
23.09.2018, 14:25 | #2 |
Gold-Mitglied Name: Marcel
Registriert seit: 11.12.2003
Ort: Oberthal / SAAR
Beiträge: 13.729
|
Sehr interesssant, aber ich versteh nur Bahnhof
|
You can´t fix stupid, not even with Duct Tape
|
|
23.09.2018, 14:57 | #3 |
Gold-Mitglied Name: Wilhelm
Registriert seit: 05.01.2008
Ort: BY, Opf.
Beiträge: 4.506
|
D.h. du willst die ZSE selbst steuern?
Im Prinzip relativ einfach, da der Grundaufbau nach DIN festgelegt ist. (DIN hätte ich hier, darf ich aber nicht weitergeben.) Dies wollte/werde ich auch irgendwann umsetzten bzw. weitermachen, wenn ich mal Zeit dazu finde.. Wenn ich mich recht erinnere war das 0x0600h + Node-ID für SDO-MSG's vom Gateway zur Komponente. Deine 0x400'er Knoten-ID's müsste ich erst wieder nachschlagen, was dies für Nachrichtentypen sind.. (kann mich auch irren - wie gesagt, ist schon eine Weile her..) ------------------- PS: Oder war das evtl. die Heartbeat-ID der ZSE..? |
Never change a running system - never run a changed system!
|
|
24.09.2018, 08:06 | #4 |
Silber-Mitglied Name: Johannes
Registriert seit: 21.10.2011
Ort: Bad Krozingen
Beiträge: 1.219
|
Denkst du die Nachrichten sind so kurz?
|
Schau mal vorbei: Meine Sammlung Viele Klangcodierungen als Hörprobe.
Suche weitere MP3-Dateien von noch nicht eingefügten Sondersignalen. Bitte via PN melden. DANKE |
|
24.09.2018, 09:24 | #5 |
Gold-Mitglied Name: Wilhelm
Registriert seit: 05.01.2008
Ort: BY, Opf.
Beiträge: 4.506
|
Ja. Es werden zu 95% nur Flags übertragen..
|
Never change a running system - never run a changed system!
|
|
24.09.2018, 14:44 | #6 |
Silber-Mitglied Name: Johannes
Registriert seit: 21.10.2011
Ort: Bad Krozingen
Beiträge: 1.219
|
|
Schau mal vorbei: Meine Sammlung Viele Klangcodierungen als Hörprobe.
Suche weitere MP3-Dateien von noch nicht eingefügten Sondersignalen. Bitte via PN melden. DANKE |
|
16.10.2018, 14:14 | #7 |
Silber-Mitglied Name: Johannes
Registriert seit: 21.10.2011
Ort: Bad Krozingen
Beiträge: 1.219
|
Es ist ein kleine Problem aufgetreten. Wie ihr oben seht sind die empfangenen Nachrichten von der RTK7 nicht so lang wie die normalen CAN-Nachrichten. Ich bekomme diese aber nicht gut gefiltert.
Meine Vorstellung wäre es, die zwei HEX-Stellen zu speichern und erst im Serial-Monitor auszugeben, wenn sich die neue Nachricht von der Alten unterscheidet. So wäre die Analyse einfacher. Mit der Pufferstelle [i] hab ich schon was versucht, klappt leider nicht. Habt ihr eine Idee? Gruß JOHANNES |
Schau mal vorbei: Meine Sammlung Viele Klangcodierungen als Hörprobe.
Suche weitere MP3-Dateien von noch nicht eingefügten Sondersignalen. Bitte via PN melden. DANKE |
|
19.10.2018, 09:01 | #8 |
Forum-Mitglied Registriert seit: 01.07.2006
Beiträge: 11
|
Kannst du die ASCII Werte mit der Software in Bits umwandeln ?
Macht das ganze übersichtlicher |
22.02.2020, 00:18 | #9 |
Forum-Mitglied Name: Dennis
Registriert seit: 28.05.2010
Beiträge: 17
|
Hallo zusammen,
ich greife das Thema mal wieder auf und habe mal meine RTK7 auf dem CAN abgehört. Sieht anders aus. 702h bis 705h senden ständig. 30ah ändert seinen Inhalt, wenn Blaulicht oder andere Lichtfunktionen geschaltet werden. 2c1h,2c3h,341h und 343h scheinen vom Matrix-ASG hinten zu kommen. 1e1h,1e3h,261h und 263h scheinen vom Matrix-ASG vorne zu kommen. Die anderen kann ich aktuell nicht zuordnen. Vielleicht kann Wilhelm ja mal ein paar Infos dazu schreiben. Gruß Dennis |
22.02.2020, 09:14 | #10 |
Silber-Mitglied Name: Johannes
Registriert seit: 21.10.2011
Ort: Bad Krozingen
Beiträge: 1.219
|
Sehr gut. Wie sieht denn dein versuchsaufbau aus? Welche Hard- und Software nutzt du? Hast du schon Nachrichten versendet?
Gruß JOHANNES |
Schau mal vorbei: Meine Sammlung Viele Klangcodierungen als Hörprobe.
Suche weitere MP3-Dateien von noch nicht eingefügten Sondersignalen. Bitte via PN melden. DANKE |
|
22.02.2020, 16:22 | #11 |
Forum-Mitglied Name: Dennis
Registriert seit: 28.05.2010
Beiträge: 17
|
USBtin interface mit USBtin Viewer, aber auch Arduino mit CAN Shield. Beide werfen die gleichen Daten aus. Um sinnvoll senden zu können, muß ich erstmal die entsprechenden Sequenzen finden und dann simulieren.
|
23.02.2020, 10:16 | #12 |
Silber-Mitglied Name: Johannes
Registriert seit: 21.10.2011
Ort: Bad Krozingen
Beiträge: 1.219
|
Kannst du mir den Arduino Code schicken?
|
Schau mal vorbei: Meine Sammlung Viele Klangcodierungen als Hörprobe.
Suche weitere MP3-Dateien von noch nicht eingefügten Sondersignalen. Bitte via PN melden. DANKE |
|
23.02.2020, 13:43 | #13 |
Forum-Mitglied Name: Dennis
Registriert seit: 28.05.2010
Beiträge: 17
|
Hier der Code
|
25.02.2020, 23:27 | #14 |
Forum-Mitglied Name: Dennis
Registriert seit: 28.05.2010
Beiträge: 17
|
Hier mal ein Log vom Start nach Anschalten der Stromversorgung
|
|
|
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. |