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

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
Ich nutze:
C164CI-ControllerBoard, eigenes Board, OSOPT V3.0
> 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)