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

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

Thema: S7-200 CPU 222, Step 7 MicroWIN 4 SP7: Zeitglied im Unterprogramm

  1. #1
    Kallemann Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen.

    Ich habe einen SD-Anlauf in einem Unterprogramm gekapselt. Dieses Unterprogramm wird nur dann aufgerufen, wenn es benötigt wird und es "schaltet" seinen Aufruf selbst ab, wenn es durchgelaufen ist. Wird nun aber der Aufruf während des SD-Anlaufes durch den Benutzer abgebrochen (z.B. durch Abschaltung), dann bleibt scheinbar die bereits abgelaufene Zeit im Timer gespeichert und wird nicht auf 0 gesetzt. Laut Beschreibung des Zeitgliedes soll das wohl so sein; daher meine Frage: Kann man die abgelaufene Zeit eines Zeitgliedes explizit auf 0 setzen?

    Vielen Dank für Eure Hilfe.

    VG Carsten
    Zitieren Zitieren S7-200 CPU 222, Step 7 MicroWIN 4 SP7: Zeitglied im Unterprogramm  

  2. #2
    Registriert seit
    23.03.2006
    Ort
    Thüringen
    Beiträge
    2.005
    Danke
    162
    Erhielt 278 Danke für 199 Beiträge

    Standard

    Naja,
    da wird Dir wohl nix anderes übrigbleiben als die Zeit aus dem Unterprogramm herauszunehmen, ich habe ähnliche Probleme z.B. mit Schrittketten.
    Und mal Hand aufs Herz, dieses kleine aber sehr feine Automatisierungssystem ist nun weißgott nicht teuer - da kann man mit solchen Ausnahmen leben....

    Gruß
    Mario

  3. #3
    Registriert seit
    19.11.2008
    Ort
    Schweigen am Weintor
    Beiträge
    707
    Danke
    191
    Erhielt 161 Danke für 92 Beiträge

    Standard

    Ld sm0.0
    movw 0, t0

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


  5. #4
    Kallemann Gast

    Standard

    Danke, erzteufele.

    VG Carsten

  6. #5
    Registriert seit
    23.03.2006
    Ort
    Thüringen
    Beiträge
    2.005
    Danke
    162
    Erhielt 278 Danke für 199 Beiträge

    Standard

    Hallo,
    das mit der Teufellösung hatte ich zwar auch im Hinterkopf, ich sehe das Problem aber dahingehend, das wenn die Zeit ausgelöst hat, das Unterprogramm aber nicht aktiv ist?
    Für mich ist das kein sauber abgefangener Zustand, ich denke das sollte man nicht tun.

    Gruß
    Mario

  7. #6
    Kallemann Gast

    Standard

    Hallo mariob.

    Zitat Zitat von mariob Beitrag anzeigen
    Hallo,
    das mit der Teufellösung hatte ich zwar auch im Hinterkopf, ich sehe das Problem aber dahingehend, das wenn die Zeit ausgelöst hat, das Unterprogramm aber nicht aktiv ist?
    Für mich ist das kein sauber abgefangener Zustand, ich denke das sollte man nicht tun.
    Ich weiß nicht, ob ich Deine Bedenken richtig verstehe. Das Unterprogramm ist so konstruiert, dass der Merker, der den Dreieck-Betrieb speichert, "erst" in Netzwerk 1 des Unterprogramms gesetzt wird. Das heißt, das Unterprogramm wird nach Setzen von A0.1 (Dreieck-Schütz) noch ein weiteres Mal aufgerufen und in diesem letzten Zyklus wird die Zeit wieder auf 0 gesetzt.

    Meinst Du etwas anderes?

    VG Carsten

  8. #7
    Registriert seit
    23.03.2006
    Ort
    Thüringen
    Beiträge
    2.005
    Danke
    162
    Erhielt 278 Danke für 199 Beiträge

    Standard

    Hallo,
    @Carsten, ich hatte das so verstanden, das Deine Zeit im Unterprogramm welches sich selbst abschaltet definiert und gesteuert wird. Das kann unter Umständen nach hinten losgehen.
    Genaueres kann man nach Sichtung des Quelltextes sagen.

    Gruß
    Mario

  9. #8
    Kallemann Gast

    Standard

    Hallo Mario.

    Hier habe ich 'mal das Unterprogramm aufgeschrieben.



    Unterprogramm "SDAnlauf1"

    Netzwerk 1 Rückmeldung Dreieck-Betrieb Motor1

    Wenn das Netz-Schütz K11 von Motor 1 eingeschaltet ist und das Dreieck-Schütz K12 von Motor 1 eingeschaltet ist, dann wird der Merker RunM1 gesetzt.
    HINWEIS:
    Der Merker RunM1 muss hier in Netzwerk 1 gesetzt werden, damit dieses Unterprogramm einen Zyklus länger durchlaufen wird und dadurch die abgelaufene Zeit des Zeitglieds K12T wieder auf 0 gesetzt wird.


    LD K11
    U K12
    S RunM1, 1


    Symbol Adresse Kommentar
    K11
    A0.0
    Motor1 Netz-Schütz
    K12
    A0.1
    Motor1 Dreieck-Schütz
    RunM1
    M1.0
    Motor1 ist in Dreieck-Betrieb



    Netzwerk 2 Einschaltung Stern-Schütz Motor1

    Wenn das Netz-Schütz K11 von Motor 1 ausgeschaltet ist und das Dreieck-Schütz K12 von Motor 1 ausgeschaltet ist, dann wird das Stern-Schütz K13 von Motor 1 eingeschaltet und in Selbsthaltung gebracht.


    LDN K11
    UN K12
    S K13, 1

    Symbol Adresse Kommentar
    K11
    A0.0
    Motor1 Netz-Schütz
    K12
    A0.1
    Motor1 Dreieck-Schütz
    K13
    A0.2
    Motor1 Stern-Schütz



    Netzwerk 3
    Zeitverzögerung Netz-Schütz Motor1

    Wenn das Stern-Schütz K13 von Motor 1 eingeschaltet ist, dann wird ein Zeitglied gestartet, das nach Erreichen der eingestellten Zeit das Netz-Schütz K11 von Motor 1 einschaltet und in Selbsthaltung bringt.

    LD K13
    TON K11T, 10
    Symbol
    Adresse
    Kommentar
    K11T
    T37
    Motor1 Einschaltverzögerung Netz-Schütz
    K13 A0.2 Motor1 Stern-Schütz





    Netzwerk 4 Einschaltung Netz-Schütz Motor1

    Wenn das Zeitglied K11T die eingestellte Zeit erreicht hat, wird das Netzschütz K11 von Motor 1 eingeschaltet und in Selbsthaltung gebracht.


    LD K11T
    S K11, 1

    Symbol
    Adresse
    Kommentar
    K11
    A0.0
    Motor1 Netz-Schütz
    K11T
    T37
    Motor1 Einschaltverzögerung Netz-Schütz



    Netzwerk 5 Anlaufzeit Motor1

    Wenn das Netz-Schütz K11 von Motor 1 eingeschaltet ist und das Dreieck-Schütz K12 von Motor 1 NICHT eingeschaltet ist, dann wird ein Zeitglied gestartet, das nach Erreichen der eingestellten Zeit das Stern-Schütz K13 von Motor 1 abschaltet.


    LD K11
    UN K12
    TON K12T, 100

    Symbol
    Adresse
    Kommentar
    K11
    A0.0
    Motor1 Netz-Schütz
    K12 A0.1 Motor1 Dreieck-Schütz
    K12T
    T38
    Motor1 Anlaufzeit Stern




    Netzwerk 6 Abschaltung Stern-Schütz Motor1

    Wenn das Zeitglied K12T die eingestellte Zeit erreicht hat, wird das Stern-Schütz K13 von Motor 1 abgeschaltet.


    LD K12T
    R K13, 1

    Symbol
    Adresse
    Kommentar
    K12T
    T38
    Motor1 Anlaufzeit Stern
    K13
    A0.2
    Motor1 Stern-Schütz




    Netzwerk 7 Einschaltung Dreieck-Schütz Motor1

    Wenn das Zeitglied K12T die eingestellte Zeit erreicht hat und das Netz-Schütz K11 von Motor 1 eingeschaltet ist und das Stern-Schütz K13 von Motor 1 ausgeschaltet ist, dann wird das Dreieck-Schütz K12 von Motor 1 eingeschaltet und in Selbsthaltung gebracht.


    LD K11
    UN K13
    U K12T
    S K12, 1

    Symbol
    Adresse
    Kommentar
    K11
    A0.0
    Motor1 Netz-Schütz
    K12
    A0.1
    Motor1 Dreieck-Schütz
    K12T
    T38
    Motor1 Anlaufzeit Stern
    K13
    A0.2
    Motor1 Stern-Schütz



    Die Abschaltung der Netz- und Dreieck-Schütze erfolgt im Unterprogramm "Nachlauf1", falls erforderlich im Hauptprogramm bei Fehlern oder so.
    Die explizite Rücksetzung der Zeiten von T37 und T38 erfolgt im Hauptprogramm, sofern der Motor gerade in Stern-Betrieb anläuft und währendessen eine Fehler auftritt oder vorsätzlich abgeschaltet wird.

    Da kann doch eigentlich nichts nach hinten losgehen, oder?

    VG Carsten
    Geändert von Kallemann (19.04.2012 um 16:47 Uhr) Grund: Zeilen-Umbruch vergessen

  10. #9
    Registriert seit
    23.03.2006
    Ort
    Thüringen
    Beiträge
    2.005
    Danke
    162
    Erhielt 278 Danke für 199 Beiträge

    Standard

    Hallo Carsten,
    hmm, bitte jetzt nicht böse sein, aber das was Du oder ich da programmieren ist nicht der Nabel der Welt. Ich hole mal ein wenig aus, also eine SPS hat ein Betriebssystem, welches im Hintergrund aus unserem Geschreibsel viele Dinge macht, die Dir offensichtlich so nicht bewußt sind.
    Du definierst eine Zeit in einem Unterprogramm welches ab und zu mal läuft und gleichzeitig greifst Du von ganz anderer Stelle auf diese unter Umständen nicht laufende Definition zu. Dir ist bewußt wieviele Flags, Register und Bits da unter Umständen nicht mit gesetzt/geschrieben werden?
    Wenn ich der Compiler wäre würde ich Dir solchen Code um die Ohren schlagen. Das ist das Gegenteil von dem was man robusten Code nennt, und Du kannst mir glauben, wenn man solche Fehler bewußt oder unbewußt macht, die Suche nach der Ursache kann grausam sein.
    Das ist genauso schlimm wie unkommentierter Quelltext oder Knoffhoffschutz.

    Sorry, so sehe ich das leider
    Mario

  11. #10
    Kallemann Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Mario.

    Deswegen bin ja nicht böse. Aber wenn Du meinen Code nicht robust findest, dann zeig' mir doch, wie ich ihn robust machen kann und hilf mir, besser zu werden.

    VG
    Carsten

Ähnliche Themen

  1. CPU noch zu Retten? S7 200 Typ 222
    Von OVö im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 09.03.2012, 13:28
  2. Antworten: 7
    Letzter Beitrag: 23.07.2009, 19:37
  3. S7 Simatic 200 CPU 222 Visualisierung
    Von chrisi01 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 12.12.2007, 20:51
  4. S7-200 CPU 222 Unterprogramm mit Timer
    Von bmshine im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.10.2006, 14:35
  5. Antworten: 1
    Letzter Beitrag: 01.06.2005, 14:41

Lesezeichen

Berechtigungen

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