Forum: Mikrocontroller und Digitale Elektronik Fahrtcontroller mit 4 unabhängigen CAN Bussen


von Andreas G. (andreasgs)


Lesenswert?

Hallo Zusammen,

Ich habe 4 Elektromotoren mit integrierten Steuergeräten und 
Leistungselektronik die über CAN ansteuerbar sind. Diese Vier Motoren 
möchte ich über einen zentralen Mikrcontroller ansteuern, der 
gleichzeitig das HMI ist, also die Usereingabgen und Sollwerte 
verarbeitet und auf die Busse abschickt.

Da leider alle Vier SG die selben CAN IDs haben, sowie die Sollwerte für 
jeden Antrieb unterschiedlich sind kann ich diese nicht auf den selben 
CAN - Bus hängen und muss daher die Ansteuerung spliten.

Ich hätte jetzt an folgende Architektur gedacht: Beaglebone Black (HMI 
und MAIN - Schleife für Fahrtregler), und dazu das MiroBus Cape 
http://www.mikroe.com/click/mikrobus-cape/ sowie 4 CAN - Bus Controller 
http://www.mikroe.com/click/can-spi-5v/

Die Frage ist nun, mal unabhängig vom gewählten Master - Rechenraster, 
kann ein Beaglebone Black über den SPI überhaupt schnell genug die 
MCP2515 CAN - Controller abfragen um 10ms Botschaften auf den Bussen zu 
empfangen / Senden? Auf dem Cape würden 3 MCP2515 auf den SPI0 und 1 
MCP2515 auf dem SPI1 hängen.

Weiterhin bin ich mir nicht sicher, ob das BeagleBoneBlack für solch 
eine Zeitkritische Anwendung generell die richtige Plattform ist, oder 
ob ich nicht gleich einen anständigen uC verwenden sollte, der für 
solche Aufgaben ausgelegt ist.

Evtl. lässt man den Fahrtregler und die Busansteuerung auf einen uC 
laufen, der dann lediglich mit dem BBB als HMI Frontend die Sollwerte 
über einen Bus gesendet bekommt.

Was denkt ihr?

: Verschoben durch User
von Rudolph R. (rudolph)


Lesenswert?

Andreas G. schrieb:
> Was denkt ihr?

Das es möglich sein sollte, die vier Motoren auf unterschiedliche 
CAN-IDs zu konfigurieren.

von npn (Gast)


Lesenswert?

Rudolph R. schrieb:
> Andreas G. schrieb:
>> Was denkt ihr?
>
> Das es möglich sein sollte, die vier Motoren auf unterschiedliche
> CAN-IDs zu konfigurieren.

Das vermute ich auch. Aber dazu müßte Andreas mal den Typ der 
Steuergeräte sagen. Ich kann mir nicht vorstellen, daß es bei 
Steuergeräten keine Möglichkeit der ID-Auswahl gibt.
(Was nicht bedeuten soll, daß es nicht vielleicht so "intelligente" 
Hersteller gibt, die das fest verdrahten...) :-)

Eventuell geht es nicht mit Jumpern oder Drehschaltern, sonder nur mit 
einer Konfigurationssoftware.

von Andreas G. (andreasgs)


Lesenswert?

Hi

Leider ist ein umkonfiguriern der Can IDs seitens hersteller nie 
vorgesehen gewesen. Daher wurden diese direkt in die sw compiliert und 
die daher fest. Im ursprünglichen Setup gibt es immer nur eine Maschine 
je Bus.

Grüße Andreas

von Roland E. (roland0815)


Lesenswert?

Mittels geeigneten Analogschalter den Bus umschalten.

von Au weia (Gast)


Lesenswert?

Andreas G. schrieb:
> Leider ist ein umkonfiguriern der Can IDs seitens hersteller nie
> vorgesehen gewesen. Daher wurden diese direkt in die sw compiliert und
> die daher fest. Im ursprünglichen Setup gibt es immer nur eine Maschine
> je Bus.

Ich, an Deiner Stelle, würde aus Deinem Fehlkauf lernen, die 4 
Schrott-Teile zurück geben (mit dem deutlichen Hinweis - warum) und mich 
nach einem Hersteller mit guten Produkten umsehen.
Alles andere ist russisch improvisierter Bastelkram.

von Peter D. (peda)


Lesenswert?

Andreas G. schrieb:
> Leider ist ein umkonfiguriern der Can IDs seitens hersteller nie
> vorgesehen gewesen.

Dann dürfte das vermutlich der weltweit einzigste Hersteller sein, der 
CAN nicht verstanden hat.

von Andreas G. (andreasgs)


Lesenswert?

Eigentlich wollte ich nicht über die Inkompetenz des Herstellers 
sprechen, sondern darum, ob ein Beagleboneblack in der Lage ist, 4 CAN - 
Busse an seinen SPI mit je Bus insgesamt 15 Botschaften zu bedienen 
wobei 4 der 15 Botschaften in einem Raster von 10ms kommen müssen und ob 
dann noch ein "Echtzeit" (Echtzeit = zeitlich Deterministisch) 
Fahrtregler/steller am Beaglebone Black gerechnet werden kann, der die 
Sollwerte berechnet.

von Fabian F. (fabian_f55)


Lesenswert?

Wieso keinen MUXer der den CAN zwischen den 4 Motoren umschaltet? Oder 
gleich einen Controller mit 4 CANs nehmen...

von Marc H. (marchorby)


Lesenswert?

Andreas G. schrieb:
> Eigentlich wollte ich nicht über die Inkompetenz des Herstellers
> sprechen

Wie wäre es wenn du mal über den Namen des Herstellers sprechen würdest?

von Rudolph R. (rudolph)


Lesenswert?

Andreas G. schrieb:
> Eigentlich wollte ich nicht über die Inkompetenz des Herstellers
> sprechen,

Verstanden, das sah aber erstmal so aus, als ob Du das falsche Problem 
lösen möchtest.
Und da man Software ändern kann und Du weder den Hersteller noch das 
Produkt genannt hast, würde ich jetzt weder ein Software-Update noch 
einen Hack der Hardware ausschliessen wollen.

Fabian F. schrieb:
> Wieso keinen MUXer der den CAN zwischen den 4 Motoren umschaltet?

Das ist nicht nur elektrisch eklig, dazu bräuchte man mindestens auch 
noch vier zusätzliche Controller als CAN-Knoten, damit es nicht die 
ganze Zeit Bus-Fehler hagelt.
Dann könnte man auch gleich vier Stück ATMega16M1 oder so nehmen die per 
CAN mit dem Motor-Treiber sprechen und auf der anderen Seite per SPI 
oder UART an den Haupt-Controller angebunden sind.

von Peter D. (peda)


Lesenswert?

Der LPC2294 hat 4 CANs.

von PICfan (Gast)


Lesenswert?

Wenn schon SPI, dann nehme 4x MCP2515 als CAN controller (plus 
Transceiver natürlich).  Ob es die geforderte Timings einhält muss mann 
probieren.

MfG
PICfan

von Andreas G. (andreasgs)


Lesenswert?

PICfan schrieb:
> Wenn schon SPI, dann nehme 4x MCP2515 als CAN controller (plus
> Transceiver natürlich).  Ob es die geforderte Timings einhält muss mann
> probieren.
>
> MfG
> PICfan

So wäre die Architektur aus meinem ersten Post aufgebaut

Den lpc2294 hab ich heute auch schon gesehen. Bei olimex gibt's den 
schon fertig auf einem egal Board...

von Frank K. (fchk)


Lesenswert?

Andreas G. schrieb:

> Was denkt ihr?

Nimm besser dsPIC33FJ64GP802, pro Bus einen. Deine Messages kannst Du 
dann immer noch per SPI transportieren, aber der dsPIC wird Dich durch 
lokales RAM und lokale Weiterverarbeitung dabei entlasten. Dann sollte 
auch 1MBit/s auf jedem Bus möglich sein.

fchk

von Rudolph R. (rudolph)


Lesenswert?

Frank K. schrieb:
> Dann sollte auch 1MBit/s auf jedem Bus möglich sein.

Wenn die Datenrate einstellbar wäre, dann könnte man auch die IDs 
einstellen...
Wäre ja jetzt ein interessanter Zufall wenn die nich genannte Datenrate 
1MBit/s betragen würde, es wurde ja nicht mal erwähnt ob LowSpeed oder 
HighSpeed...

von Forist (Gast)


Lesenswert?

Statt mit Sturköpfigkeit den Thread zu blockieren, könnte man das 
Problem mal ein bisschen spezifizieren.

Wie hoch ist die Busgeschwindigkeit?
Was sind das für Motoren/Steuergeräte (Typ/Hersteller)?
Was für Datenmengen werden über den Bus geschickt?

... nur um mal eine grobe Orientierung über das Problem zu bekommen.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Andreas G. schrieb:
>
>> Was denkt ihr?
>
> Nimm besser dsPIC33FJ64GP802, pro Bus einen. Deine Messages kannst Du
> dann immer noch per SPI transportieren, aber der dsPIC wird Dich durch
> lokales RAM und lokale Weiterverarbeitung dabei entlasten. Dann sollte
> auch 1MBit/s auf jedem Bus möglich sein.

Ich würde auch nicht auf die SPI-CAN Teile setzen. Ich persönlich würde 
zu einem kleinen STM32 raten und den dann viermal. Geht aber mit dem 
dsPIC bestimmt genauso. Dann hält man sich auch die Möglichkeit offen 
bei Echtzeitproblemen die zeitkritischen Routinen auf den Controller 
auszulagern.

Matthias

von Peter D. (peda)


Lesenswert?

Frank K. schrieb:
> Nimm besser dsPIC33FJ64GP802, pro Bus einen.

Warum 4 MCs verschwenden, wenn es MCs mit 4 CANs gibt?
Meinst Du, der LPC2294 schaffts nicht.

von chris (Gast)


Lesenswert?

Eine Möglichkeit wäre auch, einen (bzw. insgesamt dann 3-4) µC mit 2 
CANs zu benutzen als Brücke.

Also Haupt-µC  <-CAN->  Bridge-µC  <-CAN->  seltsame Motorsteuerung

Der Bridge-µC empfängt die Nachrichten des Haupt-µC indem er auf einer 
individuellen Adresse lauscht und gibt sie dann an seine jeweilige 
Motorsteuerung weiter.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Peter D. schrieb:
> Frank K. schrieb:
>> Nimm besser dsPIC33FJ64GP802, pro Bus einen.
>
> Warum 4 MCs verschwenden, wenn es MCs mit 4 CANs gibt?
> Meinst Du, der LPC2294 schaffts nicht.

Der LPC2294 ist halt ein recht großes Monster.  Und nicht mehr der 
frischste (10 Jahre, noch ARM7TDMI). Würde ich in neuen Projekten nicht 
mehr einsetzen.

Und ob der Controller den (zugegeben) absoluten Worst-Case (4x1MBit/s 
bei hoher Buslast) noch korrekt verarbeiten kann wäre ich mir nicht 100% 
sicher bevor ich das nicht hätte laufen lassen. DMA scheint der ja auch 
nicht zu haben der bei SPI/UART helfen könnte.

Von daher würde ich auch eher auf vier günstige Controller (z.B. 
STM32F042) setzen. Läuft ja eh das gleiche Programm in allen.

Matthias

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.