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

Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 32 von 32

Thema: Verständnisproblem

  1. #31
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.207
    Danke
    927
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der IN_OUT heißt IN_OUT, weil vor dem Aufruf des FB/FC der Wert des außen angegebenen Aktualparameters in den Baustein-Formalparameter kopiert wird (wie bei einem IN) und nach Ende des FB/FC der Wert vom Formalparameter in den Aktualparameter kopiert wird (wie bei einem OUT). Dadurch bekommt der IN_OUT ein Gedächtnis, falls ihm im Baustein nichts zugewiesen wird - das was Du als "definiert" bezeichnest.


    Zitat Zitat von spirit Beitrag anzeigen
    Oder anders gesagt, bei einem undefinierten Zustand würde von FC/FB (unabhängig vom Merkerstatus) immer der Defaultwet "durchgereicht" werden, was bei einem definierten Zustand nicht der Fall ist. Könnte man das so formulieren?
    Nein, leider nicht. Der Zustand des Merkers wird beachtet und FB und FC verhalten sich unterschiedlich:
    - ist der Merker TRUE und wird dadurch im FB/FC die Zuweisung ausgeführt, dann erscheint an dem Ausgang und damit in der angeschlossenen DB-Variable der zugewiesene Wert.
    - ist der Merker FALSE, dann wird im FB/FC nichts auf den Formalparameter des Ausgangs zugewiesen. Bei einem FC erscheint dadurch der Defaultwert am Ausgang, bei einem FB der Wert, den der Formalparameter des Ausgangs vorher hatte (aus dem Instanz-DB). (das bezieht sich jetzt auf einen OUT)


    bei einem definierten Zustand wird der Zustand des Merkers beachtet und nichts an den DB weitergereicht.
    Es wird auf jeden Fall etwas an die DB-Variable weitergereicht, weil eine Parameterübergabe eine Zuweisung ist, die immer ausgeführt wird, wenn der Bausteinaufruf bearbeitet wird. Bei einem IN_OUT fällt das Schreiben in die DB-Variable aber nicht auf, weil es der selbe Wert von vor der Bausteinbearbeitung ist (wenn in dem Baustein keine andere Zuweisung stattfindet).


    Diese tatsächlich stattfindende Zuweisung des selben Wertes sieht man in folgendem Fall:
    Würde der FB/FC durch einen OB unterbrochen, welcher der selben DB-Variable einen anderen Wert zuweist, dann würde nach Ende des FB/FC die Zuweisung aus dem OB zunichte gemacht werden, dadurch daß die Zuweisung des alten Wertes am Ausgang des FB/FC ausgeführt wird.

    Oder einfacher nachprüfbar: der FB/FC selbst schreibt direkt auf die globale DB-Variable
    Code:
    // Aufruf des FC1
    
     DB1.DW0 := 123 ;
    
     FC1(tuwas:=M10.0, IN_OUT_1:=DB1.DW0) ;
    Code:
    // FC1:
    
     IF tuwas THEN 
       IN_OUT_1 := 456 ;
     END_IF ;
    
     DB1.DW0 := 789 ;
    Wenn M10.0 FALSE ist dann hat nach Abarbeitung des FC1 der DB1.DW0 den Wert .....?
    Wenn M10.0 TRUE ist dann hat nach Abarbeitung des FC1 der DB1.DW0 den Wert .....?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  2. #32
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Oder einfacher nachprüfbar: der FB/FC selbst schreibt direkt auf die globale DB-Variable
    Code:
    // Aufruf des FC1
    
     DB1.DW0 := 123 ;
    
     FC1(tuwas:=M10.0, IN_OUT_1:=DB1.DW0) ;
    Code:
    // FC1:
    
     IF tuwas THEN 
       IN_OUT_1 := 456 ;
     END_IF ;
    
     DB1.DW0 := 789 ;
    Wenn M10.0 FALSE ist dann hat nach Abarbeitung des FC1 der DB1.DW0 den Wert .....?
    Wenn M10.0 TRUE ist dann hat nach Abarbeitung des FC1 der DB1.DW0 den Wert .....?

    Harald
    Hm ok, würde mal Folgendes dazu schreiben wollen:

    M10.0 FALSE --> Wert = 123

    M10.0 TRUE --> Wert = 456

    LG
    spirit

Ähnliche Themen

  1. Verständnisproblem Leistungsmessung
    Von steifhahn im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 14.03.2014, 15:33
  2. Step 7 Verständnisproblem Instanz-DB
    Von Chris_Rgb im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 26.08.2013, 23:17
  3. DP/RS232 Verständnisproblem
    Von Beren im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 23.06.2011, 08:30
  4. AWL Verständnisproblem
    Von invoices im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 12.08.2010, 11:35
  5. Verständnisproblem mit pointer ?
    Von Waelder im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.08.2009, 09:02

Lesezeichen

Berechtigungen

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