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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo m8_nix, > > > ich sehe grade diese Funktion kann so nicht funtzen.... vielleicht liegt ja darin schon deine > > fragende Haltung begründet? > > Dadurch das sich im long-Format die Werte 105625 (10,5625°C) und 106 (10,6000°C) nicht Exponentiell > > von einander unterscheiden lassen (fehlende Nachkomma "Nullen") wird im vorliegendem Fall der letztere > > Wert "10,6°" tatsächlich niedrieger "angesehen" als der in wirklichkeit Niedrigere (10,5625°) > > Wie kommst Du denn darauf ? Das stimmt nämlich nicht. > Du weißt schon, was ein Festkommainteger ist, oder? > Wenn mit <code>ds1631.readl()</code> ein Wert ausgelesen wird, hat dieser > immer vier Nachkommastellen. Keine mehr, und keine weniger. > Ein Festkommainteger ist nur eine Anwenderdefinitionen, bei der der Anwender selbst > wissen muß, wo das Komma sitzt. > Es ist einfach eine Kommazahl, die um den Faktor 10, 100, 1000 usw. multipliziert wurde. > Im Fall readl() kann man die Einheit hundertstel Mikrograd nennen, > was vier Nachkommastellen entspricht. > Falls es den Wert 10,6000° beim DS1631 wirklich geben würde, ist das bestimmt > nicht der Rückgabe wert 106, sondern 106000 oder in Worten huntertundsechstausend. > Aber gehen wir von Werten aus, die vorkommen können. (vielfaches von 0,0625K) > Nehmen wir also die Temperaturen 10,5625°C und 10,6250°C an. > Als Festkommainteger sind das die Werte 105625 und 106250. > Wenn Du nun von den 106250 die 105625 abziehst, erhälst Du 625. > Und das sind 0,0625K. > > Also denke bitte nicht unnötig kompliziert. > Die Sache ist ganz einfach. > Darum habe ich bei der CC2 auch die Festkommainteger in Mode gebracht, da > diese meist einfacher handhabbar sind, als Float-Zahlen. > (Und deutlich weniger Rechenzeit benötigen) > > Allerdings hast Du mit einem recht. Deine Funktion kann nicht funktionieren: > <code>long t1, t2; > float tdelta; > function build_diff() returns float; > { > t1=ds1631.readl(0); // 0=Adresse des ersten Sensors > t2=ds1631.readl(1); // 1=Adresse des zweiten Sensors > tdelta=t2-t1; > }</code> > > Du hast ein Semicolon nach dem "returns float" in der Funktionsdefinition. > Das ist nicht zulässig. > Dann gibst Du keinen Wert in der Funktion zurück. > Somit ist der Rückgabewert immer 0. > Und dann mach es keinen Sinn die Differenz der Festkommaintegerwerte t1 und t2 > in einem Float zu speichern, da ein Festkommawert für einen Float keine Kommazahl darstellen. > Du müsstest Deine Funktion dann folgendermaßen umschreiben: > <code>long t1, t2; > float tdelta; > function build_diff() returns float > { > t1=ds1631.readl(0); > t2=ds1631.readl(1); > tdelta=(t2-t1)*0.0001; // Festkommainteger mit 4 Nachkommastellen > // in Floatumrechnen > return tdelta; > }</code> > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB