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

Ergebnis 1 bis 8 von 8

Thema: Probleme mit FB Aufruf Überschneidung

  1. #1
    Registriert seit
    02.11.2006
    Beiträge
    7
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    vorab meine Systeminfos:

    Simatic Manager Version 5.4 + SP4
    CPU Siemens CPU 416-2

    Situation:

    Ich habe Einen Behälter mit Verschiedenen Klopferbatterien.

    Jede Batterie bestzeht aus ein bis max. drei Rüttler.
    Die Rüttler sollen nacheinander mit einer eingestellten Impuls/Pausezeit angesteuert werden.

    Da es mehrer Rüttlergruppen (Batterien) gibt habe ich den FB 243 erstellt siehe Code unten.


    Den FB 242 habe ich mehrfach aufgerufen jeweils mit einen eigenen Instanz DB.

    Problem:

    Das Proble zeigt wie folgt...

    Der Merker 6.1 Auto_Ein kommt für beide aufrufe.
    Der Merker 6.0 Ist ein Impulsmerker ( 1 Impuls/sek)
    R_Anzahl = Anzahl der angeschlossenen Rüttler
    R1_ein = Rüttlerausgang
    R1_ist_ein = Rückmeldung für Visu
    Hand_Impuls = Impulszeit für Hand und AUTO
    Hand_Pause = Pausenzeit für Hand und AUTO

    Nun sollen die einzelnen Batterien mit der eingestellten Zeit Rütteln. Beim ersten aufruf funktioniert das ganze TipTop beim zweiten Aufruf im nächten Netzwerk funktioniert es nicht die Rüttler die im zweiten Aufruf nach anderen zeiten rütteln sollten orientieren sich irgendwie anden für den ersten Aufruf eingestellten Zeiten und sind aber total aus der Reihe. Es sieht so aus wi wenn es da eine Überschneidung gäbe. Wenn ich den FB 243 als FB244 kopiere und die zweite Batterie über den FB 244 anspreche dann funktioniert das ganze.

    ...so ganz schön viel Text - hier der Code:

    FB213 Aufrufe:

    Code:
     
     Netzwerk 1:
     
     
    CALL FB 243 , DB130
    R_Auto_Ein :=M6.1
    R_Hand_Ein :=DB104.DBX33.7
    R_Anzahl :=3
    Impuls_1s :=M6.0
    Hand_Impuls:=DB153.DBW42
    Hand_Pause :=DB153.DBW44
    R1_ein :=A67.3
    R2_ein :=A67.4
    R3_ein :=A66.6
    R1_ist_ein :=DB104.DBX36.4
    R2_ist_ein :=DB104.DBX37.7
    R3_ist_ein :=DB104.DBX37.6
     
     
    Netzwerk 2:
     
    CALL FB 243 , DB129
    R_Auto_Ein :=M6.1
    R_Hand_Ein :=DB104.DBX33.6
    R_Anzahl :=2
    Impuls_1s :=M0.6
    Hand_Impuls:=DB153.DBW46
    Hand_Pause :=DB153.DBW48
    R1_ein :=A67.5
    R2_ein :=A67.6
    R3_ein :=
    R1_ist_ein :=DB104.DBX39.2
    R2_ist_ein :=DB104.DBX39.3
    R3_ist_ein :=
    FB 243 Programmlogik:

    [CODE]

    Netzwerk 1 / Impulszeit - Pausenzeit Rüttler:

    //---Zähler IMPULSZEIT
    //----------------------------------
    U(
    O #R_Hand_Ein
    O #R_Auto_Ein
    )
    UN #HM_Hand_Pausezeit
    U #Impuls_1s
    FP #flanke_time_imp
    = #imp_sp
    U #imp_sp
    SPBN m01
    L #Zeit
    L 1
    +I
    T #Zeit // Zeit erhöhen wenn Impuls da ist
    L #Zeit // Zeit Vergleichen mit Impulszeit
    L #Hand_Impuls
    >I
    SPBN m01
    //------ Pausezeit setzen wenn zeit abgelaufen ist
    SET
    S #HM_Hand_Pausezeit
    L 0
    T #Zeit
    SPA ende // Sprung ans Ende des NW
    m01: NOP 0
    //--- Zähler PAUSEZEIT
    //----------------------------------
    U(
    O #R_Hand_Ein
    O #R_Auto_Ein
    )
    U #HM_Hand_Pausezeit
    U #Impuls_1s
    FP #flanke_time_pause
    = #pause_sp
    U #pause_sp
    SPBN m02
    L #Zeit
    L 1
    +I
    T #Zeit // Zeit erhöhen wenn Impuls da ist
    L #Zeit // Zeit Vergleichen mit Pauseszeit
    L #Hand_Pause
    >I
    SPBN m02
    //------ Pausezeit zurücksetzen
    SET
    R #HM_Hand_Pausezeit
    L 0
    T #Zeit
    m02: NOP 0
    // Zähler zurücksetzen wenn keine Handbedienung
    UN #R_Hand_Ein
    UN #R_Auto_Ein
    SPBN ende
    SET
    R #HM_Hand_Pausezeit
    L 0
    T #Zeit
    ende: NOP 0


    Netzwerk 2 / Rüttler Impulszeit Auto/Handbetrieb:

    U #R_Hand_Ein
    UN #HM_Hand_Pausezeit
    O
    U #R_Auto_Ein // Impulszeit von Phase
    UN #HM_Hand_Pausezeit
    = #HM_Ruettler_Impulszeit


    Netzwerk 3 / Auswahl 1,2 oder 3 Rüttler:

    L #R_Anzahl
    L 1
    ==I
    = #HM_1_Ruettler
    L #R_Anzahl
    L 2
    ==I
    = #HM_2_Ruettler
    L #R_Anzahl
    L 3
    ==I
    = #HM_3_Ruettler

    Netzwerk 4 / Rüttler 1 ein:

    U #HM_Ruettler_Impulszeit
    UN #HM_Ruettler1_ist_fertig
    = #R1_ein // Ausgang
    = #R1_ist_ein // Anzeige Visu
    // Merken dass Rüttler ein war
    U #R1_ein
    FN #HM_FN_Ruetttler1_fertig
    S #HM_Ruettler1_ist_fertig

    Netzwerk 5 / Rüttler 2 ein:

    U #HM_Ruettler_Impulszeit
    UN #HM_Ruettler2_ist_fertig
    U #HM_Ruettler1_ist_fertig
    = #R2_ein // Ausgang
    = #R2_ist_ein // Anzeige Visu
    // Merken dass Rüttler ein war
    U #R2_ein
    FN #HM_FN_Ruetttler2_fertig
    S #HM_Ruettler2_ist_fertig


    Netzwerk 6 / Rüttler 3 ein:

    U #HM_Ruettler_Impulszeit
    UN #HM_Ruettler3_ist_fertig
    U #HM_Ruettler1_ist_fertig
    U #HM_Ruettler2_ist_fertig
    = #R3_ein // Ausgang
    = #R3_ist_ein // Anzeige Visu
    // Merken dass Rüttler ein war
    U #R3_ein
    FN #HM_FN_Ruetttler3_fertig
    S #HM_Ruettler3_ist_fertig


    Netzwerk 7 / Bits zurücksetzen:

    U #HM_Ruettler3_ist_fertig
    O
    U #HM_2_Ruettler
    U #HM_Ruettler2_ist_fertig
    O
    U #HM_1_Ruettler
    U #HM_Ruettler1_ist_fertig
    R #HM_Ruettler1_ist_fertig
    R #HM_Ruettler2_ist_fertig
    R #HM_Ruettler3_ist_fertig

    [CODE/]
    Angehängte Dateien Angehängte Dateien
    Geändert von stoag (10.12.2009 um 16:10 Uhr)
    Zitieren Zitieren Probleme mit FB Aufruf Überschneidung  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    Ich habe jetzt nicht den Code im Einzelnen durch-akadiert ... aber ...
    wo in dem FB sind die ganzen Hilfs- und Flankenmerker definiert ?
    Im Bereich TEMP oder im Bereich STAT ? Wenn du welche (oder alle) davon im TEMP-Bereich definiert hast, dann schieb die doch mal in den STAT-Bereich ...

    Gruß
    LL

  3. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    stoag (11.12.2009)

  4. #3
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    Hallo,

    auf die Schnelle ist mir gerade aufgefallen, dass du im NW2 den Takteingang mit 0.6 und nicht mit 6.0 belegt hast...

    Randbemerkung, wenn du den Takt für alle gleich hälst, könntest du dir auch den Eingang sparen und den Takt im FB direkt mit M6.0 verwenden, nur so Allgemein.
    Größer als Chuck Norris: The One and Only

  5. Folgender Benutzer sagt Danke zu MatMer für den nützlichen Beitrag:

    stoag (11.12.2009)

  6. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ein problem sind die TEMP

    #flanke_time_imp
    #flanke_time_pause
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    stoag (11.12.2009)

  8. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Zitat Zitat von MatMer Beitrag anzeigen
    Hallo,

    auf die Schnelle ist mir gerade aufgefallen, dass du im NW2 den Takteingang mit 0.6 und nicht mit 6.0 belegt hast...

    Randbemerkung, wenn du den Takt für alle gleich hälst, könntest du dir auch den Eingang sparen und den Takt im FB direkt mit M6.0 verwenden, nur so Allgemein.
    Ich würde trotzdem den Input für den Taktmerker vorziehen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    stoag (11.12.2009)

  10. #6
    stoag ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    7
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Lächeln

    Danke für eure schnellen Antworten. Ich werde die TEMP Merker durch STAT ersetzen und das Resultat verkünden.
    Zitieren Zitieren Deklaration  

  11. #7
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ich würde trotzdem den Input für den Taktmerker vorziehen.
    machen wir Firmen intern auch ähnlich, allerdings sehe ich persönlich bei sowas wenig Sinn, wir haben mehrere Standardmerker die ich bei zahlreichen Aufrufen als Input eingeben muss... Wenn ich schon einen Standardmerker habe würde ich den persönlich auch fest reinschreiben, für das eine Prozent der Projekte wo man die Merker abändern muss finde ich die Inputs überflüssig...
    Größer als Chuck Norris: The One and Only

  12. #8
    stoag ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.11.2006
    Beiträge
    7
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    hab die Änderungen drin und es läuft. Danke für eure Unterstützung.

    Zitieren Zitieren Es hat geklappt.  

Ähnliche Themen

  1. Probleme beim FB-Aufruf
    Von matzek im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 23.09.2010, 21:07
  2. DB aufruf
    Von Kiter11 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.03.2009, 16:39
  3. aufruf von FC
    Von awl-scl im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 10.12.2007, 12:49
  4. Probleme mit dynamischem DB-Aufruf
    Von jupp im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 10.05.2006, 16:06
  5. DIX -Aufruf in SCL
    Von Wastel im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.10.2005, 11:09

Lesezeichen

Berechtigungen

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