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

Page 3 of 7 FirstFirst 12345 ... LastLast
Results 21 to 30 of 63

Thread: Problem mit Lokaldaten

  1. #21
    tobi221081 is offline Neuer Benutzer
    Themenstarter
    Join Date
    13.01.2009
    Posts
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Helmut,

    naja das die Lokaldaten zwischen 2 OB1-Zyklen ihre Gültigkeit verlieren ist ja wie gesagt klar. Das ist auch nicht der Fehler. Es scheint halt nur so, dass sie auch durch den Weckalarm ihre Gültigkeit verlieren.
    Meine Stat. Var. also meine Instanzdaten sind nicht das Problem. Es ändert sich an denen auch gar nichts weil die Eingänge und Ausgänge im OB35 identisch beschalten sind.


    Weißt du wie intern in der CPU "gleiche Instanzen" eines FBs gehandelt werden?

    Ich drifte nun mal stark ab in das Reich der Mutmassungen.
    Ich werde im OB1 Zyklus unterbrochen. Meine Lokaldaten werden gesichert. Ich befinde mich nun im OB35. Dort wird die selbe Instanz aufgerufen (gleiche Beschaltung, gleicher Instanzdb). Die CPU rekonstruiert (eventuell) jetzt schon die Lokaldaten und macht ihre Berechnungen. Ich kehre zurück in den OB1. Dort weiß die CPU dann eventuell nicht mehr was an Lokaldaten zu rekonstruieren ist und der Fehler geschieht.


    Was mich zu der Annahme bringt: Wenn ich den InstanzDB ändere, dann passiert kein Fehler. (Das ändern des InstanzDBs ist natürlich keine Lösung, es zeigt jedoch, dass das Problem irgendwie verwirrend ist.)
    Last edited by tobi221081; 13.01.2009 at 14:44.

  2. #22
    Join Date
    27.05.2004
    Location
    Thüringen/Berlin
    Posts
    13,804
    Danke
    746
    Erhielt 3,127 Danke für 2,231 Beiträge

    Default

    Woher nimmst du die Gewissheit, daß die Lokaldaten gesichert werden und wohin sollen die eigentlich gesichert werden? Die liegen auf dem Lokaldatenstack. Den benutzt jeder FC/FB, die Aufrufe sind ja immer linear, also wird er immer ab der letzten belgeten Stelle weiter aufgebaut, ist der FC/FB am Ende wird der Lokaldatenstack wieder kleiner. Hoffe ich liege da richtig. Irgendwo hab ich mal gelesen (ich find einfach nicht mehr, wo), daß man sich um einige Sachen selbst kümmern muß, wenn ein Weckalarm oder ein anderer Interrupt das laufende Programm unterbricht.
    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. #23
    Join Date
    13.10.2007
    Posts
    13,109
    Danke
    3,175
    Erhielt 3,636 Danke für 2,361 Beiträge

    Default

    ...wie Ralle schon sagt woher weißt du das die Lokaldaten passen. Du weißt ja nicht wann dein OB35 aus deinem OB1 aufgerufen wird. Die Lokaldaten sind doch vielleicht viele schon durch andere FB/FC aufrufen mißbraucht bzw. verändert, also können Sie nicht mehr passen...Vielleicht kannst du ja auf einen Teil deiner Lokaldaten verzichten und speicherst die Werte im Instanzbaustein...?
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.
    Das Problem ist nicht das Problem, das Problem ist die Einstellung zum Problem.

  4. #24
    tobi221081 is offline Neuer Benutzer
    Themenstarter
    Join Date
    13.01.2009
    Posts
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Diese Frage hab ich mir auch gestellt.

    Ich hab in meine alten Uni-Mitschriften geschaut und da stehts drin, dass der Lokaldatenstack gesichert wird. In den Siemens-Handbüchern hab ich dafür nichts gefunden.

    Nun sind UNI-Profs natürlich nicht unfehlbar, obwohl sie gern den Anschein vermitteln. Was nun wenn diese Grundannahme falsch ist.

    Ich habe das mal durchgetestet. Ich rufe im OB35 keinerlei Bausteine auf, sondern geh direkt an den Lokaldatenstack und schreib dort Mist rein.

    Mit dem Ergebnis: Meine Adressberechnung geht auch schief.
    Ein eindeutiges Indiez dafür, das der Stack überhaupt nicht gesichert wird.


    Wenn mir nun einer eine Stelle in irgendeinem Handbuch nennen kann, wo steht "Achtung Lokaldatenstack wird nicht gesichert" dem spendier ich ein Eis. Wahlweise nen Grog weils draußen kalt ist.


    !!!!Moment ich muss mich revidieren.!!!!
    Ich schreibe Mist direkt Mist in die Lokaldaten. Und habe zur Fehlersuche auf OB121 getriggert. Der Grund warum der angesprungen ist, war das ich gar nicht soviele Lokaldaten für OB35 definiert hatte. Und hab immernoch das Problem.

    (Noch ein Argument dafür das die Lokaldaten gesichert werden. Ich kann doch über den V-Bereich auf die vorherigen Lokaldaten zugreifen. Also scheint er doch für jeden FB/FC einen neuen Stack anzulegen. )
    Last edited by tobi221081; 13.01.2009 at 15:09.

  5. #25
    Join Date
    13.10.2007
    Posts
    13,109
    Danke
    3,175
    Erhielt 3,636 Danke für 2,361 Beiträge

    Default

    frei aus dem Berger Burch:
    Die temponären Lokaldaten verwenden Sie zur Zwischenspeicherung
    von Ergebnissen, die während der Programmbearbeitung eines Bausteins
    anfallen. Temponäre Lokaldaten stehen nur während der Bausteinbearbeitung
    zur Verfügung, nach dem Beenden des Bausteins gehen
    ihre Inhalte verloren.

    Temponäre Lokaldaten sind Operanden, die im Lokaldaten-Stack (L-Stack)
    im Systemspeicher der CPU liegen. Das Betriebssystem der Zentralbaugruppe
    stellt die die temponären Lokaldaten für jeden Codebaustein bei dessen Aufruf zur Verfügung.
    Die Werte im L-Stack sind beim Aufruf eines Baustein quasi zufällig.
    Um die Lokaldaten sinnvoll zu nutzen zu können, müssen Sie sie vor dem Lesen erst beschreiben. Nach
    dem Beenden des Bausteins wird der L-Stack dem nächsten Baustein
    zugewiesen.
    ...eigendlich hat der OB35 auch Lokaldaten und somit ist der L-Stack bei dem aufruf des OB35 schon wieder verändert...oder...?

    gruß Helmut
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.
    Das Problem ist nicht das Problem, das Problem ist die Einstellung zum Problem.

  6. #26
    Join Date
    27.05.2004
    Location
    Thüringen/Berlin
    Posts
    13,804
    Danke
    746
    Erhielt 3,127 Danke für 2,231 Beiträge

    Default

    Also zu Lokaldaten hab ich bei Siemens erstmal nur das gefunden:

    Lokaldaten
    Die Lokaldaten speichern:
    ● die temporären Variablen von Code-Bausteinen
    ● die Startinformation der Organisationsbausteine
    ● Übergabeparameter
    ● Zwischenergebnisse
    Temporäre Variablen
    Beim Erstellen von Bausteinen 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. Diese Lokaldaten haben pro OB eine feste Länge. Vor dem ersten
    lesenden Zugriff müssen die Lokaldaten initialisiert werden. Außerdem benötigt jeder
    Organisationsbaustein für seine Startinformation 20 Byte Lokaldaten. Der Zugriff auf
    Lokaldaten erfolgt schneller als auf Daten in DBs.
    Die CPU besitzt Speicher für die temporären Variablen (Lokaldaten) gerade bearbeiteter
    Bausteine. Die Größe dieses Speicherbereichs ist CPU-abhängig. Er wird zu gleichen Teilen
    unter den Prioritätsklassen aufgeteilt. Jede Prioritätsklasse verfügt über einen eigenen
    Lokaldatenbereich.

    VORSICHT
    Alle temporären Variablen (TEMP) eines OB und seiner unterlagerten Bausteine werden in
    den Lokaldaten gespeichert. Wenn Sie viele Schachtelungsebenen in Ihrer
    Bausteinbearbeitung verwenden, kann der Lokaldatenbereich überlaufen.
    CPUs wechseln in den Betriebszustand STOP, wenn Sie die zulässige Größe der
    Lokaldaten einer Prioritätsklasse überschreiten.
    Berücksichtigen Sie dabei den Lokaldatenbedarf von Synchronfehler-OBs, er wird jeweils
    der verursachenden Prioritätsklasse zugeordnet.
    Da steht erstmal nichts von gesichert.

    Jeder neu aufgerufene Baustein stockt sich auf den L-Stack auf, ist er fertig, wird wieder L-Stack frei, der aufrufende Baustein ist somit wieder an der richtigen Stelle.
    Last edited by Ralle; 13.01.2009 at 15:18.
    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

  7. #27
    Join Date
    22.03.2007
    Location
    Detmold (im Lipperland)
    Posts
    12,402
    Danke
    422
    Erhielt 2,536 Danke für 2,108 Beiträge

    Default

    Hallo Tobi,
    ich weiß aus schmerzlicher Eigenerfahrung, dass der Lokaldatenstack definitiv nicht gesichert wird. Das Einzige, was hier geht ist, wenn du nur einen FB- oder FC-Aufruf im Programm hast - dann funktioniert es. Sonst ist es genau so wie schon von Ralle beschrieben (ichh habe dazu aber auch keine Quelle).

    Bezüglich der doppelten Aufrufe könntest du eine Re-Entry-Sperre programmieren. Am Anfang des Bausteins fragst du ab, ob das Bit "Baustein_Aktiv" gesetzt ist - wenn ja, dann Baustein-Ende. Sonst Bit setzen, Baustein bearbeiten und am Ende wieder Rücksetzen. Das funktioniert allerdings auch nur, wenn dieses Bit entweder ein Merker ist oder es im STAT-Bereich des FB definiert ist.

    Trotz alledem frage ich mich, warum du den Versuch TEMP-Daten in STAT-Bereich verschieben nicht mal testest ... Du kannst doch dabei gar nicht verlieren - im schlimmsten Fall hast du Recht und das hilft auch nicht ...

    Gruß
    LL

    Nachsatz:
    Nun ist Dank Reparatur und Ralle das Thema Temp-Lokaldaten dann wohl geklärt ...

  8. #28
    Join Date
    05.06.2006
    Location
    PLZ 97xxx
    Posts
    297
    Danke
    37
    Erhielt 46 Danke für 38 Beiträge

    Default

    Für jeden OB gibt es eine Prioritätsklasse auf dem L-Stack !
    die Größe ist CPU-abhängig

    d.h. z.B. es gibt OB1 und OB35

    OB1 hat Prioklasse 1 und liegt als erstes auf dem L-Stack
    aus dem OB1 wird ein FB100 aufgerufen, daraus ein FB200 ....

    L-Stack sieht so aus: (aus Sicht der SPS im FB200)


    L-Daten FB200
    ===========
    L-Daten FB100
    ===========
    L-Daten OB1


    Wird jetzt der OB1-Zyklus von einem anderen Höherprioren OB z.B. OB35
    unterbrochen wird auf dem L-Stack eine "neue Prioklasse" aufgemacht

    z.B. OB1-Zykl. wird im FB200 unterbrochen vom OB35 der wieder FB100 => FB200 aufruft

    L-Stack sieht so aus: (aus Sicht der SPS im FB200 (OB35-Zykl.))

    L-Daten FB200 (OB35-Zykl.)
    =====================
    L-Daten FB100 (OB35-Zykl.)
    =====================
    L-Daten OB35
    =====================
    L-Daten FB200 (OB1-Zykl.)
    =====================
    L-Daten FB100 (OB1-Zykl.)
    =====================
    L-Daten OB1

    Ich hoffe man kann genau sehen das man den L-Stack nicht sichern muß!!
    Die "alten" Daten aus dem OB1-Zyklus sind ja weiter unten auf dem L-Stack noch vorhanden und werden auch wieder gültig sobald der OB35-Zyklus fertig ist.

    auch Adressregister ... müssen AFAIK nicht gesichert werden, da sie an der Unterbrechungsstelle systemintern wiederhergestellt werden.

    Wie Du weiter oben schreibts passiert der Fehler mit einem anderen IDB nicht.
    Dies weist zu 100% darauf hin das etwas im IDB-Bereich passiert ist !!

  9. #29
    Join Date
    13.10.2007
    Posts
    13,109
    Danke
    3,175
    Erhielt 3,636 Danke für 2,361 Beiträge

    Default

    Quote Originally Posted by Ralle View Post
    Also zu Lokaldaten hab ich bei Siemens erstmal nur das gefunden:



    Da steht erstmal nichts von gesichert.

    Jeder Baustein stockt sich auf den L-Stack auf, ist er fertig, wird wieder L-Stack frei, der aufrufende Baustein ist somit wieder an der richtigen Stelle.
    ...das hatte ich auch noch irgendwie im sinn...
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.
    Das Problem ist nicht das Problem, das Problem ist die Einstellung zum Problem.

  10. #30
    Join Date
    22.03.2007
    Location
    Detmold (im Lipperland)
    Posts
    12,402
    Danke
    422
    Erhielt 2,536 Danke für 2,108 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Sarek:
    Diese Sicherung gilt aber m.E. nur innerhalb des laufenden Zyklusses. Ich bezweifle, dass es von Zyklus zu Zyklus gilt ...

Similar Threads

  1. Replies: 8
    Last Post: 09.10.2015, 18:42
  2. Problem mit Lokaldaten
    By Django2012 in forum Simatic
    Replies: 2
    Last Post: 07.08.2012, 18:07
  3. Problem mit Lokaldaten
    By Carsten81 in forum Simatic
    Replies: 30
    Last Post: 22.10.2010, 08:46
  4. Problem mit BLKMOV bei Zugriff auf V-Lokaldaten
    By armadillo in forum Simatic
    Replies: 2
    Last Post: 11.02.2006, 06:38
  5. Problem beim Editieren der temporären Lokaldaten
    By Onkel Dagobert in forum Simatic
    Replies: 0
    Last Post: 08.11.2004, 18:16

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •