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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: aus 6 Real Zahlen die höchste und die niedrigste ermitteln

  1. #1
    Registriert seit
    17.07.2007
    Beiträge
    7
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Cool


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Hab da ein kleines Problem, ich möchte 6 Real Zahlen vergleichen und die höchste / niedrigste Zahl ermitteln.

    Am Ende soll das für eine Windenüberwachung dienen. Also Positionen (umdrehung der einzelnen Winde wird gezählt 6 Winden ingesamt). Die Winden sollen sich annähernd gleich schnell bewegen (Tolereanz 10 Impulse). Das heisst das die schnellste Winde abgestoppt werden soll, bis die langsamste Winde wieder aufgeholt hat.

    Meine Lösung gefällt mir da nicht so sehr, aber hier tummeln sich ja ne Menge "schlauer" Köpfe herum.


    L (Wert Winde 1)
    L (Wert Winde 2)
    > R
    L (Wert Winde 1)
    spb next2
    spa nix2
    next2: t DBx.DBDx (DB.Real Anzahl Umdrehung + Kennung Winde 1)
    spa next
    nix2: t DBx.DBDx (DB.Real Anzahl Umdrehung + Kennung Winde 2)
    next:
    L (DBx.DBDx)
    L (Wert Winde 3)
    >R
    L (Wert Winde 3)
    spb next3
    spa nix3
    next2: t DBx.DBDx (DB.Real Anzahl Umdrehung + Kennung Winde 3)
    spa next
    nix2: t DBx.DBDx (DB.Real Anzahl Umdrehung + Kennung Winde 1/2)
    next:
    usw.
    das selbe noch für die kleinste Zahl


    ich denk mal ein bissel kompliziert wie ich da ran gehe.

    Helft mir da mal mit was Schicken auf die Sprünge.

    Danke

    CPU 315 2DP Soft Step7 5.4
    Geändert von spunky (17.07.2007 um 21:38 Uhr)
    Zitieren Zitieren aus 6 Real Zahlen die höchste und die niedrigste ermitteln  

  2. #2
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Vorher sortieren-> BubbleSort-> dann ersten und letzen nehmen.

  3. #3
    spunky ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.07.2007
    Beiträge
    7
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ähm was meinste mit "Bubble Sort" ??

  4. #4
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

  5. Folgende 2 Benutzer sagen Danke zu Kai für den nützlichen Beitrag:

    Ronny1981 (14.10.2015),spunky (17.07.2007)

  6. #5
    spunky ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.07.2007
    Beiträge
    7
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    erst mal danke !!!

    muss ich morgen gleich mal testen.

  7. #6
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Bubblesort funktioniert natürlich, ist aber etwas aufwendig ((6-1)*6=30 Vergleiche) für so eine "kleine" Aufgabe. So geht es einfacher:
    max=Wert[1]
    min=Wert[1]
    for i=2 to 6 do begin
    if Wert[i]>max then max=Wert[i]
    if Wert[i]<min then min=Wert[i]
    end
    Wenn man statt der Schleife einzelne Vergleiche programmiert, sieht es ähnlich wie dein AWL aus. Die kürzeste Version entsteht, wenn man es sich zunutze macht, daß der erste Wert im Akku verbleibt:
    L #Wert1
    L #Wert2
    >R
    SPB keinTausch1
    TAK //tausche Akku1 und 2, also Wert1 wieder im Akku1
    keinTausch1: L #Wert3
    >R
    SPB keinTausch2
    TAK
    keinTausch2: L #Wert4
    >R
    SPB keinTausch3
    // usw.

  8. Folgende 3 Benutzer sagen Danke zu Zottel für den nützlichen Beitrag:

    Andre-as (20.05.2015),SIGGI (18.02.2009),spunky (19.07.2007)

  9. #7
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von spunky Beitrag anzeigen
    Hab da ein kleines Problem, ich möchte 6 Real Zahlen vergleichen und die höchste / niedrigste Zahl ermitteln.
    Hier mal ein kurzes Programmbeispiel mit Bubblesort:

    Code:
    // FC100 : Bubblesort
     
    // Datenbaustein öffnen
     
          AUF   DB   100
     
     
    // Datensatz kopieren
     
          CALL  SFC   20
           SRCBLK :=P#DB100.DBX0.0 BYTE 36
           RET_VAL:=#BLKMOV_RET_VAR
           DSTBLK :=P#DB100.DBX36.0 BYTE 36
     
     
    // Bubblesort
     
          L     P#36.0                      // Zeiger Wert 1
          LAR1  
     
          L     5
    M01:  T     #ZAEHLER_01
     
          L     #ZAEHLER_01
    M02:  T     #ZAEHLER_02
     
          L     DBD [AR1,P#6.0]             // Wert 2
          L     DBD [AR1,P#0.0]             // Wert 1
          >R    
          SPB   M03
          SPA   M04
    M03:  L     DBD [AR1,P#0.0]             // Wert 1
          T     DBD   72                    // Wert 7
     
          L     DBW [AR1,P#4.0]             // Kennung 1
          T     DBW   76                    // Kennung 7
     
          L     DBD [AR1,P#6.0]             // Wert 2
          T     DBD [AR1,P#0.0]             // Wert 1
     
          L     DBW [AR1,P#10.0]            // Kennung 2
          T     DBW [AR1,P#4.0]             // Kennung 1
     
          L     DBD   72                    // Wert 7
          T     DBD [AR1,P#6.0]             // Wert 2
     
          L     DBW   76                    // Kennung 7
          T     DBW [AR1,P#10.0]            // Kennung 2
     
    M04:  L     P#6.0                       // Zeiger Wert 1 + 1
          +AR1  
     
          L     #ZAEHLER_02
          LOOP  M02
     
          L     P#36.0                      // Zeiger Wert 1
          LAR1  
     
          L     #ZAEHLER_01
          LOOP  M01
    Gruß Kai
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien

  10. Folgende 5 Benutzer sagen Danke zu Kai für den nützlichen Beitrag:

    borromeus (18.07.2007),Nico99 (17.01.2008),Ronny1981 (14.10.2015),spunky (19.07.2007)

  11. #8
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Fast nicht verbesserbar!

  12. #9
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    Fast nicht verbesserbar!
    Hier noch eine leicht verbesserte Programmversion.

    Code:
    // FC100 : Bubblesort
     
    // Datenbaustein öffnen
     
          AUF   DB   100
     
     
    // Datensatz kopieren
     
          CALL  SFC   20
           SRCBLK :=P#DB100.DBX0.0 BYTE 36
           RET_VAL:=#BLKMOV_RET_VAR
           DSTBLK :=P#DB100.DBX36.0 BYTE 36
     
     
    // Bubblesort
     
          L     P#36.0                      // Zeiger Wert 1
          LAR1  
     
          L     5
    M01:  T     #ZAEHLER_01
     
          L     #ZAEHLER_01
    M02:  T     #ZAEHLER_02
     
          L     DBD [AR1,P#6.0]             // Wert 2
          L     DBD [AR1,P#0.0]             // Wert 1
          >R    
          SPB   M03
          SPA   M04
    M03:  L     DBD [AR1,P#0.0]             // Wert 1 
          L     DBD [AR1,P#6.0]             // Wert 2  
          T     DBD [AR1,P#0.0]             // Wert 2 => Wert 1
          TAK   
          T     DBD [AR1,P#6.0]             // Wert 1 => Wert 2
     
          L     DBW [AR1,P#4.0]             // Kennung 1
          L     DBW [AR1,P#10.0]            // Kennung 2
          T     DBW [AR1,P#4.0]             // Kennung 2 => Kennung 1
          TAK   
          T     DBW [AR1,P#10.0]            // Kennung 1 => Kennung 2
     
    M04:  L     P#6.0                       // Zeiger Wert 1 + 1
          +AR1  
     
          L     #ZAEHLER_02
          LOOP  M02
     
          L     P#36.0                      // Zeiger Wert 1
          LAR1  
     
          L     #ZAEHLER_01
          LOOP  M01
    Gruß Kai
    Angehängte Dateien Angehängte Dateien

  13. Folgende 3 Benutzer sagen Danke zu Kai für den nützlichen Beitrag:

    Ronny1981 (14.10.2015),SPS_S5_S7 (07.11.2009),spunky (19.07.2007)

  14. #10
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    // FC100 : Bubblesort
     
    // Datenbaustein öffnen
     
          AUF   DB   100
     
     
    // Datensatz kopieren
     
          CALL  SFC   20
           SRCBLK :=P#DB100.DBX0.0 BYTE 36
           RET_VAL:=#BLKMOV_RET_VAR
           DSTBLK :=P#DB100.DBX36.0 BYTE 36
     
     
    // Bubblesort
     
          L     P#36.0                      // Zeiger Wert 1
          LAR1  
     
          L     5
    M01:  T     #ZAEHLER_01
     
    M02:  T     #ZAEHLER_02
     
          L     DBD [AR1,P#6.0]             // Wert 2
          L     DBD [AR1,P#0.0]             // Wert 1
          >R    
          SPBN  M04
          L     DBD [AR1,P#0.0]             // Wert 1 
          L     DBD [AR1,P#6.0]             // Wert 2  
          T     DBD [AR1,P#0.0]             // Wert 2 => Wert 1
          TAK   
          T     DBD [AR1,P#6.0]             // Wert 1 => Wert 2
     
          L     DBW [AR1,P#4.0]             // Kennung 1
          L     DBW [AR1,P#10.0]            // Kennung 2
          T     DBW [AR1,P#4.0]             // Kennung 2 => Kennung 1
          TAK   
          T     DBW [AR1,P#10.0]            // Kennung 1 => Kennung 2
     
    M04:  L     P#6.0                       // Zeiger Wert 1 + 1
          +AR1  
     
          L     #ZAEHLER_02
          LOOP  M02
     
          L     P#36.0                      // Zeiger Wert 1
          LAR1  
     
          L     #ZAEHLER_01
          LOOP  M01
    If you open your Mind too much, your Brain will fall out.

  15. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    spunky (19.07.2007)

Ähnliche Themen

  1. Höchste Zahl auswerten
    Von Glitsch Master im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 15.09.2009, 08:24
  2. Antworten: 3
    Letzter Beitrag: 28.03.2009, 09:47
  3. Antworten: 3
    Letzter Beitrag: 28.11.2007, 13:11
  4. Mittelwertbildung aus REAL Zahlen
    Von Waelder im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 09.01.2006, 00:46
  5. OP-15 REAL Zahlen darstellen
    Von klauserl im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.10.2005, 18:04

Lesezeichen

Berechtigungen

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