CAN Beschreibung -> Protokoll

Hallo,

ich suche eine CAN Beschreibung -> Protokoll. Gibt es so etwas? Wenn ja wo?

Ich habe folgendes Beispiel. Da wird eine Artikelnummer zeichenweise übertragen. Ist das nich etwas langsam? Kann ich bei CAN keine Artikelnummer(String) komplett übertragen?

Grüße Sandra

void CCAN_USB::CANSendTelegramm(int nModul,int nMyAdresse,int nNummer,CString sProduktnummer,int nZeichen) { int nRet; char buffer[255]; CString sHilf;

while( sProduktnummer.GetLength() < 13 ) sProduktnummer += " ";

while(nZeichenPosition < 13)// Länge von Artikel { if(g_CAN_Write !=NULL) // function pointer valid {

m_myMsg.ID = 0x280 + (DWORD)nModul;// BasisAdresse + ModulAdresse m_myMsg.MSGTYPE = 0; m_myMsg.LEN = 8; m_myMsg.DATA[0] = 0x000; m_myMsg.DATA[1] = (BYTE)nMyAdresse; m_myMsg.DATA[2] = 0x00; m_myMsg.DATA[3] = 34; m_myMsg.DATA[4] = (BYTE)nNummer; m_myMsg.DATA[5] = (BYTE)nZeichen; m_myMsg.DATA[6] = sProduktnummer.GetAt(nZeichen); m_myMsg.DATA[7] = 0x00;

nRet=g_CAN_Write(&m_myMsg);

check_err(nRet, buffer);

} nZeichen++; } }

Reply to
Sandra Müller
Loading thread data ...

Nein. CAN erlaubt nur 8 Bytes als Payload. Wenn die Artikelnummer länger ist, ist das natürlich schlecht. Warum muss man denn Artikelnumemrn mit CAN übertragen?

Robert

Reply to
R.Freitag

Onlineshopping im KFZ Hatten die nicht auf der Cebit den 'Auto-PC' gezeigt?

SCNR

Lutz

--
Temperatur und mehr mit dem PC messen - auch im Netzwerk: http://www.messpc.de
jetzt neu: Ethernetbox für direkten Anschluss der Sensoren im Netzwerk
Test im IT-Administrator: http://www.messpc.de/MessPC-Testbericht-ITA.pdf
http://www.netzwerkseite.de - die Seite rund um EDV-Netzwerke
Reply to
Lutz Schulze

"Sandra Müller" schrieb im Newsbeitrag news:42342d37$0$26545$ snipped-for-privacy@newsread4.arcor-online.net...

CAN ist eigentlich eine Entwicklung von Bosch. Deshalb zu finden unter:

formatting link

übertragen.

Was heißt für dich schnell?

Je nach physikalischer Länge der Verbindung kannst du bis zu 1MBit/s übertragen. Um mehr als 8 Bytes Nutzdaten zu übertragen, kannst du über dem CAN-Protokoll natürlich noch ein Art "Transport-Protokoll" drüber laufen lassen. Dann wären mehr Daten möglich. Allerdings müssen sich Sender und Empfänger verstehen, sprich beide das Protokoll beherschen.

Gruss Mehmet

die E-Mailadresse ist ungültig. Ich lese und antworte nur hier.

Reply to
Mehmet Cakmak

Wie schon geschrieben werden nur 8 Bytes unterstützt. Will man mehr übertragen, muss man ein entsprechendes Protokoll verwenden. Möglich ist z.B. folgendes:

  1. Bytes Befehlsfolgezähler mit Steuerbits, die angeben, ob das Paket ein Folgepaket haben wird. Dann kannst Du Daten mit mehr als 7 Bytes übertragen ohne jedesmal deinen Header mit übertragen zu müssen.

Beispiel:

  1. Bytes 0x00 -> Erstes Paket, weitere Pakete folgen.
  2. Bytes 0x12 -> Jetzt kommt ein Paket "Artikelnummer"
  3. Bytes 0x40 -> 1. Byte Artikelnummer
  4. Bytes 0x41 -> 2. Byte Artikelnummer
  5. Bytes 0x42 -> 3. Byte Artikelnummer
  6. Bytes 0x43 -> 4. Byte Artikelnummer
  7. Bytes 0x44 -> 5. Byte Artikelnummer
  8. Bytes 0x45 -> 6. Byte Artikelnummer

Nächstes Paket:

  1. Bytes 0x01 -> zweites Paket, weitere Pakete folgen.
  2. Bytes 0x46 -> 7. Byte Artikelnummer
  3. Bytes 0x47 -> 8. Byte Artikelnummer
  4. Bytes 0x48 -> 9. Byte Artikelnummer
  5. Bytes 0x49 -> 10. Byte Artikelnummer
  6. Bytes 0x4A -> 11. Byte Artikelnummer
  7. Bytes 0x4B -> 12. Byte Artikelnummer
  8. Bytes 0x4C -> 13. Byte Artikelnummer

Nächstes Paket:

  1. Bytes 0x12 -> drittes Paket, keine weiteren Pakete.
  2. Bytes 0x4D -> 14. Byte Artikelnummer
  3. Bytes 0x4E -> 15. Byte Artikelnummer
  4. Bytes 0x4F -> 16. Byte Artikelnummer
  5. Bytes 0x50 -> 17. Byte Artikelnummer

Jetzt arbeitest Du noch mit einer Bestätigung vom Empfänger, z.B. :

  1. Byte 0x23 -> Pakete 0-2 empfangen, Nr. 3 ist das nächste.

Gruss, Florian

Reply to
Florian Schenk

2 Sekunden Google haben mir das gezeigt:
formatting link

Da steht alles drin.

Bei maximal 8 Datenbytes pro Paket?

Mit freundlichen Grüßen

Frank-Christian Krügel

Reply to
Frank-Christian Kruegel

übertragen.

Das ist so nicht ganz korrekt. Spezifiziert sind 8 Byte, in den Conformance-Tests werden aber DLC bis 15 Byte (!) getestet. Ein CAN-Controller muss sogar nicht-spezifizierte Bytes von 15 Byte tolerieren. Das DLC-Feld besteht aus 4 Bit, rein theoretisch ist eine Übertragung von

15 Datenbyte möglich. Man könnte bei entsprechenden Fertigkeiten das Protokoll ein wenig "verbiegen". Ich finde es lediglich interessant, dass das CAN-Protokoll offensichtlich Erweiterungsmöglichkeiten bietet.

Yep, man schaltet quasi mit jeder Botschaft die Bedeutung der anderen Datenbytes um.

Reply to
Anastasios Tsitlakidis

übertragen.

Das wußte ich noch nicht. Aber längere Daten haben auch zur Folge, dass sich die Übertragungszeit für höher priorisierte Pakete evtl. verschlechtert. Deshalb würde ich den DLC doch auf 8 Bytes begrenzen und mehr Daten in einer anderen Schicht bearbeiten.

Gruss, Florian

Reply to
Florian Schenk

übertragen.

Man wäre aber in der Lage diese in ein Telegramm zu packen, durch das Mode-Signal (Bedeutung ändert sich abhängig vom Zähler) muss man auf jeden Fall zweimal die Task durchlaufen.

Leider ist die 15 Byte Erweiterung nur theoretisch möglich und soll von gängigen CAN-Controllern toleriert werden. Wenn man nicht gerade CAN-Makros entwickelt, dann ist es sicherlich schwer zu implementieren.

Reply to
Anastasios Tsitlakidis

Anastasios Tsitlakidis schrieb:

[...]

die zitierte Aussage ist ^m.E. schon korrekt, es werden nur 8 Bytes unterstützt.

daß er dabei nicht explodieren darf, ist klar. Aber er muß die überzähligen Bytes nicht auswerten.

Sonst wären z.B. Motorola-Controller nicht konform - deren Datenstruktur hat nur 8 Bytes, der Controller _kann_ gar nicht mehr Bytes auswerten (speichern).

Und die Bosch-Spec von 1991 sagt "DATA FRAME: admissible number of data bytes: {0,1,....,7,8}. Other values may not be used"

Mit welcher Hardware kann man mehr als 8 Bytes im Data Field übertragen?

Servus

Oliver

--
Oliver Betz, Muenchen (oliverbetz.de)
Reply to
Oliver Betz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.