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

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

Thema: Kann es mir (noch) nicht erklären ...

  1. #1
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    habe hier ein Phänomen, das ich nicht deuten kann:

    Code:
          U     M    100.1
          SPBN  END
    
          L     27
          T     #Wert            // OUT-Variable in einer FC
    
    END:  NOP   0

    Aufruf im OB1:

    Code:
           CALL  "Testbaustein"
           Wert:="DB_Test".Wert    // DB40.DBW10

    Fragen hierzu:

    Wenn der Merker M100.1 den Status 1 besitzt, so wird 27 in den DB geschrieben. Hat M100.1 wieder den Status 0, dann steht plötzlich wieder 0 im DB.

    Wird anstatt eines DB's im OB1 z.B. ein Merkerwort 200 hinter "Wert:=" geschrieben, so bleibt die 27 auch erhalten, wenn M100.1 wieder den Status 0 annimmt.

    Warum ist das hier so?
    LG
    spirit
    Zitieren Zitieren Kann es mir (noch) nicht erklären ...  

  2. #2
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Schulaufgabe "Warum ist das so" ?
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

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

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Hallo Zusammen,

    habe hier ein Phänomen, das ich nicht deuten kann:

    Code:
          U     M    100.1
          SPBN  END
    
          L     27
          T     #Wert            // OUT-Variable in einer FC
    
    END:  NOP   0

    Aufruf im OB1:

    Code:
           CALL  "Testbaustein"
           Wert:="DB_Test".Wert    // DB40.DBW10

    Fragen hierzu:

    Wenn der Merker M100.1 den Status 1 besitzt, so wird 27 in den DB geschrieben. Hat M100.1 wieder den Status 0, dann steht plötzlich wieder 0 im DB.

    Wird anstatt eines DB's im OB1 z.B. ein Merkerwort 200 hinter "Wert:=" geschrieben, so bleibt die 27 auch erhalten, wenn M100.1 wieder den Status 0 annimmt.

    Warum ist das hier so?
    Also ich würde mich mit der Funktion von TEMP Variablen in FC beschäftigen.
    So wie es ausschaut, hast du ein Problem bei deiner Zuweisung des Datenwortes am Ausgang des FC.

    @Lars: nicht mehr Schule, sondern schon echtes Leben

    Nix für ungut


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  4. #4
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  5. #5
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Ich dachte das wäre eine Frage aus der Schule, damit kam einer meiner Jungs letztens aus der Technikerschule mit an. Die Variable "Wert" war als Out deklariert. Da passiert dann genau das was Spirit beschrieben hat.
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard

    Merker als Aktualparameter anders als DB-Variablen? --> siehe das Bild bei Step7 Hilfe zu AWL: Parameterübergabe

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von Lars Weiß Beitrag anzeigen
    Schulaufgabe "Warum ist das so" ?
    Nein Lars,

    so wie bike schon ganz richtig erkannt hat - das wahre Leben!

    Es geht hier um eine Maschine, die von einer Fremdfirma gefertigt u. programmiert wurde und bei der spor. Fehler auftreten. Nun ist man an meinen Chef herangetreten, ob wir uns das mal ansehen könnten ...

    Naja, und jetzt habe ich die Ehre (weil ja gerade ich soviel Ahnung davon habe) und dabei ist mir eben das oben beschriebene Phänomen aufgefallen. Aber ganz verstehen tue ich es noch immer nicht.

    #Wert ist doch keine Temp-Variable sondern eine Out-Variable und die verhält sich doch anders.

    Aus den Siemens-Beiträgen habe ich mal beispielhaft Folgendes rauskopiert:

    Der Anwender muss hier sicherstellen, dass die OUTPUT Variable
    bei jedem Durchlauf des FCs beschrieben wird: T Output


    Aber was ich nicht verstehe: Wenn M100.1 nicht aktiv ist, dann wird doch überhaupt nichts in die Out-Variable geladen. D.h. beim erneuten Aufruf der FC wird doch dann die Stelle mit Laden/Tranferieren komplett übersprungen. Wie kann da dann plötzlich Null geladen werden?

    Dann sind doch diese ganzen Variablen bei einer FC absoluter Mist (zumindest wenn man das Prinzip nicht versteht)!
    LG
    spirit

  8. #8
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    sinngemäß: Merker werden absolut an eine Funktion übergeben und direkt beschrieben, eine Variable aus einem DB nicht. Da geht der Weg über was temporäres.
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  9. #9
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von Lars Weiß Beitrag anzeigen
    sinngemäß: Merker werden absolut an eine Funktion übergeben und direkt beschrieben, eine Variable aus einem DB nicht. Da geht der Weg über was temporäres.
    Ok Lars,

    das wäre aber nicht so, wenn ich statt einer Out-Variablen eine IN_OUT-Variable benutzen würde, richtig?

    Dann sollte diese Eigenart (selbst in Zusammenhang mit einem DB) nicht zum Tragen kommen - zumindest habe ich es so verstanden!

    Danke!
    LG
    spirit

  10. #10
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Richtig! in_out funktioniert!
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

Ähnliche Themen

  1. Wer kann mir Helfen?
    Von manta56 im Forum Antriebstechnik
    Antworten: 5
    Letzter Beitrag: 20.12.2012, 16:40
  2. Kann mir jemand den Begriff Pollzeit erklären?
    Von Mike Vanstrike im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.03.2011, 14:04
  3. Kann mir das jeman erklären ?
    Von Pockebrd im Forum Programmierstrategien
    Antworten: 13
    Letzter Beitrag: 01.07.2010, 16:06
  4. Antworten: 7
    Letzter Beitrag: 09.01.2010, 12:07
  5. kann mir das bitte mal einer erklären
    Von Garog im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.08.2006, 18:37

Lesezeichen

Berechtigungen

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