Realisierung Schaltregler mit Hysterese

Gast #2848623
Lesenswert?

hallo,

kann mal jemand bitte um nachfolgende Funktion drüber schauen, ob diese 
so korrekt ist? Oder ob ich vielleicht irgendwas bzw. irgendeinen Fall 
übersehen bzw. vergessen habe?

Möchte eine Schaltregler mit Hysterese realisieren, wobei die beiden 
Schaltschwelle variabel einstellbar sein sollen.

1
uint8_t hystereseregler(int16_t istwert, int16_t sollwert, int16_t hysterese1, int16_t hysterese2)
2
{
3
  //alle Input-Parameter im Format S(11,4)
4
  
5
  static uint8_t stellwert;
6
  
7
  if(istwert<(sollwert-hysterese1))
8
  {
9
    stellwert=1;
10
  }
11
  
12
  else if(istwert>=(sollwert+hysterese2))
13
  {
14
    stellwert=0;
15
  }
16
  
17
  return stellwert;
18
}
Gast #2848661
Lesenswert?

Du hast einen undefinierten Startwert, wenn ich das richtig überblicke. 
Wenn der istwert sehr nahe am sollwert dran ist, also innerhalb der 
Hysterese, dann kriegst du den initialisierungswert von stellwert. Und 
den weiß nur der liebe gott!
Gast #2848696
Lesenswert?

Welchen Startwert würdest du jetzt daher vorgeben? 0 oder 1?

Ich würde zur 0 tendieren, da sich der Istwert in diesem Fall ja schon 
bereits innerhalb der Schaltdifferenz vom Sollwert befindet.
Korrekt so?
#2848740
Lesenswert?

Meier schrieb:
> Welchen Startwert würdest du jetzt daher vorgeben? 0 oder 1?

Der der in deiner Anwendung sinnvoll ist.

> Ich würde zur 0 tendieren, da sich der Istwert in diesem Fall ja schon
> bereits innerhalb der Schaltdifferenz vom Sollwert befindet.
> Korrekt so?

Wenn dir 0 gefällt und das in deiner Situation sinnvoll ist, dann nimm 
ihn.

In dem Fall gibt es kein richtig oder falsch. Der Sinn der Hysterese ist 
es ja einen Bereich zu schaffen, in dem man keine gesicherte ja/nein 0/1 
Aussage treffen kann, sondern pragmatisch einfach den letzten Zustand 
weiter beibehält, damit sich kleine Schwankungen rund um den Schaltpunkt 
nicht verheerend in Dauerschalten auswirken.

Normal nimmt man einfach den Wert, der (wenn er falsch ist), den 
geringeren Schaden anrichtet.
Wenn es zb um Raumtemperaturen in einem Wohnraum geht und der Schaltwert 
Heizung ein/aus bedeutet, dann nehm ich den Wert, bei dem die Heizung 
aus ist. Denn sind die beiden Temperaturen sowieso schon bei 20°, greift 
also die Hysterese, dann kann ich nach dem Online-gehen des µC die 
Raumtemperatur ruhig um die 2° Hysterese absinken lassen, ehe dann der 
Brenner feuert. Auf der anderen Seite will ich aber nicht haben, dass 
nach dem Einschalten des µC der erst mal den Raum sinnlos von 20° auf 
23° hochheizt, nur damit er erstmalig aus der Hysterese rauskommt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren