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

Re: Datenübertragung zwischen einer Unit und einer Station Kategorie: CAN-Bus (von alexander - 11.03.2005 18:35)
Als Antwort auf Re: Datenübertragung zwischen einer Unit und einer Station von Cris - 10.03.2005 8:00
Ich nutze:
C-Control II Unit, C-Control II Station, CC2-Application-Board, OSOPT V3.0
> Hallo,
>
> zuerst einmal ist die Initialisierung richtig. Auffällig ist nur, dass Du die Maske des Empfangsfilters auf
> 0 gesetzt hat. D.h. Du empfängst auf allen Kanälen alle Frames.
>
> Sender: Ein Datenframe auf dem CAN-Bus besteht max. aus 8 Bytes. Wenn nichts anderes dagegen
> spricht, solltest Du die gesamten Daten in einen Frame packen. Weiterhin habe ich mit mem.putfloat
> anfänglich Schwierigkeiten gehabt (Fehler ILL OPA). Es kann sein, dass dieser Fehler mittlerweile
> beseitigt ist. Ich benutze diese Funktion jedoch nicht mehr. Bei mir gibt es wenn vermeidbat keine
> Gleitkommazahlen sondern nur Festkommazahlen (int und die Kommastellen berücksichtige ich per
> Software). Du würdest bei dieser Methode mit 6 Datenbytes auskommen und alles passt in einen
> Frame. Dann sendest Du den Puffer, als Framelänge hast Du aber nur 1 Byte angegeben. Du solltest
> hier die wirkliche Länge Deines Frames angeben sonst wird auch nur 1 Byte übertragen.
>
> Empfänger: Diesen Teil habe ich in Deinem Programm nicht gefunden. Es geht los, indem Du
> einem Kanal sagst, welche CAN-ID's er empfangen soll. Da Du aber die Maske ausgemacht hast,
> empfängst Du alles. Das wird in einem CAN-Netzwerk nicht funktionieren. Ich würde Folgendes
> vorschlagen:
> can.init(can.SPEED_50,0x7FF,0x000);
> can.expect(1,0x120);
>
> Die erste Zeile schaltet die volle Maske für die Kanäle 0..13 an, die zweite Zeile sagt dem Kanal 1
> dass er die Frame-ID's 0x120 empfangen soll. Dann testest Du auf empfangene Daten:
>
> if can.rxd(1)
> {
>  can.get(1,Buffer);
>  //weitere Auswertung der Daten
> }
>
> GrüÃ?e  Cris
>
>    
Hallo Cris,

erstmal Danke für Deine Antwort. Der Empfänger Teil meines Programms war ein typischer copy/paste
Fehler. Ich habe die Empfangsmaske auf 0x07FF gestellt. Verwende mittlerweile nur noch ein Daten-
frame. Danach konnte ich Daten empfangen, allerding nur sporadisch ca. jede fünte. Deshalb hab ich
den Empfangsteil umgeschrieben. Ich sende bei jeden Empfang auf dem CAN Bus das Empfangene auf
der seriellen Schnittstelle zur Kontrolle aus. Komisch das dabei etwa nur jedes fünfte Telegramm an-
kommt. Meine Tischkonfiguration enthält 1,5m verdrillten Rangierdraht J19 auf Appl. Board gesteckt und
120 Ohm parallel zum Station Eingang. Wobei auf 1,5m Reflexionen bei 50kBit/s ???

lg

Alexander


    Antwort schreiben


Antworten: