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

Seite 10 von 12 ErsteErste ... 89101112 LetzteLetzte
Ergebnis 91 bis 100 von 117

Thema: Programmierwettbewerb, 5. Aufgabe - Inkrementalgeber Korrektur

  1. #91
    Registriert seit
    19.01.2010
    Ort
    Graz / Austria
    Beiträge
    100
    Danke
    6
    Erhielt 10 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Onkel Dagobert,

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    Eine Ungenauigkeit bei der Real-Berechnung könnte bei ungünstigen Werten bei mir möglich sein. Einen Fehler, welcher sich mit jeder Undrehung aufsummiert, kann ich jedoch ausschließen.
    Ich habe deinen Baustein jetzt einmal etwas weiter laufen lassen und je länger er läuft, desto größer wird die Abweichung.
    Das bedeutet der Fehler summiert sich fortlaufend auf. Siehe auch den Screenshot mit 501 Umdrehungen aus meinem Test.

    Michi
    Angehängte Grafiken Angehängte Grafiken

  2. #92
    Registriert seit
    05.12.2013
    Ort
    Graz / Austria
    Beiträge
    149
    Danke
    9
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Wenn man #Quant als Variable ( nicht als Konstante ) eingibt ... könnte man "kurvenscheiben" simulieren ... (


  3. #93
    Registriert seit
    06.10.2003
    Beiträge
    3.403
    Danke
    447
    Erhielt 502 Danke für 406 Beiträge

    Standard

    Hallo Michael,

    ich hatte auch mal deinen und meinen Baustein laufen lassen und ich habe auch bemerkt dass eine Abweichung ensteht. Allerdings bin ich der Sache bisher nicht weiter nachgegangen.

    Was wahrscheinlich sein wird ist dass mein Übersetzungsverhältnis Rundungsfehler enthält. Ich berechne ja "Y_BEREICH := RANGE * A DIV B". Ursprünglich hatte ich die Übersetzung als Real-Parameter übergeben, diese Berechnung mit Realzahlen realisiert und das Ergebnis wieder nach DINT gewandelt. Wenn ich mal wieder Muse habe, nehme ich mir das Problem noch mal vor.

    Kann mir jemand eine Empfehlung für ein einfaches Video-Capture-Tool geben? Ich hatte eine kleine Visu mit Zeigerinstrumenten gemacht, an der man die Umdrehungen und Werte gut beobachten kann. Vielleicht kann ich das dann mal irgendwo hochladen.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  4. #94
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    Kann mir jemand eine Empfehlung für ein einfaches Video-Capture-Tool geben? Ich hatte eine kleine Visu mit Zeigerinstrumenten gemacht, an der man die Umdrehungen und Werte gut beobachten kann. Vielleicht kann ich das dann mal irgendwo hochladen.
    Wenn Du Win7 hast, ist die psr.exe serienmäßig dabei. Hier ein Beispiel von vollmi.

  5. #95
    Registriert seit
    05.12.2013
    Ort
    Graz / Austria
    Beiträge
    149
    Danke
    9
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Code:
    FUNCTION_BLOCK FB 1TITLE =
    VERSION : 0.1
    
    
    
    
    VAR_INPUT
      Set : BOOL ;    //REFERENTIEREN
      MotDR : BOOL ;    //Motor Drehrichtung(L,R)
      AktW : DINT ;    //Aktueller Wert (unkorrigiert)
      Quant : DINT ;    //? (zB Quant=100)
    END_VAR
    VAR_OUTPUT
      KorrW : WORD ;    //KORRIGIERTER WERT
    END_VAR
    VAR
      SetFP : BOOL ;    //Set Flanke
      UberL : DINT ;    //Überlaufspeicher
      VorW : DINT ;    //Vorzyklus Wert (unkorrigiert)
      PRESET : DINT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =PRESET
    
    
          U     #Set; 
          FP    #SetFP; 
          SPBN  IF1; //    IF THEN ELSE -Ersatz 
          L     #AktW; 
          T     #PRESET; 
          L     L#0; 
          T     #UberL; 
    IF1:  NOP   0; 
    NETWORK
    TITLE =UBERLAUF
    
    
          U(    ; 
          L     #AktW; 
          L     #VorW; 
          <D    ; 
          )     ; 
          U     #MotDR; 
          SPBN  IF2; //   IF THEN ELSE -Ersatz 
          L     #UberL; 
          +     L#65536; 
          T     #UberL; 
    IF2:  NOP   0; 
    
    
          U(    ; 
          L     #AktW; 
          L     #VorW; 
          >D    ; 
          )     ; 
          UN    #MotDR; 
          SPBN  IF3; //    IF THEN ELSE -Ersatz
          L     #UberL; 
          +     L#-65536; 
          T     #UberL; 
    IF3:  NOP   0; 
    NETWORK
    TITLE =UBERLAUF KORRIGIEREN
    
         O(    ; 
         L     #UberL;
         SSD   16;
         L     #Quant; 
         ==D   ; 
         )     ; 
         O(    ; 
         L     #UberL;
         SSD 16;
    ​     L     #Quant; 
         NEGD  ;
         ==D   ; 
         )     ; 
         SPBN  IF4; //    IF THEN ELSE -Ersatz
         L     L#0; 
         T     #UberL; 
    IF4: NOP   0; 
    NETWORK
    TITLE =KORREKTUR
    
    
          L     #AktW; 
          L     #UberL; 
          +D    ; 
          L     #PRESET; 
          -D    ; 
          L     #Quant; 
          /D    ; 
          L     #AktW; 
          +D    ; 
          T     #KorrW; 
    NETWORK
    TITLE =Vergleich ermoglichen
    
    
          L     #AktW; 
          T     #VorW; 
    END_FUNCTION_BLOCK
    
    
    
    So sieht man besser , warum man "Sprungorgien" in AWL erzeugen MUSS !
    AWL muss nicht unbedingt schwer LESBAR sein ... veraltet auch nicht !
    Könnte BITTE jemand es nach SCL portieren ?

    Geändert von Sioan (14.12.2013 um 22:30 Uhr) Grund: ENDGÜLTIGE Form !

  6. #96
    Registriert seit
    13.10.2007
    Beiträge
    12.026
    Danke
    2.784
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard

    Liebe Kollegen, ab hier ist alles in den SV verschoben, da das Niveau mal wieder
    weit Weg, jeder Zivilisierter Umgangsform war.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  7. #97
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von rostiger Nagel Beitrag anzeigen
    Liebe Kollegen, ab hier ist alles in den SV verschoben, da das Niveau mal wieder
    weit Weg, jeder Zivilisierter Umgangsform war.
    Warum habe ich darauf gewartet?

    Ein kleiner Hinweis:
    http://de.wikipedia.org/wiki/Eigenschaftswort

    Helmut von der Reparatur ist ein Held.


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  8. #98
    Registriert seit
    05.12.2013
    Ort
    Graz / Austria
    Beiträge
    149
    Danke
    9
    Erhielt 2 Danke für 2 Beiträge

    Standard

    ... der Motor hat einem vonn 3 Zustände L (links) , R(rechts) ,S(stop) !

    Ich glaube man soll sie (L,R,S) unbedingt beachten , und man soll es auch so programmieren das es wenn S(stop) gilt und man die Achsen mit der Hand innerhalb gewisser Toleranzen bewegt den errechnete pseudo-absolutwert nicht verloren geht ...

    So wie es jetzt ist ,das Programmchen funktioniert auch , aber an gewisse Positionen bei S(stop) eine 1 Inkrementbewegung kann stören ...etc.

    PS: Wahrlich wenn man es darauf kommt ist es eine nicht so leichte ... Aufgabe !

    Geändert von Sioan (16.12.2013 um 20:03 Uhr) Grund: Irrtum gelöscht

  9. #99
    Registriert seit
    05.12.2013
    Ort
    Graz / Austria
    Beiträge
    149
    Danke
    9
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Falls jemand ein BUG findet soll es nicht für sich behalten !

  10. #100
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Sioan Beitrag anzeigen
    Code:
    
          U     #Set; 
          FP    #SetFP; 
          SPBN  IF1; //    IF THEN ELSE -Ersatz 
          L     #AktW; 
          T     #PRESET; 
          L     L#0; 
          T     #UberL; 
    IF1:  NOP   0; 
    ...
    Bevor Du das hier noch weiter verbreitest - das ist kein IF-THEN-ELSE-Ersatz, sondern entspricht nur einem IF-THEN ohne ELSE.
    Alles was bei Dir ab der Marke IFx folgt, wird immer verarbeitet, egal ob die Bedingung erfüllt wird oder nicht. Ein ELSE-Zweig würde aber nur bei Nichterfüllung der Bedingung bearbeitet werden! Auch wenn Dir das vlt. bewußt ist, vielen Anfängern bestimmt nicht.

    Und btw - warum benötigt das SET 'ne Flanke? Ist doch irgendwie überflüssig, oder?

  11. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Sioan (16.12.2013)

Ähnliche Themen

  1. Programmierwettbewerb, 4. Aufgabe
    Von Onkel Dagobert im Forum Stammtisch
    Antworten: 6
    Letzter Beitrag: 15.12.2011, 18:57
  2. Programmierwettbewerb, 3. Aufgabe
    Von Chräshe im Forum Stammtisch
    Antworten: 7
    Letzter Beitrag: 05.12.2011, 20:43
  3. Programmierwettbewerb, 2. Aufgabe
    Von LargoD im Forum Stammtisch
    Antworten: 14
    Letzter Beitrag: 02.08.2011, 22:27
  4. Bitte um korrektur
    Von Arnold999 im Forum Simatic
    Antworten: 34
    Letzter Beitrag: 15.06.2010, 21:21
  5. Mechanische Korrektur
    Von PG710 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 20.11.2008, 15:26

Stichworte

Lesezeichen

Berechtigungen

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