Re: Bug in Software - aber wo? Kategorie: Programmierung (von Jacke - 17.01.2005 14:04) | ||
Als Antwort auf Re: Bug in Software - aber wo? von Horst - 17.01.2005 13:46 | ||
| ||
> > Hallo C2-Experten! > > > > Nun habe ich mit Hilfe einiger Beispielprogramme mein Problem des Ansteuerns eines Frequenz- > > umrichters über zwei Potis leidlich hinbekommen. �ber ein Poti wird die Vorgabe der Geschwindikeit > > des FU vorgegeben (Ausgabe auf Analogausgang PLM) das andere Poti ist die Zeitvorgabe. > > Ich habe jetzt das ganze Wochenende damit zugebracht den Fehler: > > fu(94) : ; expected > > > > ohne Kenntnis der Programmierung auszumerzen. Finde allerdings den Fehler nicht. > > Verstehen kann ich es auch nicht, da es im einem anderen Programmteil funzt. > > hier der code: > > > > > > /* Projekt Ansteuerung Frequenzumrichter */ > > > > /* Autor: jacke */ > > > > /* Eine Steuerung für einen Frequenzumrichter > > /* Vorgabe der Ausgangsspannung und der Zeit über Potis > > /* Erweiterung durch Multiplexer auf 2x 7 Analogeingänge*/ > > > > > > > > > > > > //------------------------------------------ > > function beep(int ton, int laenge,int pause) > > //------------------------------------------ > > { > > plm.beep(ton); > > sleep laenge; > > plm.beep(plm.TONE_OFF); // Signal abgeschaltet, Analogport wird benutzt > > sleep pause; > > } > > > > function SetFu(int Kanal,float Value) > > { > > > > int outvalue; > > string s1; > > > > // was auf den ausgang geht > > > > outvalue=700+(21*Value); > > plm.out(1,outvalue); > > lcdext.goto(2,0); > > s1 = "fa="; > > str.putfloatf(s1,Value,2); > > lcdext.print(s1) ; > > } > > > > //--------- > > thread main > > //--------- > > { > > float x; > > string s1; > > float voltage; > > string output; > > float zeit; > > string time; > > int starten; > > string anfangen; > > > > > > > > > > // Initial LCD > > lcdext.init(); > > wait lcd.ready(); > > lcdext.clear(); > > lcdext.home(); > > lcdext.goto(1,0); > > > > // initialisieren PLM > > plm.settimebase(0,1); //Base_800 ns > > plm.setmode(0,0); //Mode=digital > > plm.setperiod(0,2500); //Periodenlänge= > > SetFu(0,0); //Startpunkt > > > > > > loop > > { > > > > // Einlesen der Eingänge > > //Spannung > > > > voltage = ports.adc(1) * 0.004; // 4 mV per ADC Digit An Eingang A1 > > output = "Ve="; > > str.putfloatf (output, voltage, 2); > > lcdext.goto(1,0); > > lcdext.print(output); > > > > // Zeit > > zeit = ports.adc(0); // Zeit entspricht Spannung am Eingang A0 > > time = "t="; > > str.putfloatf (time, zeit, 2); > > lcdext.goto(1,8); > > lcdext.print(time); > > > > sleep zeit*10; > > > > // Einlesen der digitalen Eingänge > > //Start > > > > starten = ports.get(0) // High-Pegel auf E0 > > anfangen = "t="; > > str.putfloatf (anfangen, starten, 2); > > lcdext.goto(2,8); > > lcdext.print(anfangen); > > > > > > //Ausgabe auf Ausgang > > SetFu(0,voltage); > > > > > > > > } > > } > > > > > > > > //ENDE > > > > > > > > der Fehler wird in der Zeile: > > > > anfangen = "t="; > > > > angezeigt. > > > > Drei Anzeigen auf dem Display funktionieren, die vierte, unten links, Variable "anfangen" > > scheint wegzulaufen, d.h. es schreibt das Display in Richtung links voll (sieht man aber nicht). > > > > > > > > > > Dann hab ich noch eine Herausforderung: > > wie repariert man einen Analogausgang? Hab den PAD3 / 0 zerschossen. > > > > > > Schon mal danke fürs lesen - gro�en Dank fürs Helfen! > > > > > > jacke > > > > hallo jacke, > > in der Zeile obendrüber wo es hei�t: starten = ports.get(0) // High-Pegel auf E0 > fehlt ein Semikolon hinter der letzten Klammer. > > beim Reparieren von PAD3/0 kann ich leider nichts dazu sagen. > > > Gru� Horst > Nimms mir nicht übel - du bist ein Fuchs!! Danke!! (wer lesen kann ist klar im Vortei!) | ||
Antwort schreiben Antworten: Re: Bug in Software - aber wo? (von Horst - 18.01.2005 10:33) |