Forum: Mikrocontroller und Digitale Elektronik Regelkreis innerhalb CAN-Bus möglich?


von Max M. (max_m1)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich möchte einen CAN-Bus in einen Regelkreis integrieren und wollte 
fragen ob das überhaupt geht.

Kurze Erklärung:
Mittels einem Joystick soll die x,y und z-Koordinate vorgegeben werden 
können (Sollwert).

Dieser Sollwert geht dann in einem Computer (PID-Controller). Dieser 
PID-Controller empfängt die aktuelle x,y und z-Position und gibt dann 
entsprechende Verstärkungswerte für den x,y und z-Motortreiber auf einen 
CAN-Bus aus.

Die Motortreiber hängen auf einen gemeinsamen CAN-Bus zusammen mit dem 
PID-Controller. Die Motortreiber empfangen somit über den CAN-Bus die 
Verstärkungswerte.
Dabei muss aber jeder Motortreiber (x,y,z) darauf achten, dass er den 
für sich relevanten Verstärkungswert herausfiltert:
Motortreiber für die x Achse muss aus dem CAN-Signal den 
Verstärkungswert für die x-Achse bekommen und Motorcontreiber für die y 
Achse muss aus dem CAN-Signal den Verstärkungswert für die y-Achse 
bekommen usw...

Die aktuelle Winkelposition jeder Achse wird zudem dem Computer 
(PID-Controller) direkt als Istwert geliefert.

Zur besseren Veranschaulichung habe ich euch noch eine kleine 
Prinzipskizze angehängt. Bei Unverständnis bitte Nachfragen :-)

So, was meint ihr, kann man einen CAN-Bus in einem Regelkreis mit 
einbinden oder ist das zuviel Totzeit und der Regler wäre instabil?

Bzw. wird sowas vielleicht sogar in der Praxis gemacht? Wenn ja, wie 
sieht es mit funktionaler Sicherheit aus?

Viele Grüsse und besten Dank!

: Bearbeitet durch User
von Horst (Gast)


Lesenswert?

Kommt natürlich drauf an wie die Zeitkonstanten des Systems sind.
Wenn du deine Motoren mit 1 umin drehen lässt, sollte es wohl gehen.

von Max M. (max_m1)


Lesenswert?

Horst schrieb:
> Kommt natürlich drauf an wie die Zeitkonstanten des Systems sind.
> Wenn du deine Motoren mit 1 umin drehen lässt, sollte es wohl gehen.

mhm, kann man die Zeitkonstante des CAN-Bus irgendwie im vornherein 
abschätzen?

von ягт ден троль раус (Gast)


Lesenswert?

Die Totzeit des Busses ist in der Groessenordnung vom 
Meldungslaenge/Baudrate und die sollte einiges Schneller wie die 
Zeitkonstante des zu regelnden Systems sein.

.. so nebenbei wird das ABS & das ESP in Auto mit diesem Bus geregelt.

von Lothar (Gast)


Lesenswert?

ягт ден троль раус schrieb:
> so nebenbei wird das ABS & das ESP in Auto mit diesem Bus geregelt

Das sind aber separate CAN-Busse mit nur 1 Master 1 Slave und damit 
deterministisch.

von Wolfgang (Gast)


Lesenswert?

Lothar schrieb:
> Das sind aber separate CAN-Busse mit nur 1 Master 1 Slave und damit
> deterministisch.

Ob das auf einem Bus mit mehr Teilnehmern genauso funktioniert, kommt 
doch wohl auf die Priorisierung der Nachrichten an.

von karl (Gast)


Lesenswert?

Möglich? Ganz klar ja.
Evtl gibt es Einschränkungen bzgl. Performance.

von CanIO (Gast)


Lesenswert?

Der Grafik zufolge ist es auch nur ein Sender und 3 Empfänger?

Sollte also ohne weiteres gehen.

von karl (Gast)


Lesenswert?

CanIO schrieb:
> Der Grafik zufolge ist es auch nur ein Sender und 3 Empfänger?

Dem Text zufolge kommen die ist Werte von den Aktoren.

Wie dem auch sei.  Bei 1 Mbit/s bekommt man knapp 8 Nachrichten in 1 ms 
unter. Das reicht für die meisten Anwendungen einer Positionsregelung 
aus.

von ui (Gast)


Lesenswert?

karl schrieb:
> Dem Text zufolge kommen die ist Werte von den Aktoren.
>
> Wie dem auch sei.  Bei 1 Mbit/s bekommt man knapp 8 Nachrichten in 1 ms
> unter. Das reicht für die meisten Anwendungen einer Positionsregelung
> aus.

Das denk ich auch.
Du musst dir halt über die Priorisierung der Nachrichten Gedanken 
machen. Also evtl. die Prioritäten in Abhängigkeiten von den Regelwerten 
dynamisch verändern.
Alternativ (dann kannst du das ganze recht deterministisch machen) 
festlegen, dass die Reihenfolge der Nachrichten immer N1,N2,N3 ist, egal 
ob N1,N2 geregelt werden müssen oder nicht. Dann hast du zwar nicht die 
schnellsten Nachrichten zu N3, zum testen ist es aber definitiv 
einfacher. Also quasi Zeitslots einführen.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Lothar,

> ягт ден троль раус schrieb:
>> so nebenbei wird das ABS & das ESP in Auto mit diesem Bus geregelt
>
> Das sind aber separate CAN-Busse mit nur 1 Master 1 Slave und damit
> deterministisch.

Da hängen auch bei ESP inzwischen mehr als zwei Teilnehmer am Bus...

Im Bereich Motorsteuerung reicht die Bandbreite von CAN inzwischen z.T. 
nicht mehr aus, da setzt sich Flexray mehr und mehr durch. Aber für 
Regler mit mittleren Anforderungen sollte das schon gehen. Immerhin gibt 
es mit CANopen einen eigenen Standard für die Automatisierungstechnik, 
incl. Profilen für Antriebe.

Mit freundlichen Grüßen
Thorsten Ostermann

: Bearbeitet durch User
von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Das Problem dürfte in erster Linie nicht der Bus sein sondern der 
"Computer" Wenn das was PC mäßiges ist bei dem der CAN womöglich noch 
über USB angebunden ist würde ich mir eher darüber Sorgen machen.

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.