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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: Insertionsort mit SCL

  1. #11
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Durch die 2000 Werte dauert die Auswertung in einer einzigen While-Schleife innerhalb eines Zyklus zu lange.
    Du mußt das Ganze aufteilen, das hast du ja schon richtig erkannt.
    Vielleicht postest du mal den Code des bisherigen Algorithmus, dann kann man mal darüber diskutieren, welche Aufteilung am sinnvollsten ist und wie man es hinbekommt.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  2. #12
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Zitat Zitat von Vokal12 Beitrag anzeigen
    wegen Zykluszeitüberschreitung

    Ich behaupte einfach mal, ohne das Programm zu kennen, mit IF-Anweisungen wird es nicht so viel schneller.
    Das Grauen lauert in der Zwischenablage !!

  3. #13
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Zitat Zitat von dtsclipper Beitrag anzeigen
    Ich behaupte einfach mal, ohne das Programm zu kennen, mit IF-Anweisungen wird es nicht so viel schneller.
    Darum geht es dabei nicht, man muß den Algorithmus auf mehrere Zyklen aufteilen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #14
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Zitat Zitat von Vokal12 Beitrag anzeigen
    hätte ich gern einen Anfang der Lösung mit IF-Anweisung.
    mit For und While ist mein Simulator "rot"
    Versuch mal die Farbeinstellung deines Monitors zu ändern, vielleicht wirds dann besser.
    mfG Aventinus

  5. #15
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Durch die 2000 Werte dauert die Auswertung in einer einzigen While-Schleife innerhalb eines Zyklus zu lange.
    Du mußt das Ganze aufteilen, das hast du ja schon richtig erkannt.
    Vielleicht postest du mal den Code des bisherigen Algorithmus, dann kann man mal darüber diskutieren, welche Aufteilung am sinnvollsten ist und wie man es hinbekommt.
    Es wäre auch denkbar, da er ja anscheinend mit PLCSIM arbeitet, und das ist ja doch einigermaßen schnell, dass einfach die Abbruchbedingung seine While-Schleife nicht erfüllt wird. Dann sollte zwar irgend ein Fehler von wegen Bereichslängenfehler auftreten. Aber da ich von den Programmierkünsten des TE keine besonders hohe Meinung hab kann das ja auch danebengegangen sein.

    Vielleicht zählt er die Zeigervariable auch nicht hoch....
    mfG Aventinus

  6. #16
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Darum geht es dabei nicht, man muß den Algorithmus auf mehrere Zyklen aufteilen.
    Jep. Aber sowohl bei der CASE/WHILE - Version als auch bei reinem IF.
    Das Grauen lauert in der Zwischenablage !!

  7. #17
    Vokal12 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.10.2013
    Beiträge
    27
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    for i :=1 to 2000 do;
    help := Tab[i];
    j := i;
    while (j > 0 AND Tab[j-1] > help)
    Tab[j] := Tab[j-1];
    j:=j-1;
    end_while;
    Tab[j] := help;
    end_for;

  8. #18
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Hab ichs mir gedacht. Ein Genie der ohne Kommentare und Einzüge ein Programm lesen kann.
    Code:
    // Passenden Platz zum Einfügen suchen
    for  i ‹= 2000 do; 
         help := Tab[i];  
         j := i;
         // Tabelle schieben um freien Platz für neuen Wert zu erhalten
         while (j > 0 AND Tab[j-1] > help)
              Tab[j] := Tab[j-1];
              j:=j-1;
         end_while;
         Tab[j] := help;
    end_for;
    Mich wundert, dass du den Platz mit einer Zählschleife und nicht mit einer While-Schleife suchst. Wenn du den Platz gefunden hast bist du ja fertig.

    Also While-Schleife oder dann zumindest EXIT.
    mfG Aventinus

  9. Folgender Benutzer sagt Danke zu Aventinus für den nützlichen Beitrag:

    Vokal12 (02.12.2013)

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich glaube, du hast schon nach Bubblesort gefragt und ich habe dir ausführlich geantwortet. While und for durch if zu ersetzen wird nicht helfen. Du kannst auch die Schleifen von insertionSort auf mehrere Zyklen aufteilen. Oder hast du in jedem SPS-Zyklus 2000 neue Daten zu sortieren?
    Ansonsten kannst du einfach mal nur einen Teil deiner Daten sortieren:for i ‹= nx do; // 0< nx < 2000

    und schauen, was noch geht, um ein Gefühl dafür zu bekommen, wie weit du von deinem Ziel weg bist...

Ähnliche Themen

  1. Step 7 Schrittverzögerung mit SCL
    Von SanjaDO im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 23.11.2013, 04:09
  2. Antworten: 10
    Letzter Beitrag: 13.09.2012, 07:31
  3. Antworten: 1
    Letzter Beitrag: 23.01.2012, 17:06
  4. SCL: FB Aufruf unter SCL mit Variablen DB
    Von ThorstenK im Forum Programmierstrategien
    Antworten: 32
    Letzter Beitrag: 10.02.2011, 19:15
  5. Problem mit FB in SCL
    Von broesel im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 06.06.2007, 15:13

Lesezeichen

Berechtigungen

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