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

Seite 9 von 12 ErsteErste ... 7891011 ... LetzteLetzte
Ergebnis 81 bis 90 von 117

Thema: Programmierwettbewerb, 5. Aufgabe - Inkrementalgeber Korrektur

  1. #81
    Registriert seit
    13.10.2007
    Beiträge
    12.024
    Danke
    2.784
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Alex?

    Harald
    Dann wird die besinnliche Zeit bestimmt nicht Langweilig.
    Art der Beiträge und Code, mit Sprungorgien sehen sehr nach
    dem eingeschläferten 00alex aus.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

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

    Standard

    Zitat Zitat von Mobi Beitrag anzeigen
    Siehe hier Post #8:


    Hab nur gefragt weil "ewig" auch nur 65535 Umdrehungen sein könnte .
    REAL Zahlen sind auch nur "real" ...


    Sprünge hier sind nur "if then else" -ERSATZ um bedingtausführbare Code zu überspringen !!!
    ( Die Kontrollstrukturen : Folge , Auswahl , Wiederholung - genügen um ein jedes Programm zu schreiben).

    Wie könnte man ein allgemeines Programm schreiben ohne "if then else " schreiben ? ... (sogar eine Routine/Funktionsaufruf ist ein Auswahlsprung..etc)

    (Schau mal die "if then else" SCL-Sprungorgien sogar mit innere Schleifen)

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

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    Who the fuck is Alex?
    Genau !
    Wer ist Alex?

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

    Standard

    Zitat Zitat von Sioan Beitrag anzeigen
    Genau !
    Wer ist Alex?
    Du


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

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

    Standard

    Zitat Zitat von Mobi Beitrag anzeigen
    Ich meinete damit den TE, da er der Aufgabensteller ist. Das wir es reinstellen müssen ist schon klar, alleine wegen den Danksagungen.
    Ich meine ich kann hier mit meinem Programmbeispiel genauso mit am Wettbewerb teilnehmen, wie die Anderen auch.
    Mein Baustein erhebt ja nicht den Anspruch die optimale Lösung zu sein nur weil ich die Aufgabe gestellt habe. Es ist ja durchaus möglich, dass andere Teilnehmer hier etwas besseres auf die Beine stellen.
    Durch die ganzen Beträge hier, bin ich inzwischen auch schon auf ein paar Ideen gekommen, was bei meinem Baustein noch verbessert werden könnte.

    Für mich persönlich werde ich die eingereichten Programme danach beurteilen ob sie grundlegend funktionieren und die Anforderungen erfüllen (also auch keine Abweichungen bei längerem Betrieb durch float Berechnungen) und wenn diese Voraussetzung erfüllt ist, nach dem Umfang der Funktionalität und der Bausteindokumentation (eventuell noch die Einfachheit der Lösung).

    Michi

  6. #86
    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    ; 
          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 =UBERLAUF KORRIGIEREN
    
          O(    ; 
          L     #UberL;
          SSD   16;
          L     #Quant; 
          ==D   ; 
          )     ; 
          O(    ; 
          L     #Quant; 
          NEGD  ; 
          L     #UberL;
          SSD 16;
          ==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
    Geändert von Sioan (11.12.2013 um 21:10 Uhr)

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

    Standard

    Zitat Zitat von Sioan Beitrag anzeigen
    Weis die SPS wann der Motor gestartet wird (überhaupt)?
    Wenn JA dann hat man schon ein Eingang (und eine Motordrehrichtung auch!).
    Die Drehrichtung des Motors ist in der SPS vorhanden und kann bei Bedarf auch dem Baustein übergeben werden.
    Werte vom Drehgeber kommen in entsprechenden Abständen in die Steuerung, so dass die Drehrichtung damit noch erkannt werden kann.
    In meinem Bausten darf der neue Wert nicht mehr als die Hälfte von UINT abweichen. Dh. der Sprung zwischen 2 Werten darf nicht größer als 32767 sein, da sonst ein Überlauf in die andere Richtung angenommen wird. Mit einem Eingang der Motordrehrichtung würde sich dieser Bereich noch vergrößern lassen.

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

    Standard

    MUSS der Überlauf (#UberL) zyklisch zu Null gebracht werden ?
    ... so daß der DINT Maximum nicht überschritten wird ?


    Geändert von Sioan (11.12.2013 um 21:43 Uhr) Grund: ?

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

    Standard

    Zitat Zitat von Sioan Beitrag anzeigen
    MUSS der Überlauf (#UberL) zyklisch zu Null gebracht werden ?
    ... so daß der DINT Maximum nicht überschritten wird ?
    Das weiß ich nicht ob das notwendig ist in deinem Progamm um die Aufgabenstellung zu erfüllen.

    Ich habe dein Programm bisher noch nicht zm Erstellen bekommen, da ich mit B&R Automation Studio arbeite und dieses nur AWL Code nach IEC 1131-3 untersützt.
    Das letzte mal habe ich vor 15 Jahren einen AWL Code geschrieben und ich habe jetzt nicht wirklich die Zeit mich mit den beiden AWL Syntaxen auseinanderzusetzen.
    Hast du eine Möglichkeit das Programm auch in IEC 1131-3 Code umzuwandeln? Ich würde es zumindest gerne einmal auf meiner Steuerung teste.

    Off Topic:
    Wird AWL heute eigentlich wirklich noch in der Realität verwendet, oder geht es hier nur um die Herausforderung dies auch in AWL zu lösen?

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wäre mir lieber dir den Algorithmus zu beschreiben als ... übersetzen ! (ist ganz einfach).

    Off Topic:

    Keine Ahnung ! Habe keine SPS Praxis !
    AWL soll aber auch bei den neueren Siemens CPU-s zumindest der SCL gleichwertig sein ... der KOP , FUP wird AWL immer überlegen (kann/könnte einfach mehr) !

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