Folgen

Formeln und Funktionen in der Tabelle

Folgende Funktionen sind in der FreeLogic möglich:

System:

=actuator() Ausgang Aktor ansteuern

=alarmif() Alarm eMail oder SMS bei Messwerten versenden

=save() Speichern in Langzeit-Aufzeichnung

=sensor() Eingang Sensor oder Zähler lesen

=sensoraverage() Durchschnittlicher Messwert eines Zeitraumes

=sensordelta() Differenz eines Messwertes innerhalb eines Zeitraumes

=sensorpast() Vergangenheit eines Messwertes vor einem Zeit

Zeitabhängige:

=dtder() Ableitung nach Zeit

=dtlast() Vorheriger Messwert

=dtint() Integral nach Zeit

=dtslow() Dämpfung zu schneller Signale

=if() Vergleich von Bedingungen

=abs() Vorzeichenloser Absolutwert

Regler:

=hyst() Zweipunktregler

=pid() PID-Regler

 Schwarm:

=puts() Schreibt einen Wert in den Schwarm

=gets() Liest einen Wert aus dem Schwarm

=getsaverage() Liest den Durchschnitt aller Werte aus dem Schwarm

=getssum() Liest die Summe aller Werte aus dem Schwarm

=getscount() Liest die Anzahl aller Werte aus dem Schwarm 

 

abs( Wert )

Entfernt das Vorzeichen eines Wertes und gib den absoluten Wert zurück

Parameter: Wert

Die Zahl deren Vorzeichen entfernt wird 

Beispiele:

  A B C
 1  -12 =abs(A1)   

Im Feld A1 ist eine negative Zahl. Im Feld B1 wird der Absolutbetrag der Zahl in A1 berechnet, also +12

 

actuator( Aktorname , Wert )

Gibt einen Wert auf einem Ausgang aus um einen Aktor oder Signalisierung anzusteuern z.B. ein Ventil, Mischer oder Pumpe. Dabei können geschaltete Werte ein/aus, Impulse (PWM) oder analoge Werte ausgegeben werden

Parameter: Aktorname

Der Name des Aktor-Datenpunktes. Eine Übersicht über alle gesteckten Aktoren finden Sie unter Einstellungen → Messpunkte
z.B. OS1, OS2 OS3 und OS4 wenn Sie einen Vierfach-Schaltausgang OSA gesteckt haben. 

Parameter: Wert

Der Wert der an den Aktor ausgegeben wird in Prozent:

  • Analogausgänge:
    0 bis 100 in Prozent der Ansteuerung, also z.B. 30 führt bei einem 0-10V Ausgang zu 3V, bei einem PWM Ausgung zu einem Tastverhältnis von 30% an und 70% aus.
    Negative Werte werden wie 0 also aus und Werte über 100 werden wie voll eingeschaltet behandelt.
  • Digitalausgänge:
    0 schaltet aus und 100 schaltet ein. Negative Werte werden wie 0 also aus behandelt und Werte über 100 werden wie eingeschaltet behandelt.
    Zwischenwerte 1 bis 99 werden mit einer Impulsweitenmodulation (PWM) ausgegeben, der Ausgang taktet also proportional gewichtet zum Prozentwert. z.B. führt 50% zu 1s ein und 1s aus abwechselnd. 10% zu 1s ein und 9s aus und 99% zu 99s ein und 1s aus. Die kürzeste Ein- oder Auszeit ist 1s.
    Achtung: Bei einem Wert von 1 taktet der Ausgang mit 1% PWM, der Ausgang ist nicht dauerhaft ein. Wenn der Ausgang dauerhaft voll an sein soll, den Wert 100 ausgeben.  

 

Beispiele:

  A B C
 1  =actuator(IO1Out,100)    

Im Feld A1 wird der Schaltausgang IO1Out fest auf 100% eingeschaltet.
Anwendung ist z.B. die Stromversorgung eines Ventils um Kreisläufe umzuschalten

  A B C D
 1  =sensor(T1) =sensor(P1T1) =if(A1>B1,100,0) =actuator(OS1,C1)

Im Feld A1 wird die Temperatur des Kollektor-Sensors T1 gelesen. Im Feld B1 wird die Temperatur des Puffers oben P1T1 gemessen. Die If-Funktion gibt 100% zurück sobald der Kollektor heißer ist als der Puffer oben, sonst 0. Die Ausgabefunktion im Feld D1 steuert mit den Werten aus dem Feld C1 eine Pumpe über am Ausgang OS1 100% an bzw 0% aus.
Anwendung ist z.B. die Ansteuerung einer geschalteten Pumpe im Solarkreis einer Solarthermie-Anlage. 

  A B C D
 1  20 =sensor(T1) =pid(A1-B1,3,1) =actuator(OA1,C1)

Im Feld A1 wird eine Solltemperatur fest mit 20°C vorgegeben. Im Feld B1 wird die Temperatur des Sensors T1 gelesen, es zeigt also die Isttemperatur an. Der Regler im Feld C1 berechnet erst die Regelabweichung aus der Differenz zwischen Soll- und Ist-Temperatur und regelt dann mit einem Proportionalanteil von 3% und Integralanteil von 1%. 
Schließlich wird im Feld D1 mit dem Ergebnis der Reglers ein analoger Aktor mit 0% bis 100% angesteuert.
Anwendung ist z.B. die Ansteuerung eines modulierbaren Heizkessels.

 

  A B C D
 1  20 =sensor(T1) =if(B1 < A1-1 ,10,0) =actuator(OS1,C1)
2     =if(B1 > A1+1 ,20,0) =actuator(OS2,C2)

Im Feld A1 wird eine Solltemperatur fest mit 20°C vorgegeben. Im Feld B1 wird die Temperatur des Sensors T1 gelesen, es zeigt also die Isttemperatur an. Im Feld C1 wird überprüft ob die Isttemperatur von B1 unter 1°C unter den Sollwert gefallen ist. Wenn ja, wird über das Feld D1 der Ausgang OS1 mit 10% Impulsverhältnis 1s ein und 9s aus getaktet.

Im Feld C2 wird überprüft ob die Isttemperatur von B1 über 1°C über den Sollwert gestiegen ist. Wenn ja, wird der das Feld D2 der Ausgang OS2 mit 20% Impulsverhältnis 1s ein und 4s aus getaktet.

Anwendung ist z.B. die Ansteuerung eines Heizkreis-Mischers der bei Spannung an OS1 sich Richtung wärmer und an OS2 Richtung kälter verstellt.

alarmif( Text, Bedingung )
alarmif( Text, Bedingung, Wartezeit )
alarmif( Text, Bedingung, Wartezeit, Wiederholung )
alarmif( Text, Bedingung, Wartezeit, Wiederholung, Benutzer )

Versendet einen Alarmtext wenn ein Fehlerzustand erfüllt ist. 

Parameter: Text

Der Wortlaut der Meldung die versendet wird z.B.
"Vorlauftemperatur zu hoch" wird versendet als "Alarm: Vorlauftemperatur zu hoch".

Im Text können Werte von Sensoren oder Referenzen auf andere Zellen enthalten sein z.B.
"Vorlauf " & sensor(T1) & "°C über Maximum" wird zu "Alarm: Vorlauf 103°C über Maximum"

Parameter: Bedingung

Wenn diese Kriterium erfüllt ist wird der Alarm versendet. Um bei Überschreitung einer festen Grenze einen Alarm auszulösen z.B. "sensor(T1)>=100" löst bei 100°C einen Alarm aus. z.B. "sensor(T1)>100" löst erst ab 100,1°C einen Alarm aus. z.B. "T2>T1" löst einen Alarm aus wenn der Rücklauf T2 größer dem Vorlauf T1 wird.

Bedingungen zwischen zwei Werten sind:

> wahr wenn der linke Wert größer dem rechten ist, z.B. 4>3
< wahr wenn der linke Wert kleiner dem rechten ist, z.B. 3<4
= wahr wenn beide Werte gleich sind, z.B. 5=5
>= wahr wenn der linke Wert größer oder gleich dem rechten ist, z.B. 4>=4
<= wahr wenn der linke Wert kleiner oder gleich dem rechten ist, z.B. 4<=4
<> wahr wenn die Werte verschieden sind, z.B. 5!=3

Mehrere Bedingungen werden mit Logikfunktionen and(), or(), xor() oder not() verknüpft z.B. "and(sensor(T1)<0,sensor(T2)<60)" oder bei Betriebszuständen "and(sensor(T2)<60,sensor(IOSD1)=1)"

Optionaler Parameter: Wartezeit

Die Bedingung muß mindestens über die Wartezeit anliegen, bis ein Alarm versendet wird. Dies verhindert Fehlalarme bei kurzen Spitzen/Einbrüchen in der Messung. Beispiele sind:

1 entspricht einem Tag
01:00 entspricht einer Stunde
00:01 entspricht einer Minute
00:00:30 entspricht dreißig Sekunden
0 entspricht keiner Wartezeit, also sofort

Wird der Parameter nicht angegeben, ist die Wartezeit 1 Minute

Optionaler Parameter: Wiederholung

Wenn die Bedingung länger anliegt, wird der Alarm wiederholt gesendet. Beispiele sind:

7 entspricht alle 7 Tage, also wöchentlich
02:00 entspricht alle 2 Stunden 
0 entspricht nur einmaliges zustellen, keine Wiederholung

Wird der Parameter nicht angegeben, wird ein dauerhaft anliegender Alarm einmal täglich versendet

Der kleinste sinnvolle Wert ist 01:00 für eine stündliche Wiederholung, da die Alarm E-Mails immer nur stündlich gebündelt verschickt werden.

Optionaler Parameter: Benutzer

Der Alarm wird nur an die eingetragenen Benutzer gesendet. Dies erlaubt eine Zuordnung von Verantwortlichkeiten z.B. bei Problemen mit Stromerzeuger der Elektriker und bei Wärme der Heizungshandwerker. Beispiele sind:

"meier" nur der Benutzer mit diesem Namen erhält diesen Alarm
"meier mueller" nur diese beiden Benutzer erhalten den Alarm

Wird der Parameter nicht angegeben, wird der Alarm an alle Benutzer versandt

Achtung: Bündelung mehrer Alarme

Wenn mehrere Alarme schnell hintereinander ausgelöst werden, wird der erste sofort zugestellt. Um die User nicht mit Alarmen zu überfluten, werden alle direkt folgenden Alarme nach einer Stunde gesammelt versendet.

Beispiele:

  A B C
 1    =alarmif( "Vorlauftemperatur zu hoch" , sensor(T1)>100 )  

Im Feld B1 wird täglich ein Alarm versendet falls die Temperatur des Sensors T1 länger als 1 Minute über 100°C steigt.
Anwendung ist z.B. Erkennung von Überhitzung.

  A B C
 1  60 =alarmif( "Warmwasser unter "&A1&"°C" , sensor(T2)<A1 , 00:10 )  

Im Feld B1 wird täglich ein Alarm versendet falls die Temperatur des Sensors T2 länger als 10 Minuten unter 60°C fällt.
Anwendung ist z.B. Erkennung von Legionellengefahr bei der Warmwasserversorgung.

  A B C
 1    =alarmif( "Spreizung im Heizkreis zu gering, Pumpe prüfen" , sensor(T3) < sensor(T4)+1 )  

Im Feld B1 wird täglich ein Alarm versendet falls die Vorlauftemperatur des Sensors T3 auf 1°C an die Rücklauftemperatur des Sensors T4 heran kommt.
Anwendung ist z.B. Erkennung einer defekten Pumpe.

  A B C
 1    =alarmif( "Stromverbrauch zu hoch" , sensor(IC1P) > 5000, 01:00, 1, meier mueller )  

Im Feld B1 wird ein Alarm versendet falls die Leistung des Stromzählers IC1P über 5kW ist. Der Alarm wird nur ausgelöst wenn die Leistung länger als 1h ununterbrochen überschritten wird. Der Alarm wird jeden Tag neu versendet. Der Alarm wird nur an die Benutzer "meier" und "mueller" versendet, ein weiterer Benutzer "schmidt" bekommt den Alarm nicht.
Anwendung ist z.B. Die beiden Energiebeauftragten suchen die Verursacher hoher Stromkosten.

dtder( Wert )

Berechnet die Ableitung (Derivation) des Wertes über die Zeit in Sekunden.

Parameter: Wert

Der zu überwachende Wert. Er kann eine Referenz auf eine andere Zelle, oder auch eine Berechnung enthalten.

VORSICHT: Weil sich viele Messwerte nur sehr langsam ändern, erscheint die Ableitung dtder() oft nur als sehr kleine Zahl und wird dann als 0 angezeigt. Da die Ableitung nach Sekunden erfolgt bringt eine Multiplikation mit 60 eine Ableitung in Minuten, oder mit 3600 eine in Stunden und somit deutlich brauchbarere Werte, sie 2. Beispiel

 

Beispiele:

  A B C
 1  =sensor(T1) =dtder(A1)  

Im Feld B1 wird die Ableitung des Temperatursensors T1 über die Zeit in Sekunden gezeigt. Hat T1 z.B. um 12:34:40 eine Temperatur von 20°C und 10s später bereits 23°C, dann zeigt dtder() die +0,3°C/s Erwärmung.

  A B C
 1  =sensor(T1) =dtder(A1)*3600  

Im Feld B1 wird die Ableitung des Temperatursensors T1 über die Zeit in Stunden gezeigt. Hat T1 z.B. um 12:34:40 eine Temperatur von 20°C und eine Stunde später erst 21,8°C, dann errechnet dtder() die +0,0005°C/s Erwärmung, die als +1,8°C/h im Feld B1 angezeigt werden.

Anwendung ist z.B. die Überwachung eines Strömungsabrisses im Solarkreis wenn die Kollektortemperatur steigt und der Vorlauf fällt.

dtdiff( Wert )

Berechnet den Unterschied (Differenz) des Wertes von der aktuellen Messung zur vorherigen Messung.

Parameter: Wert

Der zu überwachende Wert. Er kann eine Referenz auf eine andere Zelle, oder auch eine Berechnung enthalten.

Beispiele:

  A B C
 1  =sensor(T1) =dtdiff(A1)  

Im Feld B1 wird die Veränderung des Sensors T1 über die Messintervalle gezeigt. Hat T1 z.B. um 12:34:40 eine Temperatur von 20°C und eine Messung später, um 12:34:50 bereits 20,8°C, dann zeigt dtdiff() die +0,8°C Erwärmung.
Anwendung ist z.B. die Überwachung von Raumtemperaturen. 

dtint( Wert , Obergrenze , Untergrenze )

Berechnet das Integral des Wertes über die Zeit.

Parameter: Wert

Der zu überwachende Wert. Er kann eine Referenz auf eine andere Zelle, oder auch eine Berechnung enthalten.

optionaler Parameter: Obergrenze

Der höchste Wert des Integrators. Selbst wenn nach Erreichen der Obergrenze weiterhin ein positiver Wert anliegt, steigt das Ergebnis nicht weiter an. Sobald ein negativer Wert anliegt fällt das Ergebnis sofort wieder.
Wenn die Obergrenze nicht angegeben wird, steht diese auf 100

optionaler Parameter: Untergrenze

Der niedrigste Wert des Integrators. 
Wenn die Untergrenze nicht angegeben wird, steht diese auf 0

Beispiele:

  A B C
 1  =sensor(IC1P) =dtint(A1,999999)  =B1/3600/1000

Im Feld B1 wird der Strom-Zähler IC1P über die Zeit in Sekunden aufaddiert (kumuliert) bis maximal 6 Stellen. Hat IC1P z.B. über 1h konstant 100W, dann zeigt dtind() 360000Ws. Im Feld C1 werden die Einheiten von Ws in die üblichen kWh umgerechnet, so das es 0,1kWh zeigt.
Anwendung ist z.B. die Berechnung der verbrauchten Energie aus einem Leistungs-Zähler der nur Impulse ausgibt.

dtlast( Wert )

Zeigt den letzten Wert der vorherigen Messung

Parameter: Wert

Der zu überwachende Wert. Er kann eine Referenz auf eine andere Zelle, oder auch eine Berechnung enthalten.

Beispiele:

  A B C
 1  =sensor(T1) =dtlast(A1)  

Im Feld B1 wird der Messwert des Sensors T1 um einem Zyklus verzögert gezeigt. Hat T1 z.B. um 12:34:40 eine Temperatur von 20,0°C und eine Messung später, um 12:34:50 bereits 20,8°C, dann zeigt dtlast() noch 20,0°C an.
Anwendung ist z.B. die Dämpfung von Messwerten durch Mittelwertbildung. 

dtslow( Wert , Dämpfung )

Dämpft einen Messwert durch entfernen schneller Schwankungen und macht ihn so langsamer

Parameter: Wert

Der zu verlangsamende Wert. Er kann eine Referenz auf eine andere Zelle, oder auch eine Berechnung enthalten.

Parameter: Dämpfung

Das Maß der Dämpfung. Größere Werte verlangsamen den Messwert stärker:
0 = keine Dämpfung, der Wert bleibt unverändert
1 = sehr geringe Dämpfung, nach wenigen Sekunden ist der neue Wert erreicht
3600 = hohe Dämpfung, nach ca. 1h ist der neue Wert erreicht

Beispiele:

  A B C
 1  =sensor(T1) =dtslow(A1,60)  

Im Feld B1 wird der Messwert des Sensors T1 gedämpft angezeigt. Bei einer Änderung von T1 dauert es ca. 60s bis das Feld B1 den neuen Wert anzeigt.
Anwendung ist z.B. das Entfernen von schnellen Schwankungen zur anschließenden Regelung mit einem PID- oder Zweipunktregler. 

  

gets( Schwarm-Messpunktname )

Liest einen Wert aus dem Schwarm, um ihn von anderen SCH.E.I.D.L Energy Controllern zu erhalten. Mit den puts() und gets() Funktionen werden mehrere Controller direkt untereinander vernetzt, ohne einen zentralen Server zu nutzen.  

⇒ Achtung: Diese Funktion steht nur zur Verfügung, wenn der Controller an einem Schwarm mit mehreren anderen Controllern angemeldet ist

Parameter: Schwarm-Messpunktname

Der Name unter dem vom Schwarm ein Wert gelesen wird. Dazu muss ein anderer Controller mit einer puts() Funktion einen Wert unter diesem Namen in den Schwarm schreiben.

Falls mehrere Controller unter dem selben Namen jeweils verschiedene Werte in den Schwarm schreiben, wird der Mittelwert über alle geschriebenen Werte gebildet. Siehe auch weitere Funktionen zur Berechnung mehrer Werte getsaverage() getssum() getscount() 

 

Beispiel:

Am Controller "Goethestraße":

  A B  
 1  =sensor(T1) =puts(Aussentemperatur, A1)  

Im Feld A1 wird die Temperatur des Sensors T1 mit z.B. 22°C gelesen. Im Feld B1 wird diese Temperatur unter dem Namen "Aussentemperatur" in den Schwarm geschrieben.

 

Am Controller "Schillerstraße":

  A B  
 1  =gets(Aussentemperatur) =save(V1, A1)  

Im Feld A1 eines anderen Controllers wird der Wert mit dem Namen "Aussentemperatur" aus dem Schwarm gelesen, dieser ist dann z.B. vom Controller Goethestraße: 22°C . Im Feld B1 wird diese Temperatur unter dem neuen Messpunkt "V1" gespeichert und über ein Instrument oder Diagramm angezeigt

Anwendung ist die gemeinsame Nutzung von Sensoren zwischen mehreren Controllern z.B. Aussentemperatur (innerhalb räumlicher Nähe), Sonnenlicht, Luftfeuchte

 

  

getsaverage( Schwarm-Messpunktname )

Liest einen Mittelwert mehrerer anderen SCH.E.I.D.L Energy Controller aus dem Schwarm. Mit den puts() und gets() Funktionen werden mehrere Controller direkt untereinander vernetzt, ohne einen zentralen Server zu nutzen.   

⇒ Achtung: Diese Funktion steht nur zur Verfügung, wenn der Controller an einem Schwarm mit mehreren anderen Controllern angemeldet ist

Parameter: Schwarm-Messpunktname

Der Name unter dem vom Schwarm ein Mittelwert aus mehreren Werten gebildet wird. Dazu müssen mehrere anderer Controller mit einer puts() Funktion unter diesem Namen jeweils Werte in den Schwarm schreiben. 

Beispiel:

Am Controller "Goethestraße":

  A B  
 1  =sensor(T1) =puts(Aussentemperatur, A1)  

Im Feld A1 wird die Temperatur des Sensors T1 mit z.B. 22°C gelesen. Im Feld B1 wird dieser Wert unter dem Namen "Aussentemperatur" in den Schwarm geschrieben.

 

Am Controller "Schillerstraße":

  A B  
 1  =sensor(T1) =puts(Aussentemperatur, A1)  

Im Feld A1 des benachbarten Controllers wird eine andere Temperatur des Sensors T1 mit z.B. 24°C gelesen. Im Feld B1 wird dieser Wert auch unter dem Namen "Aussentemperatur" in den Schwarm geschrieben.

 

Am Controller "Lindemannstraße":

  A B  
 1  =getsaverage(Aussentemperatur) =save(V1, A1)  

Im Feld A1 eines dritten Controllers wird der Wert mit dem Namen "Aussentemperatur" als Mittelwert aller geschriebenen Werte aus dem Schwarm gelesen, dieser ist dann z.B. Mittelwert von Goethestraße 22°C und Schillerstraße 24°C = 23°C . Im Feld B1 wird diese Temperatur unter dem neuen Messpunkt "V1" gespeichert und über ein Instrument oder Diagramm angezeigt

Anwendung ist die gemeinsame Nutzung mehrerer Sensoren zwischen mehreren Controllern z.B. Aussentemperatur (innerhalb räumlicher Nähe), Luftfeuchte, Standort-Verbrauch, Maschinen-Verbrauch

  

getssum( Schwarm-Messpunktname )

Liest eine Summe aus dem Schwarm, gebildet von Werten mehrerer SCH.E.I.D.L Energy Controller. Mit den puts() und gets() Funktionen werden mehrere Controller direkt untereinander vernetzt, ohne einen zentralen Server zu nutzen.  

⇒ Achtung: Diese Funktion steht nur zur Verfügung, wenn der Controller an einem Schwarm mit mehreren anderen Controllern angemeldet ist

Parameter: Schwarm-Messpunktname

Der Name unter dem vom Schwarm eine Summe aus mehreren Werten gebildet wird. Dazu müssen mehrere anderer Controller mit einer puts() Funktion unter diesem Namen jeweils einen Wert in den Schwarm schreiben. 

Beispiel:

Am Controller "Goethestraße":

  A B  
 1  =sensor(IC1P) =puts(Stromverbrauch, A1)  

Im Feld A1 wird die Leistung des Stromzählers IC1P mit z.B. 20 kW gelesen. Im Feld B1 wird dieser Wert unter dem Namen "Stromverbrauch" in den Schwarm geschrieben.

 

Am Controller "Schillerstraße":

  A B  
 1  =sensor(IC1P) =puts(Stromverbrauch, A1)  

Im Feld A1 eines anderen Controllers wird eine andere Leistung des Stromzählers IC1P mit z.B. 15kW gelesen. Im Feld B1 wird dieser Wert auch unter dem Namen "Stromverbrauch" in den Schwarm geschrieben.

 

Am Controller "Lindemannstraße":

  A B  
 1  =getssum(Stromverbrauch) =save(V1, A1)  

Im Feld A1 eines dritten Controllers wird der Wert mit dem Namen "Stromverbrauch" als Summe aller geschriebenen Werte aus dem Schwarm gebildet, dieser ist dann z.B. von Goethestraße 20kW + Schillerstraße 15kW = 35kW . Im Feld B1 wird diese gesamte Stromverbrauch unter dem neuen Messpunkt "V1" gespeichert und über ein Instrument oder Diagramm angezeigt

Anwendung ist die gemeinsame Erfassung vieler (auch weit verteilter) Standorte mit jeweils eigenen Controllern z.B. Stromverbrauch, Stromerzeugung durch BHKW/Photovoltaik, Wasserverbrauch

 

getscount( Schwarm-Messpunktname )

Liest die Anzahl von Controllern aus dem Schwarm, die jeweils Werte des selben Namens in den Schwarm geschrieben haben. Mit den puts() und gets() Funktionen werden mehrere Controller direkt untereinander vernetzt, ohne einen zentralen Server zu nutzen.  

⇒ Achtung: Diese Funktion steht nur zur Verfügung, wenn der Controller an einem Schwarm mit mehreren anderen Controllern angemeldet ist

Parameter: Schwarm-Messpunktname

Der Name unter dem vom Schwarm die Controller gezählt werden. Dazu müssen mehrere anderer Controller mit einer puts() Funktion unter diesem Namen jeweils Werte in den Schwarm schreiben. 
In der getscount() Funktion werden die Werte selbst nicht beachtet, es wird nur die Anzahl gezählt. 

Beispiel:

Am Controller "Goethestraße":

  A B  
 1  =sensor(IC1P) =puts(Stromerzeugung, A1)  

Im Feld A1 wird die durch eine Solaranlage erzeugte Leistung des Stromzählers IC1P mit z.B. 5 kW gelesen. Im Feld B1 wird dieser Wert unter dem Namen "Stromerzeugung" in den Schwarm geschrieben.

 

Am Controller "Schillerstraße":

  A B  
 1  =sensor(IC1P) =puts(Stromerzeugung, A1)  

Im Feld A1 eines anderen Controllers wird auch die erzeugte Leistung des Stromzählers IC1P mit z.B. 8kW gelesen. Im Feld B1 wird dieser andere Wert auch unter dem Namen "Stromerzeugung" in den Schwarm geschrieben.

 

Am Controller "Lindemannstraße":

  A B  
 1  =getscount(Stromerzeugung) =save(V1, A1)  

Im Feld A1 eines dritten Controllers wird die Anzahl der geschriebenen Werte mit dem Namen "Stromerzeugung" aus dem Schwarm gelesen, dieser ist dann z.B. Goethestraße +Schillerstraße = 2

Anwendung ist die Erfassung der Anzahl von Geräten über viele (auch weit verteilte) Standorte mit jeweils eigenen Controllern z.B. BHKWs, Photovoltaik, Verbraucher bestimmten Typs, Maschinen

 

hyst( Ist-Wert , Obergrenze , Untergrenze )

Zweipunktregler (Hysteresis) für Ausgänge die nur ein- oder ausgeschaltet werden können 

Parameter: Ist-Wert

Der aktuelle Messwert des zu regelnden Systems.

Parameter: Obergrenze

Sobald der Messwert die Obergrenze überschreitet geht der Regler aus (0)

Parameter: Untergrenze

Sobald der Messwert die Untergrenze unterschreitet geht der Regler an(1)

Beispiele:

  A B C
 1  =sensor(T1)

20

=hyst(A1,B1+1,B1-1)

Im Feld A1 wird die Temperatur des Sensors T1 gelesen, es zeigt also die Ist-Temperatur an. Im Feld B1 wird eine Soll-Temperatur fest mit 20°C vorgegeben. Der Regler im Feld C1 hat eine Hysterese von +-1°C. Er schaltet somit über 21°C aus (0) und unter 19°C ein (1).
Anwendung ist z.B. die Ansteuerung eines Heizlüfters.

 

  A B C
 1  =sensor(T1)

20

=hyst(-A1,-B1+1,-B1-1)

Im Feld A1 wird die Temperatur des Sensors T1 gelesen, es zeigt also die Ist-Temperatur an. Im Feld B1 wird eine Soll-Temperatur fest mit 20°C vorgegeben. Der Regler im Feld C1 wird mit verdrehten Vorzeichen betrieben und hat eine Hysterese von +-1°C. Er schaltet somit unter 19°C aus (0) und über 21°C ein (1).
Anwendung ist z.B. die Ansteuerung eines Kühlers. 

if( Bedingung )
if( Bedingung , Wahrwert )
if( Bedingung , Wahrwert , Falschwert )
if( Bedingung , Wahrwert , Falschwert , Wartezeit )
if( Bedingung , Wahrwert , Falschwert , Wartezeit , Mindestzeit )

Die If-Funktion ist in der Freiprogrammierung und in Office Tabellenkalkulationen eine der am häufigsten verwendeten Funktionen. Sie ermöglicht einen Vergleich und gibt, falls die Bedingung zutrifft, den einen Wert oder falls nicht, einen anderen Wert zurück. In der einfachsten Form besagt die If-Funktion folgendes:

  • Wenn die Bedingung zutrifft gebe den Wahrwert, anderenfalls den Falschwert zurück
  • z.B."if(sensor(T1)>sensor(T2),42,666)"
    gibt nur dann 42 zurück, wenn der Vorlauf-Sensor T1 größer dem Rücklauf-Sensor T2 wird, sonst wird 666 zurück gegeben

Zusätzlich werden noch eine zeitbasierte Verzögerung, Verlängerung und Verkürzung unterstützt um die Reaktion zu beruhigen.

Parameter: Bedingung

Wenn diese Kriterium erfüllt ist wird der Wahrwert zurück gegeben, wenn nicht der Falschwert. Bedingungen zwischen zwei Werten sind:

> wahr wenn der linke Wert größer dem rechten ist, z.B. 4>3
< wahr wenn der linke Wert kleiner dem rechten ist, z.B. 3<4
= wahr wenn beide Werte gleich sind, z.B. 5=5
>= wahr wenn der linke Wert größer oder gleich dem rechten ist, z.B. 3.14>=2.71
<= wahr wenn der linke Wert kleiner oder gleich dem rechten ist, z.B. 2.71<=3.14
<> wahr wenn die Werte verschieden sind, z.B. 42<>666

Mehrere Bedingungen werden mit Logikfunktionen and(), or(), xor() oder not() verknüpft z.B. "and(sensor(T1)<0,sensor(T2)<60)" oder bei Betriebszuständen "and(sensor(T2)<60,sensor(IOSD1)=1)"

Optionaler Parameter: Wahrwert

Diese Zahl wird zurück gegeben, wenn die Bedingung erfüllt ist. Der Wert kann direkt eine Zahl sein, oder ein Verweis auf ein Zelle oder eine Formel. z.B.

  • "42" gibt direkt die Zahl 42 zurück
  • "A1" gibt den Wert der Zelle A1 zurück
  • "sensor(T1)" gibt den Wert des Sensors T1 zurück

    VORSICHT: Funktionen zur Ausgabe dürfen im Wahr- und im Falschwert nicht verwendet werden. Dies betrifft: actuator(), alarmif(), puts() und save(). Anstatt

    "=if(sensor(T1) > sensor(T2),save(42),save(666))"

    muss die Ausgabefunktion ausserhalb des "if" sein:

    "=save(if(sensor(T1) > sensor(T2),42,666))"

Wird der Parameter nicht angegeben, wird 1 zurückgegeben

Optionaler Parameter: Falschwert

Diese Zahl wird zurück gegeben, solange die Bedingung nicht erfüllt ist. Der Wert kann wie der Wahrwert direkt oder indirekt bestimmt werden, siehe oben.

Wird der Parameter nicht angegeben, wird 0 zurückgegeben

Optionaler Parameter: Wartezeit

Die Bedingung muß mindestens über die Wartezeit zutreffen, bis der Wahrwert zurückgegeben wird, solange wird der Falschwert zurück gegeben.
Diese Verzögerung beruhigt die Reaktion durch Unterdrückung von kurzen Spitzen/Einbrüchen in der Messung. Beispiele sind:

1 nur wenn die Bedingung mindestens einen Tag zutrifft wird der Wahrwert zurück gegeben
01:00 entspricht einer Stunde Wartezeit
00:01 entspricht einer Minute Wartezeit
00:00:30 entspricht dreißig Sekunden Wartezeit
0 entspricht keiner Wartezeit, sobald die Bedingung erfüllt ist wird der Wahrwert zurück gegeben 

Wird der Parameter nicht angegeben, gibt es keine Wartezeit, der Wahrwert wird sofort zurück gegeben sobald die Bedingung erfüllt ist.

Optionaler Parameter: Mindestzeit

Beim Nutzen einer Mindestzeit wird sicher gestellt das der Wahrwert mindestens über die angegebene Zeit ausgegeben wird. Erst wenn die Mindestzeit abgelaufen ist wird der Falschwert zurückgegeben, selbst wenn die Bedingung schon vorher nicht mehr zutrifft.
Diese mögliche Verlängerung beruhigt die Reaktion eines Systems, selbst wenn die Bedingung nur kurz zutrifft.
Falls die Bedingung länger als die Mindestzeit zutrifft, wird genauso lang der Wahrwert zurück gegeben.

Sonderfall: negative Mindestzeit = Maximalzeit:

Beim Nutzen einer Maximalzeit wird sicher gestellt das der Wahrwert nicht länger als über die angegebene Zeit ausgegeben wird. Sobald diese Maximalzeit abgelaufen ist wird wieder der Falschwert zurückgegeben, selbst wenn die Bedingung noch zutrifft.
Diese mögliche Verkürzung beruhigt die Reaktion durch sicherstellen einer Maximaldauer selbst wenn die Bedingung länger zutrifft.
Falls die Bedingung kürzer als die Maximalzeit zutrifft, wird auch nur genauso kurz der Wahrwert zurück gegeben.

Beispiele sind:

00:15 entspricht einem Wahrwert von mindestens fünfzehn Minuten, also eine Verlängerung falls die Bedingung kürzer zutrifft 
0 entspricht keiner Verlängerung oder Verkürzung, sobald die Bedingung nicht mehr zutrifft, wird sofort der Falschwert zurück gegeben
-01:00 entspricht einem Wahrwert von maximal einer Stunde, also eine Verkürzung falls die Bedingung länger zutrifft

Wird der Parameter nicht angegeben, wird am Ende der Bedingung sofort der Falschwert zurück gegeben

Beispiele:

  A B C D
1 =sensor(T1) =sensor(P1T1) =if(A1>B1) =actuator(OS1,C1)

Im Feld A1 wird die Temperatur des Kollektor-Sensors T1 gelesen. Im Feld B1 wird die Temperatur des Puffers oben P1T1 gemessen. Die If-Funktion gibt 1 zurück sobald der Kollektor heißer ist als der Puffer oben, sonst 0. Die Ausgabefunktion im Feld D1 steuert mit den Werten aus dem Feld C1 eine Pumpe über am Ausgang OS1 an.
Anwendung ist z.B. die Ansteuerung einer Pumpe im Solarkreis einer Solarthermie-Anlage. 

  A B C D
1 =sensor(T1) =sensor(P1T1) =if(A1>B1,1,0, 00:10) =actuator(OS1,C1)

In der If-Funktion wird nun zusätzlich eine Wartezeit von 10-Minuten eingetragen. Wichtig hierbei ist das der 2. optionale Parameter Wahrwert=1 und der 3. optionale Parameter Falschwert=0 vor dem 3. Parameter Wartezeit=00:10 stehen muss.
Die Pumpe schaltet sich nur ein wenn die Temperatur am Kollektor länger als 10 Minuten überschritten wird, das System wird ruhiger weil die Pumpe nicht sofort einschaltet.

  A B C D
1 =sensor(T1) =sensor(P1T1) =if(A1>B1,1,0, 00:10,00:05) =actuator(OS1,C1)

Zusätzlich zur Wartezeit wird als 4. Parameter eine Mindestzeit von 5-Minuten in der If-Funktion eingetragen.
Die Pumpe läuft immer mindestens 5-Minuten, das System wird noch ruhiger weil die Pumpe nicht bei jeder Wolke sofort abschaltet. 

  A B C D
1 =sensor(T1) 4 =actuator(OS1,if(A1<B1)) =actuator(
  OS2,
  if(
    not(C1),0,1,00:10
  )
)

Im Feld A1 wird eine Raumtemperatur vom Sensor T1 gelesen. Im Feld B1 ist die minimal erlaubte Raumtemperatur 4°C fest vorgegeben. Die If-Funktion im Feld C1 gibt 1 zurück sobald Raumtemperatur unter die 4°C fällt und der Ausgang OS1 steuert eine Heizung an.

Im Feld D1 wird die Heizungsansteuerung vom Feld C1 invertiert und eine if-Funktion mit Wartezeit schaltet verzögert ab. Der Ausgang OS2 wird also sofort mit 1 angesteuert, jedoch erst nach einem festen Nachlauf von 10-Minuten wieder auf 0 abgeschaltet.
Anwendung ist z.B. ein Frostschutz mit Rauchabzugsklappe. 

pid( Differenz , P-Wert )

pid( Differenz , P-Wert , I-Wert )

pid( Differenz , P-Wert , I-Wert , D-Wert )

Proportional-Integral-Differential Regler (PID) für Ausgänge die stetig zwischen 0...100% moduliert werden können

Parameter: Differenz

Die Regelabweichung zwischen dem Soll- und dem Istwert des zu regelnden Systems. Für Regler die einen Sollwert konstant halten sollen ist dies eine einfache Subtraktion z.B. "20-sensor(T1)"  

Parameter: P-Wert

Der proportionale Verstärkungsfaktor (P-Regler) in Prozent. Größere Werte machen den Regler schneller und genauer, können aber zu instabilem Schwingen führen.

optionaler Parameter: I-Wert

Der integrale Verstärkungsfaktor (I-Regler) in Prozent, um auch kleine Regelabweichungen vollständig auszuregeln. Größere I-Werte stabilisieren den Regler, machen ihn aber auch langsamer.
Damit sich nicht zu große Werte im Integral ansammeln (siehe Wind-up Effekt) wächst der Wert bis zur Sättigung von maximal 100 und fällt bis minimal 0.  Dies verhindert das sich über einen längeren Zeitraum riesige I-Anteile ansammeln die den Regler dann blockieren.

Wenn der I-Wert nicht angegeben wird, steht dieser auf 0%

optionaler Parameter: D-Wert

Der differentiale Verstärkungsfaktor (D-Regler) in Prozent, um schneller zu werden. Größere Werte lassen den Regler bei kurzfristigen Schwankungen kräftig gegenregeln mit dem Risiko das das gesamte System ins Schwingen kommt.
⇒ Achtung: Diesen Wert nur mit äusserster Vorsicht nutzen!
Wenn der D-Wert nicht angegeben wird, steht dieser auf 0%

Beispiele:

  A B C D
 1  20 =sensor(T1) =pid(A1-B1,3,1) =actuator(OA1,C1)

Im Feld A1 wird eine Solltemperatur fest mit 20°C vorgegeben. Im Feld B1 wird die Temperatur des Sensors T1 gelesen, es zeigt also die Isttemperatur an. Der Regler im Feld C1 berechnet erst die Regelabweichung aus der Differenz zwischen Soll- und Ist-Temperatur und regelt dann mit einem Proportionalanteil von 3% und Integralanteil von 1%. 
Schließlich wird im Feld D1 mit dem Ergebnis der Reglers ein analoger Aktor mit 0% bis 100% angesteuert.
Anwendung ist z.B. die Ansteuerung eines modulierbaren Heizkessels.

 

puts( Schwarm-Messpunktname , Wert )

Schreibt einen Wert in den Schwarm, um ihn anderen SCH.E.I.D.L Energy Controllern zur Verfügung zu stellen. Mit den puts() und gets() Funktionen werden mehrere Controller direkt untereinander vernetzt, ohne einen zentralen Server zu nutzen.  

⇒ Achtung: Diese Funktion steht nur zur Verfügung, wenn der Controller an einem Schwarm mit mehreren anderen Controllern angemeldet ist

Parameter: Schwarm-Messpunktname

Der Name unter dem dieser Wert in den Schwarm geschrieben wird. Andere Controllern lesen dann mit einer gets() Funktion unter diesem Namen den Wert wieder aus dem Schwarm heraus.

Parameter: Wert

Der zu schreibende Wert. Er kann eine Zahl, eine Referenz auf eine andere Zelle, oder auch eine Berechnung enthalten.

Beispiel:

Am Controller "Goethestraße":

  A B  
 1  =sensor(T1) =puts(Aussentemperatur, A1)  

Im Feld A1 wird die Temperatur des Sensors T1 mit z.B. 22°C gelesen. Im Feld B1 wird diese Temperatur unter dem Namen "Aussentemperatur" in den Schwarm geschrieben.

 

Am Controller "Schillerstraße":

  A B  
 1  =gets(Aussentemperatur) =save(V1, A1)  

Im Feld A1 eines anderen Controllers wird der Wert mit dem Namen "Aussentemperatur" aus dem Schwarm gelesen, dieser ist dann z.B. 22°C . Im Feld B1 wird diese Temperatur unter dem neuen Messpunkt "V1" gespeichert und über ein Instrument oder Diagramm angezeigt

Anwendung ist die gemeinsame Nutzung von Sensoren zwischen mehreren Controllern z.B. Aussentemperatur (innerhalb räumlicher Nähe), Sonnenlicht, Luftfeuchte

 

save( Messpunktname , Wert )

Speichert einen Wert in der Langzeit-Datenaufzeichnung, um ihn mit Instrumenten oder Diagrammen anzuzeigen.

Parameter: Messpunktname

Der Name des neuen virtuellen Messpunkts V1 bis V12. Falls der zugehörige Messpunkt noch nicht existiert wird er erzeugt, sowie ein Instrument und eine Linie im Diagramm.

Parameter: Wert

Der zu speichernde Wert. Er kann eine Zahl, eine Referenz auf eine andere Zelle, oder auch eine Berechnung enthalten.

Beispiele:

  A B C
 1  =sensor(T1) =sensor(T2) =save(V1,A1-A2)

Im Feld C1 wird die Differenz zwischen den Messwerten T1 und T2 unter dem neuen Datenpunkt V1 gespeichert.
Anwendung ist z.B. Überwachung und Darstellung der Spreizung zwischen Vorlauf- und Rücklauftemperatur eines Heizkreises.

sensor( Messpunktname )

Zeigt den aktuellen Messwert eines Messpunktes.

Parameter: Messpunktname

Der Name des Sensors. Eine Übersicht über alle gesteckten Sensoren finden Sie unter Einstellungen → Sensor Messpunkte, z.B. T4 wenn Sie vier Temperaturfühler gesteckt haben. 

Beispiele:

  A B C
 1  =sensor(T1)    

Im Feld A1 wird immer aktuell der Messwert des Sensors T1 angezeigt.
Anwendung ist z.B. eine Berechnung Gradtagzahl aus der Aussentemperatur

sensoraverage( Messpunktname , Durchschnittszeit)

Zeigt den durchschnittlichen Messwert eines Messpunktes über eine Zeit

Parameter: Messpunktname

Der Name des Sensors. Eine Übersicht über alle gesteckten Sensoren finden Sie unter Einstellungen → Sensor Messpunkte, z.B. T4 wenn Sie vier Temperaturfühler gesteckt haben. 

Parameter: Durchschnittszeit

Der Zeitraum über den der Durchschnitt zurückgegeben wird. Beispiele sind:

1 entspricht einem Tag
01:00 entspricht einer Stunde
00:01 entspricht einer Minute
00:00:30 entspricht dreißig Sekunden

Beispiele:

  A B C
 1  =sensoraverage(T1,1)    

Im Feld A1 wird der Durchschnittswert über einen ganzen Tag des Sensors T1 angezeigt.
Anwendung ist z.B. eine Berechnung Gradtagzahl aus der Aussentemperatur

 

sensordelta( Messpunktname , Differenzzeit)

Zeigt den Unterschied eines Messwertes in einem Zeitraum

Parameter: Messpunktname

Der Name des Sensors. Eine Übersicht über alle gesteckten Sensoren finden Sie unter Einstellungen → Sensor Messpunkte, z.B. IC1 wenn Sie einen Zähler nutzen. 

Parameter: Differenzzeit

Der Zeitraum über den der Unterschied ermittelt wird. Beispiele sind:

1 entspricht einem Tag
01:00 entspricht einer Stunde
00:01 entspricht einer Minute
00:00:30 entspricht dreißig Sekunden

Beispiele:

  A B C
 1  =sensordelta(IC1,1)    

Im Feld A1 wird der Unterschied eines Stromzählers in einem Tag angezeigt, also der Tagesverbrauch
Anwendung ist z.B. der Verbrauch innerhalb einer Woche, zum Berechnen eines Wirkungsgrades

sensorpast( Messpunktname , Differenzzeit)

Zeigt den Messwert aus der Vergangenheit an

Parameter: Messpunktname

Der Name des Sensors. Eine Übersicht über alle gesteckten Sensoren finden Sie unter Einstellungen → Sensor Messpunkte, z.B. IC1 wenn Sie einen Zähler nutzen. 

Parameter: Differenzzeit

Die Zeit vor der der Messwert aufgezeichnet wurde. Beispiele sind:

1 entspricht vor einem Tag
01:00 entspricht vor einer Stunde
00:01 entspricht vor einer Minute
00:00:30 entspricht vor dreißig Sekunden

Beispiele:

  A B C
 1  =sensorpast(IC1P,7)    

Im Feld A1 wird die Leistung eines Stromzählers vor einer Woche angezeigt.
Anwendung ist z.B. ein Hochrechnen wie die Leistung nächste Woche sein könnte

 

War dieser Beitrag hilfreich?
0 von 0 fanden dies hilfreich
Haben Sie Fragen? Anfrage einreichen

0 Kommentare

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Powered by Zendesk