Forum: Haus & Smart Home Ausgelasteter CAN Bus Auswerten


von Thomas K. (thomas_k31)


Lesenswert?

Moin Zusammen,

Folgendes Problem und zwar sollen 30 Sensoren welche jeweils 2 CAN Bus 
Ausgänge haben ausgewertet werden. Das Problem liegt daran das der CAN 
Bus pro Sensor zu ca. 50% ausgelastet wird. Gibt es irgendeine 
Möglichkeit diese 30 Sensoren bzw. ihre Can Ausgänge schlau zu loggen 
bzw. die Ausgangsdaten abzuspeichern?Es müssen immer alle Daten 
ausgewertet werden.
Für jeden Tipp/Hinweis bin ich froh :-)
Die Daten sollen entweder per TCP/IP irgendwo abgeladen werden oder auf 
einem RasperryPI in den Speicher.

Danke und
Gruss

von Argonaut (Gast)


Lesenswert?

Thomas K. schrieb:
> sollen 30 Sensoren

> Das Problem liegt daran das der CAN
> Bus pro Sensor zu ca. 50% ausgelastet wird.

Also x 30 = 1500%?



Thomas K. schrieb:
> Gibt es irgendeine
> Möglichkeit diese 30 Sensoren bzw. ihre Can Ausgänge schlau zu loggen
> bzw. die Ausgangsdaten abzuspeichern?

Hol dir einen Canalyzer oder einen Logic Analyzer mit I2C Bus 
Interpreter.

von ha. (Gast)


Lesenswert?

Die Baudrate ist schon am Anschlag ? Weshalb habe ich den Eindruck, ein 
CAN Bus sei hier falsch ?

von rcc (Gast)


Lesenswert?

Was soll da so schnell gemessen werden? Welche Baud-Rate verwendet der 
CAN?
Sicher dass der CAN da nicht von Modul zu Modul durchgeschleift werden 
soll?

von Thomas K. (thomas_k31)


Lesenswert?

Also es geht ja um zwei CAN Outputs eines Produktes. Somit kann ich die 
Baudrate ja nicht einfach verändern...zudem soviel ich weiss ist die 
auch schon ziemlich am Maximum.
Es geht ja nun darum ein ''Testgerät'' für diese Produkte zu bauen und 
dafür sollen 20-30 Stück dieser Geräte gleichzeitig getestet werden 
können(Langzeit/Klimatests).
Gemessen werden die Daten welche das Gerät ausgiebt....dies sind 
vorallem Positionsdaten des Sensors. Die Datenmenge entsteht dadruch das 
das Gerät Positionsdaten bei Geschwindigkeiten bis zu 4-5m/s auf 1mm 
genau ausgiebt.

von Lutz (Gast)


Lesenswert?

Ich befürchte, ich habe deine Frage nicht richtig verstanden.
So wie ich sie verstanden habe, würde ich einfach irgendeinen 
CAN-Controller im listen-only modus mitlaufen lassen, der alle 
CAN-Identifierakzeptiert und diese dann irgendwo hinschaufeln.
Wie das dann später bei der Datenmenge sinnvoll ausgewertet werden soll, 
ist das nächste Problem. Aber das ist ja klar und auf dem PC nicht 
sonderlich schwer. Wohl eher, welche Schlüsse man aus den Daten ziehen 
kann.

von Frank K. (fchk)


Lesenswert?

Thomas K. schrieb:

> Es geht ja nun darum ein ''Testgerät'' für diese Produkte zu bauen und
> dafür sollen 20-30 Stück dieser Geräte gleichzeitig getestet werden
> können(Langzeit/Klimatests).

Da nimmst Du Dir beispielsweise einen PIC32MX795 oder einen STM32F107, 
die Fast Ethernet und 2*CAN haben. Dazu einen passenden Ethernet PHY 
sowie die CAN Transceiver, und los gehts. Du sammelst so viele 
CAN-Pakete, bis ein UDP-Paket voll ist und schickst es dann raus.

Von diesem Board machst Du dann n Stück, hängst die an einen 
Ethernet-Switch zusammen mit einem PC, der die Pakete dann einsammelt 
und wegschreibt. Insbesondere wenn der PC an einem Gigabit Ethernet Port 
hängt, sollten keine UDP-Pakete verloren gehen - die Bandbreite dürfte 
mit Sicherheit ausreichen.

Vorschlag: Olimex STM32-P107: CAN1 liegt auf PD0(RX)/PD1(TX), CAN2 auf 
PB4(RX)/PB5(TX). Ihr müsst nur noch die CAN-Transceiver und die 
zugehörigen Steckverbinder auf dem Lochrasterteil aufbauen, der Rest ist 
nur noch Weichware.

fchk

von Lutz (Gast)


Lesenswert?

Nach nochmaligem lesen ist mir die gewerbliche Nutzung klar geworden. In 
dem Fall würde ich, wie oben schon jemand schrieb, einen kommerziellen 
CAN-Analyzer nehmen. Das Gebastel entfällt dann und es ist schon gleich 
Software für den PC dabei, so daß der Rest eine reine Softwarefrage 
wird.
Ansonsten wirst Du dich immer rechtfertigem müssen; nach dem Motto 
"stimmen deine Frickelzahlen auch wirklich?"
Diese 100 € wirst du nie bereuen. Auch dein Chef nicht, wenn man alleine 
die Arbeitszeit der Frickellösung betrachtet.

von Christian G. (christiang)


Lesenswert?

Andere Frage:
Senden die Sensoren ihre Informationen alle auf der gleichen ID?
Wenn ja, dann kannst du das ganze sowieso vergessen. Wie willst du sonst 
herausfinden welche Daten von welchem Sensor stammen?!

von Lutz (Gast)


Lesenswert?

Na ja, bei "richtigem" Standard-CAN sagt der Identifier ja etwas über 
den Inhalt des Frames aus, nicht wer ihn losgeschickt hat. In diesem 
Falle wohl die Positionsdaten. Wenn diese von jedem Sensor immer mit dem 
selben Identifier geschickt werden (was anzunehmen ist), dann kann 
sowieso nur jeder Sensor einzeln in seinem eigenen Bus getestet werden. 
Problem korrekt erkannt.
Zumal die o.g. 50 % Busauslastung durch einen Sensor ja auch nicht 
sehr viel mehr Teilnehmer auf dem Bus hergeben würde. Wurde ja oben 
schon genannt (1.500 %). Also würde man bei 30 parallel zu testenden 
Sensoren auch 30 CAN-Analyzer brauchen.

Aber wie ich schon schrieb, kommt das Problem erst später: Wie wertet 
man diese riesige Datenflut dann sinnvoll sicher_ und _aussagekräftig 
aus? Das muß ja eine dolle Software werden und ist sicherlich um Längen 
diffizieler als die reine Datenerfassung von Standard-CAN-Frames.

von Christian G. (christiang)


Lesenswert?

>Das muß ja eine dolle Software werden und ist sicherlich um Längen
diffizieler als die reine Datenerfassung von Standard-CAN-Frames.
In folgender Reihenfolge zu empfehlen, das nötige Kleingeld und die 
Bereitschaft sich einzuarbeiten vorausgesetzt:
- Diadem
- IPEmotion
- CANoe

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Thomas K. schrieb:
> Also es geht ja um zwei CAN Outputs eines Produktes. Somit kann
> ich die
> Baudrate ja nicht einfach verändern...zudem soviel ich weiss ist die
> auch schon ziemlich am Maximum.

Sollte mann evtl. vorher klären.

Ob CAN bei einem Gerät das den Bus überflutet überhaupt sinnvoll ist 
steht auf einem anderen Blatt


> Es geht ja nun darum ein ''Testgerät'' für diese Produkte zu bauen und
> dafür sollen 20-30 Stück dieser Geräte gleichzeitig getestet werden
> können(Langzeit/Klimatests).

Auf welchem Level?

Reine Hardware:

Nimm einen billigen Logic Analyzer der die Kanäle wegschreiben kann und 
schau Sie dir nachträglich mit nem Interpreter an.


Mit Auswertung:

Einen Controller mit CAN und USB oder Ethernet der sich die Werte 
anguckt und gut/böse Signale ausgibt. Dann hast du auch nicht diese 
Datenmengen und sparst das post processing. Wenn du einen mit 4x CAN 
nimmst kannst du auch eine Referenz gleich mitmessen den du (da ja CAN 
Bus) an alle verteilst.

Wenn du es einfach willst machst du ne rote Lampe dran und schreibst die 
Messergebnisse auf ne SD Card.

Dann sparst du dir das Gefummel mit z.B. dem CAN / USB Bridging ud wirst 
flexibler und mobiler.


> Gemessen werden die Daten welche das Gerät ausgiebt....dies sind
> vorallem Positionsdaten des Sensors. Die Datenmenge entsteht dadruch das
> das Gerät Positionsdaten bei Geschwindigkeiten bis zu 4-5m/s auf 1mm
> genau ausgiebt.

Wohl eher 1mm Auflösung. Das sind 5k Telegramme / Sekunde

Wenn jedes 20 bit lang ist macht das 100kBit/s was dein CAN wohl locker 
kann.

von Lutz (Gast)


Lesenswert?

Der Rächer der Transistormorde schrieb:
> Wenn jedes 20 bit lang ist macht das 100kBit/s was dein CAN wohl locker
> kann.

CAN 2.0 A hat 110 bits pro Frame, das wären dann 550 kbit/s. Aber auch 
kein Problem.

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.