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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Betriebsartumschaltung...

  1. #11
    Registriert seit
    01.06.2008
    Ort
    Ostwestfalen
    Beiträge
    1.866
    Danke
    405
    Erhielt 471 Danke für 374 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MCerv Beitrag anzeigen
    Hi Udo,
    ich denke das kommt auf die Anwendung an!

    Zudem hat die Betriebsart auch nichts mit dem grundsätzlichen Personenschutz der Anlage über einen entsprechenden Sicherheitskreis (NOT-AUS, Schutztüren, ...) zu tun.
    Hallo Michael,

    au man, dazu könnten wir ein eigenes Thema aufmachen.

    Was ist eigentlich eine Betriebsart?

    Hand/Automatik - nur bei aktiven Schutzeinrichtungen - sind für den einen Betriebsarten, für den anderen Funktionen.


    Normalbetrieb/Sonderbetrieb - das erste bei aktiven- das zweite bei teilweise inaktiven Schutzeinrichtungen, sind auf
    jeden Fall Betriebsarten.

    Dann wird auch noch zwischen "Betriebsart Automatik" (nur angewählt) und "Automatikbetrieb" (läuft) unterschieden.

    Schön kompliziert.

    Gruß
    Tommi
    Geändert von Tommi (04.11.2011 um 21:22 Uhr)

  2. #12
    Registriert seit
    02.09.2008
    Ort
    Algund
    Beiträge
    221
    Danke
    16
    Erhielt 13 Danke für 12 Beiträge

    Standard

    je nach größe des Projektes kann auch ein FB dazu dienen.

    zB
    Code:
    Call FBxx
      Freigabe:   //  not-aus, bereichx,usw
      Hand/Auto:   //  0=auto   1=hand  
      Handein:      //   taster x oder m vom prog.
      Autoein:      //   m vom prog.
      Rückmeldung:   //   zb ini ventil zu, motorschütz angezogen...
      Aktor:        //   ventil ein, motor ein.....
      Status:      //   Byte für visu  ,   ein,aus,störung,.......
      Störung:    //    Störungsbit

    ICH WOHNE DA WO IHR URLAUB MACHT

  3. #13
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Prinzipiell funktioniert eine Struktur wie diese fast immer:

    Automatikmerker zuweisen:
    Code:
    UN #Automatik
    L 0
    T #Schrittkettenmerkerwort
    
    ... Schrittkette...
    
    U #Schritt_5
    O #Schritt_6
    = #Automerker_Ventil_A
    Handmerker zuweisen:
    Code:
    U #Hand
    U #Taste_Ventil_A
    = #Handmerker_Ventil_A
    Falls es noch einen Ablauf für die Grundstellung gibt:
    Code:
    UN #Grundstellungsfahrt
    L 0
    T #Schrittkettenmerkerwort
    
    ... Schrittkette ...
    
    U #Schritt4
    = #GS_Merker_Ventil_A
    Ausgang zuweisen:
    Code:
    U #Automerker_Ventil_A
    O #Handmerker_Ventil_A
    O #GS_Merker_Ventil_A
    = #Ausgang_Ventil_A
    Ich mache normalerweise einen Baustein für Automatik, einen für Grundstellung, und einen für den Ausgang. In dem Baustein für den Ausgang mache ich meistens am Anfang die Handfunktion. Das sind in der Regel ja nicht so viele Zeilen Code. Wenn die Handfunktion aufwändiger ist, mache ich dafür auch schon mal einen eigenen Baustein. Ach ja, die Betriebsarten werden in einem eigenen Betriebsarten-Baustein gehandelt.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  4. #14
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Lieben Dank für die Hilfe und Beispiele!

    Zitat Zitat von MCerv Beitrag anzeigen

    2.
    Betriebsarten, setzte bzw. rücksetze Dir für die Betriebsart einen Merker z. B. HAND (R M1.0), AUTOMATIK (S M1.0)
    Farge je nach Betriebsart Deine S/R-Glieder ab und versetze diese auf den Anfangswert (initialisieren). Zum Schluss weist Du je nach Betriebsart deine S/R-Glieder mit UND (Betriebsart-Merker) dem entsprechenden Ausgang zu.

    z. B:

    // Initialisieren

    U M 1.0 // "0" = Hand; "1" = Automatik
    R M 20.0 // Irgend ein Merker aus der Betriebsart HAND
    ...
    UN M 1.0 // "0" = Hand; "1" = Automatik
    R M 40.0 // Irgend ein Merker aus der Betriebsart HAND
    ...

    // Ausgang zuweisen

    O(
    U M 20.0 // Irgend ein Merker aus der Betriebsart HAND
    UN M 1.0 // "0" = Hand; "1" = Automatik
    )
    O(
    U M 40.0 // Irgend ein Merker aus der Betriebsart HAND
    U M 1.0 // "0" = Hand; "1" = Automatik
    )
    = A 4.0
    1) Müsste es in den Zeilen hinter "U M1.0" nicht heißen: Irgend ein Merker aus der Betriebsart AUTOMATIK ?

    2) Diese Art von Programmierung geht aber doch nicht mehr, wenn schon je ein FC für Hand- u. Automatikbetrieb besteht, in dem jeweils die Ausgänge gesetzt werden, oder? Denn für diesen Fall war ja meine Frage, wie kann ich dann bei einer Betriebsartumschaltung die gesetzten Ausgänge rücksetzen, weil ja nach der Umschaltung in die andere Betriebsart die FC nicht mehr aufgerufen wird. Wie gesagt die Ausgangszuweisung besteht bereits in den einzelnen FC's!

    Können für diesen Fall einfach im OB1 die Ausgänge rückgesetzt werden, z.B.

    UN M1.0 // Betriebsart Automatik abgewählt
    R M20.0 // Irgend ein Merker aus der Betriebsart AUTOMATIK

    Würde das so klappen?
    L.G. schnecke

  5. #15
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Du solltest Dir selbst den Gefallen tun und die bedingten Bausteinaufrufe beerdigen...
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  6. Folgender Benutzer sagt Danke zu Tigerente1974 für den nützlichen Beitrag:

    Rudi (05.11.2011)

  7. #16
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Tigerente,

    ja - stimmt. Aber das Programm ist nun so programmiert. Mit dem entsprechenden Wissen würde ich es jetzt auch so programmieren, wie von euch vorgeschlagen...

    Aber dieses Programm ist schon Bestand und daher (nur für diesen spez. Fall) nochmals meine Frage:

    Wie kann ich bei einer Betriebsartumschaltung (mit zwei FC's) die gesetzten Ausgänge einer angewählten Betriebsart rücksetzen, weil ja nach der Umschaltung in die andere Betriebsart der FC nicht mehr aufgerufen wird. Wie gesagt, die Ausgangszuweisung besteht bereits in den einzelnen FC's!

    Können für diesen Fall einfach im OB1 die Ausgänge rückgesetzt werden, z.B.

    UN M1.0 // Betriebsart Automatik abgewählt
    R M20.0 // Irgend ein Merker aus der Betriebsart AUTOMATIK

    Würde das so klappen?

    Danke...
    L.G. schnecke

  8. #17
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Zitat Zitat von schnecke Beitrag anzeigen
    1) Müsste es in den Zeilen hinter "U M1.0" nicht heißen: Irgend ein Merker aus der Betriebsart AUTOMATIK ?
    Jepp, ist'n Copy & Paste Fehler, sorry.

    Zitat Zitat von schnecke Beitrag anzeigen
    Können für diesen Fall einfach im OB1 die Ausgänge rückgesetzt werden, z.B.

    UN M1.0 // Betriebsart Automatik abgewählt
    R M20.0 // Irgend ein Merker aus der Betriebsart AUTOMATIK

    Würde das so klappen?
    Nicht unbedingt, denn dann würdest Du ja permanent den Ausgang zurücksetzen!

    Ich würde allle Ausgangszuweisungen in den Betrtiebsartenbausteinen durch Merker oder DB-Bit's ersetzen und diese dann wie zuvor beschrieben initialisieren. Die Ausgänge weist Du dann verknüpft mit der jeweiligen Betriebsart in einen eigenen Baustein zu. Ich würde das nicht im OB1 machen, das wird zu unübersichtlich. In der Regel werden von hier die entsprechenden Strukturen (Bausteine) des Programms aufgerufen!
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

  9. #18
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Zitat Zitat von Tommi Beitrag anzeigen
    Hallo Michael,
    au man, dazu könnten wir ein eigenes Thema aufmachen.
    4
    Hi Tommy,

    da hast Du vollkommen recht und wie ich bereits schon sagte "ich denke das kommt auf die Anwendung an!"

    Gruß
    Michael
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

  10. #19
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von MCerv Beitrag anzeigen
    Nicht unbedingt, denn dann würdest Du ja permanent den Ausgang zurücksetzen!

    Ich würde allle Ausgangszuweisungen in den Betrtiebsartenbausteinen durch Merker oder DB-Bit's ersetzen und diese dann wie zuvor beschrieben initialisieren. Die Ausgänge weist Du dann verknüpft mit der jeweiligen Betriebsart in einen eigenen Baustein zu. Ich würde das nicht im OB1 machen, das wird zu unübersichtlich. In der Regel werden von hier die entsprechenden Strukturen (Bausteine) des Programms aufgerufen!
    Danke Michael,

    also wenn ich dich richtig verstanden habe, dann könnte man (frau auch ) das Programm wie folgt abändern:

    1) In den beiden FC's für die zwei Betriebsarten S/R-Glieder für Merker benutzen.

    2) In einem neuen FC die Merker der S/R-Glieder initialisieren, d.h. bei Abwahl einer Betriebsart werden die entspr. Merker rückgesetzt.

    3) In einem weiteren FC werden dann die Merker der S/R-Glieder den entsprechenden Ausgängen zugewiesen.

    Stimmt das bis hierher?

    Falls ja, dann würde das bedeuten, dass in der jeweiligen Betriebsart die Merker je nach Anforderung gesetzt und rückgesetzt werden - und sobald die Betriebsart verlassen wird, diese Merker sozusagen zwangsweise rückgesetzt werden, richtig?
    L.G. schnecke

  11. #20
    Registriert seit
    28.08.2007
    Beiträge
    140
    Danke
    17
    Erhielt 13 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von schnecke Beitrag anzeigen
    Danke Michael,

    also wenn ich dich richtig verstanden habe, dann könnte man (frau auch ) das Programm wie folgt abändern:

    1) In den beiden FC's für die zwei Betriebsarten S/R-Glieder für Merker benutzen.

    2) In einem neuen FC die Merker der S/R-Glieder initialisieren, d.h. bei Abwahl einer Betriebsart werden die entspr. Merker rückgesetzt.

    3) In einem weiteren FC werden dann die Merker der S/R-Glieder den entsprechenden Ausgängen zugewiesen.

    Stimmt das bis hierher?

    Falls ja, dann würde das bedeuten, dass in der jeweiligen Betriebsart die Merker je nach Anforderung gesetzt und rückgesetzt werden - und sobald die Betriebsart verlassen wird, diese Merker sozusagen zwangsweise rückgesetzt werden, richtig?

    Hört sich schon ganz gut an. Aber die Merker musst du schon explizit zurücksetzen, das passiert nicht zwangsweise automatisch. Natürlich nur, wenn du es auch so programmierst.

    Um deine eigentliche Frage zu beantworten: Wenn du wenig Arbeit damit haben willst und dich nicht dafür interessierst eine sauber Struktur bzw. Lesbarkeit deines Programms zu haben, kannst du es "Quick & dirty" programmieren. Z.B. in den beiden Betriebsarten FCs, im ersten Zyklus des Aufrufs alle Ausgände zurücksetzten via Flanke. Dafür bräuchtest du dann nur einen Initialisierungs Merker:

    Code:
    u #Automatik_init               // Automatikbetrieb wurde initialisiert
    spb LOS                             // Überspringe dads Rücksetzen der Ausgänge, wenn schon initialisiert
    set                                    // VKE auf true setzen
    R A0.0                               // Ausgänge zurücksetzen
    R A0.1
    ...
    // alternativ, wenn alle Ausgänge zurückgesetzt werden sollen ginge auch:
    
    L 0
    T AW0                               // Vorsicht, hiermit setzt du alle Ausgänge von A0.0 bis A1.7 zurück!
    
    set 
    S #Automatik_init              // Initialisierungsmerker setzen, damit nicht jeden Zyklus alles zurückgesetzt wird
    R #Hand_init                     // Initialisierungsmerker aus dem Hand-FC natürlich nicht vergessen
    LOS: nop 0                        // ab hier dann Automatikablauf.....
    
    ...
    Andere Möglichkeit:

    Code:
    // in einem anderen FC/OB über den Betriebsartenmerker alles rücksetzen
    
    u #Automatik_Merker        // Merker für Automatik ein
    fp #Flanken_Merker
    R A0.0
    R A0.1
    ...                                    // das Gleiche dann für Hand und vor Allem VOR dem Aufruf der Betriebsarten FCs!
    Aber wie gesagt, das ist nicht grad die eleganteste Art dieses Problem zu lösen. Besser ist es auf jeden Fall in den Betriebsarten FCs Merker zu verwenden und diese dann in einem anderen FC an die Ausgänge zu verknüpfen. Es sollte nach Möglichkeit ein Ausgang nur an einer Stelle im Programm beschrieben werden und dann am Besten nur mit "=".

Lesezeichen

Berechtigungen

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