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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Förderband programmieren

  1. #1
    Registriert seit
    28.07.2009
    Beiträge
    9
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich benötige Hilfe bei einem Programm für ein Förderband.
    Ich hab mir in SIMI SCE eine Simulation „geschrieben“. Diese sieht wie folgt aus. Es kommen Pakete mit Unterschiedlichen PLZ diese werden gescannt und dann auf unterschiedliche Förderbänder verteilt vor denen jeweils eine Lichtschranke ist.
    Mein Problem ist das die Pakete auch so schnell kommen können, dass mehrere Pakete zwischen Scanner und den Abweisern sein können.
    Ich hatte vor dieser Aufgabe keine Kenntnisse in SIMATIC, AWL ist mir nicht sehr gut bekannt. Das Programm könnte auch in SCL sein, aber da komme ich mit den SIEMENS Befehlen nicht klar. Bei B&R oder Beckhoff war das anders. Ich scheitere schon daran einen einfachen Timer (TON) einzufügen.
    Vielleicht kann mir jemand mit einer groben Struktur in AWL oder in SCL weiterhelfen.

    Vielen Dank
    [IMG]file:///C:/DOKUME%7E1/Domi/LOKALE%7E1/Temp/moz-screenshot-1.jpg[/IMG]
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Förderband programmieren  

  2. #2
    Registriert seit
    16.07.2007
    Ort
    Weyhe b. Bremen
    Beiträge
    214
    Danke
    23
    Erhielt 10 Danke für 10 Beiträge

    Standard

    Ich würde die Pakete Zählen und dann mit nem Schieberegister arbeiten.
    Stichwort FIFO (First In, First Out)

    Das ganze ist etwas komplexer als ein Zähler
    Du musst den Paketen ja nen Datensatz zuweisen, bzw. ne Kennung wo die rausfliegen sollen.


    Hast Du schon was programmiert, dann zeig mal her! Dann helfe ich Dir gerne!
    Nur mit Wlan hat man Élan!

  3. #3
    Registriert seit
    16.07.2007
    Ort
    Weyhe b. Bremen
    Beiträge
    214
    Danke
    23
    Erhielt 10 Danke für 10 Beiträge

    Standard

    Du könntest an der Scannstation auch für jedes Paket 1, 2 oder 3 in nem DB ablegen, je nachdem wo das Paket raus soll.
    An den Lichtschranken der Pusher zählst Du immer um einen hoch und vergleichst dann die gezählten Werte mit denen in deinem DB auf glechheit, wenn gleich dann raus!

    Wichtig ist auch, das du die Förderstrecke gleich am Anfang initialisierst, das alles auf 0 gesetzt wird! Bedenke, was machst Du wenn sich die Anlage verzählt? Defekftes Paket, Klebebandreste etc... Hast du eine NIO oder Reject Strecke für den Fehlerfall?

    Mir würden bestimmt noch mehr Möglichkeiten einfallen.
    Nur mit Wlan hat man Élan!

  4. Folgender Benutzer sagt Danke zu jackjones für den nützlichen Beitrag:

    Scrub (28.07.2009)

  5. #4
    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

    Schau dir das hier mal an: http://www.sps-forum.de/showthread.p...ight=auswerfen

    Aber wir haben da mit Bits gearbeitet, daß muß dann evtl. geändert werden. Oder man nutzt für jeden Pusher ein eigenes IO-Word. Stehet an der Stelle, des betreffenden Pushers in "seinem" zugeordneten Bit eine 1, dann erfolgt der Auswurf. Man kann, statt Bits zu schieben, auch einen FIFO nutzen. Dazu steht einiges in der FAQ des Forums.
    Geändert von Ralle (28.07.2009 um 11:21 Uhr)
    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

  6. #5
    Scrub ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.07.2009
    Beiträge
    9
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das Programm hab ich leider momentan nicht aber es war von dieser Form. Ich hab mir halt dabei gedacht das ich jedesmal eine Variable hochzähle wenn mehrere Pakete da sind und diese dann bei der Lichtschranke ignoriert werden. Aber das mit dem Schieberegister ist besser, so ne Art Array wo ich dann mit einer For-schleife alles um eine Position nach vorne schiebe wenn es ausgeworfen wird. So einen Ansatz hatte ich auch mal, sollte man dann für jede PLZ ein Schieberegister verwenden? Das Problem das ich halt immer noch hab, ist z.B. wenn das erste Paket an den letzten Abweiser soll und das zweite an den ersten Abweiser dann wird ja das zweite Paket vor dem ersten ausgestoßen obwohl es sich im Schieberegister an der zweiten Position befindet.
    ich hoff ich hab mich nicht zu unverständlich ausgedrückt.
    vielen Dank für die Hilfe


    Die Syntak bei SIMATIC kenn ich nichtvieleicht wird die Idee trotzdem klar.


    If PLZ 1 then
    Step1:= 10;
    end_if;

    If PLZ2 then
    Step2:= 10;
    Ignore2:=ignore2+1;

    end_if;

    If PLZ3 then
    step3:= 10;
    end_if

    case step1 of

    10: if Lichtschranke1 := true and ignore2 = 0 then
    step1:= 20;
    end _if;
    20: Abweiser1 := true
    TON(IN:=true, T#200ms)
    If TON.Q = true then
    step1:= 30;
    end_if;
    30: Abweiser1:= false;
    step1:=0;
    end_case;

  7. #6
    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

    Mal so vom Prinzip.
    Ich würde 3 Schieberegister einsetzen, für jeden Pusher eins. In der einfachsten Version so, wie in dem oben von mir geposteten Beispiel.

    Zwei Infos müssen in das Schieberegister, wenn der Scanner fertig ist
    a. Paket vorhanden
    b. Paket für diesen Pusher bestimmt

    In das SR des 1. Pushers müssen alle Pakete eingetragen werden, die durch den Scanner gehen.
    - SR um eins nach rechts schieben
    - a. bekommt eine 1,
    - b. bekommt dann eine 1, wenn das Paket auch für den 1. Pusher bestimmt ist.

    In das SR des 2. Pushers werden die Pakte eingetragen, die zum 2. und 3. Pusher sollen.
    - SR um eins nach rechts schieben, wenn Paket für Pusher 2 oder 3 bestimmt
    - a. bekommt eine 1,
    - b. bekommt dann eine 1, wenn das Paket auch für den 2. Pusher bestimmt ist.

    In das SR des 3. Pushers werden die Pakte eingetragen, die zum 3. Pusher sollen.
    - SR um eins nach rechts schieben, wenn Paket für Pusher 3 bestimmt ist
    - a. bekommt eine 1,
    - b. bekommt eine 1

    Wenn die LS eines Pushers eine Flanke von einem Paket liefert, muß folgendes ablaufen:

    - SR von rechts (!) an durchsuchen, bis bei a. eine 1 gefunden wird.
    - Nachsehen, ob bei b. eine 1 vorhanden.
    - wenn b.=1, dann Pusher betätigen und in diesem Element sowohl a. als auch b. mit 0 überschreiben
    - wenn b.=0, dann in diesem Element sowohl a. als auch b. mit 0 überschreiben

    Das wäre erstmal der Ablauf in Worten.
    Eines ist klar, wenn irgend eine LS ein Paket nicht sieht oder 2 Flanken bei einem Paket sieht oder jemand mit der Hand in die LS langt, dann kommt alles durcheinander.
    Daher sollte eigentlich jede Pusher einen eigenen Scanner haben, aber das ist natürlich auch eine Kostenfrage.
    Geändert von Ralle (28.07.2009 um 12:35 Uhr)
    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

  8. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Scrub (28.07.2009)

  9. #7
    Scrub ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.07.2009
    Beiträge
    9
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ok ich glaube ich hab das Prinzip Verstanden, vielen Dank. ich glaube so hat es auch *jackjones* gemeint. Ich versuch mich mal in das Beispiel einzuarbeiten, da ich ein Schieberegister in AWL nicht kenne. Ich hab mal eine "Lösung" mit einem Schieberegister bzw. Array auf Papier probiert, die kann ich ja, wenn fertig, mal hochstellen vieleicht wäre es so auch möglich.

  10. #8
    Scrub ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.07.2009
    Beiträge
    9
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich hab da ganze mal Grafisch angehängt. könnte es so klappen. Ich hab jetzt ein Schieberegister verwendet. Jede Lichtschranke zählt für sich mit an welcher Stelle sie schauen muss ob das PAket raus muss oder nicht.

    Die Nummern auf den Paketen stehen für den ersten, zweiten oder dritten Pusher. Darüber ein Array mit den Paket welche vom Scanner erfasst wurden. Das Array wir von rechts nach links gefüllt mit den Informationen für welchen Pusher das Paket ist. Die Zahlen k1 und k2 werden erhöht wenn das Paket nicht für den Pusher ist. Der Pusher weiß dann wo er im Array schauen muss, z.B. k1=2 à Position 3 (immer eins darüber). Wird ein Paket gepushed so werden alle Inhalte eins nach rechts geschoben. Außer in diesem Fall die ersten 2 Pakete. Allgemein: Wenn ein Paket gepushed wird werden alle k`s die vor dem Pusher sind um eins dekrementiert und alle Array Inhalte eins nach rechts geschoben außer die Stelle die dem aktuellen Pusher und den darauffolgenden entsprechen.
    Das Array müsste vom Datentyp Wort sein (Kenn mich wiegesagt in AWL damit nicht aus) oder man benutz halt wieder drei Arrays und setzt da eins und null.
    Könnte das Funktionieren? Hab ich was übersehen. Bin noch am verstehen deiner Lösung. Hab halt mit den Befehlen Probleme (SPBN KFL1 ist wohl en Sprung, FP Flankenerkennung?, slw?)
    Angehängte Dateien Angehängte Dateien
    Geändert von Scrub (28.07.2009 um 16:37 Uhr)

  11. #9
    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

    Ich bin da wohl zu dusselig zu, ein paar erklärende Worte zu der PDF würden mir vielleicht auf die Sprünge helfen.

    Hm, du hast jetzt eine Erklärung angefügt, ich werd nicht so recht schlau draus. Aber ok, ist auch wirklich nicht leicht zu erläutern.
    Geändert von Ralle (28.07.2009 um 23:23 Uhr)
    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

  12. #10
    Registriert seit
    16.07.2007
    Ort
    Weyhe b. Bremen
    Beiträge
    214
    Danke
    23
    Erhielt 10 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich kann da auch beim besten Willen nichts erkennen!
    Bei uns ist es auch so, das jeder Pusher einen Scanner hat. Ist einfach sicherer.

    Eine andere Methode wäre, mit der Ausfuhr am Scanner zu warten, bis das vorherige Paket gepusht wurde. D.H. Das sich immer nur ein Paket hinter der Scannstation befindet. Kommt auf die Länger deiner (Versand?) Bahnen an.

    Ansonsten ging mein Ansatz auch in Ralles Richtung! Ich persönlich würde mir alles schön in DB's schreiben.

    Einen Tipp hätte ich auch noch, um Dich ganz zu verwirren...
    Ein Lieferant bei uns hat auch einen Scanner, danach werden vereinzelt Pakete auf eine NO-Read Strecke gepusht. Hier wird mit einem Inkrementalgeber gearbeitet. Braucht man bei mehr als einer Ausschleus-Stelle aber viel Code ;p
    Nur mit Wlan hat man Élan!

Ähnliche Themen

  1. Förderband Strategien
    Von Slavan im Forum Programmierstrategien
    Antworten: 20
    Letzter Beitrag: 28.10.2011, 22:00
  2. Frage zu ITS PLC MHJ- Edition Förderband
    Von Monchichi im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 18.05.2011, 16:52
  3. Förderband woher?
    Von devrim im Forum Stammtisch
    Antworten: 8
    Letzter Beitrag: 03.11.2010, 10:31
  4. WINCC Förderband optisch aufpeppen
    Von sailor im Forum HMI
    Antworten: 13
    Letzter Beitrag: 13.03.2008, 23:34
  5. steuerung für förderband
    Von Bobby-Bayds im Forum Programmierstrategien
    Antworten: 7
    Letzter Beitrag: 19.12.2007, 09:35

Lesezeichen

Berechtigungen

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