Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> > 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. > > <code> > 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 > > ... > ... > > </code> > > > > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB