Mit Regelkreisen erstellen Sie Automatisierungsregeln visuell statt durch Programmieren — Sensoren und Bedingungen werden in einem tabellenähnlichen Editor eingegeben, und die Abilis wandelt die Formeln für Sie in ein Lua-Programm um. Das Prinzip ähnelt der Programmierung einer PLC, jedoch ohne spezielle Programmierkabel-Hardware.

Wenn Sie einen neuen Regelkreis erstellen (Neu +), zeigt der Editor zwei Haupttabellen:
Die obere Tabelle listet die Sensoren auf – Geräte, von denen der Regelkreis liest.
| Spalte | Bedeutung |
|---|---|
| Gerät | Der physische Gerätename (z. B. RIO-1, Sonoff-3). |
| Port | Welcher konkrete Port bzw. Kanal am Gerät. |
| Beschreibung | Eine für Menschen lesbare Bezeichnung (z. B. „Büro-Temperatursensor“). |
| X | Der in Formeln verwendete Variablenname. Der erste Eingang ist X1, der zweite X2 usw. (Trotz des Buchstabens ist dies keine räumliche Koordinate — es ist nur ein kurzer Name, um den Sensor in Ihrer Formel anzusprechen.) |
| Wert | Der aktuell von diesem Sensor gelesene Wert. |
Die untere Tabelle listet die Aktoren auf – Geräte, die der Regelkreis steuert.
| Spalte | Bedeutung |
|---|---|
| Gerät | Der physische Gerätename. |
| Port | Welcher Port bzw. Kanal. |
| Beschreibung | Für Menschen lesbare Bezeichnung. |
| Y | Der Variablenname für diesen Ausgang: Y1 für den ersten Ausgang, Y2 für den zweiten usw. (Gleiche Konvention wie bei den X-Eingängen — keine räumliche Koordinate.) |
| Wert | Hier schreiben Sie die Formel. Die Formel verweist auf Eingangskoordinaten (X1, X2 ...) und erzeugt den Ausgang. Beispiel: IF(X1>25, 1, 0) schaltet den Ausgang EIN, wenn die Temperatur (X1) 25°C überschreitet. |
Klicken Sie auf Virtuellen Ausgang hinzufügen, um weitere Ausgangszeilen hinzuzufügen. Ein virtueller Ausgang ist nicht mit einem physischen Aktor verbunden — verwenden Sie ihn für Zwischenberechnungen, deren Ergebnis in eine andere Formel einfließt, oder für Zustandswerte, die Sie protokollieren möchten, ohne etwas anzusteuern.


Auf der rechten Seite des Editors bietet eine ausklappbare Syntaxanleitung der Tabelle Hinweise zum Schreiben von Formeln. Sie enthält folgende Abschnitte:
| Schaltfläche | Funktion |
|---|---|
| Zeitsteuerung | Legt fest, wie oft der Regelkreis ausgeführt wird (z. B. jede Sekunde, alle 5 Sekunden, jede Minute). |
| Anleitung öffnen / Anleitung schließen | Blendet das Panel mit der Syntaxanleitung auf der rechten Seite ein oder aus. Die Beschriftung der Schaltfläche ändert sich je nach aktuellem Zustand. |
| Geräte | Fügt den Tabellen Eingangssensoren und Ausgangsaktoren hinzu. |
| Exportieren | Exportiert die Konfiguration des Regelkreises in eine Datei (damit sie auf einer anderen Abilis importiert oder als Sicherung aufbewahrt werden kann). |
| Löschen | Löscht diesen Regelkreis vollständig. |
| Speichern | Speichert den Regelkreis. Er wird automatisch in ein Lua-Skript umgewandelt, das auf der Registerkarte Programme erscheint. |
| Schließen | Beendet den Editor. |
Die folgenden Funktionen und Operatoren stehen in Regelkreis-Formeln zur Verfügung (aus dem offiziellen Abilis-Tutorial):
Standardarithmetik: + (Addition), - (Subtraktion), * (Multiplikation), / (Division), ( ) (Klammern zur Gruppierung).
| Funktion | Beschreibung |
|---|---|
ABS(value) | Gibt die Zahl mit positivem Vorzeichen zurück (Absolutwert). |
EVEN(value) | Gibt 1 zurück, wenn die Zahl gerade ist, 0 bei ungerade. |
ODD(value) | Gibt 1 zurück, wenn die Zahl ungerade ist, 0 bei gerade. |
INT(value) | Gibt den ganzzahligen Anteil zurück und entfernt die Dezimalstellen. |
ROUND(value, decimals) | Rundet die Zahl auf die angegebene Anzahl von Dezimalstellen. |
LOG10(value) | Gibt den Logarithmus zur Basis 10 zurück. |
MOD(value) | Gibt den Dezimalanteil zurück und entfernt den ganzzahligen Anteil (z. B. MOD(3.14) = 0.14). Hinweis: Diese Funktion hat nur ein Argument und ist Abilis-spezifisch — sie ist nicht die Modulo-/Restoperation, die MOD(x, y) in den meisten Tabellenkalkulationen bedeutet. Verwenden Sie für Modulo auf der Abilis den Operator % (z. B. 7%3 = 1). |
RAND() | Gibt eine Zufallszahl zwischen 0 und 1 zurück. |
RANDBETWEEN(from, to) | Gibt eine zufällige ganze Zahl zwischen den beiden Werten zurück. |
POW(value, exponent) | Potenziert die Zahl mit dem Exponenten. Verwenden Sie Dezimalzahlen für Wurzeln (z. B. POW(X1, 0.5) = Quadratwurzel). |
SQRT(value) | Gibt die Quadratwurzel zurück. |
| Funktion | Beschreibung |
|---|---|
NOT(value) | Gibt „wahr“ zurück, wenn die Eingabe falsch ist, und umgekehrt. |
AND(v1, v2 [, v3...]) | Gibt nur dann „wahr“ zurück, wenn alle Eingaben wahr sind. Bis zu 10 Werte. |
OR(v1, v2 [, v3...]) | Gibt „wahr“ zurück, wenn mindestens eine Eingabe wahr ist. Bis zu 10 Werte. |
XOR(v1, v2) | Gibt „wahr“ zurück, wenn genau eine Eingabe wahr und die andere falsch ist. |
IF(condition, value_if_true, value_if_false)
Beispiel: IF(X1>25, 1, 0) → Ausgang 1, wenn die Temperatur 25° überschreitet, sonst 0.
Sie können auf den vorherigen Wert eines Geräts verweisen, indem Sie einen Zeitversatz in Klammern angeben: X1(time_to_past). Die Zeiteinheit ergibt sich aus dem im Abschnitt Zeitsteuerung des Regelkreises eingestellten Intervall. Ist die Zeitsteuerung z. B. auf 5 Sekunden eingestellt, bedeutet X1(3) „der Wert von X1 vor 15 Sekunden“ (3 × 5 s).
X1(3) wie ein Funktionsaufruf aussieht, handelt es sich tatsächlich um eine Array-Indizierung für historische Werte. Die Abilis speichert die letzten Messwerte jedes Eingangs, und X1(3) ruft den Wert von vor 3 Zeitzyklen ab.Zusätzlich zu Eingängen (X) und Ausgängen (Y) können Regelkreise auch Speichervariablen (M1, M2, …) verwenden, um Zustände zwischen den Zyklen zu behalten — nützlich für Zähler, laufende Summen oder alles, wobei der nächste Zyklus wissen muss, was im vorherigen geschah. Ein durchgängiges Beispiel finden Sie unter Laufzeiterfassung von Geräten.
Funktionen lassen sich verketten, indem Sie eine in eine andere verschachteln. Um z. B. den Mittelwert der Quadratwurzeln zweier Sensoreingänge zu bilden:
AVERAGE(POW(X1, 0.5), POW(X2, 0.5))