Autor Thema: PID , Minimalwert für FHT8V setzen  (Gelesen 3200 mal)

Offline PeterN

  • New Member
  • *
  • Beiträge: 15
PID , Minimalwert für FHT8V setzen
« am: 03 Februar 2013, 14:40:59 »
Hallo,

folgendes Problem, ich wollte meine funktionierende PID Definition "define heizung.04 pid Arbeitszimmer stellantrieb.04"
um den Minimallwert für den FHT8V erweitern >> "define heizung.04 pid Arbeitszimmer stellantrieb.04:valve:25:100"
Seit der Änderung wird aber der FHT8V nicht mehr angesteuert und verharrt bei 25%.

Danke,

Peter
RasPi3, HMUART, Homematic, 1WIRE, Fritz!Box7590

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20884
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #1 am: 03 Februar 2013, 15:53:44 »
Ich fuerchte das Problem musst Du selbst finden mit Debug-Ausgaben im PID-Modul und nachrechnen.

Offline PeterN

  • New Member
  • *
  • Beiträge: 15
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #2 am: 24 Februar 2013, 15:58:43 »
Hallo,

anscheinend wird der "valve" Wert mit Nachkommastelle ausgegeben, was kann man dagegen tun?

2013.02.24 13:25:31 3: PID heizung.04: p:0.60 i:100.00 d:0.00
2013.02.24 13:25:31 3: FHT8V set stellantrieb.04 valve 100

2013.02.24 13:41:34 3: PID heizung.04: p:0.00 i:100.00 d:-0.15
2013.02.24 13:41:34 3: set stellantrieb.04 valve 99.85 : Set valve needs a numeric parameter between 0 and 100
2013.02.24 13:41:34 3: output of heizung.04 command: Set valve needs a numeric parameter between 0 and 100

2013.02.24 13:46:55 3: PID heizung.04: p:0.00 i:100.00 d:0.00
2013.02.24 13:46:55 3: FHT8V set stellantrieb.04 valve 100

2013.02.24 13:52:16 3: PID heizung.04: p:-0.60 i:99.75 d:-0.15
2013.02.24 13:52:16 3: FHT8V set stellantrieb.04 valve 99

2013.02.24 13:57:37 3: PID heizung.04: p:-1.20 i:99.25 d:-0.15
2013.02.24 13:57:37 3: set stellantrieb.04 valve 97.9 : Set valve needs a numeric parameter between 0 and 100
2013.02.24 13:57:37 3: output of heizung.04 command: Set valve needs a numeric parameter between 0 and 100

Peter
RasPi3, HMUART, Homematic, 1WIRE, Fritz!Box7590

Offline fgerhardt

  • New Member
  • *
  • Beiträge: 8
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #3 am: 13 März 2013, 22:35:47 »
Hallo Peter,

ändere in 98_PID.pm in der Zeile
my $ret = fhem sprintf("set %s %s %g", $pid->{actor}, $pid->{command}, $a);

a$ in int(a$).

Gruß
Friedhelm

Offline PeterN

  • New Member
  • *
  • Beiträge: 15
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #4 am: 14 März 2013, 18:53:52 »
Hallo Friedhelm,
Das ist die Lösung, jetzt arbeitet der PID Regler so wie er soll,
Vielen Dank
Peter
RasPi3, HMUART, Homematic, 1WIRE, Fritz!Box7590

Offline Bernhard

  • Full Member
  • ***
  • Beiträge: 131
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #5 am: 23 Mai 2013, 14:22:38 »
Zitat von: fgerhardt schrieb am Mi, 13 März 2013 22:35


ändere in 98_PID.pm in der Zeile
my $ret = fhem sprintf("set %s %s %g", $pid->{actor}, $pid->{command}, $a);

a$ in int(a$).



Kann diese Änderung jemand einchecken?

Danke

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20884
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #6 am: 25 Mai 2013, 09:49:47 »
>  Kann diese Änderung jemand einchecken?

Na so billig geht es nicht, schliesslich wuerde man damit die zwei Zeilen weiter oben getroffene (und kommentierte) Heuristik aushebeln, die rundet, falls das Unterschied zw. min und max >= 100 ist.

Ich habe jetzt ein Attribut roundValveValue eingefuehrt, dies ist in diesem Fall auf 1 zu setzen.

Offline fgerhardt

  • New Member
  • *
  • Beiträge: 8
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #7 am: 25 Mai 2013, 10:22:31 »
stimmt schon, nur arbeiten die FHT8V nicht mehr sobald kein ganzzahliger Wert gesendet wird.

Offline Bernhard

  • Full Member
  • ***
  • Beiträge: 131
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #8 am: 25 Mai 2013, 14:38:04 »
ganz konkret:
PID gibt berechnete Werte - auch nicht ganzzahlige - Werte an FHT8V.
FHT8V lehnt diese Werte mit Fehlermeldung ab.
In Folge davon kommt es vor, daß die Ventile über lange Zeit keine neuen (korrekten) Werte mehr erhalten.
Alternativ müsste eben in FHT8V Zeile 70
eingefügt/geändert werden:
    return "Set valve needs a numeric parameter between 0 and 100 ==> $a[2] <=="
        if(@a != 3 || $a[2] !~ m/^\d+([.]\d+)?$/ || $a[2] < 0 || $a[2] > 100);

Offline PeterN

  • New Member
  • *
  • Beiträge: 15
Aw: PID , Minimalwert für FHT8V setzen
« Antwort #9 am: 26 Mai 2013, 12:14:34 »
Hallo Rudolf,
danke für die Änderung im "offiziellen" PID Modul.
für mich ist der Minimalwert des FHT8V sehr wichtig um den "Kuhschwanzheizung" Effekt zu minimieren.
Übrigens, falls jemand Infos zur Heizungsproblemen braucht ist der "Haustechnikdialog" nur zu empfehlen.

Peter
RasPi3, HMUART, Homematic, 1WIRE, Fritz!Box7590

 

decade-submarginal