Forum: Mikrocontroller und Digitale Elektronik Echtzeitsystem nötig?


von Stefan Pöllitz (Gast)


Lesenswert?

Hallo zusammen.

Ich habe mir als Hobby-Projekt vorgenommen, ein eigenes 
Kraft-Wärme-Kopplungs-Aggregat zu bauen, welches von einer 
embedded-Lösung gesteuert und geregelt wird.

Es handelt sich um einen Dieselmotor, der einen Generator antreiben soll 
und die Abwärme vom Dieselmotor (wassergekühlt) der Werkstattheizung 
eingespeist werden soll: Blockheizkraftwerk.

Folgendes soll möglich sein:
 - Momentanwerte wie Vorlauf-/Rücklauftemperatur auf einem Webinterface 
darstellen (Webserver auf dem Embedded-System)
 - Wertspeicherung von z.B. Einschaltdauer/Temperaturverläufen in einer 
DB
 - Autarke Start- und Stopprozeduren auf dem Webinterface "BHKW 
starten/stoppen"
 - Drehzahlregelung des Dieselmotors mittels Schrittmotor (Gestänge an 
die Einspritzanlage)
Überschlagen sollten etwa 8 Analogsensoren (Temperaturen (NTC/PTC))
und 4 Digitalsensoren benötigt werden. Desweiteren Ausgänge für die 
Steuerung einer Schrittmotortreiberstufe, der Pumpen in den beiden 
Kühlkreisläufen.

Nun die Frage:
Welches System würde sich hierfür eignen? So ein Raspberry Pi wäre 
ideal, wenn man damit auch echtzeitfähig wäre. Er hätte die 
Webservergeschichte, GPIOs und Möglichkeiten an Bord, die Sensorik 
auszuwerten.
Allerdings: er ist eben nicht echtzeitfähig, um z.B. die Drehzahl des 
Motors über z.B. einen Hallsensor am Schwungrad zu ermitteln


Habt ihr Ideen, wie man das Ganze am besten mit einem bestehenden System 
wie einem Raspberry Pi o.ä. aufbauen könnte?

Eine SPS wäre vermutlich nicht möglich, da sie solche Dinge wie 
Webserver/mySQL nicht mitbringen würde.


Danke u. Gruß

von Eric B. (beric)


Lesenswert?

Stefan Pöllitz schrieb:
> Allerdings: er ist eben nicht echtzeitfähig, um z.B. die Drehzahl des
> Motors über z.B. einen Hallsensor am Schwungrad zu ermitteln

Warum nicht? Wieviel Umdrehungen macht denn dein Motor so im Schnitt?

von pegel (Gast)


Lesenswert?

Warum nicht die Aufgaben auf verschiedene µC verteilen?
Dazwischen ein RS485 Bus.

Das System soll sicher auch Fehler abfangen können oder?

von Finn S. (scooter757)


Lesenswert?

Wenn es nur darum geht, zeitkritisch einen Hallsensor auszuwerten, würde 
ich dafür einen Attiny verweden und die Daten über UART ausgeben. Das 
Progrämmchen ist ja schnell geschrieben und das ist nur ein 
Minimalaufwand. Für den Rest hört sich ein PI gut an. An der einen 
Messung sollte das nicht scheitern. Ich würds sogar mit dem PI mal 
testen, ein Versuch ist es ja wert.

Finn

von Stefan Pöllitz (Gast)


Lesenswert?

Ok Danke.

Das heißt, ihr würdet die zeitkritischen Sachen über einen AVR machen, 
der die Daten dann zum Raspberry schickt?!

D.h. alles was Steuerung betrifft: AVR, was Webinterface betrifft 
RaspPi?

Gruß

von pegel (Gast)


Lesenswert?

Klingt gut :)

von pegel (Gast)


Lesenswert?

Vor Jahren habe ich damit Versuche angestellt:

http://vonkonow.com/wordpress/2012/01/software-for-home-automation/

Ist eine gute Vorlage für derartige Projekte.

von Finn S. (scooter757)


Lesenswert?

Stefan Pöllitz schrieb:
> alles was Steuerung betrifft: AVR, was Webinterface betrifft RaspPi?

Ja, das wäre ja auch Quatsch ein Webserver auf nem AVR laufen zu lassen, 
wenn es den Apache/Nginx/... auf dem PI daneben steht...

von Georg (Gast)


Lesenswert?

Stefan Pöllitz schrieb:
> D.h. alles was Steuerung betrifft: AVR, was Webinterface betrifft
> RaspPi?

Ja, das ist die Lösung nach dem derzeitigen Stand der Technik, auch wenn 
das heisst, dass die wesentlichen Aufgaben von einem Winz-Controller 
bearbeitet werden, das Human Interface dagegen von einem System mit der 
mehrhundertfachen Rechenleistung - aber so ist das mit dem Internet der 
Dinge eben. Ein "moderner" Kühlschrank braucht auch etwa 1% der 
Rechenleistung zum Kühlen und 99% für die Präsenz im Internet.

Georg

von Wolfgang (Gast)


Lesenswert?

Georg schrieb:
> Ja, das ist die Lösung nach dem derzeitigen Stand der Technik, auch wenn
> das heisst, dass die wesentlichen Aufgaben von einem Winz-Controller
> bearbeitet werden, das Human Interface dagegen von einem System mit der
> mehrhundertfachen Rechenleistung ...

Ist das auf einem Arbeitsplatz-PC anders, der nicht gerade mit 
virtuellen Welten und Beleuchtungsberechnung für Elementardreiecke warm 
gehalten wird.

von c-hater (Gast)


Lesenswert?

Stefan Pöllitz schrieb:

> Ich habe mir als Hobby-Projekt vorgenommen, ein eigenes
> Kraft-Wärme-Kopplungs-Aggregat zu bauen, welches von einer
> embedded-Lösung gesteuert und geregelt wird.

Schön und nützlich. Wenn auch nicht wirklich eine neue Idee...

>  - Momentanwerte wie Vorlauf-/Rücklauftemperatur auf einem Webinterface
> darstellen (Webserver auf dem Embedded-System)
>  - Wertspeicherung von z.B. Einschaltdauer/Temperaturverläufen in einer
> DB
>  - Autarke Start- und Stopprozeduren auf dem Webinterface "BHKW
> starten/stoppen"

Vollkommener Bullshit. Absolut nachrangiges Eye-candy Zeug. So einen 
überwiegend sowieso vollkommen nutzlosen Schrott kann man später 
irgendwann mal an eine funktionierende Lösung des eigentlichen Problems 
andocken.

Mein Tipp: realisiere erstmal den Projektkern. Die ganzen nutzlosen 
Gimmicks solltest du dabei nur insofern im Auge behalten, dass du bei 
der Realisisierung der eigentlichen Sache Schnittstellen vorsiehst, an 
dem dieser ganze Polter sich später leicht andocken läßt.

von Peter U (Gast)


Lesenswert?

Auch immer bedenken was Echtzeitfähig eigentlich bedeutet.

Falls dein Programm welches steuert nicht Echtzeitfähig programmiert ist 
klappt das auch nicht.

Echtzeitfähig bedeutet als erstes dein Programm läuft so ab das du in 
einer bekannten zeit eine Antwort bekommst.

z.B.
Falls du nun eine Schleife im Programm hast welche Daten verarbeitet wo 
die Anzahl der Daten variabel ist und durch viele Daten die Antwort des 
Programms nicht mehr in der bekannten Zeit beendet werden kann muss dein 
Programm die Anlage abschalten, eine Meldung absetzen oder sich sonstwie 
kontrolliert verhalten.

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Wieso soll auf einer SPS kein Webserver und SQL laufen?
Schau mal bei Beckhoff, alles Standard.

Christian_RX7

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan Pöllitz schrieb:
> So ein Raspberry Pi wäre ideal, wenn man damit auch echtzeitfähig wäre.
Ja, ich finde das auch gruselig: da hat man einen 32 Bit uC mit 600MHz 
und der kann nicht mal so eine schnarchlangsame Drehzahl (max 100Hz, 
beim Diesel nur 50) eines Verbrennungotors einlesen. Eigentlich schlimm, 
dass man dann noch einen AVR mit 8MHz extra dafür braucht...

: Bearbeitet durch Moderator
von Noch einer (Gast)


Lesenswert?

> ihr würdet die zeitkritischen Sachen

Das Problem ist eher die Zuverlässigkeit. So ein Raspi vertütelt sich 
etwa ein mal im Jahr. Mal ist die SD-Karte kaputt. Mal reagiert er nicht 
mehr auf WLAN...

Für Logging und Webserver ist das gut genug. Von einer Steuerung dagegen 
erwartet man, dass sie 20 Jahre vollkommen unauffällig funktioniert.

von Nenene (Gast)


Lesenswert?

Komisch, wenn ich mit meinem 40tonner und 650PS bei Edeka einkaufen will 
bekomme ich keinen Parkplatz. Das man dafür extra einen Smart braucht.
@Lothar
Das entspricht Deinem Äpfel / Birnen Vergleich.

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Ansich eine super Idee für die Werkstatt. Du solltest dabei aber 
bedenken welche Wassertemperatur für die Heizleistung notwendig ist. Was 
für einen Dieselmotor möchtest du für die Anwendung benutzen? Wenn du 
länger was von dem haben möchtest, sollte der möglichst nicht unter 
60-80°C Wassertemperatur laufen. Und hier ist der Knackpunkt: Ziehst du 
ihm zuviel Wärme ab, wird er gar nicht mehr warm und du bekommst nur 
kaltes Wasser an deiner Heizung. Ich würde mir ein paar Gedanken hierzu 
machen, falls du das nicht schon gemacht hast.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Nenene schrieb:
> @Lothar
> Das entspricht Deinem Äpfel / Birnen Vergleich.
Mit einem gerüttelt Maß an Resignation durchaus...

Aber warum sollte ein 600MHz Bolide nicht grundsätzlich auch 50Hz 
auswerten können? Irgendwer hat den doch so ineffizient programmiert 
dass nicht mal das mehr möglich ist. Und soooo arg viel und "spezielle" 
Ressourcen braucht es für diese Auswertung nun auch wieder nicht.

von Rusty (Gast)


Lesenswert?

Hi,

mir ist noch nicht klar, weshalb er einen uC benötigt.
Soll der Diesel genau auf 50Hz Generatorfrequenz geregelt werden?

von Falk B. (falk)


Lesenswert?

@ Lothar Miller (lkmiller) (Moderator) Benutzerseite


>> So ein Raspberry Pi wäre ideal, wenn man damit auch echtzeitfähig wäre.
>Ja, ich finde das auch gruselig: da hat man einen 32 Bit uC mit 600MHz
>und der kann nicht mal so eine schnarchlangsame Drehzahl (max 100Hz,
>beim Diesel nur 50) eines Verbrennungotors einlesen. Eigentlich schlimm,
>dass man dann noch einen AVR mit 8MHz extra dafür braucht...

Das nennt man wohl Fortschritt . . .
Java & Co lassen grüßen!

von Jan H. (j_hansen)


Lesenswert?

Lothar M. schrieb:
> Aber warum sollte ein 600MHz Bolide nicht grundsätzlich auch 50Hz
> auswerten können? Irgendwer hat den doch so ineffizient programmiert
> dass nicht mal das mehr möglich ist.

Nicht echtzeitfähig bedeutet nicht ineffizient, eher im Gegenteil. 
Braucht man Echtzeitfähigkeit, dann muss man eben ein RTOS verwenden 
oder den PI ohne OS laufen lassen.

von Jan H. (j_hansen)


Lesenswert?

Falk B. schrieb:
> Das nennt man wohl Fortschritt . . .
> Java & Co lassen grüßen!

Für die falsche Anwendung ist selbst das beste Werkzeug nutzlos.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Gibt es für den Raspberry kein RT-Linux?

Wenn nicht, könnte man einen ausgedienten normalen PC mit RT-Linux 
bestücken - oder gar ein LinuxCNC umbauen (dank HAL sehr schön 
handhabbar).

Die sauberste Lösung wäre mMn so etwas wie NuttX - http://www.nuttx.org 
: echtzeitfähig, sehr schlank, läuft bspw. auf AVRs, Cortexen usw, und 
bringt eine Unzahl an Modulen, u.a. Webserver, Terminal etc. mit. Wer 
mag, kann da auch direkt ein Display anflanschen.

Und: kostet auch nix ;-)

: Bearbeitet durch Moderator
von Walter T. (nicolas)


Lesenswert?

Also eigentlich ist doch "Drehzahlsteuerung des Motors am Gaszug" die 
einzige Aufgabe, für die ein Echtzeit-Sysem gebraucht wird. Das macht 
jeder ATtiny mit Hang zur Langeweile. Und für das Ganze Web-Geraffel 
kann man ja dann anfangen, wenn die Kernfunktion läuft. Dafür ist ein 
Raspberry Pi doch wunderbar.

von Der Andere (Gast)


Lesenswert?

@ Lothar, Falk, Chris:
Ich verstehe euch jetzt wirklich nicht so ganz. Man muss nicht für jeden 
Furz mehrere µC nehmen, aber hier bietet es sich doch geradezu an.
Auf dem PI läuft das ganze unnötige Smartphone Interface Geraffel und 
die Auswertung, was gerne auch mal Memory Leaks haben kann oder wegen 
einer defekten SD Karte mal spinnt, und der µC kümmert sich um die 
Regelung des Kernsystems und läuft zuverlässig über viele Jahre.
Saubere Trennung zwischen Präsentation Layer und Kernfunktion. Ansonsten 
muss man doch bei jeder Erweiterung des Webblödsinns damit rechnen, dass 
die Regelung selbst im Falle eines fatalen SW Fehlers in Mitleidenschaft 
gezogen wird.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Der Andere schrieb:
> @ Lothar, Falk, Chris:
> Ich verstehe euch jetzt wirklich nicht so ganz.

Ich versuche das mal zu erläutern :-)

> Man muss nicht für jeden
> Furz mehrere µC nehmen, aber hier bietet es sich doch geradezu an.
> Auf dem PI läuft das ganze unnötige Smartphone Interface Geraffel und
> die Auswertung, was gerne auch mal Memory Leaks haben kann oder wegen
> einer defekten SD Karte mal spinnt, und der µC kümmert sich um die
> Regelung des Kernsystems und läuft zuverlässig über viele Jahre.

Genau deshalb sehe ich das kritisch. Warum sollte man sich ein Monster 
wie Raspberry/Linux antun, nur um einen Webserver zu implementieren?

Und: natürlich steigt die Ausfallwahrscheinlichkeit eines Systems mit 
der Anzahl der Komponenten. Für solch eine Anwendung reicht im Prinzip 
ein STM32F0-Discovery (oder auch ein AtMega) - ganz ohne SD-Karte usw.

Fällt der (einzige) µC aus, dann ist das Ergebnis dasselbe wie bei 
Deiner Lösung. Fällt er nicht aus, erspart man sich den zusätzlichen 
"Unsicherheitsfaktor" Raspberry + Anbindung + Linux.

Dazu spart man sich die Arbeit der Schnittstellenimplementierung 
zwischen MC und Raspberry mit Checksummen usw.
In NuttX bspw. gibt es saubere Schnittstellen, um Daten zwischen 
abgeschotteten Prozessen auszutauschen.

Auch mechanisch (Steckverbindungen!) ist das verwenden mehrerer 
Komponenten die schlechtere Lösung.

> Saubere Trennung zwischen Präsentation Layer und Kernfunktion. Ansonsten
> muss man doch bei jeder Erweiterung des Webblödsinns damit rechnen, dass
> die Regelung selbst im Falle eines fatalen SW Fehlers in Mitleidenschaft
> gezogen wird.

Das kann man auch auf einem Chip softwaremäßig problemlos trennen - man 
muss es nur tun. Ein (hier POSIX-konformes) Echtzeitbetriebssystem 
bietet sich dafür an. Unter NuttX bspw. kann man das problemlos auf 
verschiedene Prozesse aufteilen, die alle sauber getrennt sind.

Zusammengefasst: weniger Aufwand (nur ein Zielsystem), weniger 
Energiebedarf, weniger Platzbedarf, geringere Ausfallwahrscheinlichkeit

von Noch einer (Gast)


Lesenswert?

> Warum sollte man sich ein Monster
> wie Raspberry/Linux antun, nur um einen Webserver zu implementieren?

Ist ja nicht nur der Webserver. Man braucht auch irgendeine Art von 
Datenbank, zeitgesteuertes Backup, Fernwartung vom Smartphone... Und bis 
alles so wirklich rund läuft, muss man es 10 mal umbauen.

Z.B. Du hast die Idee, Heizung nach Wettervorhersage zu regeln. Auf so 
einem Monster bastelst du dir einer 1/2 Stunde cronjob, rrdtool, init.d 
und Weboberfläche zusammen. Wenn es nichts bringt, versuchst du es mit 
der nächsten Strategie.

Wenn du aber 100 Anlagen verkaufst, und für 100 Anlagen Support machst - 
auf keinen Fall irgendwas mit SD-Karte und undurchschaubarem 
Betriebssystem.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Noch einer schrieb:
>> Warum sollte man sich ein Monster
>> wie Raspberry/Linux antun, nur um einen Webserver zu implementieren?
>
> Ist ja nicht nur der Webserver. Man braucht auch irgendeine Art von
> Datenbank, zeitgesteuertes Backup, Fernwartung vom Smartphone... Und bis
> alles so wirklich rund läuft, muss man es 10 mal umbauen.
>
> Z.B. Du hast die Idee, Heizung nach Wettervorhersage zu regeln. Auf so
> einem Monster bastelst du dir einer 1/2 Stunde cronjob, rrdtool, init.d
> und Weboberfläche zusammen. Wenn es nichts bringt, versuchst du es mit
> der nächsten Strategie.

Ja, das stimmt natürlich. Ich komme eher aus dem Bereich der 
Industriesteuerungen (Prozesschemie) - das färbt auf die Denkweise ab 
;-)

Es ist immer die Frage, wie verspielt das Ganze sein soll. Ob man für 
ein paar Werte wirklich eine MySQL-Datenbank benötigt, muss natürlich 
jeder selbst entscheiden. Fernwartung per Smartphone sollte sich über 
den Webserver selbst erledigen lassen.

Und mit der Lösung hat man eben noch nicht die Daten selbst zuverlässig 
im Raspberry. Das Interface inkl. Fehlererkennung etc. müsste man 
zusätzlich schreiben.

> Wenn du aber 100 Anlagen verkaufst, und für 100 Anlagen Support machst -
> auf keinen Fall irgendwas mit SD-Karte und undurchschaubarem
> Betriebssystem.

Ja, das sollte man tunlichst vermeiden.

Weil es gerade so gut passt:
Beitrag "RAspberry PI 2 zerstört?"

Bei vielen Komponenten kann eben auch viel kaputt gehen.

Die Frage an den OP ist: wie (ausfall-)sicher muss das Ganze sein?

: Bearbeitet durch Moderator
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wie alt ist denn der Diesel? Wenn das schon ein etwas modernerer ist, 
kann man über OBD II abfragen und mit einem MC dann regeln.

Reginald L. schrieb:
> sollte der möglichst nicht unter
> 60-80°C Wassertemperatur laufen.

Das sollte man über den Thermostat des Kühlkreislaufs in den Griff 
bekommen. Bei den typischen 87°C öffnet der Thermostat und ab da kann 
man dann die Heizleistung in den Wasserkreislauf schicken. Interessant 
ist die Frage des Abgaswärmetauschers, der ein hübsches Stück 
Schweissarbeit werden kann.

: Bearbeitet durch User
von Der Andere (Gast)


Lesenswert?

Chris ich kann deiner Argumentation folgen, sehe as aber für ein 
Bastlerprodukt dann anders. Softwareseitig (als Bastler!) beide Systeme 
auf einem Rechner zu trennen, so daß das eine das andere nicht mitreißen 
kann ist nicht so einfach. Zumindest nicht, sobald du ein Betriebssystem 
drauf hast, das dir die Programmierung des Webservers, die Archivierung 
etc. einfach macht.
Und du wirst halt sehr viel schneller sein auf einem Raspi eine 
Speicherung der Daten plus Analyse, plus leistungsfähiger Web Server 
hinzukriegen, als wenn du auf einem AT Mega erst mal anfängst dir einen 
TCP/IP Stack
zusammenzusuchen, oder dich gar in ein für dich neues RTOS einarbeiten 
musst.

Du kommst halt beruflich aus der Ecke und hast alles was du brauchst 
schon parat. :-)

Und ich verstehe schon den eigentlichen Irrsinn, dass ein 600 MHz 
Bolide, der sich als Web-Server auch zu 99% langweilt nicht noch in der 
Lage sein soll eine Drehzahl von 50U/s zu messen und 5 mal pro Sekunde 
einen neuen Stellwert für einen PI(D) Regler auszurechnen.

:-)

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Stefan Pöllitz schrieb:
> Es handelt sich um einen Dieselmotor, der einen Generator antreiben soll
> und die Abwärme vom Dieselmotor (wassergekühlt) der Werkstattheizung
> eingespeist werden soll: Blockheizkraftwerk.
Ach, dass er als Generator arbeiten soll, habe ich glatt überlesen. Bei 
entsprechender Last des Motors erzeugt der dann natürlich, je nach 
benötigter Heizleistung, genügend Abwärme.

Matthias S. schrieb:
> Interessant
> ist die Frage des Abgaswärmetauschers, der ein hübsches Stück
> Schweissarbeit werden kann.
Sowas wird aber selbstgeschweißt nicht lange halten.

von Falk B. (falk)


Lesenswert?

@ Der Andere (Gast)

>Ich verstehe euch jetzt wirklich nicht so ganz.

Sowas kommt vor ;-)

> Man muss nicht für jeden
>Furz mehrere µC nehmen,

Eben!

> aber hier bietet es sich doch geradezu an.

FALSCH! Es ist NÖTIG, eben weil man den Raspberry Pi in Normalausführung 
(incl. Linux) eben nur mit SEHR VIEL Aufwand soweit echtzeitfähig 
bekommt, wie es ein kleiner AVR ohne Linux problemlos kann.
Man müßte wahrscheinlich ein Kernelmodukl schreiben, das mit hoher 
Priorität an einem Timer hängt. Vielleicht geht es auch ohne 
Kernelmodul, keine Ahung.

>Auf dem PI läuft das ganze unnötige Smartphone Interface Geraffel und
>die Auswertung, was gerne auch mal Memory Leaks haben kann oder wegen
>einer defekten SD Karte mal spinnt, und der µC kümmert sich um die
>Regelung des Kernsystems und läuft zuverlässig über viele Jahre.

>Saubere Trennung zwischen Präsentation Layer und Kernfunktion.

Ja, aber die muss nicht zwingend in Hardware erfolgen.

>Ansonsten
>muss man doch bei jeder Erweiterung des Webblödsinns damit rechnen, dass
>die Regelung selbst im Falle eines fatalen SW Fehlers in Mitleidenschaft
>gezogen wird.

Auch das spricht für die getrennte Hardwarelösung, ist aber dennoch ein 
Armutszeugnis für einen 600MHz Boliden.

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.