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

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 41

Thema: Kleines Programm für eine S7-200 CPU 212

  1. #31
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Richtig!


    Hast Du das nächste Feintuning gesehen?
    Zitat Zitat von hucki Beitrag anzeigen
    Dann kommen wir gleich mal noch zum nächsten Feintuning:

    Du hast Deine Vorgaben 40s und 15s. Die verwendest Du mehrfach im Programm, zum Teil auch nur indirekt als 55. Wenn Du diese Werte ändern willst, mußt Du dein gesamtes Programm durchsuchen!

    Also würde ich im ersten Netzwerk (vor Deinem jetzigen Programm einfügen) die 40 und 15 mit dem MOVW-Befehl z.B. an die Variablen VW0 und VW2 übertragen. MOVW brauchst Du, weil es sich beim Vorgabe- und Zählerwert jeweils um einen INTegerwert handelt.
    Dabei mußt Du festlegen, wann diese Übertragung stattfinden soll. Normalerweise reicht das im ersten Zyklus, den man durch den gesetzten Sondermerker SM0.1 ermitteln kann.

    Die beiden so angelegten Variablen (VW0 & 2) sollten dann im nächsten Netzwerk addiert werden (zb. ins VW4), um so den Vorgabewert für den Zähler zu ermitteln. Auch dies reicht im ersten Zyklus aus.

    Die Vorgaben bzw. Vergleiche führst Du dann nicht mit den konkreten Zahlen sondern mit den Variablen durch.

  2. #32
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja habe ich, aber da die Werte nur noch einmal abgefragt werden, macht es das in diesem Fall nur komplizierter. Ist mir klar, wenn ich ein langes Programm habe, an bei dem die Werte an mehreren Stellen abgefragt werden, das so Sinnvoll ist. Aber hier....

    Code:
    NETWORK 1
    LD     SM0.5                //Taktmerker für 1s
    LD     Z0                //Rücksetzen, wenn 55 erreicht ist
    ZV     Z0, +55
    
    NETWORK 2
    LDW<=  Z0, +40            //wenn der Zählerwert größer als 40s ist, wird der Merker gesetzt
    =      M10.1
    
    NETWORK 3
    LD     M10.1                //Ausgang 1 für 40s gesetzt
    U      E0.0
    =      A0.0
    
    NETWORK 4
    LDN    M10.1                //Ausgang 1 für 15s gesetzt
    U      E0.0
    =      A0.1
    
    NETWORK 5
    LD     M10.1                //Ausgang 1 für 40s gesetzt
    U      E0.1
    =      A0.2
    NETWORK 6
    LDN    M10.1                //Ausgang 1 für 15s gesetzt
    U      E0.1
    =      A0.3
    
    NETWORK 7
    LD     M10.1                //Ausgang 1 für 40s gesetzt
    U      E0.2
    =      A0.4
    
    NETWORK 8
    LDN    M10.1                //Ausgang 1 für 15s gesetzt
    U      E0.2
    =      A0.5

  3. #33
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Ok, lassen wir mal so gelten, da der Grund verstanden wurde.

    Dann das nächste:
    Du willst 40s und 15s. Der Zähler beginnt bei Null. Im Netzwerk 2 wird auf kleiner gleich 40 verglichen.
    M10.1 ist also von 0 bis 40 gesetzt, aber nur von 41 bis 54 nicht, dennn bei 55 wird sofort auf Null zurückgestellt.

  4. #34
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK, dann setze ich den Vergleicher auf 39. Allerdings ist eine Sekunde mehr oder weniger laut "meiner Auftraggeberin" nicht so wichtig. Aber da es ja kein Aufwand ist, mache ich das so.

    Vielen Dank schon mal. Fahre dann jetzt zu meinem Spetzl und spiele das Programm ein. Bin mal gespannt.

  5. #35
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    In diesem Fall ist das so OK.

    Beim Einsatz von Variablen müsstest Du auf kleiner 40 vergleichen. Das steht Dir aber nicht zur Verfügung.
    Eine Lösung wäre z.B. das "kleiner als" "NICHT größer gleich" entspricht.

    Viel Erfolg!

  6. #36
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also das Programm läuft. Allerdings ist der SM0.5 nicht eine Sekunden lang. Also zumindest nicht genau. Nicht das das sehr wichtig wäre, aber interessieren würde mich das schon. Wir reden hier von einer Abweichung von ca. 2s auf eine Minute. Wie geht das?????

    Kann es sein, dass wegen der kürze des Zykluses das Programm mehrmals pro Sekunde durchlaufen wird und so er ein wenig schneller ist?

    Kann ich irgendwie nur die Flanke abfragen?
    Geändert von Tompson (16.01.2012 um 09:48 Uhr)

  7. #37
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Würde folgendes klappen?


    Code:
    NETWORK 1 
    LD     SM0.5                //Taktmerker für 1s 
    EU
    LD     Z0                //Rücksetzen, wenn 55 erreicht ist ZV     
    Z0, +55

  8. #38
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Jein,
    funktionieren 'tutet' es zwar. Aber wahrscheinlich nicht besser als vorher, denn die Flankenabfrage macht der Zähler intern sowieso.
    Zitat Zitat von MicroWin-Hilfe: Vorwärtszähler
    Die Operation Vorwärtszählen (CTU/ZV) zählt bei steigender Flanke am Vorwärtszähleingang CU vom aktuellen Wert des Zählers an vorwärts.
    ...
    2 Sekunden Taktabweichung pro Minute ist schon stark heftig. Woran das liegt kann ich Dir leider nicht beantworten, aber ich würde auf die CPU selber als Ursache tippen.


    Versuch Dir mal einen eigenen Takt zu programmieren.
    Nimm dazu einen Timer als Einschaltverzögerung mit einer Auflösung von 1000ms, um eine hohe Genauigkeit zu erreichen. Die soll dann starten, wenn der eigene Timer (noch) aus ist. Den Vorgabewert stellst Du dann so ein, dass dieser Timer nach einer Sekunde auf 1 geht.
    Und diesen Timer verwendest Du dann auch zum Zählen anstelle des Systemtaktes.
    Den Vorgabewert kannst Du dann bei Deinen Tests entsprechend erhöhen/oder verringern, um Systemungenaugigkeiten auszugleichen.


    PS: Die Zykluszeit des letzten Zyklus in Millisekunden kannst Du übrigens mit dem Sondermerker SMW22 auslesen. Diese Adresse in eine Zeile der Statustabelle eingeben und in der Symbolleiste bei angeschlossener CPU auf das Symbol "Tabellenstatus" klicken.

  9. #39
    Registriert seit
    08.03.2012
    Ort
    54552 Katzwinkel
    Beiträge
    8
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Cool

    Hallo Leute, warum so kompliziert?

    Man braucht doch nur 2 Timer und ein paar Setz/Rücksetzbefehle. Das folgende Progrämmchen sollte funktionieren: (Nicht getestet, weil ich gerade zu Hause bin und keine Steuerung hier herumliegt...)


    Network 1 // Schalte mit dem Anlaufmerker die ersten 3 Ausgänge ein und die letzen 3 aus
    LD SM0.1
    S A0.0, 3
    R A0.3, 3
    Network 2 // Wenn A0.0 eingeschaltet ist, starte die Einschaltverzögerung T40
    LD A0.0
    TON T40, 400
    Network 3 // Nach Ablauf der Zeit (40s) schalte die letzten 3 Ausgänge ein und die ersten 3 aus
    LD T40
    S A0.3, 3
    R A0.0, 3
    Network 4 // Wenn A0.3 eingeschaltet ist, starte die Einschaltverzögerung T41
    LD A0.3
    TON T41, 150
    Network 5 // Nach Ablauf der Zeit (15s) schalte wieder die ersten 3 Ausgänge ein und die letzten 3 aus. Da jetzt wieder die Bedingung von Network 5 erfüllt ist, sollte es dort weitergehen...
    LD T41
    S A0.0, 3
    R A0.3, 3


    Das war's
    Zitieren Zitieren Warum so kompliziert?  

  10. #40
    Registriert seit
    28.05.2008
    Beiträge
    40
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Horkatz,

    danke für dein Programm, aber die SPS läuft schon seit Januar mit dem anderen Porgramm.

    Grüße
    Tompson

Ähnliche Themen

  1. Neu mit S7-200 CPU 212
    Von DANrulz81 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 02.03.2010, 06:12
  2. Zeitmessung mit S7-200 CPU 212
    Von HTL im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 21.02.2009, 13:41
  3. [verkaufe] s7 200 cpu 212
    Von veritas im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 17.01.2009, 19:54
  4. S7 200 (cpu 212) PC /PG Kabel
    Von RMR im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 14.09.2008, 19:35
  5. S7-200 CPU 212 SF-Anzeige
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 01.07.2004, 19:13

Lesezeichen

Berechtigungen

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