Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

if..else Kategorie: Programmierung (von Jacke - 18.01.2005 11:48)
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.0
Hallo,

ich hab schon wieder eine Herausforderung.
Mein Programm funzt soweit, dass es den Eingang auslieÃ?t, jedoch stoppt es nicht
den Programmablauf, sondern spilet sofort die Melodien  - ich kann sie nicht mehr hören.


/* Projekt Ansteuerung Frequenzumrichter */
/* Beginn 13.01.2005     */
/* Autor: S. Golebniak       */

/* HW-Voraussetzung:
/* Ein Frequenzumrichter
/* über PLM0 soll alle 20 ms ein Impuls gehen.
/* Die Länge des Impusl ist von 1.1ms linker bis 2.1ms rechter anschlag */




//------------------------------------------
function beep(int ton, int laenge,int pause)
//------------------------------------------
{
  plm.beep(ton);
  sleep laenge;
  plm.beep(plm.TONE_OFF); // Signal abgeschaltet, Analogport wird nebutzt
  sleep pause;
}

function SetFu(int Kanal,float Value)
{
   // 0=1.1ms = 1375 Impulse * 800 ns  Praxis 700 * 800 = 0.56ms
   // 50=1.6ms = 2000 Impulse * 800 ns
   // 100=2.1ms = 2625 Impulse * 800 ns Praxis 2800 *800ns = 2.24ms
   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 start;
  string anfang;
 

  // Initial LCD
  lcdext.init();
  wait lcd.ready();
  lcdext.clear();
  lcdext.home();
  lcdext.goto(1,0);
 
  // initial PLM
  plm.settimebase(0,1); //Base_800 ns
  plm.setmode(0,0); //Mode=digital
  plm.setperiod(0,2500); //Periodenlänge=Base_800 ns * 25000 = 20 ms oder 50 Hz
  SetFu(0,0); //Servomitte
  //ports.set(8,0);

  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);
   
   
   
    // Einlesen der digitalen Eingänge
      //Start
   
    start = ports.get(8);   // High-Pegel auf E0
    anfang = "p=";
    str.putfloatf (anfang, start, 2);
    lcdext.goto(2,8);
    lcdext.print(anfang);

   
    //Ausgabe auf Ausgang
    SetFu(0,voltage);

    if ports.get(8) >= 0
       sleep zeit*1000;
    else
    {
 
// CALLING
  melody.good_bad_ugly();
  melody.pink_panther();

}

  }
}

//ENDE



ich hatte es auch in der fprm versucht einen anderen thread aufzurufen geht aber nicht.

Wird der thread in einem neuen Modul definiert oder im selben?

 if ports.get(8) >= 0
       sleep zeit*1000;
    else
run = beepen

da gibt es bei beepen immer eine Fehlermeldung, ebal ob der thread beepen im selben Modul
 oder in einen eigenen untergebracht ist.

Wenn ich also Port 8 mittels Sapnnung  auf 0 setze bekomme ich sofort diese furchtbare Melodie.
Gedacht ist das ganze um über Port 8 das Programm zu stoppen, über Port 9 Pause - das aber erst
 wenn ichs kann.

Danke schonmal!



    Antwort schreiben


Antworten:

Re: if..else (von Jacke - 19.01.2005 16:45)
    Re: if..else (von André H. - 21.01.2005 17:51)
    Re: if..else (von Hans - 19.01.2005 17:52)
        Re: if..else (von Jacke - 19.01.2005 18:11)