Forum: Mikrocontroller und Digitale Elektronik Can-Bus LAST


von Alex (Gast)


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

von cazy horse (Gast)


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.

von Alex (Gast)


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

von Alex (Gast)


Lesenswert?

Kann mir jemand helfen?

von smartie (Gast)


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.

von cazy horse (Gast)


Lesenswert?

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

von smartie (Gast)


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

von Alex (Gast)


Lesenswert?

Vielen Dank an alle!

von Alex (Gast)


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

von beta-frank (Gast)


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...

von Alex (Gast)


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

von Matthias Friedrich (Gast)


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.

von beta-frank (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.