Mischersteuerung: Unterschied zwischen den Versionen

Aus FHEMWiki
(Überarbeitung Attribute (Stellmotor 2.0))
Zeile 22: Zeile 22:
== Beschreibung ==
== Beschreibung ==


Vorrangig ist dieses Modul für zwei Relais an eine GPIO oder an PIFace Pins eines Rasberrys gedacht; es bietet aber auch die Option, zwei Schaltaktoren per Funk (aus Timinggründen nicht empfohlen) oder 1-Wire anzusteuern.  
Vorrangig ist dieses Modul für zwei Relais an GPIO- oder an PIFace-Pins eines Rasberrys gedacht; es bietet aber auch die Option, zwei Schaltaktoren per Funk (aus Timinggründen nicht empfohlen) oder 1-Wire anzusteuern.  


Die Set-Befehle für die Mischerstellung kommen idealerweise aus der Bewertung der Vorlauftemperatur durch ein Modul wie PID20 [http://www.fhemwiki.de/wiki/PID20_-_Der_PID-Regler]. Dieser berücksichtigt auch den zeitlichen Verlauf der Temperaturänderungen im Vorlauf und ist vielfältig anpassbar.
Die Set-Befehle für die Mischerstellung kommen idealerweise aus der Bewertung der Vorlauftemperatur durch ein Modul wie PID20 [http://www.fhemwiki.de/wiki/PID20_-_Der_PID-Regler]. Dieser berücksichtigt auch den zeitlichen Verlauf der Temperaturänderungen im Vorlauf und ist vielfältig anpassbar.
Zeile 104: Zeile 104:


== AttributesN ==  
== AttributesN ==  
Alle Attributes sind auch in fhem durch das kommando get attrHelp <varname> erkl�rt, f�r's "schnelle nachschauen zwischendurch".  
Alle Attributes sind auch in fhem durch das kommando get attrHelp <varname> erklärt, für's "schnelle Nachschauen zwischendurch".  


{| class="wikitable sortable"  
{| class="wikitable sortable"  
Zeile 110: Zeile 110:
! Attribute !! (Typ) Default !! Beschreibung  
! Attribute !! (Typ) Default !! Beschreibung  
|-  
|-  
| STMgpioPortRL|| (int) 5 || piface port oder gpio port f�r RL oder R relais (bei RL ist 1=R)  
| STMgpioPortRL|| (int) 5 || piface port oder gpio port für RL oder R relais (bei RL ist 1=R)  
|-  
|-  
| STMrlType|| (string) einzel || je nach schaltplan, wechsel=start+RL-relais, einzel=R-relais+L-relais
| STMrlType|| (string) einzel || je nach Schaltplan, Wechsel=start+RL-relais, einzel=R-Relais+L-Relais werden geschaltet
|-  
|-  
| STMresetOtherDeviceAtCalibrate|| (string) 0 || zus�tzliches fhem device das am ende der kalibrierung 'set ** reset' gesendet bekommt  
| STMresetOtherDeviceAtCalibrate|| (string) 0 || zusätzliches Fhem-Device das am Ende der Ealibrierung 'set ** reset' gesendet bekommt  
|-  
|-  
| STMmapOffCmd|| (string) 0 || string der im device-command anstatt '0' verwendet wird f�r stop  
| STMmapOffCmd|| (string) 0 || string der im device-command anstelle '0' verwendet wird für stop  
|-  
|-  
| STMmapOnCmd|| (string) 0 || string der im device-command anstatt '1' verwendet wird f�r start  
| STMmapOnCmd|| (string) 0 || string der im device-command anstelle '1' verwendet wird für start  
|-  
|-  
| STMcalibrateDirection|| (string) L || auf R wird die kalibrierung nach rechts gefahren, default=links  
| STMcalibrateDirection|| (string) L || auf R wird die Ralibrierung nach rechts gefahren, default= L (links)
|-  
|-  
| STMinvertOut|| (int) 0 || setzen f�r devices die 0 f�r start und 1 f�r stop erwarten  
| STMinvertOut|| (int) 0 || setzen für Devices die 0 für Start und 1 für Stop erwarten  
|-  
|-  
| STMmaxTics|| (int) 100 || Mischerstellung - bei Prozentangaben (PID20) 100, bei Winkelangaben anzupassen  
| STMmaxTics|| (int) 100 || Mischerstellung - bei Prozentangaben (PID20) 100, bei Winkelangaben anzupassen  
|-  
|-  
| STMsysCmdSTART|| (string) 0 || freies command das f�r START an die shell �bergeben wird  
| STMsysCmdSTART|| (string) 0 || freies Command das für START an die Shell übergeben wird  
|-  
|-  
| STMsysCmdRL|| (string) 0 || freies command das f�r RL an die shell �bergeben wird  
| STMsysCmdRL|| (string) 0 || freies Command das für RL an die Shell übergeben wird  
|-  
|-  
| STMmaxDriveSeconds|| (int) 107 || gestoppte Zeit in Sekunden, die der Motor f�r die Fahrt von 0 bis 100 Prozent braucht  
| STMmaxDriveSeconds|| (int) 107 || gestoppte Zeit in Sekunden, die der Motor für die Fahrt von 0 bis 100 Prozent braucht  
|-  
|-  
| STMpollInterval|| (float) 0.1 || Zeitintervall nach dem FHEM pr�ft, ob die interne Stoppzeit erreicht wurde. Hier sollte m�glichst kleiner Wert aein, nur erh�hen falls FHEM zu langsam l�uft
| STMpollInterval|| (float) 0.1 || Zeitintervall nach dem FHEM prüft, ob die interne Stoppzeit erreicht wurde. Hier sollte möglichst kleiner Wert aein, nur erhöhen falls FHEM zu langsam läuft
|-  
|-  
| STMgpioPortSTART|| (int) 4 || piface port oder gpio port f�r START (oder L relais bei 'einzel')  
| STMgpioPortSTART|| (int) 4 || Piface-Port oder gpio-Port für START (oder L relais bei 'einzel')  
|-  
|-  
| STMtimeTolerance|| (float) 0.01 || stop-time differenzen kleiner als dieser wert werden ignoriert  
| STMtimeTolerance|| (float) 0.01 || Stop-Time Differenzen kleiner als dieser Wert werden ignoriert  
|-  
|-  
| STMfhemDevSTART|| (string) RelaisSTART || fhem device name f�r START (oder L) aktor
| STMfhemDevSTART|| (string) RelaisSTART || Fhem-Device name für START (oder L) Aktor
|-  
|-  
| STMfhemDevRL|| (string) RelaisRL || fhem device name f�r RL (oder R) aktor
| STMfhemDevRL|| (string) RelaisRL || Fhem-Device name für RL (oder R) ASktor
|-  
|-  
|}  
|}  


Zeile 176: Zeile 175:
Zeigt im im Frontend, dass der Motor gerade läuft.
Zeigt im im Frontend, dass der Motor gerade läuft.
|-
|-
|queue_lastdiff||||abhängig von der FHEM-Last oder anderen blockierenden Kommandos wird das Stopp-Kommando mir nahe an der kalkulierten Stoppzeit ausgeführt, vermutlich nie exakt. STELLMOTOR merkt sich die Zeitdifferenz, zu der der Motor wirklich gestoppt weurde und addiert bei der nächsten Bewergung des motors die Differenz, um möglichst präzise die wirkliche Motorstellung zu erreichen.
|queue_lastdiff||||abhängig von der FHEM-Last oder anderen blockierenden Kommandos wird das Stopp-Kommando nur nahe an der kalkulierten Stoppzeit ausgeführt, vermutlich nie exakt. STELLMOTOR merkt sich die Zeitdifferenz, zu der der Motor wirklich gestoppt wurde und addiert bei der nächsten Bewegung des Motors die Differenz, um möglichst präzise die wirkliche Motorstellung zu erreichen.
|-
|-
|rlport||||Pin-Nr, gpio/piface oder fhem device name bei typ FhemDev
|rlport||||Pin-Nr, gpio/piface oder fhem device name bei typ FhemDev
Zeile 198: Zeile 197:
! Reading !! (Typ) Default !! Beschreibung  
! Reading !! (Typ) Default !! Beschreibung  
|-  
|-  
| queue_lastdiff|| (float) 0 || letzte zeitdifferenz
| queue_lastdiff|| (float) 0 || abhängig von der FHEM-Last oder anderen blockierenden Kommandos wird das Stopp-Kommando nur nahe an der kalkulierten Stoppzeit ausgeführt, vermutlich nie exakt. STELLMOTOR merkt sich die Zeitdifferenz, zu der der Motor wirklich gestoppt wurde und addiert bei der nächsten Bewegung des Motors die Differenz, um möglichst präzise die wirkliche Motorstellung zu erreichen.
|-  
|-  
| locked|| (int) 0 || 1 w�hrend motor gerade l�uft  
| locked|| (int) 0 || 1 w�hrend motor gerade l�uft  
Zeile 221: Zeile 220:
== Weblinks ==
== Weblinks ==
* [http://forum.fhem.de/index.php/topic,23933.msg174400.html#new Thread im Forum], in dem dieses Modul vorgestellt wurde
* [http://forum.fhem.de/index.php/topic,23933.msg174400.html#new Thread im Forum], in dem dieses Modul vorgestellt wurde
*to be continued
* to be continued


[[Kategorie:Glossary]]
[[Kategorie:Glossary]]
[[Kategorie:Regelungstechnik]]
[[Kategorie:Regelungstechnik]]
[[Kategorie:Code Snippets]]
[[Kategorie:Code Snippets]]

Version vom 12. Juni 2014, 23:53 Uhr


---- noch nicht Teil von FHEM ----
Zweck / Funktion
Dieses Modul ist noch Entwicklung
Allgemein
Typ undefiniert
Details
Dokumentation ModUndef
Modulname 98_STELLMOTOR.pm
Ersteller epsrw1
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Das Fhem-Hilfsmodul STELLMOTOR bietet eine einfache Möglichkeit, mit zwei Relais den Rechts-/Linkslauf eines (Mischer)motors zu steuern.

Features

Modul und diese Bearbeitung sind noch in Entwicklung


  • Wiedereintrittsfähig nach einem Neustart
  • Wiederholungsgenauigkeit durch Ausgleich von Rundungs- und Laufzeitabweichungen
  • Vermeiden von Blockade des FHEM während der Laufzeit des Motors

Thread im Forum:[1]

Beschreibung

Vorrangig ist dieses Modul für zwei Relais an GPIO- oder an PIFace-Pins eines Rasberrys gedacht; es bietet aber auch die Option, zwei Schaltaktoren per Funk (aus Timinggründen nicht empfohlen) oder 1-Wire anzusteuern.

Die Set-Befehle für die Mischerstellung kommen idealerweise aus der Bewertung der Vorlauftemperatur durch ein Modul wie PID20 [2]. Dieser berücksichtigt auch den zeitlichen Verlauf der Temperaturänderungen im Vorlauf und ist vielfältig anpassbar.

Aus den Werten MaxTics (Default=100, für Prozentanzeige) und MaxDriveSeconds (Laufzeit des Motors von 0 bis 100%) wird die Zeit berechnet, die der Motor nach rechts oder links laufen muss, um die mit set gewünschte Ventilstellung zu erreichen.

FHEM läuft dann weiter ohne einzufrieren, und prüft im Loop nur noch ob, die Stoppzeit im Cache erreicht ist. Da der Stopp nie exakt zur geplanten Zeit ausgeführt wird, liegt im Cache ein weiterer Wert der die Differenz zwischen geplanter und tatsächlicher Stoppzeit dem nächsten Kommando hinzurechnet. So werden sich addierende kleine Zeitdifferenzen vermieden.

Zum Kalibrieren (set calibrate) fährt der Motor einfach volle Zeit nach links/null. Hier wird der in Mischermotoren wie dem Honeywell Centra VMK eingebauten Entschaltetr genutzt, um den "Null-Punkt" sicher zu finden. Falls ein angeschlossener Motor solche Endschalter nicht hat, müssen die für diese Schaltungsweise unbedingt vorgesehen werden.


Define

 define <name> STELLMOTOR <PiFace|Gpio|FhemDev>  

  • attrRLPORT und attrSTARTPORT sind workarounds um fhemDev mit leerzeichen definieren zu können (z: keller port2 ...0|1). der eigentliche port wird dann aus dem attr wert (attrRLPORT attrSTARTPORT) gelesen

Für den Schaltvorgang "baut" STELLMOTOR einen set-Befehl zusammen. Beispielsweise bei FhemDev

 set <RL-OUT-Port> 0     sowie      set <RL-OUT-Port> 1      zum Einschalten links  
 set <RL-OUT-Port> 0     sowie      set <RL-OUT-Port> 0      zum Ausschalten links  

Um die Wirkung auszuprobieren, ohne jedes Mal zum Mischer rennen zu müssen, bietet sich an zwei Dummys zu verwenden:

define Stellmotor2rl dummy

define Stellmotor2start dummy

set <name> 45

stellt den Mischer nun auf 45%. Angenommen, stand er bei 10%, wird er nun (45-10)*MaxDriveSeconds/MaxTics Sekunden lang nach rechts laufen und dann von STELLMOTOR gestoppt.

Attribute

Stellmotor wird noch einmal erheblich verbessert - dabei werden zahlreiche Attribute hinzugefügt. Diese Tabelle ist nicht mehr aktuell.

ACHTUNG: falsche Einstellung kann zu Kurzschluß am Motor führen, bitte Einstellung genau überdenken oder mit dummy testen bei einzel: Rechtslauf: start=0 rl=1 Linkslauf: start=1 rl=0 Ruhe: start=0 rl=0 bei wechsel: Rechtslauf start=0 rl=1 Linkslauf: L start=1 rl=0 Ruhe: start=0 rl=0
Parameter Wertebereich Default Beschreibung
MaxDriveSeconds [0...n] muss angepasst werden gestoppte Zeit in Sekunden, die der Motor für die Fahrt von 0 bis 100 Prozent braucht
MaxTics [0...100] 100 Mischerstellung - bei Prozentangaben (PID20) 100, bei Winkelangaben anzupassen
pollInterval 0.1 Zeitintervall nach dem FHEM prüft, ob die interne Stoppzeit erreicht wurde. Hier sollte mit einem möglichst kleinen Wert gestartet werden, der vorsichtig erhöht werden kann, falls FHEM zu langsam läuft wegen des Mischermotors.
resetOtherDeviceAtCalibrate string Fhem Device das am Ende des Kalibriervorganges zusätzlich resettet wird. (command: set <resetOtherDeviceAtCalibrate> reset" wird abgesetzt)
attrRLPORT wert ersetzt "RL-Out-Port" aus define. wird benötigt für schaltaktoren befehle mit blankspace bie zb "set keller portB 1"
attrSTARTPORT wert ersetzt "start-Out-Port" aus define. wird benötigt für schaltaktoren befehle mit blankspace bie zb "set keller portC 1"
resetOtherDeviceAtCalibrate string Fhem Device das am Ende des Kalibriervorganges zusätzlich resettet wird. (command: set <resetOtherDeviceAtCalibrate> reset" wird abgesetzt)
readingFnAttributes readingFnAttributes

AttributesN

Alle Attributes sind auch in fhem durch das kommando get attrHelp <varname> erklärt, für's "schnelle Nachschauen zwischendurch".

Attribute (Typ) Default Beschreibung
STMgpioPortRL (int) 5 piface port oder gpio port für RL oder R relais (bei RL ist 1=R)
STMrlType (string) einzel je nach Schaltplan, Wechsel=start+RL-relais, einzel=R-Relais+L-Relais werden geschaltet
STMresetOtherDeviceAtCalibrate (string) 0 zusätzliches Fhem-Device das am Ende der Ealibrierung 'set ** reset' gesendet bekommt
STMmapOffCmd (string) 0 string der im device-command anstelle '0' verwendet wird für stop
STMmapOnCmd (string) 0 string der im device-command anstelle '1' verwendet wird für start
STMcalibrateDirection (string) L auf R wird die Ralibrierung nach rechts gefahren, default= L (links)
STMinvertOut (int) 0 setzen für Devices die 0 für Start und 1 für Stop erwarten
STMmaxTics (int) 100 Mischerstellung - bei Prozentangaben (PID20) 100, bei Winkelangaben anzupassen
STMsysCmdSTART (string) 0 freies Command das für START an die Shell übergeben wird
STMsysCmdRL (string) 0 freies Command das für RL an die Shell übergeben wird
STMmaxDriveSeconds (int) 107 gestoppte Zeit in Sekunden, die der Motor für die Fahrt von 0 bis 100 Prozent braucht
STMpollInterval (float) 0.1 Zeitintervall nach dem FHEM prüft, ob die interne Stoppzeit erreicht wurde. Hier sollte möglichst kleiner Wert aein, nur erhöhen falls FHEM zu langsam läuft
STMgpioPortSTART (int) 4 Piface-Port oder gpio-Port für START (oder L relais bei 'einzel')
STMtimeTolerance (float) 0.01 Stop-Time Differenzen kleiner als dieser Wert werden ignoriert
STMfhemDevSTART (string) RelaisSTART Fhem-Device name für START (oder L) Aktor
STMfhemDevRL (string) RelaisRL Fhem-Device name für RL (oder R) ASktor

Settings

SET Wertebereich Beschreibung
set <name> N [1...100] stellt den Mischer auf N % Öffnung
set <name> calibrate stellt den Mischer auf 0 %; maximaler Linkslauf bis zur Endschalterpostion links
set <name> reset Setzt die Position und die Werte im Cache auf Null. Verwendung ist intern (am Ende von calibrate) oder nach mechanischem Neueinbau des Motors (da reicht aber auch ein Calibrate)


Readings

readings Wertebereich Beschreibung
position [1..100%] der Wert wird gesetzt am Beginn einer Mischerbewegung (anderer Wertebereich, wenn MaxTics nicht 100)
state active,error,position Position wird beim Stopp der Motorbewegung gesetzt
lastStart Zeitstempel der letzten Motorbewegung
locked [0 1] Steht auf 1 während der Motor gerade läuft (Calibrate oder gewünsche Position per set).

Neue Kommandos werden während lock nur in eine Warteschleife genommen.

Zeigt im im Frontend, dass der Motor gerade läuft.

queue_lastdiff abhängig von der FHEM-Last oder anderen blockierenden Kommandos wird das Stopp-Kommando nur nahe an der kalkulierten Stoppzeit ausgeführt, vermutlich nie exakt. STELLMOTOR merkt sich die Zeitdifferenz, zu der der Motor wirklich gestoppt wurde und addiert bei der nächsten Bewegung des Motors die Differenz, um möglichst präzise die wirkliche Motorstellung zu erreichen.
rlport Pin-Nr, gpio/piface oder fhem device name bei typ FhemDev
startport Pin-Nr. gpio/piface oder fhem device name bei typ FhemDev
stopTime Null oder die errechnete Zeit zum Stopp der Motorbewegung
command_queue Position einer anstehenden neuen Motorposition, die angefordert wurde als die letzte Motorbewegung noch ausgeführt oder das Modul disabled war
OutType Bei der Defintion gewählte Arbeitsart: PiFace,Gpio,FhemDev
DoResetAtStop Zeitstempel des Ende der letzten Kalibrierfahrt

ReadingsN

Alle Readings sind auch in fhem durch das kommando get readingsHelp <varname> erkl�rt, f�r's "schnelle nachschauen zwischendurch".

Reading (Typ) Default Beschreibung
queue_lastdiff (float) 0 abhängig von der FHEM-Last oder anderen blockierenden Kommandos wird das Stopp-Kommando nur nahe an der kalkulierten Stoppzeit ausgeführt, vermutlich nie exakt. STELLMOTOR merkt sich die Zeitdifferenz, zu der der Motor wirklich gestoppt wurde und addiert bei der nächsten Bewegung des Motors die Differenz, um möglichst präzise die wirkliche Motorstellung zu erreichen.
locked (int) 0 1 w�hrend motor gerade l�uft
position (int) 1 aktuelle desired position
DoResetAtStop (string) afterCalibrate tempor�rwert nur w�hrend kalibrierungsphase
state (string) active aktuelle position oder fehlermeldung
lastStart (float) 0 zeitstempel letzter start des motors
command_queue (int) 0 befehl in der warteschleife
stopTime (float) 0 zeitstempel n�chster stop des motors
OutType (string) PiFace in der device definition festgelegter OutType

Weblinks