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

unerwünschter Pilgerschritt Kategorie: Programmierung (von Stefan - 7.12.2004 17:08)
Ich nutze:
C164CI-ControllerBoard, CC2-Application-Board, OSOPT V3.0
Hallo Leute,

meine C-Control wird als Impulsgeber fĂĽr ein Schrittmotorenapplikation eingesetzt.
Die Impulse werden über den Zählereingang erfasst.
Der Motor soll eine vorgegebene Schrittzahl in die eine Richtung laufen unnd dann die gleich
Schrittzahl in die entgegengesetzte Richtung.
Leider zeigt sich so etwas wie eine Art Pilgerschritt - will heissen die eine Richtung wird etwas
mehr bevorzugt, als die andere.

Wie kann ich die Steuerung (Programm) dazu bringen, links wie rechts gleich weit "zu laufen" ?

Die Externe Anzeige zeigt, soweit ich sehe, keine Abweichung.

Hier der Quellcode:


/********************************
    Port8.c2
    Interrupt-Pulszählung
    Eingänge P1H.0 und P1H.1
   
    richtung: r
    schrittzahl: sr
********************************/

//------------
  thread main
//------------
{
  long z1;
  int r,sr,p,EndEL;
      r=0;                                 //Drehrichtung links
      p=2;      // ist port 2
      sr=300;  // schrittzahl
      plm.settimebase(0,plm.BASE_400);
      plm.setmode(0,0);
      plm.setperiod (0,100000);
      plm.out (0,10);
      pcflcd.setpcf(1);// I2C LCD-Anzeige adressieren
      pcflcd.init();
      sleep 35;
      pcflcd.clear();
      pcflcd.setLight(1);         //LCD-Beleuchtung: 0=AUS, 1=EIN
     
  loop
    {
      EndEL =(ports.get(9) and 1);
      if EndEL == 0 z1=0;         //Näh.Schalter stellt Zähler auf Null
      if (z1<=sr) & (r==0) z1 = z1 + ports.getcount (p);
        else r=1;
        ports.set(6,r);      //Ausgabe des Richtungsbits
        {
          z1 = z1 - ports.getcount (p);

          EndEL =(ports.get(9) and 1);
          if EndEL == 0 z1=0;     //Näh.Schalter stellt Zähler auf Null

          pcflcd.goto(1,0);
          pcflcd.ziff(r);          //Testanzeige des richtungsbits
          pcflcd.ziff(EndEL);      //Testanzeige der Nullstellers
          ports.set(6,r);     //Ausgabe des Richtungsbits

          if z1 <= -sr r = 0;

          ports.set(6,r);       //Ausgabe des Richtungsbits
          pcflcd.goto(3,0);
          pcflcd.zahl(z1);
        }
    }
}


PS: Wie bringe ich den Quellcode richtig (mit Tags) in dieses Fenster ???


GrĂĽsse ....Stefan


    Antwort schreiben


Antworten:

Re: unerwünschter Pilgerschritt (von Matthias Koch - 8.12.2004 21:11)
    Re: unerwünschter Pilgerschritt (von Stefan - 9.12.2004 11:39)
        Re: unerwünschter Pilgerschritt (von Felix W. - 9.12.2004 14:06)
            Re: unerwünschter Pilgerschritt (von Stefan - 9.12.2004 20:06)
                Re: unerwünschter Pilgerschritt (von Matthias Koch - 9.12.2004 21:54)
                    Re: unerwünschter Pilgerschritt (von Felix W. - 9.12.2004 22:58)
                       Re: unerwünschter Pilgerschritt (von Felix W. - 9.12.2004 23:08)
                          Re: unerwünschter Pilgerschritt (von Stefan - 12.12.2004 19:27)