mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Can-Bus LAST


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hoffe das jemand  mir bei meiner Frage helfen kann, da ich selber
nicht besonders fit in Bus-Systemen bin.

Ich habe eine PID-Reglerkarte, in diese werden PID-Reglerparameter,
Sollwert und Istwert übergeben. Die Reglerparameter und der Sollwert
werden bereits über das CAN-Bus übertragen, Istwert wird momentan
analog eingespeist.
Ich würde gerne alle Signale über das Can-Bus an den Regler übergeben,
meine
Frage ist: Kann es dabei zu irgendwelchen Schwierigkeiten beim CAN-Bus
kommen? (z.B. das die Buslast zu hoch wird)
Was können die Ursachen sein? Haben die Fehler beim Istsignal negative
Auswirkungen auf den CAN-Bus?
was kann zu einer hohen Last führen und was sind die möglichen
Auswirkungen?

Istsignal wird momentan von einem digitalen Filter gefiltert und dann
analog gewandelt, falls es möglich ist Istwert mit CAN-Bus zu
übertragen, kann man D/A-Wandler sich sparen.

MfG,
Alexander

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erst mal musst du klären:
-wieviele Daten musst du insgesamt pro Zeiteinheit übertragen
(dabei beachten, dass jede CAN-Botschaft aus deutlich mehr Bytes als
die Nutzdaten besteht)
-wie lang wird dein Bus (daraus berechnet sich die max. mögliche
Bitrate)
-wie zeitkritisch sind die Daten

In deinem Fall würde ich aus dem Bauch heraus erstmal sagen, dass du
keinerlei Probleme bekommst. Es ist allerdings durchaus möglich, schon
bei Buslast von 10% Probleme zu bekommen.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

- ich muss 8Byte in mehreren Indentifyer übertragen.
- die Baudrate kann eingestellt werden von 125kBaud-500kBaud-1000kBaud
- zeitkritisch??? am ende des Buses wird mit 2msec abgetastet.

Wie wirken sich die möglichen Probleme aus?
Wann wird die Last zu hoch, kann man es berechnen? wenn ja , wie?

Gruss,
Alexander

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir jemand helfen?

Autor: smartie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann man ausrechnen:
ein Identifier mit 8 Byte Daten hat 11 Byte.
Bei 2 ms also 500 Messages/s = 5500 Byte/s = 44 Kbit
Mit 8 Identifiern à 8 Byte also 352 Kbit entsprechend 70% Buslast bei
500 Kbit, also kein Problem.
8 Identifier mit nur einem Byte Daten wären nur 128 Kbit, also 25,6%
Buslast.

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, so fast....
Bei Standard-Frames (11bit identifier) kann man auf bis zu 130bit
kommen  für 8byte Daten.

Autor: smartie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jup, hast recht.

1 Start bit
+11 Identifier bits
+ 1 RTR bit
+ 6 Control bits
+ 64 Data bits
+ 15 CRC bits
+ 19 (maximum) Stuff bits
+ 1 CRC delimiter
+ 1 ACK slot
+ 1 ACK delimiter
+ 7 EOF bits
+ 3 IFS (Inter Frame Space) bits
= 130 bits

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank an alle!

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

leider ist mir bei der Angabe der Wete ein fehler unterlaufen.

Der Bus wird mit 1ms abgetastet.

das heißt:
Bei 1 ms also 1000 Messages/s = 11000 Byte/s = 88 Kbit
Mit 8 Identifiern à 8 Byte also 704 Kbit entsprechend 140% Buslast bei
500 Kbit, die folge ist Buslast zu hoch.

Ist meine Rechnung richtig???? Diese habe ich vom smartie übernommen
und mit meinen Werten ergänzt.
Ich verstehe aber immer noch nicht warum es 8 Identifier sind?
Werden diese alle gleilchzeitig verschickt?

Gruß und Danke!
Alex

Autor: beta-frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Alex,

wenn ich Smartie hoffentlich richtig verstehe, geht er von nem
angenommenen worst-case mit 8 "Sendern" (PID-Parameter, Sollwerte
etc. haben ja alle nen eigenen Identifier) aus, die insgesamt auf dem
BUS geistern.

Gruß Frank Ni...

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Frank,

wenn man von 8 Identifiern ausgeht , ist dann meine Rechnung richtig?

Und warum geht dan die Last hoch, die Identifier werden doch nach
einander übertragen, oder????

Gruss,
Alex

Autor: Matthias Friedrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Der Bus wird mit 1ms abgetastet."

Der Can-Bus wird nicht abgetastet. CAN ist ein Multi-Master-Bus, d.h.
jeder Teilnehmer kann zu beliebeigen Zeitpunkten senden.

Wenn zur Zeit der analoge Istwert in äquidistanten Abständen von 1ms
gewandelt wird, heißt das noch nicht zwingend, dass diese Frequenz auch
tatsächlich für die Funktion des Reglers notwendig ist.
Dies hängt sehr stark vom Einsatzgebiet des Reglers ab.
Falls dieser nicht notwendigerweise jede Milisekunde ein CAN-Telegramm
mit dem Istwert erwartet, kann bei einer Regelung mit hohen Totzeiten
durchaus ein höheres Telegramm-Intervall möglich sein.

Autor: beta-frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Alex,

die Botschaftssender "schauen" erst ob der BUS frei ist, bevor sie
senden. Ist er belegt, wird gewartet, bis er wieder frei ist.
Versuchen's doch mal mehrere zugleich, wird die Kollision erkannt und
die niederpriore Sendung wird abgebrochen und später, wenn der BUS
wieder frei ist, abgesetzt. Wenn auf Deinem Bus nur der Regler und ne
Bedieneinheit (Sollwert- u PID_Parametergeber sowie Istwertanzeige)
sitzen, gibts da wenig Probleme und das Trafficaufkommen solltest Du
kalkulieren können. Ich gehe davon aus, das die CANBUS-Teilnehmer über
CAN-Controller verfügen, die das für Dich abwickeln und Du diesen nur
übergeben mußt, welcher Identifier mit welchen Nutzdaten versendet
werden soll und auf Empfangsseite Mailboxen (oft so genannt) hast, die
Dir per Interrupt (oder Du pollst sie) bescheid geben, daß eine für
Dich interessante Botschaft eingetroffen ist.

In nem angenommenen Fall, daß z.B. Istwerte vom Regler und Sollwerte
von der Bedieneinheit zeitgleich transportiert werden sollen, mußt Du
ne Verzögerung in Kauf nehmen, da die Botschaften nunmal nur
nacheinander über den BUS laufen können. Liegt an der konkreten
Situation, ob das tolerabel ist und die Gesamtmenge der anfallenden
Botschaften nicht den BUS überfordert.

Gruß Frank

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.