INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programmierung, Problem mit if-Bedingungen
08.12.2014, 21:35
Beitrag #1
Programmierung, Problem mit if-Bedingungen
Hi,
ich kappiere nicht, wie ich die Peltier-Regelung vernüftig programmieren soll, damit die unterschiedlichen Zustände ablaufenHuhHuhHuh:

1. Temperatur über Raumtemperatur:
> PI-Regelung klassisch, Controller-Direction: direct

2. Temperaturen unter Raumtemperatur:
> PI-Regelung klassisch aber bei reversem Betrieb.
> Umpolung des Peltier-Elemente

1.1 Temperatur-Differenzen oberhalb der Raumtemperatur überbrücken: z. B. 90° C auf 50° C
> PI-Regelung, reverser Betrieb
> Umpolung

2.1 Temperatur-Differenzen unterhalb der Raumtemperatur überbrücken: z. B. 0° C auf 10° C
> PI-Regelung klassisch, direct
> Umpolung für den Direct-Betrieb

Auch möglich: weiterhin klassisch im Reverse-Betrieb, ab Aufnahme von Umgebungwärme, um auf 10° C zu gelangen.

3. Nach längerem Betrieb, hohes thermisches Gesamtniveau des Blocks:
Einstellung auf Raumtemperatur
> PI-Regelung reverser Betrieb
> Umpolung des Peltier-Elementes

Gruß
Cray-1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2014, 16:20 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2014 16:41 von Corvus.)
Beitrag #2
RE: Programmierung, Problem mit if-Bedingungen
(08.12.2014 21:35)Cray-1 schrieb:  Temperatur-Differenzen oberhalb der Raumtemperatur überbrücken: z. B. 90° C auf 50° C
Temperatur-Differenzen - Differenz zwischen welchen Temperaturen?
überbrücken - wie überbrückt man Differenzen?
aber egal, es geht dir ja um die If-Bedingungen:
Code:
if (Temperatur>Raumtemperatur){ //1.
  piRegelung("klassich","direkt");
}
if  (Temperatur<Raumtemperatur){ //2.
  piRegelung("klassisch","revers");
  umpolung(PeltierElement);
}
if ((TemperaturMinuend-TemperaturSubtrahend)>Raumtemperatur){//1.1
  ueberbrueckung(TemperaturMinuend -TemperaturSubtrahend);
  piRegelung("revers");
  umpolung();
}
if ((TemperaturMinuend-TemperaturSubtrahend)<Raumtemperatur){ //2.1
  ueberbrueckung(TemperaturMinuend-TemperaturSubtrahend);
  if (random(2)){  
    piRegelung("klassisch","direkt");
    umpolung();
  }
  else{
    piRegelung("klassisch","revers","ab Aufnahme von Umgebungwärme");
}
if (BetriebsZeit>=lange){ //3.
  piRegelung("revers");
  umpolung(PeltierElement);
}
...musst dir dann nur noch ne überladene Funktion "piRegelung" und die Funktion "umpolung" schreiben sowie, die Variablen entsprechend setzen. Gegebenenfalls noch den Wert bei random anpassen, sofern deine alternative Variante mit geringerer Wahrscheinlichkeit ausgeführt werden soll.
Kann mir zwar nicht vorstellen, dass dir das irgendwie weiterhilft, aber ich wünsche trotzdem viel Erfolg!
gruß lorenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2014, 21:09
Beitrag #3
RE: Programmierung, Problem mit if-Bedingungen
(14.12.2014 16:20)Corvus schrieb:  
(08.12.2014 21:35)Cray-1 schrieb:  Temperatur-Differenzen oberhalb der Raumtemperatur überbrücken: z. B. 90° C auf 50° C
Temperatur-Differenzen - Differenz zwischen welchen Temperaturen?
überbrücken - wie überbrückt man Differenzen?
aber egal, es geht dir ja um die If-Bedingungen:
Code:
if (Temperatur>Raumtemperatur){ //1.
  piRegelung("klassich","direkt");
}
if  (Temperatur<Raumtemperatur){ //2.
  piRegelung("klassisch","revers");
  umpolung(PeltierElement);
}
if ((TemperaturMinuend-TemperaturSubtrahend)>Raumtemperatur){//1.1
  ueberbrueckung(TemperaturMinuend -TemperaturSubtrahend);
  piRegelung("revers");
  umpolung();
}
if ((TemperaturMinuend-TemperaturSubtrahend)<Raumtemperatur){ //2.1
  ueberbrueckung(TemperaturMinuend-TemperaturSubtrahend);
  if (random(2)){  
    piRegelung("klassisch","direkt");
    umpolung();
  }
  else{
    piRegelung("klassisch","revers","ab Aufnahme von Umgebungwärme");
}
if (BetriebsZeit>=lange){ //3.
  piRegelung("revers");
  umpolung(PeltierElement);
}
...musst dir dann nur noch ne überladene Funktion "piRegelung" und die Funktion "umpolung" schreiben sowie, die Variablen entsprechend setzen. Gegebenenfalls noch den Wert bei random anpassen, sofern deine alternative Variante mit geringerer Wahrscheinlichkeit ausgeführt werden soll.
Kann mir zwar nicht vorstellen, dass dir das irgendwie weiterhilft, aber ich wünsche trotzdem viel Erfolg!
gruß lorenz
Hi, es ist immer noch das Problem, das die erste if-Bedingung auch ausgeführt wird, wenn der Regler einen Unterschwinger macht.

Gruß
Cray-1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.12.2014, 02:25
Beitrag #4
RE: Programmierung, Problem mit if-Bedingungen
Da du es offenbar nicht für notwendig hälst abgesehen von deinem kontextlosen Brainstorming des ersten Posts mitzuteilen was du erreichen möchtest: Dodgy
Dass die erste if-Bedingung ausgeführt wird lässt sich ganz leicht verhindern, indem du sie folgendermaßen abänderst:
Code:
if (Temperatur>Raumtemperatur && !ReglerMachtUnterschwinger){
  piRegelung("klassich","direkt");
}
Jetzt brauchst du nur noch die Variable ReglerMachtUnterschwinger, auf true setzen wenn "der Regler einen Unterschwinger macht". Und entsprechend auf false, wenn er keinen macht. Angel
gruß lorenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  PZS Problem mit Ausgang schalten Flötzinger 0 456 28.06.2019 15:53
Letzter Beitrag: Flötzinger
  Programmierung einer Uhr keklik10 6 756 22.04.2019 22:45
Letzter Beitrag: GuaAck
  Fern-Programmierung über Ethernet passra 14 939 09.04.2019 20:01
Letzter Beitrag: amithlon
  Programmierung eines MIDI-Controllers Schraubfix 17 1.504 25.02.2019 12:24
Letzter Beitrag: Tommy56
  Programmierung eines Arduino Uno mit Motorshield Lancair4 8 779 24.02.2019 09:49
Letzter Beitrag: Lancair4
  Problem mit UniversalTelegramBot edi_ying 8 764 09.02.2019 15:11
Letzter Beitrag: Tommy56
Question (Denk)Problem mit char array[] ? ManfredH 3 516 05.02.2019 12:01
Letzter Beitrag: ManfredH
  USB Problem mit Linux HeikeF 5 686 03.02.2019 17:04
Letzter Beitrag: Tommy56
  Programmierung eines ToF-Abstandssensors fragesteller1 3 439 01.02.2019 23:21
Letzter Beitrag: Tommy56
  Drehgeber wie Iduino SE055 - Software- oder Hardware-Problem? Arduinero 12 899 24.01.2019 13:55
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste