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

Seite 7 von 12 ErsteErste ... 56789 ... LetzteLetzte
Ergebnis 61 bis 70 von 117

Thema: Programmierwettbewerb, 5. Aufgabe - Inkrementalgeber Korrektur

  1. #61
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    756
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Mobi Beitrag anzeigen
    Warum Ungenauigkeit und warum REAL? Man muss doch nur hoch- oder runterzählen.
    Weil ich gehofft hatte, damit eine einfachere Lösung hinzukriegen als auf dem durch die Aufgabenstellung vorgegebenen Weg. Habe mich aber getäuscht.

  2. #62
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.297
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Deswegen muss dann auch die Zykluszeit mitspielen, damit man jede Änderung des Wertes mitbekommt und nicht große Sprünge bekommt.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

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

    Standard

    (...nur) Eine Idee :
    IN-Parameter :Unkorrigierter Datenwert
    Motordrehrichtung

    OUT-Parameter : Korrigierter Wert KW

    STAT:

    Algorithm :

    Unkorrigierter Datenwert am Zyklusende extra speichern . (zB als UD0)
    Falls Motordrehrichtung R ( aus Links oder Rechts , als Bool speichern) UND
    Aktueller Unkorrigierter Datenwert < UD0
    jedesmal 65536 einem Zwieschenspeicher dazu addieren ( in einem Speicher wo das Inkrementalabstand zu einem Absolutabstand gerechnet wird ). Zwieschenspeicher ZS .

    Korrigierter Datenwert (KW) = ZS +(ZS/100) ... als DWORD in einem Speicher KW ...als WORD transferieren (als schnellere 65536-MOD Funktion hier passend) ! ( ganze Arithmetik mit DWORD )

    Falls Motordrehrichtung L ... siemetrisch anpassen .

    Also aus dem Inkrementalen Unkorrigierten Datenwert ein Absolutwert ausrechnen und mit dem rechnen... etc !

    (alles AWL)

  4. #64
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.297
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Wie wäre es mit schreiben und hochladen?
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

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

    Standard

    Sobald ich Zeit habe !
    (Falls ich gemeint war!)

  6. #66
    Registriert seit
    06.10.2003
    Beiträge
    3.447
    Danke
    454
    Erhielt 509 Danke für 411 Beiträge

    Standard

    Hallo Mobi,

    sorry, Einsenden habe ich mit Veröffentlichen gleichgesetzt. War das nicht schon immer so? Naja, wenigstens war ich nicht der Erste. Löschen bringt jetzt wohl auch nichts mehr. Ignoriert meine Lösung einfach beim Bewerten, habe kein Problem damit.

    Andererseits gibt es doch viele Wege, die zum Ziel führen. Genauigkeitsverluste wird es sicherlich bei jeder Umwandlung geben. Die Frage ist nur, an welcher Stelle man sie am leichtesten tolerieren kann.

    Zitat Zitat von Mobi Beitrag anzeigen
    .. Man muss doch nur hoch- oder runterzählen.
    Wie willst du das mit "nur" Zählen hinbekommen?


    Gruß, Onkel
    Geändert von Onkel Dagobert (05.12.2013 um 18:52 Uhr)
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  7. #67
    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 1:100 -> Quant=100)
    END_VAR
    VAR_OUTPUT
      KorrW : WORD ;    //KORRIGIERTER WERT
    END_VAR
    VAR
      SetFP : BOOL ;    //Set Flanke
      Preset : DINT ;    //Verschiebung
      UberL : DINT ;    //Überlaufspeicher
      VorW : DINT ;    //Vorzyklus Wert (unkorrigiert)
    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    ; 
          L     L#-32768; 
          <D    ; 
          )     ; 
          U     #MotDR; 
          SPBN  IF2; //    "IF THEN ELSE" - Ersatz ! 
          L     #UberL; 
          +     L#65536; 
          T     #UberL; 
    IF2:  NOP   0; 
    
    
          U(    ; 
          L     #AktW; 
          L     #VorW; 
          -D    ; 
          L     L#32768; 
          >D    ; 
          )     ; 
          UN    #MotDR; 
          SPBN  IF3; //    "IF THEN ELSE" - Ersatz ! 
          L     #UberL; 
          +     L#-65536; 
          T     #UberL; 
    IF3:  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

    TEST.txt
    Geändert von Sioan (11.12.2013 um 10:36 Uhr) Grund: Codestück zum TESTEN dazu geschrieben / "Sprungorgien" reduzieren

  8. #68
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.297
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    @Onkel Dagobert: Ich meinete damit den TE, da er der Aufgabensteller ist. Das wir es reinstellen müssen ist schon klar, alleine wegen den Danksagungen. Also ich hab es mit "nur" Zählen hinbekommen, vorausgesetzt natürlich, der Baustein bekommte jede Wertänderung um eine Einheit mit.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

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

    Standard

    Reicht es wenn das Signal vom Geber MINDESTENS einmal pro 0-65536 Periode gelesen wird oder soll man mit "trends(differentiale)" und/oder Stochastik programmieren ?

    Die Motor Drehrichtung könnte man auch aus 3 Geberwerte ausrechnen ... falls man mit Eingänge sparen soll !


  10. #70
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.297
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also ich zähle einfach nebenbei einen Zähler runter und wenn der bei 0 angelangt ist, zähle ich einen hoch oder runter je nach Drehrichtung. Und dann beginnt der Zähler wieder von neuem.

    Warum sollte man mit Eingänge sparen? Kostet doch kein Geld.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

Ä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
  •