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

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

Thema: Pointer auf Flankenmerker

  1. #1
    Registriert seit
    08.01.2005
    Beiträge
    44
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Ihr Schlauen,

    ich habe ein kleines Prog. geschrieben. Darin nutze ich für einen Flankenmerker:

    LAR1 #MerkerDW

    u m 100.7 (Taktmerker)
    FP M [AR1,P#0.0]
    SPBN SP_1
    xxx
    xxx
    SP_1: nop 0

    Warum (zumindest in meinem SIMULATOR PLCSIM) durchläuft er die Stelle mit den xxx immer so lange wie der Taktmerker HIGH liefert ???
    Eigentlich unerklärlich.
    Wenn ich mir den Merker ansehe ist er trotz allem nur immer 1Zyklus EIN.

    Gibt es dafür eine Erklärung?

    Gruß Matthias

    PS: Ich möchte einen Taktbaustein schreiben der ohne Timer und Zähler usw. auskommt. Lediglich ein zu belegender Merkerbereich soll übergeben werden. (Für die notwendigen Flankenmerker, Zwischenwerte etc) Am eingang soll ein Starteingang, die EIN- Zeit, die AUS- Zeit und ein Merkerbereich übergeben werden.
    Zitieren Zitieren Pointer auf Flankenmerker  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard

    Frage mich nicht warum, aber ich habe auch schon die Erfahrung machen
    müssen das Flanken-Sprünge nur als SPB funktionieren, und nicht mit SPBN.

    Mfg
    Manuel

  3. #3
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Ich bin vielleicht koservativ, aber ich schreibe alle Flankenauswertungen als:
    U Signal
    UN Hilfsmerker
    = wasAuchImmer

    ...


    // und am Programmende:
    U Signal
    = Hilfsmerker

    Das hat für mich 2 große Vorteile:
    1. Es funktioniert auf jeder SPS, die ich kennengelernt habe.
    2. Ich kann die Bedingung
    U Signal
    UN Hilfsmerker
    problemlos mehrfach benutzen.

  4. #4
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.862
    Danke
    78
    Erhielt 805 Danke für 548 Beiträge

    Standard

    [quote="
    LAR1 #MerkerDW
    [/quote]

    also bei mir funktioniert das.

    allerdings so
    L #merkerdw
    LAR1
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation
    Zitieren Zitieren Re: Pointer auf Flankenmerker  

  5. #5
    Registriert seit
    23.11.2004
    Beiträge
    347
    Danke
    2
    Erhielt 28 Danke für 28 Beiträge

    Standard

    @MEMO - Matthias

    Also wenn ich das richtig verstanden habe, lädt der Befehl
    "LAR1" Adreßregister AR1 mit dem Inhalt von AKKU 1.

    Somit wird mit
    Code:
    LAR1 #MerkerDW
    zusätzlich zu dem Inhalt des AKKU 1 noch der Inhalt des #MerkerDW addiert.
    War das so gewollt?

    Gruß
    raika

  6. #6
    Registriert seit
    08.01.2005
    Beiträge
    44
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hall,

    vielen Dank für eure Antworten. Werde es heute noch probieren.
    Zum einen meinen Fehler mit dem laden des AR1, zum anderen der Hinweiß mit den bestehenden Prob. bei Flankensprüngen SPBN.
    Naja - würde mich freuen wenn's klappt.

    Mfg

    Matthias
    Zitieren Zitieren Ponterprobleme  

  7. #7
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    spbn funktioniert ganz sicher. ich mache alles damit, seit Jahren.

    LAR1 #MerkerDW Ist eigentlich OK es wird direkt in Register geladen, aber ich mache es eigentlich auch immer über den Akku.

    Ich vermute, dass das MerkerDW irgendwo nicht beschrieben wird.

    Ich würde auch einen FB vorschlagen, da hat man statische Variablen und bracht nicht mit den Merkern rumspielen wie zu S5 Zeiten.

    Gruß, pt

    edit: Aussage über MerkerDW geändert
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  8. #8
    Registriert seit
    08.01.2005
    Beiträge
    44
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    war ein paar Tage unterwegs, und hatte keine Zeit weiter zu probieren...

    Nun bin ich wieder bei meinem Projekt. Meinen ursprünglichen Fehler hatte ich gefunden, es lag daran das ich ein MW doppelt genutzt habe.

    Jetzt gibt es ein neues Problem (aber nur in REALITÄT, auf meiner Simulation ist alles i.O.)
    Also:
    Ich habe eine FC geschrieben die als Eingangsarametern die EIN- und die AUS Zeiten eines Takters enthalten. Da ich keine Zähler verwenden wollte habe ich zusätzlich einen Taktmerker der CPU als Eingangsparameter verwendet. Nun ist es es so das ich mittels zählen die Werte abfrage und entsprechend schalte. Zu Begin der Freigabe gibt es noch eine einstellbare Wartezeit bevor die Taktung beginnt. (Soll in einer großen Anlage als Multi- Takter eingesetzt werden, und es hängen große Lasten daran die nicht alle gleichzeitig anlaufen sollen.)
    Naja.....
    Es gibt erst Probleme wenn der Baustein mehrfach aufgerufen wird, und das obwohl ich in der FC nur mit Pointern arbeite. Die MW die genutzt werden sollen sind ebenfalls in den Übergabeparametern angeführt:

    Eingang:
    Imp_10tel_Sekunde - Bool (Taktmerker 10tel- Sekunde -> x.0)
    Zwei_DW_ab_DW - INT (zB. 80 für MW 80 bis MW 86)
    EIN - Bool (Freigabeschalter)
    Restart_IMP - Bool (Neustart)
    Time_Anl_Delay_10tel_Sek - INT (Anlaufsperre in 10tel Sek)
    Time_1_10tel_Sek - INT (EIN- Zeit in 10tel Sek)
    Time_2_10tel_Sek - INT (AUS- Zeit in 10tel Sek)

    Ausgang:
    OUT_1 - Bool (Ausgang)

    Programm:
    **********

    // Übergabeparameter auf 2 DW teilen
    // Zu Rücksetzzwecken
    L #Zwei_DW_ab_DW
    L 8
    *D
    T #ZW_MD_1

    L #Zwei_DW_ab_DW
    L 4
    +D
    L 8
    *D
    T #ZW_MD_2

    // Adressregister Laden
    // IN AR1
    L #ZW_MD_1
    LAR1

    // Veränderungen an der Zeit erfassen --> Neustart
    // des Zyklus einschl. Anlaufdelay
    L #Time_1_10tel_Sek
    L #Time_2_10tel_Sek
    +I
    L MW [AR1,P#6.0]
    <>I
    = M [AR1,P#0.2] // Zwischmerker Neustart

    L #Time_1_10tel_Sek
    L #Time_2_10tel_Sek
    +I
    T MW [AR1,P#6.0] // Zwischenwert Zeit



    // Rücksetzen wenn keine Bearbeitung
    // Start = 0
    U #EIN
    SPB SP_1
    L L#0
    T MD [#ZW_MD_1]
    T MD [#ZW_MD_2]
    SET
    R #OUT_1
    S M [AR1,P#0.0] // Hilfsmerker Anlauf
    BEB
    SP_1: NOP 0

    // Rücksetzen wenn Eingang RESTART oder Zeitenänderung


    U #Restart_IMP
    FP M [AR1,P#0.3]
    O(
    U M [AR1,P#0.2]
    FP M [AR1,P#0.5]
    )
    SPBN SP_3
    L L#0
    T MD [#ZW_MD_1]
    T MD [#ZW_MD_2]
    SET
    R #OUT_1
    S M [AR1,P#0.0] // Hilfsmerker Anlauf
    = M [AR1,P#0.3] // Flankenmerker
    = M [AR1,P#0.5] // Flankenmerker
    BEB
    SP_3: NOP 0


    // Anlaufverzögerung
    U #Imp_10tel_Sekunde
    FP M [AR1,P#0.1]
    U M [AR1,P#0.0]
    SPBN SP_2
    L MW [AR1,P#2.0]
    L 1
    +I
    T MW [AR1,P#2.0] // Zähler Anlaufzeit
    SP_2: NOP 0
    L MW [AR1,P#2.0]
    L #Time_Anl_Delay_10tel_Sek
    >=I
    R M [AR1,P#0.0]

    U M [AR1,P#0.0]
    BEB

    // Abfrage auf EINZEIT = 0
    // (Dauer AUS)
    L #Time_1_10tel_Sek
    L 0
    ==I
    SPBN SPE0
    L L#0
    T MD [#ZW_MD_1]
    T MD [#ZW_MD_2]
    SET
    R #OUT_1
    S M [AR1,P#0.0] // Hilfsmerker Anlauf
    BEB
    SPE0: NOP 0

    // Abfrage auf EINZEIT > 0
    // und AUSZEIT = 0
    // (Dauer EIN)
    L #Time_1_10tel_Sek
    L 0
    >I
    = #ZW_001
    L #Time_2_10tel_Sek
    L 0
    ==I
    = #ZW_002
    U #ZW_001
    U #ZW_002
    SPBN SPE1
    L L#0
    T MD [#ZW_MD_1]
    T MD [#ZW_MD_2]
    SET
    S #OUT_1
    S M [AR1,P#0.0] // Hilfsmerker Anlauf
    = M [AR1,P#0.3] // Flankenmerker
    = M [AR1,P#0.5] // Flankenmerker
    BEB
    SPE1: NOP 0


    // Zählen
    U #Imp_10tel_Sekunde
    FP M [AR1,P#0.4]
    SPBN SP_4
    L MW [AR1,P#4.0]
    L 1
    +I
    T MW [AR1,P#4.0]
    SP_4: NOP 0

    // Vergleichen
    L MW [AR1,P#4.0] // Aktuellen Zählwert laden
    L #Time_1_10tel_Sek
    <=I
    = #OUT_1


    L #Time_1_10tel_Sek
    L #Time_2_10tel_Sek
    +I
    L MW [AR1,P#4.0] // Aktuellen Zählwert laden
    <I
    SPBN SP_5
    U M [AR1,P#0.3] // Zwischenspeicher Flanke
    = #ZW_003
    L L#0
    T MD [#ZW_MD_1]
    T MD [#ZW_MD_2]
    U #ZW_003 // Rücksichern Flanke
    = M [AR1,P#0.3] // Flankenmerker
    = M [AR1,P#0.5] // Flankenmerker

    L #Time_1_10tel_Sek
    L #Time_2_10tel_Sek
    +I
    T MW [AR1,P#6.0]


    SP_5: NOP 0

    Warum kann ich diese FC nicht mehrfach aufrufen ohne Probleme zu bekommen.

    Mfg Matthias
    Zitieren Zitieren Weitere Probleme  

  9. #9
    Anonymous Gast

    Standard

    Hallo,

    ich glaub ich habs nicht richtig verstanden........

    Welches Problem bekommst du wenn du den Baustein mehrfach aufrufst?

    Grüßle
    Zitieren Zitieren Welches Problem ?  

  10. #10
    Registriert seit
    06.10.2003
    Beiträge
    3.448
    Danke
    454
    Erhielt 509 Danke für 411 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Matthias,

    ich sichere den Inhalt vom AR1 bei solche Aktionen am Anfang des Bausteins, und restauriere es am Ende wieder.


    Code:
    //*** AR1 sichern
          TAR1  #TEMP_AR1
          SET   
          SAVE  
    
    //*** Programm
    ...
    
    //*** AR1-Register wiederherstellen
          LAR1  #TEMP_AR1
          BE

    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

Ähnliche Themen

  1. Temp Flankenmerker
    Von baalrok im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 06.03.2012, 13:32
  2. Flankenmerker
    Von Manfred Stangl im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 24.03.2009, 08:31
  3. Flankenmerker funktioniert nicht
    Von ogstyle im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.07.2007, 13:36
  4. Flankenmerker in FB immer TRUE
    Von Reto im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 08.10.2006, 02:41
  5. Variablen als Flankenmerker
    Von blackball83 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.08.2006, 14:42

Lesezeichen

Berechtigungen

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