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

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

Thema: Förderstrecke

  1. #1
    Registriert seit
    10.02.2007
    Beiträge
    13
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Lächeln


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Servus!
    Ich möchte eine Förderstrecke , die aus mehreren Knoten und Verzweigungen besteht(Beispiel Anhang), von einem vorgebenen Startknoten zu einem vorgebenen Zielknoten durchlaufen.

    Wenn das Ziel gefunden worden ist, dann gehe den gewählten Weg wieder zurück.
    Das Einfachste wäre, wenn ich nach dem Verfahren der Tiefensuche (siehe Algorithmus) vorgehe.
    Für das zurück gehen muss ich mir Informationen der einzelnen Knoten irgendwie abspeichern (merken).
    Für die Einzelnen Knoten lege ich Datenbausteine an.

    Algorithmus:
    · Zunächst wird ein Startknoten ausgesucht
    · Expandiere den Knoten und speichere alle Nachfolger in einem Stack(Stapelspeicher).
    · Rufe rekursiv für jeden der Knoten in dem Stack die Methode „Tiefensuche“ auf.
    o Falls der Stack leer sein sollte, tue nichts
    o Falls das gesuchte Element gefunden worden sein sollte, brich die Suche ab und lieferet ein Ergebnis

    Tiefensuche(Knoten, Ziel) //Methode zur Tiefensuche
    {
    if (Knoten == Ziel) //Wenn Knoten gleich dem Zielknoten
    //dann verlasse die Methode und gebe
    return Knoten; //den Knoten zurück
    else
    {

    Stapel := expand (Knoten); //Nachfolgenden Knoten auf den Stack

    While (Stapel nicht leer ist) //solange der Stack nicht leer ist
    {
    Knoten := pop (Stapel); //Vom Stapel nehmen
    Tiefensuche(Knoten,Ziel); //Rekursiver Aufruf der Methode
    }
    }
    }

    Wie kann ich den Algorithmus umsetzen ?
    Mit welchen Bausteinen (FB mit DB,...) mache ich das am besten ?


    Gruß
    Buenne
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Förderstrecke  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Da du von FB und DB schreibst vermute ich mal, du willst das mit Step7 machen . An 1. Stelle steht genau für deinen Fall eigentlich SCL als Programmiersprache. Da du ja schon mit if, the, else und while in deiner Prinziperklärung hantierst, kannst du diese in SCL gleich weiterverwenden. Außerdem kannst du in SCL mit Array's und Indizes arbeiten, ohne dich mit indirekter Adressierung herumschlagen zu müssen. Leider ist SCL zusätzlich zum Standardpaket zu erwerben bzw. erst in der Step7-Prof.-Version enthalten. Soweit ich mich erinnere funktioniert aber auch ein SCL ohne Authorisierung problemlos, es erscheint beim Start immer eine etwas lästige Meldung. Zum ausprobieren, ob das das Richtige für dich ist, reicht das sicherlich. Ansonsten beleibt dir nur der Weg über AWL/FUP, wobei FUP wohl eher nicht unbedingt für so etwas geeignet sein wird.

    Mir sind im Moment keine Bausteine bekannt, die direkt können, was du benötigst.

    Zuerst solltest du die grundsätzliche Struktur der DB festlegen und welche Möglichkeiten es gibt, deinen gesamten Baum dann in den DB abzulegen, er wird dich ja in Zukunft auch mal ändern. Bei Fragen oder wenn du den Zwischenstand mal diskutieren willst, können wir das gerne hier weiterführen.
    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

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    ich denke auch in awl sollte das zu realisieren sein, und wäre nicht unbedingt zu komplex. es ist zumindest ein rekursiver funktionsaufruf möglich.

    Ich denke auch das wichtigste erstam ist die Datenbaustein struktur festzulegen (Wie sieht ein Konoten im DB aus, woran erkennt man ob noch unterknoten existieren und wo sind diese dan gepeichert).

    Danach kannst du ja weitere fragen stellen...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren awl....  

  4. #4
    buenne ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.02.2007
    Beiträge
    13
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @ Ralle!

    Im Anhang findest du eine Beispielzeichnung für eine Förderstrecke.

    Es geht um folgendes:

    Ich möchte ein Produkt von S1 über die Weiche W1 und die Weichen W2 und W3 in den Zielbehälter Z3 befördern. In diesem Fall stehen die Weichen (Grundstellung) schon richtig.
    Jetzt kann es aber sein, das die Strecke schon belegt ist, z.B über S3,W4,W1,Z1.
    Um dies herauszufinden, lege ich für jede Weiche, Startbehälter,Zielbehälter einen Datenbaustein an, indem Informationen über z.B die aktuelle Stellung der Weiche, ob die Weiche schon von einer anderen benutzt wird usw.
    Jede Weiche behandle ich wie einen einfachen Knoten, der gewisse Informationen enthält.

    Wenn ich eine Strecke anfordere, suche ich zunächst vom Startbehälter aus den Zielbehälter, wenn der gefunden ist, gehe vom Ziel zum Start zurück und überprüfe, ob die Strecke frei ist(weiche belegt). Ist Sie frei, dann stelle die Weichen für den angeforderten Fahrbefehl.

    Datenbaustein Weiche (32Bit: Weiche gestellt, Weiche gestört, Weiche frei)

    Für den Startbehälter, Zielbehälter, Klappe, Gebläse wird ebenfalls ein Datenbaustein angelegt.

    Irgendwie brauche ich einen Stack (FI-LO) auf den ich den Weg mit Hilffe der Datenbaustein praktisch ablege. Das Suchverfahren (rekursive Tiefensuche) habe ich zu Anfang ja schon beschrieben

    Gruß
    Buenne
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Föderstrecke  

  5. #5
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    ich kann das nicht so ganz nachvollziehen was du machen willst.

    wenn du von s1 nach z3 willst, gibt es doch nur einen weg.
    oder sollen die teile wenn z3 nicht erreichbar ist irgendwo in einem anderen z gepuffert werden?

    ich denke mal, das die teile die von einem s kommen in einem z abgelegt werden sollen, oder?
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #6
    buenne ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.02.2007
    Beiträge
    13
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich gebe einen Startpunkt (s) vor und möchte es zu einem
    ausgewählten Ziel (z) befördern. Naja als nächstes wird die
    Route vom Startpunkt zum Zielpunkt gesucht. Wenn die Stercke schon belegt ist, dann breche ab, wenn die Strecke nicht belegt ist, dann Stelle
    die Weichen so, das das Produkt in den ausgewählten Zielbehälter befördert wird.

    Gruß
    Buenne

  7. #7
    Registriert seit
    17.09.2003
    Ort
    Zell bei Dietfurt a.d. Altmühl
    Beiträge
    357
    Danke
    8
    Erhielt 27 Danke für 25 Beiträge

    Standard

    Hallo Leute,

    greife mal wieder ein altes Thema aus der Schublade, da es für mich recht interessant anhört und es auch für mich vielleicht in betracht kommt. Allerdings fehlt mir momentan irgendwie der Ansatz, wie ich sowas in der SPS umsetze.
    Wenn ich mal von dem Beispiel mit den Weichen ausgehen, da muss ich mir in jeder Weiche die Information habe, was alles vor dieser Weiche kommt. Das soll heißen. Wenn ich z.B. von S2 nach Z3 gehe. Jetzt wenn ich von Z3 zurück gehe, dann muss ich in der Weiche W3 die Information habe, das nach dieser W3 (W2, W4, S1, S2, S3 und S4) stehen oder? Dann wäre es bei Weiche W2 (W4, S1, S2, S3 und S4) usw. oder? Die Informationen pro Weiche werden somit immer weniger. Oder habe ich das was falsch verstanden?
    Hat jemand von euch schon mal sowas in der Art mit einer SPS realisiert?

    Für mich ist die Sache vor allem interessant, da wir momentan recht viel Fördertechnik machen, bei der viel Förderkombinationen herauskommen und somit jeder Förderweg einzeln getestet werden muss und das erhöht somit die IBN-Zeit. Mit dieser Möglichkeit könnte man sich viel Automatiktest ersparen, wenn man mal eine sauberer Struktur hat.

    Wäre für jede Information zu diesem Thema dankbar.
    MfG

    Hubert

    \"Never change a running system. \"

  8. #8
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.242 Danke für 973 Beiträge

    Standard

    Zitat Zitat von hubert Beitrag anzeigen
    Wenn ich mal von dem Beispiel mit den Weichen ausgehen, da muss ich mir in jeder Weiche die Information habe, was alles vor dieser Weiche kommt.
    Ich verstehe es so, dass jede Weiche nur ihren Nachbarn kennt. Der Algorithmus sucht sich selber einen Weg. Sehr interessanter Ansatz, aber ehrlich gesagt hoffe ich, dass ich nie eine Fördertechnik damit umsetzen muss.

    Gruß
    Dieter

  9. #9
    Registriert seit
    17.09.2003
    Ort
    Zell bei Dietfurt a.d. Altmühl
    Beiträge
    357
    Danke
    8
    Erhielt 27 Danke für 25 Beiträge

    Standard

    Zitat Zitat von Blockmove Beitrag anzeigen
    Ich verstehe es so, dass jede Weiche nur ihren Nachbarn kennt. Der Algorithmus sucht sich selber einen Weg. Sehr interessanter Ansatz, aber ehrlich gesagt hoffe ich, dass ich nie eine Fördertechnik damit umsetzen muss.
    Bin halt in der Forumsuche auf diesem Thema gestoßen und klang halt recht interessant. Bin halt auf er Suche nach eine Alternative zu dem sehr Fehleranfälligen System von jetzt. Aber ich denke mir auch auf der anderen Seite, das wenn jede Weiche nur seinen Nachbarn kennt, wird die Suche schon relativ lange dauern. Wenn es nicht wie hier nur ein paar Weichen sind.
    MfG

    Hubert

    \"Never change a running system. \"

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    ich denke auch in awl sollte das zu realisieren sein, und wäre nicht unbedingt zu komplex. es ist zumindest ein rekursiver funktionsaufruf möglich.
    Man beachte die arg begrenzte maximale Baustein-Schachtelungstiefe.
    Der TE wird wohl das "rekursiv" auf "Schleife" umschreiben müssen oder die Wegsuche je OB1-Zyklus auf einen Knoten beschränken müssen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Lesezeichen

Berechtigungen

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