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

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

Thema: "Vorprogramm" vor Hauptprogramm

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    trotz intensivster studie dieses Forums und enthaltener Links habe ich keine Lösung für mein Problem finden können,dass wie folgt aussieht:

    CPU314C 2DP
    STEP7 V5.2+SP1+HFR3 Ausgabestand K5.2.1.3

    An einer Anlage ist ein Bedienpult mit 3 Tastern und 3 LEDs angeschlossen.
    Beim Schalten von STOP nach RUN sollen die LEDs leuchten und nacheinander durch betätigen der Taster gelöscht werden.
    Erst wenn diese "Funktionsprüfung" durchgeführt wurde, soll das eigentliche Programm gestartet werden (Hand-/Tipp-/Automatikbetrieb).
    Diese Funtionsprüfung soll nur beim ersten schalten auf RUN bzw. nach einem Stromausfall (Schalter steht noch auf RUN) durchgeführt werden.

    1. Wie realisiere ich dieses "Vorprogramm" vor dem Hauptprogramm?
    2. Wie und wo kann ich feststellen ob es der erste wechsel von STOP nach RUN und/oder ob ein Stromausfall eingetreten war?

    Am dringensten benötige ich Hilfe zur ersten Frage. Wichtig für mich ist das ich diese Funktionsprüfung umsetzen kann, ob die nun bei jedem wechsel von STOP nach RUN durchgeführt wird oder nicht ist vorerst mal sekundär.

    Ich danke euch schonmal hier und jetzt
    internette Grüsse
    Andreas
    Zitieren Zitieren Gelöst: "Vorprogramm" vor Hauptprogramm  

  2. "nein, wenn du dir nen Merker bildest dass alles fertig ist dann kannst du das auch im OB1 machen. Auslöser ist dann ein Neustartmerker. Wenn du ihn im Anlauf-OB halten willst dann

    Code:
    LOOP: blabla
    
    Auswertung
    .
    .
    .
    UN "Routine beendet"
    SPB LOOP
    Wenn du mehrere Anlaufebenen hast (wird aber bei deiner CPU nicht sein) würde ich das in einen FC auslagern und diesen aus den Anlauf-OBs aufrufen.

    MfG
    André Räppel"


  3. #2
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    Hallo,

    entweder du machst im Anlauf-OB mit einer Schleife bis die gewünschte Handlung ausgeführt ist. Weiss aber nicht was passiert wenn man da länger drin bleibt. Oder du machst die Bearbeitung des "Hauptprogramms" aus dem OB1 von einem Merker abhängig "Anlauf beendet" oder so. Zur Unterscheidung was los war gibts erstmal unterschiedliche Anlauf-OBs und auch eine Startinfo im OB.

    MfG
    André Räppel
    Zitieren Zitieren Anlauf  

  4. #3
    Anonymous Gast

    Standard

    ...danke für die prompte Antwort!

    Die Idee mit der Schleife im OB100 hatte ich auch.
    Nur weiss ich nicht wie man sowas in FUP programmieren soll. In AWL ist das bestimmt möglich, entzieht sich allerdings meiner Fähigkeiten.

  5. #4
    Anonymous Gast

    Standard

    Der Grundgedanke im Lösungsansatz von André Räppel ist mir klar.
    Man programmiert all nötigen Netzwerke im OB100 und setzt, nach dem alle abgearbeitet wurden ein Flag. Soweit stellt das für mich kein Problem dar.
    Das problem ist den OB100 solange aktiv zu halten bis(!) das Flag gesetzt wurde. Also in anderen Worten, der OB100 darf erst verlassen werden für den Aufruf des OB1, wenn das Flag gesetzt ist; so ich das aber noch nicht realisieren konnte.

    Vielleicht bin ich auch auf dem Holzweg und jemand anderes hat eine elegantere Lösung.

    Andreas

  6. #5
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    nein, wenn du dir nen Merker bildest dass alles fertig ist dann kannst du das auch im OB1 machen. Auslöser ist dann ein Neustartmerker. Wenn du ihn im Anlauf-OB halten willst dann

    Code:
    LOOP: blabla
    
    Auswertung
    .
    .
    .
    UN "Routine beendet"
    SPB LOOP
    Wenn du mehrere Anlaufebenen hast (wird aber bei deiner CPU nicht sein) würde ich das in einen FC auslagern und diesen aus den Anlauf-OBs aufrufen.

    MfG
    André Räppel
    Zitieren Zitieren Anlauf  

  7. #6
    Registriert seit
    03.04.2004
    Beiträge
    132
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo evlt. betrachte ich das zu einfach aber so würde ich das lösen:
    Nach dem durchlaufen des OB100 ein Sprungbefehl im OB1 setzen der das Unterprogramm welches aus dem OB1 aufgerufen wird solange überspringt bis die Sartroutine beendet wurde.

    Gruß Ronald

  8. #7
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    Oder du machst die Bearbeitung des "Hauptprogramms" aus dem OB1 von einem Merker abhängig "Anlauf beendet"
    Zitieren Zitieren war schon gesagt  

  9. #8
    Anonymous Gast

    Standard

    Zitat Zitat von Kleissler
    Hallo evlt. betrachte ich das zu einfach aber so würde ich das lösen:
    Nach dem durchlaufen des OB100 ein Sprungbefehl im OB1 setzen der das Unterprogramm welches aus dem OB1 aufgerufen wird solange überspringt bis die Sartroutine beendet wurde.

    Gruß Ronald
    Deinen Tipp habe ich gerade ausprobiert.
    Aufgrund der zyklischen Bearbeitung des S7 Programms wird nach den Anlauf OBs der OB1 aufgerufen und Netzwerk für Netzwerk von oben nach unten abgearbeitet.
    Deshalb habe ich im ersten NW des OB1 den Aufruf meines "Vorprogrammes" (FC100), verriegelt (auf NICHT) durch im FC100 zu setzenden Merker.
    Im zweiten NW des OB1 ist der von dir vorgeschlagene JUMP-Befehl auf das erste NW des OB1 (ebenfals durch Merker auf NICHT veriegelt).
    Soweit sogut, funktioniert auch ein paar Sekunden dann hängt der Zyklus sich auf.

    Die Option alle aufzurufenden FC mit diesem Merker zu verriegeln wäre sicherlich auch eine Lösung, wurde auch schon von Andrè Räppel vorgschlagen.
    Nur ist dies ein nicht zu verachtender Programmieraufwand bei vielen FC aufrüfen, die teilweise auch gleichzeitig laufen. Jeder Aufruf brauch ein zusätzliches UND-Gatter.
    Ich suche eine Lösung die sich auch schnell in eine vorhandene Steuerung implementieren lässt.

    Andreas

  10. #9
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.812
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    es reicht doch die sache in netzwerk 1 zu tippen....

    also im ob 100 schreibst du:

    set
    s M0.0

    und im ERSTEN netzwerk von ob1:


    u m0.0
    fp m1.0 // flanke das nur im ersten zyklus gesetzt wird
    s a4.0 // lampe-1
    s a4.1 // lampe-2
    s a4.2 // lampe-3

    u e0.0 // reset lampe-1
    r a4.0 // lampe-1

    u e0.1 // reset lampe-2
    r a4.1 // lampe-2

    u e0.2 // reset lampe-3
    r a4.2 // lampe-3

    un a4.0
    un a4.1
    un a4.2
    r m0.0


    u m0.0
    BEB // baustein wird hier beendet solange m0.0 =1 --> somit werden die weiteren netzwerke nicht bearbeitet



    //edit
    kann man vieleicht noch verschönern, ohne ausgänge setzen zu müssen und die sache etwas kürzen, aber so sollte es leicht verständlich sein...

  11. #10
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Markus

    Dein Lösung funktioniert einwandfrei. Nur gibts den Befehl BEB nur in AWL.
    Hast Du oder vielleicht jemand anderes eine Idee für eine Lösung in Fup?

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 16.03.2012, 18:20
  2. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21
  3. Antworten: 8
    Letzter Beitrag: 16.05.2008, 11:26
  4. Antworten: 2
    Letzter Beitrag: 14.12.2007, 15:09
  5. Antworten: 4
    Letzter Beitrag: 29.11.2006, 08:59

Lesezeichen

Berechtigungen

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