MicroSPS Anwendung für Solar & Heizung

Durch einen Bekannten wurde ich auf eine preiswerte SPS (Speicherprogrammierte Steuerung) aufmerksam gemacht. Nach dem Studium der Internetseite und Handbücher stand fest, dass diese MicroSPS zur Automatisierung und Überwachung meiner Solaranlage und Heizung genau das Richtige sein könnte. Ein wesentlicher Entscheidungsgrund war die Art und Weise der Applikationserstellung. Nicht mit C++, Basic oder einer anderen Programmiersprache, sondern sehr einfach und effektiv mit fertigen MSR-Funktionsbausteinen und dem bekannten Layout-Programm Eagle (Shareware-Version Eagle-Light). Nach Installation der Bausteinbibliothek und Start einer Initialisierungsdatei konnte ich mit der Erstellung der Applikation loslegen.

Hardware

Ein 8€ Gehäuse aus dem Baumarkt wurde die neue Heimat der MicroSPS, des Multiplexers und eines 12V Netzteils. Die 2-zeilige LCD Anzeige und die vier grünen Taster ermöglichen Vor-Ort (Keller) das Ablesen der Messwerte die Einstellung der Grenzwerte. Zusätzliche LEDs zeigen den Status der Solaranlage an. Eine Transparentfolie mit Beschriftungen und Symbolen deckt die Bedien- und Anzeigeelemente vollständig ab.

Abb. 1: Gehäuse mit eingebauter MicroSPS, Multiplexer und Netzteil
{short description of image}

Aus Sicherheitsgründen habe ich die Relais zur Ansteuerung der Pumpen und Ventile ausgelagert, also nicht die auf der MicroSPS Platine vorhandenen Relais benutzt. Das Gleiche gilt für die Hardware zur Abfrage der 230V Signale der Ölheizung. Die dazu benutzten Optokoppler befinden sich in einem separaten Gehäuse unter dem Deckel der Heizung. Ich wollte, mit Ausnahme des 12V Netzteils, keine 230V im Gehäuse haben. Weiterhin vermute ich, dass die Digitaleingänge der SPS trotz Optokoppler nicht für 230 VAC geignet sind (Luft-/Kriechstrecken). Mit der externen Peripherie kann ich im Gehäuse alle Abgleicharbeiten und Messung ausführen, ohne Gefahr zu laufen einen elektrischen Schlag zu bekommen.

Temperaturmessung

Nach den ersten erfolgreichen Versuchen mit den Beispiel-Applikationen stand fest, dass ich auf dem richtigen Weg war. Leider reichte die Anzahl der verfügbaren Analogeingänge für meine Anwendung nicht aus. Ich hatte immerhin die Installation von 9 Temperaturfühlern geplant. Das Manko war aber schnell durch einen vorgeschalteten 8-Kanal-Multiplexer und etwas Programm (Bausteine) behoben. Das 4051 IC wird über 3 Binärausgänge (Relais abgeklemmt) DA_3 bis DA_5 angesteuert und reicht die der Temperatur proportionale Spannung am adressierten Eingang X1_1 ... X1_8 auf den Analogeingang AE_3 der SPS durch. Die Meßstelle S_Tk mit -20 .... +120°C hat einen größeren Temperaturbereich und belegt daher einen eigenen Analogeingang AE_0. Der Aussentemperaturfühler wird um +30°K vertrimmt damit sein Spannungssignal im Bereich der anderen Fühler (2.73V bis 3,73V) liegt. An AE_1 und AE_2 sind die Potenziometer zur Messung der Mischstellung und des Tankniveaus angeschlossen.

Abb. 2: Hardware für zusätzliche 8 Analogeingänge
{short description of image}

Multiplexersteuerung

Die kleine Applikation unten rechts in Abb. 5 steuert den Multiplexer und schreibt die 8 zusätzlichen Meßwerte in zugeordnete Analogspeicher SPn. Der gemeinsame Offset von 300 sorgt bei diesen Eingängen dafür, dass die MicroSPS in dem für Temperaturen definierten Wertebereich rechnen kann. CLK ist ein Taktsignal mit einer Periodendauer von 100 ms. Die acht Analogspeicher werden somit im 0,8 s Rythmus aktualisiert, was für eine Temperaturerfassung mehr als ausreichend ist. Die Binärsignale zur Multiplexer-Adressierung habe ich nicht von den Relaiskontakten sondern am Kollektor der Treibertransistoren abgenommen. Daher auch die Invertierung von A0...A2 an BUS1 und die Minderbestückung der Platine (ohne Relais an DA3 ..DA5). Das Klappern der Relais ist wirklich keinem zumutbar!!!

Nachstehend die Temperaturbereiche und die SPS interne Darstellung als 2 Byte Integerwert. Die lokalen LCD-Anzeige unterstützt die SPS interne Darstellung mit einer °C Ausgabe $C. Vorzeichen, Kommastelle und physikalische Einheit (85=> -21.5°C) gehören dazu, was will man mehr?

Meßwert [°C] Eingangspannung [V] ADU Wert SPS interne Darstellung
0...+100 2,73 ... 3,73 0 ... 1000 300... 1300
-30...0...+70 2,43 ... 3,43 0 ... 1000 0...300...1000
-20...0...+120 2,53 ... 3,93 0 ... 1000 100...300...1500

Applikation

Auf die Erklärung der einzelnen Funktionen (Abb. 3 bis 6) möchte ich aus Zeitgründen vorerst verzichten. Wer schon mit der MicroSPS vertraut ist und die Regelung/Steuerung einer Heizung bzw. Solaranlage kennt, dürfte kein Problem mit dem Verständnis der Schaltung haben.

Etwas ungewöhnlich ist möglicherweise der Teil oben links; es handel sich um eine Wärmemengenmessung. Der zuvor benutzte kCal-Zähler wurde inzwischen durch Arithmetik-Bausteine und einen Speicher-Bausteine ersetzt. Bei jedem Literimpuls wird nun Kcal_neu=KCal_alt + TD2 gerechnet. Der Übertrag auf den kWh-Zähler und das Löschen des kCal-Speichers erfolgt bei > 8600 da die Temperaturdifferenz TD2 den Faktor 10 beinhaltet. Ein TD2 von 12°C entspricht somit einem SPS-internen Wert von 120.
Wichtig ist immer die netzausfallsichere Speicherung der Mengenwertes (kWh) und die Möglichkeit einer manuellen Vorgabe. Nach dem Laden einer neuen Programmversion steht der Zähler leider immer auf Null.

Abb. 3: Wärmemengenmessung und Differenztemperatursteuerung der Solaranlage
{short description of image}

Abb. 4: Menüsteuerung
{short description of image}

Abb. 5: Multiplexersteuerung
{short description of image}

Abb. 6: Tankniveau/Mischerstellung
{short description of image}

Visualisierung

Nach der Inbetriebnahme und einigen Programmkorrekturen kam der Wunsch nach einer "Komfort-Anzeige" auf. Die über die serielle Schnittstelle der MicroSPS bereitgestellten Meßwerte sollten auf dem häuslichen PC-Monitor in eine Grafik eingeblendet werden. An dieser Stelle bekam ich Hilfe von meinem Sohn, der mehrere Stunden seiner Freizeit für die Erstellung eines Visual-Basic Programms opferte. Als Ergebnis erhielt ich ein benutzerfreundliches Programm zur Visualisierung der Meßwerte. Die wesentlichen Merkmale sind:

Im Konfigurationsmodus kann man die Anzeigeelemente auf der zuvor geladene Prozeßgrafik grob positionieren. Für die exakte Positionierung geht man besser in den Darstellungsmode (Vollbild). Wie gesagt, VB Kenntnisse sind nicht erforderlich. Die Erstellung einer eigenen Prozeßgrafik (Corel-Draw) und die Anordnung der Meßwerte sind mit diesem Visualisierungsprogramm ein Kinderspiel.

Abb. 7: Visualisierung der Meßwerte auf dem PC-Monitor (Vollbild)

{short description of image}

Die Konfiguration beginnt mit der Definition des Datenmusters. Die eintreffenden Daten bekommen für die spätere Verwendung eindeutige <Name> zugewiesen. Die Besonderheit bei meiner Applikation ist, dass die vielen Meßwerte mit Hilfe von nur drei V24-Bausteinen nacheinander und paarweise (Gr1, Gr2) mit einer Kanalkennung (Cha) versehen zum PC geschickt werden (Sparmethode). Durch die Kanalnummer erkenne ich, welchen Inhalt das "Paket" Gr1 bzw. Gr2 hat.
Wer nicht auf die Programmgröße achten muß, kann jeden Meßwert über einen eigenen V24-Baustein versenden.
Die von der MicroSPS gelieferten 2 Byte langen Meßwerte können vor der Ausgabe noch mit Hilfe der Parameter MBA (Meßbereichsanfang) und MBE (Meßbereichsende) umgerechnet werden. Aus einem Wert von 0 ..... 1000 wird so z.B. -30 .... +70. Wer lieber mit den Koeffizienten von einer linearen Gleichung zweiter Ordnung y=ax +b arbeitet, kann auch diese angeben.

Abb. 8: Zuweisung von Namen

{short description of image}

Abb. 9: Denormierung

{short description of image}

Nicht zu vergessen ist die Wahl des Anzeigeformats und Ergänzung der physikalischen Einheit. Diese Angaben macht man in dem nachstehenden Hilfsfenster. Zur Fehlersuche und Prüfung dient das Debug-Fenster. Die Anzeige der über die serielle Schnittstelle eintreffenden Daten kann man stoppen und wieder starten.

Abb. 10: Einheit und Format
{short description of image}

Abb. 11: Eintreffende Daten
{short description of image}

Der nächste, logische Schritte wäre jetzt die Erweiterung des VB-Programms um einige Elemente zur Bedienung, z.B. zur Vers