AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Temperatur steuerung ????????

Ein Thema von melssner · begonnen am 20. Aug 2009 · letzter Beitrag vom 21. Aug 2009
 
melssner

Registriert seit: 14. Jul 2009
18 Beiträge
 
Delphi 7 Enterprise
 
#1

Temperatur steuerung ????????

  Alt 20. Aug 2009, 08:53
Hallöle mal wieder,

Ich habe nen Anliegen und komme mal wieder nicht weiter.
Ich habe ne USB-Steuerung mit angeschlossenem Thermometer am Analogen eingang.
Die Usb-Steuerung steuert eine Relaiskarte, jedes Relais steuert ein seperaten Stromkreis/Steckdose für meine Terrarien.
Das Thermometer soll ebenfalls jedes Relais steuern.

Das Programm ist soweit geschrieben das es verschiedene Schaltzeiten (Schaltzeituhr) gibt für jedes Relais wenn dieses zum Beispiel das Licht an schalten soll. Das Thermometer soll parallel dazu laufen. Zum Beispiel, das Thermometer misst eine aktuelle Temp von 28grad da soll trotz aktiven Zeitschaltuhr das Licht bei überschreiten der Temp ausschalten. Anhand meiner untenstehenden prozedur funktioniert das auch nur wenn die Temperatur wieder sinkt habe ich nen unschönen nebeneffekt (an, aus, an, aus). Wie kann ich denn das realisieren einen Schwellwert einzufügen wo es wirklich erst wieder an geht wie z.b. bei 28grad soll es aus gehen aber erst bei 26grad wieder an.

Hier mal der Code
Delphi-Quellcode:
procedure TForm1.AutoTimer1Timer(Sender: TObject);
var
  Start1, Start2, Start3, Ende1, Ende2, Ende3, tmpTime: TDateTime;
  h,CardAddr,data1,data2:longint;
  Ini: TIniFile;
  Thermometer, Temperatur, AktTemp, OFF1: String;
  i: Single;
begin
  Button12.Enabled:=true;
  Button13.Enabled:=false;
  Button14.Enabled:=false;
  Button15.Enabled:=false;
  AutoTimer1.Enabled:=true;

  //Config Programm
  Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'PowerControl.ini');
  try
  Start1 :=Ini.ReadTime('Kanal1', 'StartZeit1', StrToTime('00:00:00'));
  Start2 :=Ini.ReadTime('Kanal1', 'StartZeit2', StrToTime('00:00:00'));
  Start3 :=Ini.ReadTime('Kanal1', 'StartZeit3', StrToTime('00:00:00'));
  Ende1 :=Ini.ReadTime('Kanal1', 'EndZeit1', StrToTime('00:00:00'));
  Ende2 :=Ini.ReadTime('Kanal1', 'EndZeit2', StrToTime('00:00:00'));
  Ende3 :=Ini.ReadTime('Kanal1', 'EndZeit3', StrToTime('00:00:00'));
  Ini.WriteString('Kanal1', 'Auto', '1');
  Temperatur :=Ini.ReadString('Kanal1', 'Temperatur', '');
  Thermometer :=Ini.ReadString('Kanal1', 'Thermometer', '');
    //Temperatur1 auslesen
    h:= OpenDevice(Ini.ReadInteger('Config_System', 'CardAdress', 0));
    data1 := ReadAnalogChannel(1);
    CloseDevice;
    i := StrToInt('101')*data1/256-23;
    AktTemp := format('%2.0f',[i]);
  finally
    Ini.Free;
  end;

  //Startzeit 1 schalten
  // nehmen wir mal an, Start = '12:00' und Ende = '14:00'
  tmpTime := Time();
  if (tmpTime > Start1) and (tmpTime < Ende1) or
      (tmpTime > Start2) and (tmpTime < Ende2) or
      (tmpTime > Start3) and (tmpTime < Ende3) then
    begin
      OFF1:= '';
      //Thermometer1 ausschalten
      if (Thermometer = 'OFF') and (AktTemp >= Temperatur) then
        begin
          h:= OpenDevice(0);
          ClearDigitalChannel(1);
          CloseDevice;
          Image1.Picture:=nil;
          OFF1:= '1';
          Imagelist1.GetBitmap(1,Image1.Picture.Bitmap); //0=Disable, 1=OFF, 2=ON, 3=Notschalter
          Label11.Font.Color:= clSilver;
          Label12.Font.Color:= clSilver;
          Label13.Font.Color:= clSilver;
        end;
      //Startzeit 1 schalten
      if (tmpTime > Start1) and (tmpTime < Ende1) and (OFF1 = '') then
        begin
          h:= OpenDevice(0);
          SetDigitalChannel(1);
          CloseDevice;
          Image1.Picture:=nil;
          Imagelist1.GetBitmap(2,Image1.Picture.Bitmap); //0=Disable, 1=OFF, 2=ON, 3=Notschalter
          Label11.Font.Color:= clGreen;
        end;
      //Startzeit 2 schalten
      if (tmpTime > Start2) and (tmpTime < Ende2) and (OFF1 = '') then
        begin
          h:= OpenDevice(0);
          SetDigitalChannel(1);
          CloseDevice;
          Image1.Picture:=nil;
          Imagelist1.GetBitmap(2,Image1.Picture.Bitmap); //0=Disable, 1=OFF, 2=ON, 3=Notschalter
          Label12.Font.Color:= clGreen;
        end;
      //Startzeit 3 schalten
      if (tmpTime > Start3) and (tmpTime < Ende3) and (OFF1 = '') then
        begin
          h:= OpenDevice(0);
          SetDigitalChannel(1);
          CloseDevice;
          Image1.Picture:=nil;
          Imagelist1.GetBitmap(2,Image1.Picture.Bitmap); //0=Disable, 1=OFF, 2=ON, 3=Notschalter
          Label13.Font.Color:= clGreen;
        end;
    end
    else
    begin
       //nach Ablauf abschalten
        h:= OpenDevice(0);
        ClearDigitalChannel(1);
        CloseDevice;
        Image1.Picture:=nil;
        Imagelist1.GetBitmap(1,Image1.Picture.Bitmap); //0=Disable, 1=OFF, 2=ON, 3=Notschalter
        Label11.Font.Color:= clSilver;
        Label12.Font.Color:= clSilver;
        Label13.Font.Color:= clSilver;
     end;

end;
ich hoffe ihr könnt mir helfen da ich zu diesem thema mix gefunden habe.

Lg Mario
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz