Mini-SPS mit dem Uno
Mit meinem Projekt Mini-SPS mit dem Uno versuche ich eine kleine, aber doch recht leistungsfähige SPS (= Speicher-Programmierbare-Steuerung) mit einem Arduino Uno (oder Nano) zu entwerfen, die mir z.B. im Bereich Hausautomation (Torsteuerung, Brauchwassersteuerung, etc.) oder Modellbahnsteuerung wertvolle Dienste um wenig Geld leisten soll.
Da ich derzeit dabei bin, die derzeitigen Funktionen, den Hardwareaufbau und Anwendungsbeispiele im genannten Projekt zu beschreiben und weiter zu entwickeln, werde ich hier nicht weiter darauf eingehen, sondern nur meine Library, auf der die Funktion meiner Mini-SPS beruht, vorstellen.
Ohne Kenntnis und Umsetzung meines Projektes ist die hier vorgestellte Library "MyMiniSPS" sinnlos, da ihre Funktionalität genau auf dem - im Projekt vorgestellten - Hardwareaufbau beruht.
Leistungsbeschreibung:
Ein- und Ausgänge:
In der Basisausstattung meiner Mini-SPS ist die Anzahl der verfügbaren Ein- und Ausgänge durch die Hardware des Arduino Uno begrenzt. Nicht benutzt werden die Digital-Pins D0 und D1 (Serielle Schnittstelle) sowie die Analogeingänge A4 und A5 (I2C-Schnittstelle). Die für die Mini-SPS bezeichneten Ein- und Ausgänge stimmen mit den Pin-Bezeichnungen des Uno nicht überein, eine entsprechende Zuordnungstabelle ist im genannten Projekt ersichtlich.
Hier nun die Ein- und Ausgänge in der Basisausstattung:
- 6 Digitale Eingänge: DIn1 - DIn6
- 4 Analoge Eingänge: AIn1 - AIn4
- 6 Digitale Ausgänge: DOut1 - DOut6,
davon
- 2 als Relaisausgänge (DOut3 und DOut4) und
- 2 als PWM-Ausgänge PWMOut1 (DOut5) und PWMOut2 (DOut6) verwendbar
Derzeit habe ich aber bereits eine Erweiterung um jeweils 8 Ein- und Ausgänge im Test, die über Portexpander mittels I2C-Schnittstelle angesprochen werden.
Zykluszeiten:
- Schneller Zyklus mit 10 ms,
- Standardzyklus mit 100 ms und
- Langsamer Zyklus mit 1 s Zykluszeit
- Einmalzyklus für Startbedingungen
Befehlssatz:
Die nachfolgende Aufzählung der Funktionen des Befehlssatzes stellt einen derzeitigen Stand dar, der von mir noch erweitert werden wird.
Die bei den Funktionen in Klammer stehenden Zahlen geben die derzeit maximale Anzahl der jeweiligen Funktion ein einem Anwendungsprogramm an, also z.B. 8 Ein- und Ausschaltverzögerungen. Bei Funktionen ohne Angabe beträgt die maximale Anzahl aller dieser eingesetzten Funktion der Anzahl der maximal möglichen digitalen oder analogen Merker.
Merker und Transferanweisungen:
Merker stellen Zwischenspeicher dar, wo z.B. jedes Verknüfungsergebnis, z.B. einer UND-Verknüpfung, oder einer Berechnung zwischengespeichert wird. Dementsprechend unterscheidet man auch zwischen digitalten und analogen Merkern.
Transferanweisungen benötigt man, um z.B. den Zustand eines Digital- oder den Wert eines Analogeinganges einem Merker oder einem Ausgang zuzuweisen.
- Digitale Merker (max. 40)
- Analoge Merker (max. 32)
- Digitale und analoge Transferanweisungen
- Analogverstärker
- RS-FlipFlop (max. 8)
- Ein- und Ausschaltverzögerung (max. 8)
- Impulsausgabe (Einzelimpuls) (max. 8)
- Blinkausgabe (Impulsfolge) (max. 4)
Analogwertverarbeitung:
Auch hier stehen neben Grundfunktionen, wie mathematischen Rechenoperationen, bereits einige Sonderfunktionen zur Verfügung:
- Ausgabe von Pulsweitenmodulation (PWM) (max. 2)
- Oberer und unterer Grenzwert
- Minimum- und Maximumfunktion
- Analogwertschalter
- Analogwertvergleicher
- Vor- und Rückwärtszähler (max. 4)
- Rampenfunktion (max. 2)
Uhrzeitfunktionen:
- Uhrzeit-Ereignis
- Betriebszeiterfassung (max. 2)
Debugfunktionen: Ausgabe von Zyklus- unf Kontrollwerten am Seriellen Monitor
Remanenz:
Unter Remanenz versteht man im Zusammenhang mit Speicherprogrammierbaren Steuerungen die Eigenschaft, dass Berechnungsergebnisse auch bei Stromausfall oder Neustart der SPS ihren jeweiligen Wert behalten. Für meine Mini-SPS habe ich das derzeit für Zählwerte und Betriebszeiterfassung realisiert, sofern es bei Aufruf der jeweiligen Funktion gewünscht ist. Als Speichermedium für die remanenten Daten verwende ich ein FRAM mit 256 kBit.