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

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

Thema: Anfangswert einer Lokalvariablen

  1. #1
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich hätte da mal eine grundsätzliche Frage. Ich habe in der Vergangenheit immer angenommen, dass eine Lokalvariable (auch eine statische Lokalvariable) beim erstmaligen Start der FC bzw. des FB, einen Defaultwert hat. Bei einem Zahlendatentyp (INT, DINT, REAL) müsste das die "0" sein.
    Liege ich mit meiner Annahme richtig?
    Oder muss man jeder Variablen explizit den Wert 0 zuweisen, um sicher zu gehen, dass sie bei der ersten Abfrage wirklich den Wert 0 hat?


    Gruß
    Earny
    Zitieren Zitieren Anfangswert einer Lokalvariablen  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo,
    eine Lokalvariable hat immer irgend einen Wert.
    Hier bitte beachten : Sie behält ihren Wert von einem Zyklus auf den nächsten auch nicht - jedenfalls nicht verlässlich.

    Ich hoffe, das hilft dir weiter ...
    Gruß
    LL

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Zusatz :
    Dies gilt für TEMP-Variablen eines FC's oder FB's.
    In einem FB hast du die Möglichkeit, im STAT-Bereich Variablen anzulegen, deren Anfangswert definiert ist und deren Inhalt von einem Zyklus auf den Nächsten erhalten bleibt ...

    Gruß
    LL

  4. #4
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo,

    wenn Du in einem FB Lokalvariablen (ausser Temp) anlegst, kannst Du denen auch einen Anfangswert zuweisen.
    (Was aber bur bei statischen Variablen Sinn macht, da In bzw, In_Out-Variablen ja beim Bausteinaufruf zugewiesen werden.)
    Beim Anlegen des Instanz-DB werden diese Werte dann im DB abgelegt.
    Beim Kaltstart der CPU bzw. beim Neuanlegen des DB's werden dann die Anfangswerte auf die Aktualwerte kopiert.


    Grüße
    Gebs

  5. #5
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo Larry Laffer,
    hallo Gebs,
    besten Dank für Eure schnellen Antworten. Das mit der temp. Lokalvariable hätte ich so nicht vermutet. Meine Frage ist damit exakt beantwortet.

    Gruß
    Earny
    Zitieren Zitieren Anfangswert einer Lokalvariablen  

  6. #6
    Registriert seit
    17.10.2007
    Ort
    35043 Marburg
    Beiträge
    176
    Danke
    4
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Zitat Zitat von Gebs Beitrag anzeigen
    Hallo,

    ...Beim Kaltstart der CPU bzw. beim Neuanlegen des DB's werden dann die Anfangswerte auf die Aktualwerte kopiert.


    Grüße
    Gebs
    Hallo,
    hab da Einspruch einzulegen!
    Anfangswerte werden entweder beim NEUanlegen des DB (nicht kopieren)oder der Variable in die Aktualwerte übertragen, ansonsten nur mit "DB initialisieren".
    Lasse mich gern eines besseren belehren, aber Kaltstart ist definitiv falsch.

    Gruß...

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

    Zitat Zitat von Simatiker Beitrag anzeigen
    Hallo,
    hab da Einspruch einzulegen!
    Anfangswerte werden entweder beim NEUanlegen des DB (nicht kopieren)oder der Variable in die Aktualwerte übertragen, ansonsten nur mit "DB initialisieren".
    Lasse mich gern eines besseren belehren, aber Kaltstart ist definitiv falsch.

    Gruß...
    wenn du recht hast, dann sollte Siemens anfangen alle Handbücher zu überarbeiten und zu korrigieren:

    Beim Kaltstart werden alle Daten (Prozessabbild, Merker, Zeiten, Zähler und
    Datenbausteine) auf die im Programm (Ladespeicher) hinterlegten Startwerte
    zurückgesetzt - unabhängig davon, ob sie als remanent oder nicht remanent
    parametriert wurden.
    [edit]

    der vollständigkeithalber:

    Beim Neustart (Warmstart) werden das Prozessabbild und die nicht remanenten Merker,
    Zeiten und Zähler zurückgesetzt.
    Remanente Merker, Zeiten und Zähler behalten ihren zuletzt gültigen Wert.
    Alle Datenbausteine, die mit der Eigenschaft “Non Retain” parametriert wurden,
    werden auf die Ladewerte zurückgesetzt. Die anderen Datenbausteine behalten
    ihren zuletzt gültigen Wert.
    und

    Beim Wiederanlauf behalten alle Daten inklusive des Prozessabbildes ihren
    zuletzt gültigen Wert.
    [/edit]
    Geändert von vierlagig (16.04.2008 um 22:53 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. #8
    Registriert seit
    19.09.2006
    Beiträge
    60
    Danke
    10
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Das sollte Siemens

    Wäre schlimm wenn nach Netzausfall (wäre ja ein Kaltstart), die Anfangswerte aus den Datenbausteinen geladen würden

    Im Normalfall werden die Anfangswerte nur bei neuanlegen, DB initialisieren (sagte schon Simatiker) und Mres geschrieben.
    Geändert von KG_TC (17.04.2008 um 13:36 Uhr)

  9. #9
    Registriert seit
    08.09.2006
    Beiträge
    170
    Danke
    4
    Erhielt 26 Danke für 16 Beiträge

    Standard

    Netzausfall ist nicht zwangsläufig Kaltstart, ist Einstellbar!

  10. #10
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von KG_TC Beitrag anzeigen
    Wäre schlimm wenn nach Netzausfall (wäre ja ein Kaltstart),
    wenn du eine CPU zum testen hast, mach mal, was ich gerade gemacht habe:

    1. CPU in RUN
    2. Netz-AUS
    3. Netz-EIN
    4. Diagnosepuffer gucken

    Code:
    Diagnosepuffer der Baugruppe CPU 315-2 DP
    
    Ereignis 1 von 10:  Ereignis-ID 16# 4302
    Betriebszustandsübergang von ANLAUF nach RUN 
    
    Ereignis 2 von 10:  Ereignis-ID 16# 1382
    Automatische Neustart (Warmstart)-Anforderung 
    STOP-Ursache: Netzausfall 
    
    Ereignis 3 von 10:  Ereignis-ID 16# 4301
    Betriebszustandsübergang von STOP nach ANLAUF 
    STOP-Ursache: Netzausfall 
    
    Ereignis 4 von 10:  Ereignis-ID 16# 4300
    NETZ-EIN gepuffert 
    
    Ereignis 5 von 10:  Ereignis-ID 16# 494E
    Netzausfall 
    Bisheriger Betriebszustand: RUN
    [edit] longbow hat recht ... und zwar unter "Objekteigenschaften" -> Tab "Anlauf" -> "Anlauf nach NETZ-EIN" [/edit]
    Geändert von vierlagig (17.04.2008 um 13:52 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Lokalvariablen in Organisationsbausteinen
    Von Blueglasstalisman im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.08.2011, 14:33
  2. Lokalvariablen im DB weg
    Von Wassermann im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.04.2010, 19:35
  3. temporäre Lokalvariablen
    Von Earny im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 08.12.2009, 08:48
  4. Problem mit S7 Lokalvariablen
    Von mrcmm300 im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 26.11.2007, 23:12
  5. Anfangswert einer S5T Variablen verändern
    Von Bit-Schubser im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 28.02.2007, 12:13

Lesezeichen

Berechtigungen

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