Bug in Software - aber wo? Kategorie: Programmierung (von Jacke - 17.01.2005 13:37) | ||
| ||
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 | ||
Antwort schreiben Antworten: Re: Bug in Software - aber wo? (von André H. - 21.01.2005 17:21) Re: Bug in Software - aber wo? (von Horst - 17.01.2005 13:46) Re: Bug in Software - aber wo? (von Jacke - 17.01.2005 14:04) Re: Bug in Software - aber wo? (von Horst - 18.01.2005 10:33) |