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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: temporäre Lokalvariablen

  1. #11
    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 hovonlo Beitrag anzeigen
    Es ist trotzdem Vorsicht angebracht, da es möglich ist, einen Anypointer auf die Lokaldaten des Vorgängerbausteins zusammenzubauen und sowohl lesend als auch schreibend zu verwenden.
    das ist mal schöner seemannsgarn ... wir bauen uns einen anypointer, der auf den letzten aufruf des OB1 zeigt

    wenn ich BEWUSST auf die lokaldaten des vorgängerbausteins zugreife, also aus einem FC auf die des OB, dann hat das einen grund, der gerechtfertig ist und dieses konstrukt ist dann als solches so aufgebaut, dass nichts passiert... hinzu kommt, dass ich nur jeden davor warnen kann, ein solches konstrukt zu bauen, das ist großer mist.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    "können" nicht im OB1
    Es gibt zu viele unterschiedliche Implementierungen von S7-CPUs (alleine innerhalb von SIEMENS mindestens 4 verschiedene) um sich darauf zu verlassen, dass eine Eigenschaft, die SIEMENS im Handbuch ausdrücklich NICHT EMPFIEHLT auszunutzen.

    Lokalvariablen vor der Benutzung initialisieren, egal wo!

  3. #13
    Registriert seit
    24.05.2006
    Beiträge
    234
    Danke
    14
    Erhielt 77 Danke für 57 Beiträge

    Standard

    @vierlagig:
    Nicht auf den letzten Aufruf des OB1. Im aktuellen. Aber die Definition des Vorgängerbausteins ist dir schon geläufig, oder??

  4. #14
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    ... hinzu kommt, dass ich nur jeden davor warnen kann, ein solches konstrukt zu bauen, das ist großer mist.


    ... da mir nämlich ein solches Konstrukt (wenn der Zugriff schreibend erfolgt) generell die temporären Lokaldaten des aufrufenden Bausteins verhunzt.
    Egal ob nun im OB1 oder irgendwo anders.
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  5. #15
    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 hovonlo Beitrag anzeigen
    @vierlagig:
    Nicht auf den letzten Aufruf des OB1. Im aktuellen. Aber die Definition des Vorgängerbausteins ist dir schon geläufig, oder??
    du kannst es mir gern erklären
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #16
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von hovonlo Beitrag anzeigen
    @vierlagig:
    Nicht auf den letzten Aufruf des OB1. Im aktuellen. Aber die Definition des Vorgängerbausteins ist dir schon geläufig, oder??
    Ja, wir haben das schon verstanden....
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

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

    besten Dank für die Antworten. Meine eigenen Tests haben auch die Aussagen von 4L bestätigt. Trotzdem bleibt ein ungutes Bauchgefühl, wenn man die anderen Aussagen und die nachfolgenden Zitate berücksichtigt.

    Hans Berger schreibt in seinem AWL-SCL-Buch zum Thema "Temporäre Lokaldaten" auf S. 258:
    ".....Temporäre Lokaldaten sind Operanden, die im Lokaldaten-Stack (L-Stack) im Systemspeicher der CPU liegen. Das Betriebssystem der Zentralbaugruppe stellt die temporären Lokaldaten für jeden Codebaustein bei dessen Aufruf zur Verfügung. Die Werte im L-Stack sind beim Aufruf eines Bausteins quasi zufällig."

    In der STEP7-Hilfe ist unter dem Stichwort "temporäre Lokaldaten" zu lesen:
    "...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."

    Wenn das Speicherverhalten von irgendwelchen mehr oder weniger zufälligen Konstellationen abhängt, dann sollte man so wohl besser nicht programmieren.

    Gruß
    Earny

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

    beim berger sag ich: ist ein OB ein codebaustein? wie ist die definition und wie kann man die grenzen deutlich machen. OB1 ist für mich immer noch kein codebaustein, er ist DAS hauptprogramm.

    bei der s7-hilfe: durch die absatzlosigkeit bekommen diese aussagen eine unschärfe, die ihres gleichen sucht, wie immer

    ich möchte aber auch noch loswerden: dass eine flanke im OB1 benötigt wird und diese dann auch noch mit temp-variablen arbeitet ist nicht der normale weg, wie ich programme schreibe ... aber ist man sich dieses verhaltens bewußt kann man, ohne auf evtl. beschränkte ressourcen zurückgreifen zu müssen, einige funktionen zur ibn mal eben umsetzen ... zykluszähler z.b.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #19
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Zitat Zitat von Earny Beitrag anzeigen
    b
    Wenn das Speicherverhalten von irgendwelchen mehr oder weniger zufälligen Konstellationen abhängt, dann sollte man so wohl besser nicht programmieren.

    Gruß
    Earny
    Dann hast Du den Sinn und Zweck noch nicht richtig verinnerlicht.
    Diese Temp's machen schon Sinn, müßen aber mit bedacht eingesetzt werden.
    Ich benutzte die z.B. nur für Berechnungen innerhalb eines Netzwerkes als Speicher oder im Netzwerk direkt dahinter.
    Wenn man damit umzugehen weiß sind die Temp's eine gute Erweiterung.
    WICHTIG: Man muss nicht die Vorteile sondern in erster Linie die Grenzen kennen.
    „Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus.“
    Siddhartha Gautama

  10. #20
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ...Vorgängerbaustein...
    Zitat Zitat von OHGN Beitrag anzeigen
    Ja, wir haben das schon verstanden....
    Da bin ich nicht so sicher:
    Im Zusammenhang mit dem zu bauenden Anypointer bezeichnet "Vorgängerbaustein" den Vorgänger (Aufrufer, caller) in einer Kette von Unterprogrammaufrufen.

    Wenn aber Vierlagig schreibt:
    das ist mal schöner seemannsgarn ... wir bauen uns einen anypointer, der auf den letzten aufruf des OB1 zeigt
    glaube ich, daß er es so versteht, als sei ein Pointer auf die Daten des OB1 im vorhergehenden Zyklus gemeint.

Ähnliche Themen

  1. Lokalvariablen in Organisationsbausteinen
    Von Blueglasstalisman im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.08.2011, 14:33
  2. Zugriff auf temporäre Daten in OB
    Von Holger Levetzow im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.05.2010, 09:48
  3. Lokalvariablen im DB weg
    Von Wassermann im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.04.2010, 19:35
  4. Temporäre Variable Laden
    Von Bensen83 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.01.2010, 08:51
  5. Problem mit S7 Lokalvariablen
    Von mrcmm300 im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 26.11.2007, 23:12

Lesezeichen

Berechtigungen

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