Smart home Sps

Intelligentes Zuhause Sps

Dies macht die SPS-Programmierung auch für den privaten Bereich attraktiv. Hausautomation mit speicherprogrammierbaren Steuerungen (SPS) Im Zuge des Aufkommens des Internets der Dinge rückt die Automatisierung immer mehr in den Mittelpunkt des Interesses, insbesondere im Smart Home-Sektor. Für viele Smart Home-Anwendungen reicht jedoch ein von der 3S-Software für die eigene Codesys-Raspberry Implementierung vorgegebener Bammel von 50 bis 400µs. Es wird eine TIME () function festgelegt, die die Zeit in ms seit dem Start des Systems zurückgibt.

Zur Unterstützung der Funktion wird ein zweiter Zähler verwendet, der nach einem Initialisierungs-Signal als Input die verstrichenen Sekunde als Output zur Verfügung stellt und auch den Overflow von TIME() auffängt: Die TIME(): Die zweite Zählung ist wieder als Funktionsbaustein in ST: Sekunden: UDINT; Laufzeit: UDINT; lasttime: UDINT; currtime: UDINT; Laufzeit:= 0; Lasttime:= TIME_TO_UDINT(myTIME()); Sekunde:= 0; currenttime:= TIME_TO_UDINT(myTIME()); Laufzeit:= TIME_TO_UDINT(); Zeit: 0:

Laufzeit + (currtime - lasttime); Laufzeit:= Laufzeit + (maxudint - lasttime) + currtime; letztmalig:= currenttime; Sekunden = Laufzeit/1000; Der Quellcode von runeconds benutzt die function myTime() anstelle der function TIME. Damit wird das Resultat von TIME() mit einem einstellbaren Multiplizierer vervielfacht, um den Überlauftest zu erleichtern.

Zur Vervollständigung hier der Quellcode von mytime: (* Geben Sie einen Multiplizierer zum Debuggen ein. x: UINT:1; x: TIME () * y: x: Im Gegensatz zum Funktionsbaustein ist es auffällig, dass eine Function keine Ausgangsvariable ist. Die Rückgabewerte der Funktionen werden durch Zuordnung zu einer stillschweigend definierten Variablen mit dem Funktionsnamen (mytime) festgelegt.

Bei längeren Betriebszeiten müßte die Laufzeitvariable von ULINT 64 Bits betragen, was jedoch das Laufzeitenverhalten auf den meisten Controllern aufgrund fehlender Unterstützung für native 64 Bits verschlechtert. Weil im Light-Controller internerweise eine Laufzeit von Laufsekunden erforderlich ist, wird eine korrespondierende Variablen erzeugt: runtime: runeconds; Now for implementation. Im einfachsten Falle ist all_off: Rest:= 0; Licht:= FALSE; RETURN; RETURN beendet die Bearbeitung der Funkt.

Im zweiten Falle - Alarmleuchte: runtime(init:= TRUE); restliche:= max_seconds; hell:= TRUE; RETURN; Dies initialisiert den Ausführungszähler. Abschließend der Hauptfall: Umschalten über den Lichtschalter: hell:= FALSE; restlich:= 0; RETURN; hell:= TRUE; restlich:= max_seconds; runtime(init:= TRUE); RETURN; Sobald das Licht aus ist, wird der zweite Zähler nicht mehr gerufen.

Der Code-Block für diesen Anwendungsfall lautet: runtime(init:=FALSE); restliche:=max_sekunden - : ut_TO_DINT (runtime. seconds); light:= FALSE; restliche:=0; Die Umsetzung von runningtime. sec könnte grundsätzlich auch entfallen, aber Codesys generiert in diesem Anwendungsfall eine Warnmeldung. Weil es prinzipiell vorkommen kann, dass die Route weniger als einmal pro Sek. ausgeführt wird, wird der Restwert mit einem signierten Dateityp berechnet und spricht auch auf die Unterschreitung der angegebenen Laufzeiten an.

Mehr zum Thema