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

Ergebnis 1 bis 10 von 10

Thema: TP Impuls in SCL

  1. #1
    Registriert seit
    07.05.2016
    Beiträge
    170
    Danke
    42
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Tag,

    habe ein Problem mit dem Impuls.

    Wenn ich als Signalquelle einen Taster (taster_1) nehme,
    dann läuft alles. Wenn ich als Quelle jedoch einen Merker von Typ bool
    nehme, dann wird der timer nicht aktiviert obwohl der Merker auf High ist.

    Gibt es da eine Besonderheit was man beachten muss?


    Code:
    "tmr1".TP(IN:="taster_1",
                  PT:=T#5S);
        
        IF "tmr1".Q = true THEN
            #u1_start_satz_1 := 1;
            #u2_start_satz_1 := 1;
        ELSE
            #u1_start_satz_1 := 0;
            #u2_start_satz_1 := 0;
        END_IF;

    Hier der Quellcode mit dem Merker #start_tmr

    Code:
    #start_tmr := true;
        "tmr1".TP(IN:=#start_tmr,
                  PT:=T#5S);
        
        IF "tmr1".Q = true THEN
            #u1_start_satz_1 := 1;
            #u2_start_satz_1 := 1;
        ELSE
            #u1_start_satz_1 := 0;
            #u2_start_satz_1 := 0;
        END_IF;
    Zitieren Zitieren TP Impuls in SCL  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.409
    Danke
    392
    Erhielt 2.342 Danke für 1.949 Beiträge

    Standard

    Ich würde sagen, dass dein SFB einen Flankenwechsel 0 -> 1 am Eingang erwartet und keine statische 1 - wozu soll das im Übrigen in dieser Form gut sein ...?

  3. #3
    Neurorancer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.05.2016
    Beiträge
    170
    Danke
    42
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Mein Ziel ist es einen Merker für eine kurze Zeit auf high zu setzen und dann wieder rücksetzen. Alse kurz einen high pegel erzeugen. Deswegen habe ich mir gedacht, dass man das mit TP lösen kann. Das heißt ich muss den Merker tmr1 einmal reseten damit TP aktiviert wird, ja?

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.409
    Danke
    392
    Erhielt 2.342 Danke für 1.949 Beiträge

    Standard

    Naja ... wenn "kurz" auch ein Zyklus sein kann dann gäbe es da auch noch andere Wege als einen TP zu nehmen.
    Soll dein Impuls aber tatsächlich 5 s lang sein so würde ich einen TON nehmen und den "Merker" solange zuweisen wie myTON.Q nicht TRUE ist ...

    Gruß
    Larry

  5. #5
    Registriert seit
    11.12.2009
    Beiträge
    2.061
    Danke
    387
    Erhielt 381 Danke für 264 Beiträge

    Standard

    Und es darf keine TEMP-Variable sein...

    Grüße

    Marcel
    Stell Dir vor es geht, und keiner kriegts hin!

  6. #6
    Registriert seit
    26.04.2010
    Beiträge
    287
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Einfach nach dem ersten Aufruf des TP die Startvariable wieder "false" setzen und den Aufruf des TP nochmal ausführen.

    So wird der Timer gestartet und die Instanz erhält danach die Rückmeldung, dass der Starteingang wieder "false" ist.
    Beim nächsten Aufruf wird der Startmerker dann wieder "true" gesetzt, die Instanz bekommt das mit, startet die Zeit und es geht wie oben beschrieben weiter.

    Ich weiss aber nicht, was ein TP der ständig neu gestartet wird bringen soll.

    Gruß,

    Ottmar

  7. #7
    Neurorancer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.05.2016
    Beiträge
    170
    Danke
    42
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Vielleicht habe ich mich falsch ausgedrückt. Ich möchte einen Kurzen Impuls High->Low erzeugen und das einmalig
    um eine Hardware zu starten.

    (Der Impuls soll einmalig erfolgen, das werde ich softwaremäßig lösen. )

    Einfach mit Setzen und Rücksetzen des Ausganges klappt es nicht, da es dann viel zu kurz ist.
    Wie kann man denn den High-Pegel über eine Bestimmte Zeit halten?

    Ich programmiere in SCL. Gibt es da evtl eine Funktion?

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.409
    Danke
    392
    Erhielt 2.342 Danke für 1.949 Beiträge

    Standard

    ... dann mach es doch so, wie von mir in Beitrag #4 beschrieben ... dann mußt du auch nichts um den Timer herum-programmieren ...
    In SCL gibt es im Grunde die gleichen Functionen wie in AWL ...

    Gruß
    Larry

  9. #9
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.485
    Danke
    408
    Erhielt 868 Danke für 702 Beiträge

    Standard

    Zitat Zitat von Neurorancer Beitrag anzeigen
    Ich möchte einen Kurzen Impuls High->Low erzeugen und das einmalig
    um eine Hardware zu starten.

    (Der Impuls soll einmalig erfolgen, das werde ich softwaremäßig lösen. )
    Klingt so nach Erzeugen des Impulses beim Programmstart.
    Wenn ja, dann:
    1. Im OB100 einen Merker setzen.
    2. In einem Netzwerk des OB1 bzw. von dessen untergeordneten Bausteinen diesen Merker zum Starten eines Nachlauftimers TOF bzw. einer Auschaltverzögerung S_AVERZ benutzen.
    3. In einem erst darauf folgendem Netzwerk den Merker rücksetzen.

    So läuft der Timer nur einmal beim (Neu-) Start der SPS.
    Bei neueren CPUen, wie S7-1200 oder S7-1500 gibt es für diesen Merker bereits ein Systemmerkerbit ("FirstScan"), welcher automatisch nur im 1. Zyklus HIGH ist. Dann kann man sich 1. und 3. sparen.


    Wenn der Start des SPS-Programms zu früh für den Reset-Impuls für die andere Hardware ist, dann die Impulsausgabe verzögern. Der obige TOF stellt dabei die Verzögerung dar.
    4. Mit der negativen Flanke des Ausgangs des ersten TOF einen 2. für die Impulsausgabe starten.



    PS: Mit SCL fallen logischerweise die Netzwerke weg, aber sonst das gleiche Vorgehen:
    Einmalig den Merker setzen, TOF starten, Merker rücksetzen.
    Geändert von hucki (12.07.2016 um 20:06 Uhr)

  10. #10
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.485
    Danke
    408
    Erhielt 868 Danke für 702 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Übrigens sollte Dein Merker-Code aus dem Eröffnungs-Post funktionieren, wenn Du den Merker erst nach dem Timer setzt.
    Dann ist der Merker im ersten Zyklus noch LOW und der TP kann im nächsten Zyklus die LOW-HIGH-Flanke feststellen und den Impuls starten:

    Code:
        "tmr1".TP(IN:=#start_tmr, PT:=T#5S);
        
        #u1_start_satz_1 := "tmr1".Q;                  // bei Bool oder
        #u2_start_satz_1 := Bool_to_Int( "tmr1".Q );   // z.B. bei INT-Zahlenwert
    
        #start_tmr := TRUE;
    (Das IF-Gewurstel ist m.M.n. auch etwas umständlich, deshalb hab' ich's mal mit eingekürzt. )

Ähnliche Themen

  1. Zeitschaltuhr Impuls
    Von johannes1986 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 21.09.2012, 22:08
  2. Impuls verzögern
    Von c0oNe im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 10.05.2011, 20:07
  3. Zeitfunktion SV - verlängerter Impuls in SCL
    Von s_alpen im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 26.11.2010, 09:55
  4. Kurzer Impuls
    Von cboerm im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 08.07.2010, 11:46
  5. Impuls
    Von titinparma im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 24.10.2007, 18:04

Lesezeichen

Berechtigungen

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