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

Ergebnis 1 bis 8 von 8

Thema: Inout-Variable

  1. #1
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    habe eine kurze Frage: Wofür braucht man die Inout-Variable? Der Drurchgangsparameter kann gelesen und geschrieben werden. Könnt ihr mir vielleicht ein paar Bsp geben, wofür ihr diesen benutzt?

    Gruß
    Geändert von kuti (19.01.2014 um 18:53 Uhr)
    Zitieren Zitieren Inout-Variable  

  2. #2
    Registriert seit
    02.06.2006
    Beiträge
    223
    Danke
    7
    Erhielt 42 Danke für 35 Beiträge

    Standard

    Ich benutze dies z.B. bei einem Bitschieberegister

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.339
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    Wenn z.B. ein Baustein eine Zählvariable ändern will, dann muß er den aktuellen Wert der Variable lesen und den geänderten Wert in die selbe Variable zurückschreiben.
    - IN-Variablen kann man lesen, aber nichts zurückschreiben
    - OUT-Variablen kann man schreiben, aber nicht lesen was vorher drin steht
    - INOUT-Variablen kann man den aktuellen Wert lesen und schreiben

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    - INOUT-Variablen kann man den aktuellen Wert lesen und schreiben

    Harald
    Nicht falsch verstehen, aber das ist mir klar. Ein kleines Beispiel mit Erklärung würde mir da sehr weiterhelfen.

  5. #5
    Registriert seit
    09.08.2006
    Beiträge
    3.642
    Danke
    915
    Erhielt 661 Danke für 543 Beiträge

    Standard

    in einem DB stehen Sollwerte, welche von der Visu verändert werden. Jetzt willst Du in einem FB diese Werte abfragen und bei ungültigen Eingaben den Wert auf einen gültigen setzen (also zulässiges min/max)... sowas z.B.

    Gruß.

  6. Folgender Benutzer sagt Danke zu ducati für den nützlichen Beitrag:

    kuti (19.01.2014)

  7. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Wenn Du in einem gekapselten FB einen Flankenmerker programmierst, benutzt Du dort normalerweise eine statische Variable, um Dir den Zustand für den nächsten Zyklus zu merken.

    Benötigst Du dagegen einen Flankenmerker in einem FC, mußt Du Dir den Zustand außerhalb des FC's merken. Dann benutzt Du einen INOUT dafür. Im FC liest Du erst den Zustand vom vorigen Zyklus und schreibst anschließend den neuen Zustand hinein.

    Ähnliches z.B. bei einem Betriebsstundenzähler.


    Durch die Übergabe der Werte mittels INOUT ist der Baustein mehrfach im Zyklus verwendbar, was bei direktem Zugriff auf die Variable, z.B. bei dem Flankenmerker auf einen Merker, nicht möglich wäre.

  8. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    kuti (19.01.2014)

  9. #7
    kuti ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.05.2013
    Beiträge
    353
    Danke
    74
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Vielen Dank an euch. Jetzt dämmert es mir so langsam.
    @ hucki Den Zustand außerhalb des FCs mit einem globalen Merker speichern bzw. wenn er von einem FB aufgerufen wird, mit einer stat-Variablen?

  10. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von kuti Beitrag anzeigen
    @ hucki Den Zustand außerhalb des FCs mit einem globalen Merker speichern bzw. wenn er von einem FB aufgerufen wird, mit einer stat-Variablen?
    Bei einem FB kannst Du den Zustand im Instanzdatenbaustein speichern, denn genau dafür ist er da.
    Bei einem FC hast Du den aber nicht, also mußt du irgendwo global speichern.

    Hab' Dir als Beispiel mal einen "Serieneltako", realisiert mit einem FC, rausgesucht:
    Code:
    FUNCTION FC 1 : VOIDTITLE =
    VERSION : 0.1
    
    VAR_INPUT
      Taster : BOOL ;    
    END_VAR
    
    VAR_OUTPUT
      Ausgang1 : BOOL ;    
      Ausgang2 : BOOL ;    
    END_VAR
    
    VAR_IN_OUT
      FM : BOOL ;    
      Wechsler : BOOL ;    
    END_VAR
    
    VAR_TEMP
      Flanke : BOOL ;    
    END_VAR
    
    
    BEGIN
    
    NETWORK
    TITLE =Flanke ermitteln
          U     #Taster; 
          UN    #FM; 
          =     #Flanke; 
    
    NETWORK
    TITLE =Wechsler
          U     #Flanke; 
          UN    #Wechsler; 
          O     ; 
          UN    #Flanke; 
          U     #Wechsler; 
          =     #Wechsler; 
    
    NETWORK
    TITLE =Zwischenmerker 1
          U     #Flanke; 
          U     #Wechsler; 
          =     #FM; 
    
    NETWORK
    TITLE =Ausgang 1
          U     #FM; 
          UN    #Ausgang1; 
          O     ; 
          UN    #FM; 
          U     #Ausgang1; 
          =     #Ausgang1; 
    
    NETWORK
    TITLE =Zwischenmerker 2
          U     #Flanke; 
          UN    #Wechsler; 
          =     #FM; 
    
    NETWORK
    TITLE =Ausgang 2
          U     #FM; 
          UN    #Ausgang2; 
          O     ; 
          UN    #FM; 
          U     #Ausgang2; 
          =     #Ausgang2; 
    
    NETWORK
    TITLE =Merken
          U     #Taster; 
          =     #FM; 
    
    END_FUNCTION
    Den kann man mehrfach im Programm benutzen. Und nur für 2 boolsche Variablen extra einen FB mit IDB anzulegen, lohnt nicht unbedingt.

    (PS: Der Code ist auf KOP umschaltbar, sonst ginge es sicher auch einfacher.)
    Geändert von hucki (19.01.2014 um 20:02 Uhr)

  11. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    kuti (19.01.2014)

Ähnliche Themen

  1. Codesy Speicherbelegung bei INOUT
    Von SY50 im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 10.03.2013, 15:59
  2. Timer mit Instanz als InOut Varíable
    Von blubbi im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 31.01.2013, 20:37
  3. Baustein mit IN & OUT Paramtern, oder INOUT`erstellen?
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 13
    Letzter Beitrag: 23.11.2012, 13:08
  4. S7 Variable in Java Variable umwandeln
    Von maxi81 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 26.11.2010, 17:55
  5. FB inout parameter wird nicht beschrieben!
    Von Jochen Kühner im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 06.04.2005, 09:42

Lesezeichen

Berechtigungen

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