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, > > > > > > für die Berechnung eines Winkels aus 2 Koordinaten wollte ich die function atang_korr aus > > > dem Modul mathx benutzen. Da es nicht funktionierte, bemerkte ich, daß die Fließkomma > > > Berechnung nicht funktioniert. Die C Control Unit rechnet nur mit gerundeten ganzen > > > Zahlen. Um das zu verifizieren habe ich eine einfache Tangens Rechnung programmiert > > > ( a/b=tan). Aber es kommen immer nur ganze Zahlen heraus, obwohl die Variablen > > > durchweg als float deklariert sind. Anstatt z.B. 0,123456 läßt sich mit dem LCD oder auch > > > per hwcom zum Terminalprogramm nur eine 0 abbilden. > > > Wie kann ich die Unit bewegen, mit Kommastellen zu arbeiten ? > > > > > > Lutz Kubens > > > > Hallo, > > ein Auszug aus Deinem Programm wäre hilfreich, denn der Compiler der IDE > > hält hier einige Fallstricke bereit. > > > > Hallo krassos, > hier in groben Zügen, wie das Programm aufgebaut ist: > float WPnord[30], WPeast[30]; > thread main > {int n, anz; hwcom.init();hwcom.setspeed(5); > for n = 0 ... 29 { WPnord[n]=0;WPeast[n]=0;} // Initialisieren der Variablen > Einlesen von Wegpunkten in die Arrayvariablen (z.B. WPnord[0]=180808,WPeast[0]=31603, > bereits umgerechnet in Bogensekunden über PC via hwcom) > run rechnen; > halt; > } // Ende thread main > thread rechnen > {int n, anz; float diffwegn[30], diffwege[30], winkel[30], errweg[30]; > string s40; > for n = 0 ... 29 { diffwegn[n]=0;diffwege[n]=0;winkel[n]=0;errweg[n]=0;} > // errechnen des Weges aus der Differenz von Position zum ersten Wegpunkt für > // Vektor Nord und Vektor East und des Winkels zum Wegpunkt in Metern. > // anz ist die eingegebene Menge der Wegpunkte. > for n = 0 ... anz-1 > {if (WPnord[n+1]-WPnord[n])==0 {diffwegn[n]=0;} // damit keine Division durch Null erfolgt > // Ergebnis der Division darf aber negativ sein > else {diffwegn[n]=(WPnord[n+1]-WPnord[n]*myconst.secnord;} // secnord= 30.90159 > if (WPeast[n+1]-WPeast[n]==0 {diffwege[n]=0;} // dasselbe für den Ostvektor > else {diffwege[n]=(WPeast[n+1]-WPeast[n])*myconst.seceast;} // seceast=19.49769 > errweg[n]=math.sqrt(math.sqr(diffwegn[n])+math.sqr(diffwege[n])); > // errechnen des Winkels > if diffwegn[n]==0 or diffwege[n]==0 { } // verhindern einer Division durch Null > else {winkel[n]=mathx.atang_korr(diffwege[n],diffwegn[n]);} > // diffwege(Ostvektor=x)/diffwegn(Nordvektor=y) = atang, sollte der Winkel herauskommen > str.putfloat(s40,winkel[n]);hwcom.print(s40);hwcom.ret(); > } // Ende for n ... > } // Ende thread rechnen > > Ich hoffe, daß ich nichts Wesentliches weggelassen habe. Das Übertragen der Wegpunkte > vom PC und das Umrechnen in Sekunden funktioniert als Bytearray, wird in Teilstrings > umgewandelt, und in einen Zahlenwert umgerechnet. Das ist nötig, da der Wegpunkt auch > einen Namen hat und die C-Control Unit nur Strings mit 30 Zeichen verarbeitet. > Die Eingabe der Sekundenwerte der Vektoren habe ich wie folgt gelöst: > // Extrahieren der Sekunden aus dem Bytearray > strx.split(c3[3],c7,'.'); > nordss1=strx.getNum(c7[0]); > nordss2=strx.getNum(c7[1]); > // nordss2 ergibt den Nachkomma Anteil, z.B. 8 nach getNum > nordss=nordss1+(nordss2/10*0.6); // *0.6 ist Umrechnung der sec von 100 auf 60 > WPnord[n] = nordgg + nordmm + nordss // nordgg=50*3600,nordmm=13*60 > > Da bekomme ich aber auch schon keine Nachkommastellen angezeigt, sondern gerundet. > > Gruß Lutz
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB