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

Ergebnis 1 bis 10 von 10

Thema: S_VIMP in Funktion: Alle die Funktion verwendenen Ausgänge werden geschaltet

  1. #1
    Registriert seit
    30.12.2011
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    Frohes Neues.

    Ich nutze eine S7-300 zur Heimautomatisierung und bin Autodidakt. Vieles läuft schon doch eine Sache verstehe ich nicht. Vielleicht könnt Ihr mir ja die Augen öffnen.

    Hintergrund:
    Ich steuere meine Rollläden u.a. über einen Taster je Raum. Je Raum habe ich auch einen Funktionsbaustein erstellt, der im OB1 aufgerufen wird. Die Raum-Funktionsbausteine (z.B. FC5 Küche, FC6 Wohnen,...) rufen die Funktionsbausteine FC1 RolloRauf bzw FC2 RolloRunter mit den entsprechenden Übergabeparametern auf. Soweit so gut.
    In FC1 bzw. FC2 verwende ich derzeit ziemlich trivial nur S_IMPULS. Vereinfacht gesagt, triggert ein Merker / Eingang den Impuls, der so lange läuft wie das Eingangssignal 1 ist. Im Umkehrschluss heißt dies aber, der Taster muss für die Laufzeit des Rollladens gehalten werden. Also wollte ich S_IMPULS durch S_VIMP ersetzen, dessen Ausgang auch bei Flankenwechsel während der Laufzeit 1 bleibt.

    Problem:
    Tausche ich nun S_IMPULS durch S_VIMP werden alle Ausgänge, die die Funktion verwenden, auf 1 geschaltet. Es fahren also alle Rollos runter, da ja FC5, FC6,... alle auf die gleiche "Basis"-Funktion zurückgreifen.
    Versuchte Lösungen:
    - Austausch S_VIMP durch SFB3 - keine Änderung der Symptome
    - Merker statt Ausgang an Q von S_VIMP - ebenfalls nix.
    - neues Projekt, neue Timer, Änderung von FC nach FB für Basis-Funktion (FC1,FC2)...

    Kann mich jemand auf den richtigen Pfad führen? Irgendwas grundlegendes muss mir entgangen sein...
    Vielen Dank und viele Grüße,Sascha
    Zitieren Zitieren S_VIMP in Funktion: Alle die Funktion verwendenen Ausgänge werden geschaltet  

  2. #2
    sbro ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.12.2011
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nachtrag:
    - CPU ist eine 315-2 DP
    - Step 7 5.5

    BeispielCode:
    OB1:
    Code:
    CALL "Küche"
    FC5: Küche
    Code:
          U     "1 runter"      =     L      0.0
          BLD   103
          U     "1 rauf"
          =     L      0.1
          BLD   103
          U     "M1"
          =     L      0.2
          BLD   103
          U     "sch_kueche_rauf"
          =     L      0.3
          BLD   103
          U     "Alle Rauf"
          =     L      0.4
          BLD   103
          CALL  "FC kl Rollladen rauf"
           Rollo_Runter       :=L0.0
           Rollo_Rauf         :=L0.1
           Meldespeicher      :=L0.2
           Schalter_fuer_rollo:=L0.3
           AlleRauf           :=L0.4
           Rollo_faehrt_Rauf  :="r1_rauf"
          NOP   0
    "FC kl Rollladen rauf"

    Code:
          U(          O(    
          UN    #Rollo_Runter
          U     #Rollo_Rauf
          S     #Meldespeicher
          U     #Rollo_Runter
          R     #Meldespeicher
          U     #Meldespeicher
          )     
          O     #Schalter_fuer_rollo
          O     #AlleRauf
          )     
          L     S5T#20S
          SI    T      3
          NOP   0
          NOP   0
          NOP   0
          U     T      3
          =     #Rollo_faehrt_Rauf

  3. #3
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Wenn Du den FC Rolladen rauf mehrfach verwenden willst, mußt du auch jedesmal eine andere Zeit verwenden .
    Gib im Aufruf die zeit mit an, als Eingangswert Timer.
    „Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus.“
    Siddhartha Gautama

  4. #4
    sbro ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.12.2011
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hm, leider negativ. Hier mal der simplifizierte Test-Code mit S_VIMP:

    FC40: Küche (enthält zu Testzwecken zwei Taster, Küche und Bibliothek). FB30 ist nun der neue Basisbausten
    NW1 -
    Code:
        U     "sch_kueche_runter"      =     L      0.0
          BLD   103
          U     "sch_kueche_rauf"
          =     L      0.1
          BLD   103
          CALL  "TESTFKT: rollos ru VIMP" , DB30
           rX_runter_Eingang:=L0.0
           rX_rauf_Eingang  :=L0.1
           rX_timer         :=S5T#35S
           rX_runter        :="1 runter"
          NOP   0
    NW2:
    Code:
        U     "sch_bib_runter"      =     L      0.0
          BLD   103
          U     "sch_bib_rauf"
          =     L      0.1
          BLD   103
          CALL  "TESTFKT: rollos ru VIMP" , DB30
           rX_runter_Eingang:=L0.0
           rX_rauf_Eingang  :=L0.1
           rX_timer         :=S5T#2S
           rX_runter        :="7 runter"
          NOP   0
    Und hier der Übeltäter FB30 mit VIMP und Timer als Übergabewert:
    Code:
          U     #rX_runter_Eingang      UN    #rX_rauf_Eingang
          L     #rX_timer
          SV    T     10
          U     "emergencyStopRollos"
          R     T     10
          NOP   0
          NOP   0
          U     T     10
          =     #rX_runter
    Schalte ich z.B. E3.0 werden die Merker "1 runter" und "7 runter" auf 1 gesetzt. Zeitgleich. Doof. Nachtrag: Schalte ich E3.0 (sch_kueche_runter) sind beide Merker 35s gesetzt. Schalte ich E1.7 (sch_bib_runter) sind es für beide nur die übergebenen 2s.

    Vielen Dank und viele Grüße,
    Sascha
    Geändert von sbro (02.01.2012 um 18:52 Uhr)

  5. #5
    Registriert seit
    15.04.2011
    Beiträge
    1.122
    Danke
    229
    Erhielt 208 Danke für 176 Beiträge

    Standard

    Wenn es Dir nichts ausmacht, lade doch mal das komplette Projekt hoch. Da kann man Dir vielleicht besser helfen. Nur Schnipsel sind schön, vor allen Dingen nicht bei Mehrfach-Aufrufen von Bausteinen.
    Gruß
    190B

  6. #6
    Registriert seit
    09.01.2008
    Beiträge
    17
    Danke
    5
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hi ...
    müsste die Timernummer nicht auch übergeben werden?

  7. #7
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von <nemo> Beitrag anzeigen
    Hi ...
    müsste die Timernummer nicht auch übergeben werden?
    Stimmt, hat jabba schon geschrieben, doch wurde es vermutlich falsch verstanden.
    Nicht verschiedene Zeitwerte, sondern verschiedene Timer Nummern.


    bike

  8. #8
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Zitat Zitat von sbro Beitrag anzeigen
    Hm, leider negativ. Hier mal der simplifizierte Test-Code mit S_VIMP:

    FC40: Küche (enthält zu Testzwecken zwei Taster, Küche und Bibliothek). FB30 ist nun der neue Basisbausten
    Dem FB30 übergibst du zweimal denselben Instanzdb (in NW1 und in NW2) ich nehme nicht an dass das so gewollt ist.

    Keine absolute Adressierung innerhalb eines mehrfach aufgerufenen Bausteins.
    Heisst, Kein!:
    SI T 3
    U M3.0
    L DB12dbx0.0
    etc.

    Nur so:
    U #xxx (xxx steht für das entsprechende Label)
    SI #xxx

    mfG René

  9. #9
    sbro ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.12.2011
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Super, danke, vielen Dank.

    Ich nutze nun verschiedene Timer-Nummern und die Sache funktioniert zumindest für meine Testumgebung reibungslos.

    Allerdings würde ich das gerne besser verstehen (wie erwähnt, Autodidakt).

    - Warum kann bei bei Verwendung von S_IMPULS auf einen einzigen Timer zurückgreifen? Was ist hier der Unterschied?
    - Was ist der Unterschied zwischen relativer u absoluter Adressierung? Was ist mit "Labels" gemeint?

    Nochmal Danke,
    Sascha

  10. #10
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von sbro Beitrag anzeigen
    - Warum kann bei bei Verwendung von S_IMPULS auf einen einzigen Timer zurückgreifen? Was ist hier der Unterschied?
    Du brauchst auch da verschiedene Timeradressen.

    - Was ist der Unterschied zwischen relativer u absoluter Adressierung? Was ist mit "Labels" gemeint?
    Absolute Adressen sind Adressen auf die du aus einem Baustein heraus direkt zugreifst also z.B. auf einen DB (db3.dbx0.0) Diese Adresse ist dann fest Ausprogrammiert in dem Baustein und in jedem Aufruf genau dieselbe. Ist allerdings etwas unklar ausgedrückt. Natürlich darf man aus so einem mehrfach aufgerufenen Baustein auch nicht Symbolisch auf eine externe Adresse zugreifen. In einem Mehrfach Aufgerufenen Baustein greift man immer nur auf die Deklarierten Variablen des Bausteins selber zu:
    IN, OUT, IN_OUT, TEMP, STAT darin müssen diese Variablen deklariert werden (was ich vorher als Label bezeichnet habe)

    Wenn du also einen Timer in deinem Baustein brauchst, deklarierst du im IN Variablenteil deines Bausteins eine Variable mit einem Namen z.B. Timer1 mit Datentyp "Timer"

    Diesen Timer1 hängst du dann so an:
    SI #Timer1

    Wenn du deinen Baustein mit Call aufrufst hast du dann einen Parameter der Timer1 heisst daran kannst du dann die direkte Adresse des Timers anhängen

    mfG René

Ähnliche Themen

  1. funktion SPS
    Von SheepLord im Forum Stammtisch
    Antworten: 19
    Letzter Beitrag: 19.12.2010, 18:20
  2. Funktion
    Von Placidjam im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 07.05.2009, 15:26
  3. SCL MID Funktion
    Von Uli_87 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 24.02.2009, 10:32
  4. Alle gesetzten Merker einer Funktion zurücksetzen
    Von dominik_Thesis im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 25.11.2008, 13:07
  5. Funktion
    Von isensa im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.07.2006, 18:07

Lesezeichen

Berechtigungen

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