Vellemann USB Board Analoge Ausgabe

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
hannshobby
Beiträge: 8
Registriert: 12.11.2008, 22:16
Wohnort: Austria

Vellemann USB Board Analoge Ausgabe

Beitrag von hannshobby » 14.11.2008, 22:06

Ich möchte gerne die Temperatur und die Windgeschwindigkeit gleich Windchill auf das Vellemann USB Board (K8055AO1) ausgeben. Um auf einer UVR 1611 eine Spannung von 0-5 Volt anzulegen. Das ist eine Temperatur an der UVR 1611 von -30 bis 30 °C. Habe dazu ein kleines Programm geschrieben aber es läuft leider nicht und ich weiß leider nicht mehr weiter.
Hier das Programm:
<?
$t = str_replace(",", ".", $KS300_Temp);
$w = str_replace(",", ".", $KS300_Wind);
if ($w >= 5) {
$wc = round(13.12 + 0.6215 * $t - 11.37 * pow($w, 0.16) + 0.3965 * $t * pow($w, 0.16), 1);
} else {
$wc = $t;
}
if ($_wc > 30.0) $_wc=30.0;
if ($_wc < -30.0) $_wc=-30.0;
$_wc+= 30.0;
$_anau=255/600.0 * $_wc * 10.0;
$_Rest= $_anau - $_anau;
if ($_Rest >= 0.5) $_anau+=1;
$K8055AO1=str_replace(".",",",$_anau);
?>
Es bleibt die Anzeige immer null :( (somit wird auch keine Spannung an das Vellemann Board ausgegeben.)
Kann mir vielleicht jemand Helfen. :D
Zuletzt geändert von hannshobby am 14.11.2008, 23:29, insgesamt 1-mal geändert.

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Vellemann USB Board Analoge Ausgabe

Beitrag von buempi » 14.11.2008, 23:21

Hallo

Ohne deine Formel ganz begriffen zu haben: Hast du im "Original" bei der letzten Zeile auch eine Leerstelle zwischen $ und K8055AO1? Die gehört WEG!

Ansonsten: Funktioniert es, wenn du einfach K8055A01:=100 einträgst?

Viele Grüsse
Bümpi

hannshobby
Beiträge: 8
Registriert: 12.11.2008, 22:16
Wohnort: Austria

Re: Vellemann USB Board Analoge Ausgabe

Beitrag von hannshobby » 14.11.2008, 23:55

Hallo buempi
Zwischen $ und K8055A01 war ein Schreibfehler von mir im Programm ist es richtig. :D
In der Formel begrenze ich die Temperatur zwischen -30°C und + 30 °C um eine bessere Auflösung zu bekommen.
Dann muss ich den Wert noch auf 255 begrenzen (255 sind gleich 5 Volt und 30°C auf der UVR 1611). Den dass Vellmann Board kann nur 255 Bit ausflössen. Da ich eine Spannung zwischen 0 Volt und 5 Volt brauche um diese Spannung in der UVR 1611 wieder auf Temperatur umzurechnen.

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Vellemann USB Board Analoge Ausgabe

Beitrag von buempi » 15.11.2008, 07:31

Hallo

Ich hab's gefunden - noch ein ähnlicher Fehler: Eine deiner Variablen heisst zuerst $wc und dann plötzlich $_wc. Das ist aber doch im "Original" auch so? Wenn du die Unterstriche überall weglässt, wird richtig gerechnet.

Beim Vergleich "if ($_wc < -30.0)" wird true zurückgegeben ($_wc gibt es in diesem Moment ja noch gar nicht) und die Variable erhält also den Wert -30. Nachher wird 0 draus und so bleibt es bis zum Schluss...

Viele Grüsse
Bümpi

PS: Übrigens: Das mit dem "Rest" funktioniert auch nicht richtig. "$_Rest = $_anau - $_anau" ergibt IMMER 0.0 ; verwende doch einfach "$K8055AO1 = round($_anau)"

hannshobby
Beiträge: 8
Registriert: 12.11.2008, 22:16
Wohnort: Austria

Re: Vellemann USB Board Analoge Ausgabe

Beitrag von hannshobby » 15.11.2008, 17:30

Hallo buempi
Danke für deine rasche Hilfe, ich hatte wirklich einen Fehler wie du geschrieben hast.
Jetzt läuft das Programm einwandfrei. :D
<?
$t = str_replace(",", ".", $KS300_Temp);
$w = str_replace(",", ".", $KS300_Wind);
if ($w >= 5) {
$wc = round(13.12 + 0.6215 * $t - 11.37 * pow($w, 0.16) + 0.3965 * $t * pow($w, 0.16), 1);
} else {
$_wc = $t;
}
if ($_wc > 30.0) $_wc=30.0;
if ($_wc < -30.0) $_wc=-30.0;
$_wc+= 30.0;
$_anau=255/600.0 * $_wc * 10.0;
$_Rest= $_anau - $_anau;
if ($_Rest >= 0.5) $_anau+=1;
$K8055AO1=str_replace(".",",",$_anau);
?>

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Vellemann USB Board Analoge Ausgabe

Beitrag von buempi » 15.11.2008, 17:37

Hallo

Ja, aber so läuft es nur einwandfrei bei Wind <5. Vor dem "else" musst du das $wc auch noch gegen $_wc ersetzen! - Sonst kommt wieder 0, sobald der Wind bläst...

Hast du mein PS betreffend "Rest" im letzten Beitrag übersehen?

Viele Grüsse
Bümpi

hannshobby
Beiträge: 8
Registriert: 12.11.2008, 22:16
Wohnort: Austria

Re: Vellemann USB Board Analoge Ausgabe

Beitrag von hannshobby » 15.11.2008, 18:03

Hallo Bümpi

Habe das auch noch geändert.
Danke noch einmal für deine rasche Hilfe. :D
$t = str_replace(",", ".", $KS300_Temp);
$w = str_replace(",", ".", $KS300_Wind);
if ($w >= 5) {
$_wc = round(13.12 + 0.6215 * $t - 11.37 * pow($w, 0.16) + 0.3965 * $t * pow($w, 0.16), 1);
} else {
$_wc = $t;
}
if ($_wc > 30.0) $_wc=30.0;
if ($_wc < -30.0) $_wc=-30.0;
$_wc+= 30.0;
$_anau=255/600.0 * $_wc * 10.0;
$K8055AO1= round($_anau);
?>

Grüße Hannes
:D

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“