Probleme mit 3 Units Kategorie: CAN-Bus (von Rainer - 10.12.2011 13:19) | ||
| ||
Das Ziel ist 2 C-Control Reglerboards und eine Station über CAN-Bus zuverbinden. 2 Unit senden 1 Unit empfängt Leider gibt es keine korrekte Datenübertragung, Abschlusswiderstände mit je 120 Ohm sind gesetzt, 2 Stück gesamt. Die 3 Units befinden sich räumlich getrennt ca. 30 m Entfernung. Cat5 Kabel zur Vernetzung gelegt. H an H L an L GND am GND usw. Variablen sind definiert. Es tut sich was, aber nicht zuverlässig, kann das an der Adressierung liegen ? Hier ein Auszug aus dem Quellcode. Ich bitte um Hilfe und �berprüfung des Quellcodes. Möglichst sollten auch die Sender empfangen können. Mit 2 Units läuft alles perfekt ! ********************* //Unit 1 byte can8,can9; thread canempfang { // CAN-Kanal 2 byte buffer[8]; if can.rxd(2) {can.request(2);can.get(2,buffer);} can8=buffer[0]; // CAN-Kanal 5 byte buffer2[8]; if can.rxd(5) {can.request(5);can.get(5,buffer2);} can9=buffer2[0]; } thread main { can.init(0,0x0000,0x0000); can.expect (5,500); can.expect (2,200); run canempfang; halt; } ******************** //Unit 2 byte data[7]; thread send { data[0]=1; data[1]=0; data[2]=0; data[3]=0; data[4]=0; data[5]=0; data[6]=0; data[7]=0); can.publish(5,500,data,8); ) thread main { can.init(0,0x0000,0x0000); run cansend; halt; } ******************** //Unit 3 byte data2[7]; thread send { data2[0]=1; data2[1]=0; data2[2]=0; data2[3]=0; data2[4]=0; data2[5]=0; data2[6]=0; data2[7]=0; can.publish(2,200,data,8); } thread main { can.init(0,0x0000,0x0000); run cansend; halt; } thread empfang // CAN-Kanal 2 { byte buffer[8]; if can.rxd(2) {can.request(2);can.get(2,buffer);} can8=buffer[0]; // CAN-Kanal 3 Werkstatt byte buffer2[8]; if can.rxd(5) {can.request(5);can.get(5,buffer2);} can9=buffer2[0]; } thread main { can.init(0,0x0000,0x0000); can.expect (5,500); can.expect (2,200); run canempfang; halt; } | ||
Antwort schreiben Antworten: |