Re: CAN-H geht auf 3,5V beim einbinden von CAN.modul Kategorie: CAN-Bus (von Matthias Koch - 24.08.2005 21:33) | ||
Als Antwort auf Re: CAN-H geht auf 3,5V beim einbinden von CAN.modul von MGolbs - 20.08.2005 13:14 | ||
| ||
> Hallo Matthias, > > hier noch eine Erweiterung. Es ist mir auch jetzt noch nicht gelungen auf dem CAN zu senden. Elektrisch > kommt an CAN-L und CAN-H immer noch nichts, also Peaks. Nur verschiedene konstante Pegel sind zu > sehen. Nun habe ich das Oszi an CAN TxD und Masse sowie CAN RxD und Masse angeschlossen. > Dort sind relevante Peaks zu sehen. Ist der CAN der CC-II eventuell defekt? Wie empfindlich ist der > Anschluss CAN-L und CAN-H bezüglich �berlastung? Muss man für den Betrieb der CC-II diese elektrisch > modifizieren? > > Gru� Markus > Guten Abend Markus, leider bin ich erst heute von einer Dienstreise zurückgekommen und ich bin auch ziemlich müde. Ich habe Deine Antwort überflogeng und sage dazu "JA", möglich. Jedoch ist Dein vordringliches Problem, das Du kne Kommunikation aufbauen kannst. Wenn ich so richtig verstehe hast Du ein arbeitendes CAN-OPEN Netzwerk an dem Du einfach eine CC2 (CAN) anschaltest, in der Hoffnung, dass etwas passiert. Nun, es passiert ja was, Deine Kommunikation bricht zusammen. Nochmals zu Deinen Hardware-Sorgen: Ich und auch unsereKunden (von Russland bis Australien), haben es bisher noch nicht geschafft die Hardware-Schicht zu zerstören. Ich kann Dir keinen CAN_OPEN_KNOTEN mit der CC2 hier alls fertige Lösung bieten. Ich kann Dir nur sagen, wie Du vorgehen kannst. Wenn man ein komplexes Problem nicht lösen kann, so sollte man es aufteilen. 1. Schaffe Dir einen einfachen Fall: CC2 als Master plus einen gut bekannten CAN_Knoten. 2. Deine CC2 sollte wenigstens als I/O ein paar Tasten und ein Display haben um ankommende Nachrichten anzuzeigen. 3. Programmiere einen ganz kleinen Monitor, der Dir erlaubt Daten (DATEN_CAN) auf dem Display anzuzeigen. Nun ein paar einfache Funktionen, die nützlich sind um mit einem CAN-OPEN-KNOTEN zu kommunizieren. byte DATEN_CAN[7]; // dateneingangspuffer für CAN_OPEN FUNKTIONEN /********CAN_OPEN FUNKTIONEN***************************************************/ function canoperational(byte node_id) { //////////////////////////// Aufbau des Strings: OPERATIONAL str.clear(s); str.putchar(s,0x01); // Start RemoteControl operational str.putchar(s,node_id); // Node ID oder 0x00 dann alle NODES can.send(1,0x00,s,2); // senden mit der Message iD 0 Netzwerkmanagment } //////////////////////////////////////////////////////////////////////////////// function canpreoperational ( byte node_id) { /////////////////////////// Aufbau des Strings: PREOPERATIONAL str.clear(s); str.putchar(s,0x80); // Start RemoteControl preoperational str.putchar(s,node_id); // Node ID oder 0x00 dann alle NODES can.send(1,0x00,s,2); // senden mit der Message iD 0 Netzwerkmanagment } //////////////////////////////////////////////////////////////////////////////// function caninitialisation (byte node_id) { //////////////////////////// Aufbau des Strings: INITIALISIERUNG str.clear(s); str.putchar(s,0x82); // Start RemoteControl Reset Antrieb, Parameter behalten str.putchar(s,node_id); // Node ID oder 0x00 dann alle NODES can.send(1,0x00,s,2); // senden mit der Message iD 0 Netzwerkmanagment } ///////////////////////////////////////////////////////////////////////////////// // das syncron objekt ///////////////////////////////////////////////////////////////////////////////// function syncron() { str.clear(s); can.send(1,128,s,0); } ////////////////////////////////////////////////////////////////////////////////// // Funktion zum lesen einer PDOs vom Prozessdatenkanal // es wird die empfangsID berechnet aus Node-ID // wenn daten empfangen wurden, werden sie in dem globalen Datenpuffer "DATEN_CAN" // abgelegt, wenn keine Daten vorhanden gibt die funktion FALSE zurück ///////////////////////////////////////////////////////////////////////////////// function cangetpdo(byte node_id) returns int { int empfangs_id; //pdi=pdi-1;//pdi=1...2...3 //empfangs_id=0x100*pdi; empfangs_id=0; empfangs_id=empfangs_id+0x180+node_id; //Prozessdatenkanal vom Antrieb can.expect(12,empfangs_id); sleep 1; if can.rxd(12) { can.get(12,DATEN_CAN); // auslesen der empf. Daten in den Zwischenspeicher DATEN_CAN empfangs_id=TRUE; // erfolgreich! } else {empfangs_id=FALSE; // fail! mem.fill(DATEN_CAN,0,8); // DATEN_CAN verwerfen } return empfangs_id; } ////////////////////////////////////////////////////////////////////////////////// // Funktion zum Senden von Prozessdatenobjekten // aus der NODE_ID wird die sende_Id berechnet // PO1=Steuerwort(siehe SEW-Beschreibung) PO2=Geschwindigkeit, PO3 Sollweg ////////////////////////////////////////////////////////////////////////////////// function canputpdo(byte node_id, int po1,int po2,int po3) { string sew; int sende_id; byte unteresbyte; //pdo=pdo-1; //sende_id=0x100*pdo; sew=""; sende_id=0; sende_id=sende_id+0x200+node_id;// Prozesdatenkanal zum Antrieb unteresbyte=po1 and 0x00FF; // prozessdatenwort po1 zerlegen str.putchar(sew,unteresbyte); // po1 Lowbyte eingetragen unteresbyte=po1 shr 8; // Highbyte runterschieben str.putchar(sew,unteresbyte); // po1 Highbyte eintragen unteresbyte=po2 and 0x00ff; // Prozessdatenwort po2 zerlegen str.putchar(sew,unteresbyte); // po2 lowbyte eintragen unteresbyte=po2 shr 8; // Highbyte runterschieben str.putchar(sew,unteresbyte); // po2 Highbyte eintragen unteresbyte=po3 and 0x00ff; // Prozessdatenwort po3 zerlegen str.putchar(sew,unteresbyte); // po3 lowbyte eintragen unteresbyte=po3 shr 8; // Highbyte runterschieben str.putchar(sew,unteresbyte); // po3 Highbyte eintragen ////////////////////////////////// String komplett///////////////////// wait can.ready(2); // warten auf sendebereitschaft can.send(2,sende_id,sew,6); // senden über Kanal 12 mit der send_ID } ... ... // sende_error(4); //""NotAUS oder CAN BUS nicht ok"" // can.init (3,0x07FF,0x07FF); // 250kBaud globalmaske spezialmaske caninitialisation(0); // alle can Teilnehmer initialisieren canoperational(0); // alle can Teilnehmer anschalten // clear_error(); // Fehlerausschrift löschen ... ... | ||
Antwort schreiben Antworten: Re: CAN-H geht auf 3,5V beim einbinden von CAN.modul (von MGolbs - 25.08.2005 13:46) Re: CAN-H geht auf 3,5V beim einbinden von CAN.modul (von MGolbs - 25.08.2005 14:32) Re: CAN-H geht auf 3,5V beim einbinden von CAN.modul (von Mike "E320CDI" - 15.09.2005 20:56) Re: CAN-H geht auf 3,5V beim einbinden von CAN.modul (von Matthias Koch - 25.08.2005 20:32) Re: CAN-H geht auf 3,5V beim einbinden von CAN.modul (von Matthias Koch - 25.08.2005 20:32) Re: CAN-H geht auf 3,5V beim einbinden von CAN.modul (von MGolbs - 31.08.2005 14:41) Re: ohne Text, Danke Markus für Deine Rückmeldung! (von Matthias Koch - 31.08.2005 20:03) Re: ohne Text, Danke Markus für Deine Rückmeldung! (von MGolbs - 8.09.2005 17:24) CAN 29 BIT IDENTIFIER (von Matthias Koch - 19.09.2005 21:05) Re: CAN 29 BIT IDENTIFIER (von Mike - 22.10.2005 18:52) |