Hallo liebe Leute!
Da sich unsere Schulzeit in der Technikerschule (Fachrichtung
E-Technik/Mikrocontrollertechnik) langsam dem Ende neigt und sich unsere
Gruppe für ein Mikrocontrollerprojekt entschieden hat, haben wir
folgende Fragen an euch, bei denen wir euere Hilfe brauchen.
Unsere Schule macht ein Umweltprojekt mit einem Solarprototyp, bei dem
die Sonnenenergie gewisse Wärmespeicher temperaturabhängig auffüllt und
entleert. Genaueres muss zu dem Patent nicht gesagt werden...man stellt
sich einfach eine Regentonne vor, die temperaturabhängig mit dem
Wasservolumen X gefüllt wird und über einen Auslass bei einer bestimmten
Temperatur Y wieder abgelassen wird. Zusätzlich richtet ein
überdimensionaler Spiegel die Sonnenstrahlen
uhrzeitabhängig/-temperaturabhängig auf die Tonne.
Somit ergibt sich folgende Sensorik:
- 5x Temperatursensoren (Innentemperatur, Außentemperatur,
Wassertemperatur: Vorlauf, Rücklauf; 1 Reserve)
- 2x Drehgeber für die Positionsbestimmung eines Spiegels, der die
Sonneneinstrahlung lenkt
- 1x Hallsensor zur Wasserstandsüberwachung
..und folgende Aktuatoren:
- 2x Wasserpumpen 230 V AC
- 2x Magnetventil
- 1x Schrittmotor
- 1x DC-Getriebemotor
Das Ganze soll dann über ein PC-System + Controller-Unit gesteuert
werden.
Unsere Gruppe hat bereits begonnen, eine Schaltung auf Basis eines AVR
(ATmega16) mit diverser Peripherie (Relais, Transistoren etc)
aufzubauen.
Die Sensoren und die Aktuatoren können bereits mit dem Mikrocontroller
angesprochen und ausgewertet werden und die gewonnenen Daten der
Sensoren über die RS232 an den PC geschickt werden (Terminalprogramm).
Dabei kommt ein kleines Protokoll zum Einsatz, welches folgendermaßen
aufgebaut ist:
Da es sich um genau 8 Sensoren handelt, schickt der AVR jede Sekunde
einen String aus 8 Bytes. Jedes Byte bildet den entsprechenden Sensor
ab, welches den jeweiligen Wert des Sensors enthält.
Beispiel:
S.1 S.2 S.3 S.4 ... S.8
0x48 0x12 0x7f 0x3A ... 0x01
Da wir dafür bisher nur ein Terminalprogramm nutzen um die empfangenen
Daten zu betrachten und die Daten aber in eine MySQL-Datenbank
geschrieben werden sollen, ergibt sich für uns die erste Frage:
Welche Programmiersprache eignet sich am besten dafür, um auf eine
Schnittstelle (hier RS232) zuzugreifen UND diese Daten ausgewertet in
eine Datenbank zu schreiben?
Heißt: Datenbankanbindung UND Schnittstellenzugriff.
Ob Windows oder Linux, das ist uns relativ egal, da wir mit beidem
umgehen können.
Die nächste architektonische Grundsatzfrage ergibt sich außerdem:
Da sich die komplette Regelung völlig autark verhalten soll, benötigen
wir einen Automatismus, der anhand der gesendeten Daten die Aktuatoren
steuert.
Da es sich aus unserer Sicht nicht um zeitkritische Daten handelt,
hatten wir vor, den Computer als Master zu nutzen und die
Controller-Unit -an der die Sensoren/Aktuatoren angeschlossen sind- als
Slave.
Daraus ergäbe sich folgende strikte Trennung:
Controller-Unit ist zuständig für die AD-Wandlung und dem Schicken der
Ist-Werte per RS232.
PC ist zuständig für das Empfangen der Daten über RS232, dem Auswerten
und dementsprechenden Steuern der Motoren/Magnetventile (= Senden von
Daten zurückan die Controller-Unit).
Dies bedeutet, dass der PC im Sekundenraster die empfangenen Daten
auswertet und aufgrund derer Änderung der Controller-Unit ebenso einen
String ähnlich des obigen Protokollaufbaus schickt, der diesen auswertet
und die entsprechenden Pumpen etc. steuert.
Diese zuletztgestellte Frage ist eigentlich die Entscheidende.
Ich war bereits auf Messen von Heizungsbaufirmen und habe mir deren
Steuerungen angeschaut. Auch dort wird oft mit kleinen Industrie-PCs
direkt eine AD-Wandelnde Hardware in Echtzeit gesteuert..allerdings
setzen die dann auf einen gewissen Software-Standard namens "CodEsys",
welcher angeblich Echtzeit unter Windows (!) garantiert...da wir
allerdings folgendes CodEsys nicht benutzen, ergibt sich die Frage, ob
wir dann nicht lieber die komplette Steuerungslogik auf dem Controller
verpflanzen sollen und den PC lediglich zur Datensicherung der Istwerte
nutzen?!
Komfortabler wäre die Programmierung für die Steuerlogik auf dem PC
sicherlich.
Wir würden uns sehr über euere Meinung freuen!
Viele Grüße
markus.
Markus V. schrieb:> ergibt sich die Frage, ob> wir dann nicht lieber die komplette Steuerungslogik auf dem Controller> verpflanzen sollen und den PC lediglich zur Datensicherung der Istwerte> nutzen?!
Aus energietechnischer Sicht ist das mit Sicherheit besser, denn ein PC
frisst ja mehr Energie, als die ganze Mimik erzeugen soll.
Markus V. schrieb:> Da sich unsere Schulzeit in der Technikerschule (Fachrichtung> E-Technik/Mikrocontrollertechnik) langsam dem Ende neigt
Aber was habt ihr denn die ganze Zeit gemacht? Ihr könntet z.B. den Mega
mit einem Net I/O koppeln und per HTTP PUT einem PHP Skript auf dem
Webserver eure Daten senden, welches sie in eine Datenbank einsortiert.
Aber braucht ihr die Datenbank wirklich?
Markus V. schrieb:> Da sich die komplette Regelung völlig autark verhalten soll, benötigen> wir einen Automatismus, der anhand der gesendeten Daten die Aktuatoren> steuert.
Autark heisst aber für mich, das ein PC eben nicht nötig wäre. Die
eigentliche Rechenarbeit bei eurem Projekt macht der Mega mit 'links'.
Sehe ich auch als ziemlichen Blödsinn an, wenn ein PC dauernd läuft bei
einem Solarprojekt dieser Grösse..
Wie wäre es mit Speicherung auf SD Karte z.B.?
Also....es handelt sich um einen Mini-PC (mit Atom-Prozessor), der nicht
mal so viel Strom aufnimmt, wie die Beleuchtung des Briefkasten der
Schule.
Außerdem handelt es sich hier um ein rein thermisches Nutzen der
Sonnenenergie, vom Abschweifen des Themas mal abgesehen... ;-)
Speicherung auf einer SD-Karte...warum sollte man sich das Leben schwer
machen und in bestimmten Zeitspannen die Karte händisch aus dem Board
friemeln, die Daten auf den PC laden etc.
Lasst mal bitte die Stromkosten vom sowieso energiesparenden PC außer
Acht. Es handelt sich eine Schule, bei der fast den ganzen Tag die
Lichter leuchten. Da fällt der Rechner mit 16 W nicht ins Gewicht.
Markus V. schrieb:> Lasst mal bitte die Stromkosten vom sowieso energiesparenden PC außer> Acht. Es handelt sich eine Schule, bei der fast den ganzen Tag die> Lichter leuchten. Da fällt der Rechner mit 16 W nicht ins Gewicht.
hmmm ... dann macht das ganze Projekt ja auch keinen Sinn, weil die
Heizung in der Schule ja eh läuft ;)
Nee, zur Betrachtung eines Projektes für regenerative Energie gehört
auch der Energieverbrauch der ganzen Anordnung, nicht nur die
Erwirtschaftung über Methode x.
Davon abgesehen, die Entnahme der SD-KArte ist ja nicht notwendig, Ihr
habt ja eh ne Datenverbindung, über die lest Ihr dann die Daten aus und
löscht die dann nach Übertragung wieder.
EIne mögliche weitere Ergänzung wäre, wenn die Anlage ortsveränderlich
sein soll, eine Funkübertragung der Messwerte.
Der ATMega, den Ihr vor habt einzusetzten macht im Übrigen das bisschen
Rechnerei locker mal nebenbei, dafür den PC, auch nur 16W verbraten zu
lassen, wenn der µC das mit 200mW machen kann ist Energieverschwendung,
zumal der µC ja eh laufen soll für die Schnittstelle.
Was die Heizungsbauer angeht, ich hab noch keinen erlebt, der von
Elektronik mehr versteht als Baugruppen wechseln und Sicherung ersetzen,
da wird auch n Haufen Krempel für teuer Geld vertickt, Hauptsache die
Marge stimmt.
Wie lautet jetzt eigentlich die konkrete Frage?
Ist es die Frage, ob es besser ist den AVR die Regelung der Aktoren zu
übernehemen, dann lautet die Antwort: JA!
Die ganze Anlage sollte auch ohne PC funktionieren.
Wenn ein PC angeschlossen ist, so kann der ja von mir aus auch Daten in
eine Datenbank schreiben.
Oder ist mein Verdacht richtig, dass die Anlage eigentlich für nichts zu
nutze ist, als Wasser warm zu machen und es dann weg zu schütten? Es
also ausschliesslich auf die gewonnenen Daten an kommt. Dann könnte man
es sich überlegen, es doch den PC machen zu lassen. Zumal es dann auch
wichtig sein kann die Regelparameter wärend dem Betrieb zu ändern. Auch
lassen sich etwaige Rechenergebnisse schön am PC anzeigen.
Jetzt habt ihr aber das Problem, mit welcher Programmiersprache das
Ganze gemacht werden soll.
Viele vom Forum hier würden selbstverständlicg C++ nehmen.
Ich würde Pythen nehmen ....
mfG
Ulli
>PS: nebenbei mal noch die Frage: wieviele Leute arbeiten an dem Projekt>und wieviel Zeit habt Ihr dafür?
Wir haben dafür noch bis August Zeit, wobei das meiste eh zu Hause
entstanden ist und wir das alles eher als Freizeitbeschäftigung sehen.
>Wie lautet jetzt eigentlich die konkrete Frage?
Die Frage lautet, ob die gesamte Steuerung auf dem AVR alleine gemacht
werden soll oder ob der PC das Kommando übernimmt und den
Mikrocontroller bei gegebenem Anlass triggert und ihm mitteilt was er
tun soll.
Mir graut es eben vor der Programmierung und vorallem der Fehlerfindung
auf dem Controller...da wäre die PC-Programmierung um einiges
komfortabler (Debugging, Fehlerprovozierung etc.).
Da wir für die Mikrocontrollerlösung allerdings noch einiges an Arbeit
haben, ist es vielleicht noch interessant, die Alternative "SPS" zu
betrachten.
Nur wissen wir leider nicht, welche SPS eine Datenschnittstelle besitzt,
die Daten zum Loggen an den PC schickt.
Denkt ihr, eine C-Control könnte das übernehmen??
C-Control ist keine SPS, ist auch nur n Mikrocontroller, der
programmiert werden muss, die Peripherie (Motortrieber, Tempertursensor,
Schaltstufe für Ventile etc.) müsst Ihr dennoch dazudesignen und das ist
bei weitem das größere Problem als das bisschen Programmierung.
SPS wär mit Kanonen auf Spatzen zu schießen.
Mein Vorschlag wäre, Ihr fangt damit an von außen nach innen Eure
Anforderungen festzulegen. Z.B. Temperatursensoren, sind schon vorhanden
oder müssen noch beschafft werden. Welche sollen es werden, digital oder
analog, Industriestandard PT100 oder n einfacher NTC von der Stange für
kleines Geld. Dann braucht Ihr für die Sensoren die entsprechende
Außenbeschaltung, das könne einfach zwei Widerstände für Pullups an
I2C-Bus sein, wenn z.B. die hier im Forum oft verwendeten LM75
eingesetzt werden, oder n einfacher Widerstand als SPannugsteiler für
nen 10KR NTC oder ne Konstantstromquelle für nen PT100.
Dann gehts weiter zu den Ventilen, Betriebsspannung derselben AC oder
DC, welche Spannung, schon was vorhanden oder muss neu beschafft werden,
Welche Spannungsquelle ist schon vorhanden, Magnetventil oder
Motorventil etc. Relais zum Vorschalten der Ventile, Transistorstufe zum
Schalten der Relais, Funkenlöschung am Relaiskontakt.
Stellmotor, schon vorhanden oder neu zu beschaffen, welche Spannung(en)
benötigt, Schrittmotor oder normaler Motor, Endlageschalter und
Schrittmotor oder Gabellichtschranke mit Encoderscheibe Welche
Gabellichtschranke, benötigte Auflösung im Drehwinkel ... etc. etc.
>C-Control ist keine SPS, ist auch nur n Mikrocontroller, der>programmiert werden muss, die Peripherie (Motortrieber, Tempertursensor,>Schaltstufe für Ventile etc.) müsst Ihr dennoch dazudesignen und das ist>bei weitem das größere Problem als das bisschen Programmierung.
Nun gut, dafür muss ich mich aber nicht um die
Prozessverwaltung/Scheduling o.ä. kümmern so wie bei einem komplett
"jungfräulichen" AVR, bei dem ich erst sämtliche Intelligenz verpflanzen
muss.
>SPS wär mit Kanonen auf Spatzen zu schießen.
Warum? Ich denke eher umgekehrt und daher war auch meine Frage gestellt
worden:
Ermöglicht eine SPS oder C-Control (wo liegt denn da der Unterschied? In
einer SPS ist auch ein Mikrocontroller verbaut?!) überhaupt diese
Steuerungsaufgabe?
Gruß
Also ich kapier das alles immer noch nicht ganz.
Du schreibst ihr hättet den MC schon soweit, die Sensoren korrekt
einzulesen und die Aktoren korrekt anzusteuern.
Was fehlt denn dann noch groß?
Die Sensoren in einem Programm mit etwas Logik auswerten?
Das ist doch Pipifax - auf einem MC sicher einfacher, schneller und
besser aufgehoben als auf einem PC.
Die Messwerte könnt ihr ja noch immer seriell an einen PC schicken und
dieser kann die dann in eine Datenbank packen. Lässt sich unter Linux
sogar mit einem Bash-Skript realisieren, also auch kein Hexenwerk.
Vorteil: System läuft auch dann, wenn der PC mal aus ist.
Ihr habt euch für die Verwendung eines MC entschieden also nutzt ihn
auch, so einfach ist das ;-)
Markus V. schrieb:> Mir graut es eben vor der Programmierung und vorallem der Fehlerfindung> auf dem Controller...
Mir graut viel eher, wenn ich das hier lese
> Da es sich um genau 8 Sensoren handelt, schickt der AVR jede Sekunde
einen String aus 8 Bytes.
Macht die Sache auf dem µC. Ist im Endeffekt einfacher.
Die Ergebnisse könnt ihr zb auf eine SD-Karte schreiben und die 'schöne
Auswertung' inkl. Diagrammen, die könnt ihr dann auf dem PC machen.
> Komfortabler wäre die Programmierung für die Steuerlogik auf> dem PC sicherlich.
Die Frage ist doch die: wie aufwändig ist denn eure Steuerlogik
wirklich. Es bringt nämlich auch nichts, sich vor 40 Zeilen Code in die
Hose zu machen und sich dafür den Problemkreis "Was kann mir alles
passieren, wenn ich Daten durch die Gegend schicke und was passiert wenn
diese Verbindung abreißt" aufzureißen.
Markus V. schrieb:> (wo liegt denn da der Unterschied? In> einer SPS ist auch ein Mikrocontroller verbaut?!)
lapidar gesagt, das Eine kannst du auf ne Hutschiene pappen, das Andere
nicht ... warum?
Weil das Eine schon die komplette Außenbeschaltung mit drinnen hat und n
Gehäuse darum ist ...
programmiert muss beides werden.