Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 2 von 2

Thema: IF-Verzweigung wird nicht berücksichtigt

  1. #1
    Registriert seit
    29.06.2015
    Beiträge
    33
    Danke
    2
    Erhielt 7 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,
    ich benutze einen Lenze 3200 Motion mit einem Lenze 8400. Das alles ist aber für das folgende Problem 2. oder eher 3. rangig. Programmiert wird im Lenze PLC 3.8, der aber identisch mit Codesys 3.5 ist.

    Ich erhalte von einem Inverter einen 32bit Motor-Positionswert. Eine Motorumdrehung sind 65536 Inkremente. Alles was folgender Code macht ist folgendes:
    Umdrehungen können eingegeben werden. Diese werden in Inkremente umgerechnet. Daraus wird ein Soll-Positionswert errechnet (aktueller Motorpositionswert + Umdrehungen in Inkrementen).
    Dann wird der Motor beschleunigt. Je näher der Motor am Sollwert ist, desto langsamer wird er um besser ausregeln zu können (x*x/2= Geschwindigkeit in Prozenten, x sind die verbleibenden Umdrehungen).
    Das Funktioniert auch super. Wenn x*x/2 größer 95 ist setzte ich die Geschwindigkeit per Hand auf 95. (Alles auch negativ, da ich auch Rückwärts fahren möchte).


    Was jetzt aber passiert ist folgendes: Fahre ich mehr als 15 Umdrehungen wird in meine Geschwindigkeit plötzlich der Wert x*x/2 geschrieben, wodurch werte viel Größer 100 entstehen. Mein Motor schaltet dann glücklicherweise automatisch ab.

    Die folgende Codestelle zeigt die Stelle an der mein Programm hängen bleibt. Meistens steht dann etwas wie 5000 in wSetSpeed.


    Code:
    If bExecute Then
       Case Ablauf Of
    
       1:
       diRestU:=(diIncSoll-diActInc)/65536;                                          //Hier werden die verbleibenden Umdrehungen berechnet. diIncSoll ist der Sollwert, diActIns ist die Motorposition
       fFaktorSpeed:=diRestU*(ABS(diRestU)/2.0);                               //Hier wird die Sollgeschwindigkeit in Prozenten berechnet
       IF fFaktorSpeed >0 THEN
         fFaktorSpeed1:=fFaktorSpeed+0.5;                                          //Wenn Geschwindigkeit kleiner 0.5 Prozent, dann 0.5 Prozent
         ELSE
            fFaktorSpeed1:=fFaktorSpeed-0.5;   
       END_IF
    
       IF fFaktorSpeed1 > 95 THEN                                                      //Wenn Geschwindigkeit größer 95%, dann 95%
         wSetSpeed:=95;
        ELSE
           wSetSpeed:=fFaktorSpeed1;                                                 //Sonst Geschwindigkeit wie berechnet
       END_IF
    
       IF fFaktorSpeed1 < -95 THEN
           wSetSpeed:= -95;                                                                //In dieser Verschachtelung Frage ich mich wie es passieren kann das wSetSpeed größer 95 oder kleiner -95 werden kann.
       ELSE                                                                                        //Ich sehe keine Möglichkeit dafür, dass wSetSpeed fFaktorSpeed1 zu Gesicht bekommt, wenn fFaktorSpeed1 zu groß ist
           wSetSpeed:=fFaktorSpeed1;                                                 // Aber genau das passiert
       END_IF
    
       IF diRestU < 0.0005 AND diRestU > -0.0005 THEN                       //Die Position gilt dann als erreicht, wenn die verbleibenden Umdrehungen kleiner als 0.0005 sind. (Das sind Grob 0,18°, was bei weniger als 15 
           wSetSpeed:=0;                                                                    //Umdrehungen auch super klappt
           IF wActSpeed=0 THEN
               Ablauf:=2;
           End_IF
      End_If
    
    END_CASE
    END_IF
    Zitieren Zitieren IF-Verzweigung wird nicht berücksichtigt  

  2. #2
    b4w3f ist offline Benutzer
    Themenstarter
    Registriert seit
    29.06.2015
    Beiträge
    33
    Danke
    2
    Erhielt 7 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich bin soooo doof. Wenn man Stunden auf den gleichen Text starrt und sich dann entscheidet Hilfe zu suchen.
    wSetSpeed wird am Ende immer auf fFaktorSpeed1 gesetzt. Thema darf geschlossen werden....

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 19.05.2015, 13:03
  2. Sinn einer Verzweigung in FUP
    Von clumsi im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 05.04.2013, 15:46
  3. Weckalarm wird nicht bearbeitet
    Von Uwe16 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 19.04.2012, 16:49
  4. Wie krieg ich diese Verzweigung weg?
    Von DjTommyB im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 30.03.2010, 15:43
  5. Antworten: 2
    Letzter Beitrag: 02.07.2007, 19:57

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •