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 Lars, > > Zuerst eine wichtige Bitte: Benutze bitte die code-Tags, wenn Du Quellcode postest. > Einfache Routinen kann man zwar noch recht gut lesen, wenn es aber mal etwas komplexer > wird, erleichtert eine entsprechende Formatierung die Arbeit sehr. > > > ich nehme über Multiplexer von PT1000 Rohwerte auf und muss diese für korrekte Temperaturdaten in > > eine Formel einbinden. Folgende Standartformel habe ich dazu in den Modulen von Helbig gefunden: > > ... > > Jedoch verlaufen meine Rohdaten ausschließlich von 0 bis 1023 und nicht wie sonst bis 10230. > > Kann ich nun einfach bei allen Faktoren und Summanden die Werte eine 10er Potenz kleiner > > einstellen oder werden dann meine gewollten Temperaturwerte völlig falsch? > > >also so stelle ich mir die Formel dann vor: > > function getPT (int x) returns int > > { > > long y; > > y=x; > > if x>=723 y=(y-723)/0,5+140; > > else > > if x>=418 y=((y-418)*62,5)/317,7+80; > > else y=(y*4)/20,9; > > return y; > > } > > Nein, so einfach ist das wieder nicht. > Die Funktion, die Du hast, ist für das CC2-ReglerBoard, besser gesagt, für AD-Werte > aus dem Modul rbports.c2 . > Hier wird 10mal hintereinander der AD-Wert eingelesen und die Summe zurückgegeben, > um eine etwas bessere Auflösung zu erhalten. > Die Funktion für den normalen Bereich müsste so aussehen: > <code>function getPT (int x) returns int > {long y; > y=x; > if x>=723 y=(y-723)*2+1400; // > // 1400 muß bleiben(Offset in 10tel Grad) > else > if x>=418 y=((y-418)*6250)/3177+800; > else y=(y*400)/209; > return y; > }</code> > > Die AD-Wert-Offsets müssen durch 10 geteilt werden. > Die Faktoren müssen mit 10 multipliziert werden. > Die Temperaturoffsets müssen unverändert bleiben. > > Wie aber Krassos bereits schrieb, ist die Funktion für 0 bis 200°C gedacht. > Wenn Du also Deinen Meßadapter anders abgeglichen hast, muß auch die Funktion > entsprechend geändert werden. > Bei mir sieht beispielsweise die Auswertung der PT1000 so aus: > <code>function getPT(int x) returns int > {long y; > if x==0 return -32000; // Fühler Kurzschluß > if x==10230 return -31000; // Fühler unterbrochen > y=x; > if x>=7800 return ((y-7800)*75)/243 +2000; > if x>=5810 return ((y-5810)*60)/199 +1400; > if x>=4130 return ((y-4130)*50)/150 + 900; > if x>=1030 return ((y-1030)*90)/310; > return (y*30)/103 - 300; > }</code> > > Wenn man dies für den normalen AD-Bereich umschreiben müsste, sieht das so aus: > <code>function getPT(int x) returns int > {long y; > if x==0 return -32000; // Fühler Kurzschluß > if x==1023 return -31000; // Fühler unterbrochen > y=x; > if x>=780 return ((y-780)*750)/243 +2000; > if x>=581 return ((y-581)*600)/199 +1400; > if x>=413 return ((y-413)*500)/150 + 900; > if x>=103 return ((y-103)*900)/310; > return (y*300)/103 - 300; > }</code> > > Im Allgemeinen ist die Funktion so aufgebaut, daß die Berechnung in mehrere Teilbereiche > der Temperaturen aufgeteilt ist. > Im letzten Beispiel sind das folgende Bereiche: > 200,0°C bis 275,0°C (wobei 275,0°C als unterbrochener Fühler gewertet wird) > 140,0°C bis199,9°C > 90,0°C bis 139,9°C > 0,0°C bis 89,9°C > -30,0°C bis -0,1°C (wobei -30°C als Fühlerkurzschluß gewertet wird) > Das ganz wird gemacht, um die Nichtlinearität des Fühlers auszugleichen. > Es gibt auch leute, die machen das mit einer "abstrakten" Formel, aber so genau > muß es z.B. in der Heizungstechnik auch nicht sein. ;-) > > Der Aufbau aus einer Formelzeile sollte so ersichtlich werden: > <code>if ADWert>=ADOffset return ((ADWertL - ADOffset)*TBereich)/ADBereich + TOffset</code> > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB