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 zusammen. > > Ich bin kurz vorm Verzweifeln. > Wahrscheinlich sehe ich die Hand vor meinen Augen nicht und > bitte hier um Hilfe. > > Ich schreibe momentan ein Programm zur Ansteuerung eines Pyrometers. > > Dabei lese ich Strings über SWCOM ein und wandle diese in > eine Tabelle mit Zahlen um. > Bei dieser Aktion schmiert meine CC2 regelmäßig ab und ich > finde nicht heraus woran es liegen könnte. > > Kann mir jemand helfen? > > Funktion, in der CC2 abschmiert (Erklärungen unten): > <code> > function UpdateTable(byte s[]) > { > // Definition for local variables > int lI_Counter; > int lI_Column; > long lI_tempInt; > long lL_temp1; > long lL_temp2; > long lLong1; > > long lL_x; > long lL_y; > long lL_z; > > float lF_dx; > float lF_dy; > string debugout; > > // Initialization of local variables > lLong1 = 0; > lI_Column = 0; > lL_temp1 = 0; > > // Work > // Split the Line > > /*/DEBUG1: > hwcom.print2(s); > //ENDDEBUG */ > > for lI_Counter=0 ... <s[31] > { > if s[lI_Counter] == 0x2C // colon "," > { > if lI_Column == 0 > { > lL_x = lL_temp1; > } > else// if lI_Column == 1 > { > lL_y = lL_temp1; > } > lL_temp1 = 0; > lI_Column = lI_Column + 1; > /*/DEBUG2: > debugout = "X"; > str.putlong(debugout,lL_temp1); > hwcom.print(debugout); > //ENDDEBUG */ > continue; > } > else if s[lI_Counter]<0x30 or s[lI_Counter]>0x39 > { > // we do have a serious problem here ! > continue; //for now > } > else > { > lL_temp2 = lL_temp1 * ten; > > /*/DEBUG3: > debugout = ""; > str.putlong(debugout,lL_temp1); > str.put(debugout,"#"); > str.putlong(debugout,lL_temp2); > hwcom.print(debugout); > hwcom.ret(); > //ENDDEBUG */ > lL_temp1 = s[lI_Counter] - 0x30; > /*/DEBUG4: > debugout = ""; > str.putlong(debugout,lL_temp1); > hwcom.print(debugout); > hwcom.ret(); > //ENDDEBUG */ > lL_temp1 = lL_temp1 + lL_temp2; > /*/DEBUG5: > debugout = ""; > str.putlong(debugout,lL_temp1); > hwcom.print(debugout); > hwcom.ret(); > //ENDDEBUG */ > } > } > lL_z = lL_temp1; > // cut here (->next theme) > > // we do have three values "lL_x", "lL_y" and "lL_z" > > if ( lL_x | lL_y | lL_z ) == 0 > { > // "0,0,0" -> First set > // Decide to rebuild the table > gI_tabellenindex = 0; > gI_tabellenindexUsed = 0; > tabelle[0].L_offsX = 0; > tabelle[0].L_offsY = 0; > tabelle[0].L_m = 0; > //add Current Value > tabelle[gI_tabellenindex].L_x = lL_x; > tabelle[gI_tabellenindex].L_y = lL_y; > tabelle[gI_tabellenindex].L_sonst = lL_z; > > // tell the CNC, we cleared our curve > gI_BitsToCNC = gI_BitsToCNC & !CNC_bCURVE; > > } > else > { > lI_tempInt = gI_tabellenindex; //previous > //update Index and recalc steepness > gI_tabellenindex = gI_tabellenindex + 1; //->actual > // put the results into the desired shape > //add Current Value > tabelle[gI_tabellenindex].L_x = lL_x; > tabelle[gI_tabellenindex].L_y = lL_y; > tabelle[gI_tabellenindex].L_sonst = lL_z; > tabelle[gI_tabellenindex].L_offsX = tabelle[lI_tempInt].L_x; > tabelle[gI_tabellenindex].L_offsY = tabelle[lI_tempInt].L_y; > // we do need "local_dx" and "local_dy", otherwise CC2 doesnot use Float for math :-( > lF_dx = tabelle[gI_tabellenindex].L_x - tabelle[gI_tabellenindex].L_offsX; > lF_dy = tabelle[gI_tabellenindex].L_y - tabelle[gI_tabellenindex].L_offsY; > if (lF_dx == 0) lF_dx = 1; // prevent "DIV BY ZERO" > tabelle[gI_tabellenindex].L_m = 10000 * lF_dy; > tabelle[gI_tabellenindex].L_m = tabelle[gI_tabellenindex].L_m / lF_dx; > } > /*/DEBUG6: > debugout = "#"; //show me, where we are > str.putlong(debugout,lL_x); > hwcom.print(debugout); > debugout = "*"; > str.putlong(debugout,lL_y); > hwcom.print(debugout); > debugout = "@"; > str.putint(debugout,gI_tabellenindex); > hwcom.print(debugout); > debugout = "$"; > str.putlong(debugout,tabelle[gI_tabellenindex].L_m); > hwcom.print(debugout); > hwcom.ret(); > //ENDDEBUG */ > if gI_tabellenindex < 255 lI_tempInt = gI_tabellenindex + 1; > else lI_tempInt = 255; > > //Define next (LAST) Value > if (lL_x >= 9999989) gI_BitsToCNC = gI_BitsToCNC | CNC_bCURVE; > > tabelle[lI_tempInt].L_x = 9999990; > tabelle[lI_tempInt].L_y = 37; > tabelle[lI_tempInt].L_sonst = 0; > > //debug(2); > > } > </code> > > Erklärung: > Ich empfange bis zu 255 Triplets "123,234,3&lt;cr&gt;" über SWCOM. > Diese werden als string gespeichert und nach &lt;cr&gt; an die Funktion gegeben. > Dort sollen aus dem Text drei Zahlen erzeugt werden. (s.o.) > wenn ich die DEBUG-Zeilen aktiviere, sehe ich, > dass die CC2 irgendwann in DEBUG3 den ersten Faktor nicht > mehr kennt und mit Null multipliziert. > Kurz darauf ist alles zu spät und die CC2 läuft Amok. > Ich kann aber nicht ersehen warum das so ist. > > Kann mir jemand helfen? > > Herzlichen Dank, > Gordon. > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB