Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: thread sensoren Kategorie: Sensoren (von reneforster - 26.10.2004 16:20)
Als Antwort auf thread sensoren von Mario - 26.10.2004 15:41
Ich nutze:
C-Control II Station, OSOPT V3.0
Nachfolgend ein paar Dinge :


//...............................................................
//...                                                    ........
//..        Messen der Temperaturen und speichern in variable
//...............................................................

 thread Sensoren

 {
 loop
 
// diese Variablen müssen vor die Loop Schleife, sonst werden diese jedesmal
// wieder neu definiert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
string a,b,c,e,f;
int n,ad,d;
float U,R;

b="";
U=0.004*ports.adc(0);
R=(8000/U-1600)/10000;
// mache deine Berechnung noch mit einer Hilfsvariable, sonst könnte sein
// das bei Threadabgabe das ergebniss nicht stimmt und dein Schaltprogramm
// falsche IST werte hat, so etwa :
// hilsvariable = Formel/Berechnung ;
// IST1 = Hilfsvariable

global.IST1=1000/(math.ln(R)/3.988+1000/298)-273;
str.putfloatf(b,global.IST1,1);
a="Kessel : ";
b=a+b;

c="";
U=0.004*ports.adc(1);
R=(8000/U-1600)/10000;
// schon wieder IST1 ?????????????????????????????????????????
global.IST1=1000/(math.ln(R)/3.988+1000/298)-273;
str.putfloatf(c,global.IST1,1);
a="Heizkreis";
c=a+c;

e="";
U=0.004*ports.adc(2);
R=(8000/U-1600)/10000;
// schon wieder IST1 ?????????????????????????????????????????
global.IST1=1000/(math.ln(R)/3.988+1000/298)-273;
str.putfloatf(e,global.IST1,1);
a="Boiler : ";
e=a+e;

f="";
U=0.004*ports.adc(3);
R=(8000/U-1600)/10000;
// schon wieder IST1 ?????????????????????????????????????????
global.IST1=1000/(math.ln(R)/3.988+1000/298)-273;
str.putfloatf(f,global.IST1,1);
a="Pufferoben : ";
f=a+f;
}

/*************************************************************************
Hauptprogramm 1
*************************************************************************/

thread Programm1
{
string a,s,b,c,e,f;
int n,ad,d;
float U,R;
//************************************************************************

// hier beginnt die Programmschleife -------------------------------------
loop
{
// Programmteil für Fühler 1 *** Kesseltemperatur ******************************


station_lcd.clear();sleep 5;station_lcd.print("Temperatur im");

// was willst du hier anzeigen, Variable b hat den Wert 0 ??!!!!!!!!
station_lcd.line2();station_lcd.print(b);
sleep 2000; // zwei Sekunden Anzeige am Display

if global.IST1 {ports.set(8,0);
station_io.LEDoff(1);}//..Ports low wenn temp unter SOLL
if global.IST1 {ports.set(9,0);station_io.LEDoff(2);}//....low wenn temp unter soll+5 Grad

if global.IST1>=global.SOLL1
{ports.set(8,1);//..Port high pumpe kessel ein
station_io.LEDon(1);}
if global.IST1>(global.SOLL1+5)
{ports.set(9,1);station_io.LEDon(2);}//..port high wenn temp 3 grad über SOLL

// Programmteil für Fühler 2 *** Heizkreistemperatur ***************************

station_lcd.clear();sleep 5;station_lcd.print("Temperatur im");
// was willst du hier anzeigen, Variable c hat den Wert 0 ??!!!!!!!!
station_lcd.line2();station_lcd.print(c);
sleep 2000;// zwei Sekunden Anzeige am Display

if global.IST2 {ports.set(10,1);station_io.LEDon(6);}//...port high wenn temp niedrig
if global.IST2>=global.SOLL2
{ports.set(10,0);station_io.LEDoff(6);}//..port low wenn temp=SOLL
if global.IST4 {station_io.LEDoff(6);}// led off bei Puffer oben unter SOLL4
if global.IST2>global.SOLL2+3
{ports.set(11,1);station_io.LEDon(7);}//..port high wenn temp über SOLL

if global.IST2<=global.SOLL2
{ports.set(11,0);station_io.LEDoff(7);}//..port low wenn temp=SOLL
if global.IST4 {station_io.LEDoff(7);}//..Led off bei Pufferoben unter SOLL4 temp


// ................Fühler 3 für Boiler ladung bis 60 Grad........


station_lcd.clear();sleep 5;station_lcd.print("Temperatur im");
// was willst du hier anzeigen, Variable e hat den Wert 0 ??!!!!!!!!
station_lcd.line2();station_lcd.print(e);
sleep 2000;// zwei Sekunden Anzeige am Display

if global.IST3>=global.SOLL3
{ports.set(13,0);station_io.LEDoff(3);}//..Boiler stop bei 60 Grad
if global.IST3 {station_io.LEDoff(3);}

if global.IST3 {ports.set(13,1);station_io.LEDon(3);}//..boiler Laden

//..............................................................................
// ..............Fühler4 Puffer oben ab 40 Grad heizungspumpe P4 ein,freigabe
// freigabe für Boiler REL1,unter 40 Grad Mischerstop und schliessen,Boilerstop,


station_lcd.clear();sleep 5;station_lcd.print("Temperatur ");
// was willst du hier anzeigen, Variable e hat den Wert 0 ??!!!!!!!!
station_lcd.line2();station_lcd.print(f);
sleep 2000;// zwei Sekunden Anzeige am Display

if global.IST4 {ports.set(12,0);station_io.LEDon(4);// Port P4 low unter 40 Grad
station_io.RELon(1);//... freigabe stop Boiler stop,mischer zu ,relais extern
ports.set(10,0);ports.set(11,0);station_io.LEDoff(6);station_io.LEDoff(7);
ports.set(13,0);station_io.LEDoff(3);station_io.LEDoff(5);}

if global.IST4>global.SOLL4
{ports.set(12,1);station_io.LEDoff(4);station_io.LEDon(5);
 station_io.RELoff(1);}//...freigabe Boiler und Mischer ,relais extern
 //..heizungspumpe ein


}}





thread für die anzeige string a,b,c,e,f; nochmals anlegen muss oder nicht??
Du müsstest dieVariable "c", wo bei stehen sollte "Heizkreis : xx Grad"  als global anlegen, dann
würde das schon gehen. Benutze aber bitte dafür einen anderen Namen als wie "c".
z.B.
globale Variable "TempHeizkreis"
dann übergibst du Fühlerberchnungsthread immer in die Variable "TempHeizkreis".
Jetzt kannst du die Variable "TemHeizkreis" von jeden Thread aus anzeigen lassen.

Rene





    Antwort schreiben


Antworten:

Re: thread sensoren (von Mario - 26.10.2004 17:32)