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

Ergebnis 1 bis 5 von 5

Thema: Temp-Variablen bei FCs

  1. #1
    Registriert seit
    02.09.2005
    Beiträge
    21
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    wenn man bei nem FC temporäre Variablen anlegt (temp), wo werde die dann konkret abgelegt. Hatte neulich den Eindruck, dass sich der Speicherbereich mit einem Teil meines allgemeinen Merkerbereich überschneidet, da die Merker plözlich nur noch Blödsinn gemacht haben.

    Danke!
    Gruß aus Ulm

    Chris
    Geändert von !Chris! (19.04.2006 um 09:41 Uhr)
    Zitieren Zitieren Temp-Variablen bei FCs  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Die werden auf dem Stack abgelegt, der aber nur eine begrenzte Größe hat. (Ich glaube Standard 256 Byte). Bei einigen CPU kann man die Größe ändern (31. Sollte der Stack überlaufen, kann durchaus irgenwo in der SPS "Datensalat" entstehen. Auch der Aufruf bestimmter Funktionen wie Block_Move benötigt zusätzlich Platz auf dem Stack. Wenn du im Manager Die Objekteigenschaften eines Bausteines anschaust, wird auch die Größe der Lokaldaten dieses Bausteines angezeigt, wenigstens ein Hilfsmittel. Leider gibt es wohl keine Hilfe beim Programmieren, um einen Stacküberlauf sicher auszuschließen, was mich etwas entsetzt, da hier durchaus die SPS zu einem ungewollten Eigenleben erwachen kann. (Ausgänge schalten, die im Programm gar nicht vergeben sind etc.)

    Ein häufigerer Fehler beim Umgang mit Temp-Variablen ist aber deren Benutzung, ohne sie vorher korrekt zu initialisieren. Dann zeigt eine Temp-Var einen belieigen Wert, abhängig von der Stackbelegung in irgendwelchen vorherigen Bausteinen.
    Geändert von Ralle (19.04.2006 um 09:46 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    gast Gast

    Standard

    also temp variable werden im lokaldatenbereich abgelegt, deine merker sind davon unabhängig, was allerdings zu einem problem führen könnte ist das die lokaldaten vor einer zuweisung einen unbestimmten zustand führen können .
    also z.b.


    netzwerk 1
    l #temp //temporäre variable
    t mw0

    würde in dein mw0 einen zufälligen wert laden.


    bitte um korrektur falls ich daneben liege .

    gruß thomas

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Hier die Siemens-Hilfe dazu:

    Lokaldaten-Stack


    Der L-Stack speichert:
    • die temporären Variablen der Lokaldaten von Bausteinen
    • die Startinformation der Organisationsbausteine
    • Informationen zum Übergeben von Parametern
    • Zwischenergebnisse der Logik in Kontaktplan-Programmen
    Beim Erstellen von Organisationsbausteinen können Sie temporäre Variablen (TEMP) deklarieren, die nur während der Bearbeitung des Bausteins zur Verfügung stehen und dann wieder überschrieben werden. Vor dem ersten Zugriff müssen die Lokaldaten initialisiert werden. Außerdem benötigt jeder Organisationsbaustein für seine Startinformation 20 Lokaldaten-Byte.

    Die CPU besitzt einen begrenzten Speicher für die temporären Variablen (Lokaldaten) gerade bearbeiteter Bausteine. Die Größe dieses Speicherbereichs, des Lokaldaten-Stacks, ist CPU-abhängig. Der Lokaldaten-Stack wird zu gleichen Teilen unter den Prioritätsklassen aufgeteilt (Voreinstellung). Das bedeutet, jede Prioritätsklasse verfügt über einen eigenen Lokaldatenbereich. Damit ist gewährleistet, dass auch hochpriore Prioritätsklassen und ihre zugeordneten OBs Platz für ihre Lokaldaten zur Verfügung haben.

    Nachfolgendes Bild zeigt die Zuordnung von Lokaldaten zu den Prioritätsklassen in einem Beispiel, in dem im L-Stack der OB 1 vom OB 10 unterbrochen wird, der dann wiederum vom OB 81 unterbrochen wird.

    http://www.esatex.com/SPS-Forum/atta...9&d=1145434457

    Vorsicht
    Alle temporäre Variablen (TEMP) eines OB und seiner unterlagerten Bausteine werden im L-Stack gespeichert. Wenn Sie viele Schachtelungsebenen in Ihrer Bausteinbearbeitung verwenden, kann der L-Stack überlaufen.
    S7-CPUs wechseln in den Betriebszustand "STOP", wenn Sie die zulässige L-Stack-Größe für ein Programm überschreiten.
    Testen Sie den L-Stack (die temporären Variablen) in Ihrem Programm.
    Berücksichtigen Sie den Lokaldatenbedarf von Synchronfehler-OBs.


    Zuordnen von Lokaldaten zu Prioritätsklassen

    Nicht jede Prioritätsklasse benötigt gleich viel Speicher im Lokaldaten-Stack. Durch Parametrierung mit STEP 7 können Sie bei S7-400-CPUs und bei der CPU 318 die Größe des Lokaldatenbereichs für die einzelnen Prioritätsklassen unterschiedlich festlegen. Nicht benötigte Prioritätsklassen können Sie abwählen. Bei S7-400-CPUs und der CPU 318 wird damit der Speicherbereich für andere Prioritätsklassen erweitert. Abgewählte OBs werden bei der Programmbearbeitung nicht berücksichtigt, dadurch sparen Sie Rechenzeit.

    Bei den anderen S7-300-CPUs ist jeder Prioritätsklasse eine feste Anzahl von Lokaldaten zugeordnet (256 Bytes), die nicht verändert werden kann.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Ralle (19.04.2006 um 10:20 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Registriert seit
    05.01.2006
    Beiträge
    46
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hier noch eine kleine Anmerkung zu den TEMP-Variablen bei der Programmierung.

    Die TEMP-Variablen werden als Zwischenspeicher für den aktuellen Bausteinaufruf verwendet. Wenn ein Baustein mit TEMP-Variablen geöffnet werden, sind diese undiffiniert. Erst durch eine Zuweisung, oder dem Übertragen von Werten, erhalten die Variablen einen diffinierten Wert.

    Sollten Signale und Werte über mehrere Zyklen benötigt werden, kann dieses z.B. im FB mit Statischen Variablen erfolgen, oder durch Merker.
    Viele Grüße
    Matthias
    SPS .bz
    -----------------
    Rechtschreibfehler wurden absichtlich zur allgemeinen Belustigung hinzugefügt, wer einen findet, darf ihn natürlich behalten ...

Ähnliche Themen

  1. TEMP Variablen (Step7)
    Von Rüdiger im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 28.10.2010, 21:00
  2. Temp Variablen
    Von centrox im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 23.02.2009, 16:05
  3. IN Variablen nach TEMP
    Von neuer_user im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 06.10.2006, 16:26
  4. auf TEMP Variablen zugreifen
    Von serdnar im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 14:07
  5. Stat und Temp Variablen
    Von Anonymous im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 13.07.2004, 11:20

Lesezeichen

Berechtigungen

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