Die Grundidee unseres Frameworks ist einfach: Es soll den Entwickler einer einzelnen Maschine so weit wie möglich entlasten. Das erleichtert nicht nur die Arbeit des Entwicklers, sondern spart auch Zeit und Geld. Sondermaschinen unterscheiden sich in ihrer Funktion in vielerlei Hinsicht, aber für uns Entwickler gibt es im Wesentlichen zwei Kategorien: die anzusteuernde Hardware und die Ablauflogik. Unser Framework abstrahiert diese beiden Aspekte.
Jedes Gerät, sei es ein einfacher digitaler Sensor oder ein bis zum Anschlag mit Sonderfunktionen ausgestatteter Antrieb, verfügt über eine Auswahl von ausführbaren Kommandos. Ein langfristiges Ziel von cinnamon ist es, eine möglichst breite Palette an Hardwaretreibern bereitzustellen, damit man aus einem vorgefertigten Satz von Komponenten auswählen kann.
Der zweite Aspekt ist die Sequenzlogik eines Systems. Eine Sequenz ist eine Reihe von Prozessschritten, die wiederum in kleinere Sequenzen unterteilt werden, bis man die Hardwareebene erreicht. Hier kommt die Abstraktion von der Hardware zu Kommandos ins Spiel: In cinnamon ist eine Sequenz eine Kette von Kommandos. Ob es nun darum geht, einen Sensorwert zu lesen, einen Aktuator zu steuern oder einfach nur Daten zu verarbeiten, es sind immer Kommandos, die man startet und deren Ausführung man abwartet.
Stabil, aber flexibel
Die Bibliotheken des cinnamon Frameworks übernehmen im Hintergrund alle anderen wichtigen Aspekte der Maschinen-Software. Sie liefern vorgefertigte Funktionen für die Betriebsartenverwaltung (Operation Mode Handling), Device Monitoring und Fehlermanagement, Datenerfassung und ein weitgehend selbstständig aufbauendes HMI. Die Bibliotheken sind modular aufgebaut, sodass nur das eingebunden werden muss, was wirklich benötigt wird.
Im Gegensatz zu anderen Software-Standards in der Automatisierungsindustrie verzichten wir bewusst auf die automatisierte Code-Erzeugung und zusätzliche externe Design-Tools, da diese sehr starke Abhängigkeiten zwischen den generierten Software-Komponenten schaffen. Dies reduziert die Wartbarkeit des Codes und kompliziert die Zusammenarbeit von Teams an einem Projekt, da es das Zusammenführen von Projektdateien erschwert.
Open source
Wir haben uns für einen Open-Source-Ansatz entschieden, damit jeder selbst sehen kann, was er oder sie bekommt. Wir möchten unser Wissen teilen und jedem die Möglichkeit geben, das Framework oder einzelne Komponenten in bestehende Umgebungen zu integrieren.