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

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

Thema: Frage zu lokaler Deklaration

  1. #1
    Registriert seit
    22.11.2011
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo allemal,

    Warum ist das (nicht) so ?

    Ich habe folgendes Programm in FC 1 geschrieben
    U E 0.0
    = L 0.0
    U L 0.0
    = A 1.0

    In FC 2 steht
    U L 0.0
    = A 1.1

    Wenn ich jetzt E 0.0 setze ist A 1.0 und A 1.1 hoch
    L 0.0 ist doch eine lokale Deklaration, warum wird A1.1 in FC2 dann auch hoch?

    Vielen dank schon im voraus für eure Hilfe. Gruß, Mike
    Zitieren Zitieren Frage zu lokaler Deklaration  

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

    Standard

    Weil die Daten nur Local im Baustein für einen Zyklus verwendbar sind.

    Im Fc2 lädst Du den Inhalt von L0.0, dieser ist z.B. auf 1, wenn Du wie hier nur diese zwei Bausteine verwendest, er kann aber einen beliebigen Zustand annehmen.

    Lokale Variabeln in den Bausteinen müßen immer initialisiert bzw. beschrieben werden bevor diese im Programmbaustein abgefragt werden !
    „Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus.“
    Siddhartha Gautama

  3. #3
    jessymindy ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.11.2011
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Jabba,
    Danke für Deine schnellen Antwort, nur verstehe ich es immer noch nicht.
    Der zustand von L 0.0 aus FC1 dürfte in FC2 doch überhaupt nicht bekannt sein
    weil dieser ja lokal in FC1 ist.
    In meinem Beispiel sollte er doch den zustand 0 müssen haben.

    Gruß, Mike

  4. #4
    Registriert seit
    15.04.2011
    Beiträge
    1.122
    Danke
    229
    Erhielt 208 Danke für 176 Beiträge

    Standard

    Nein, der Lokaldatenbereich ist immer derselbe Speicherbereich, egal in welchen Baustein. L 0.0 belegt immer dieselbe Speicherzelle.
    Gruß
    190B

  5. #5
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Der Lokaldatenbereich wird von der CPU zur Laufzeit je Prioritätsklasse dynamisch zugewiesen.

    Wenn du L0.0 im FC2 also nur lesend verwendest, dann ist der Zustand im FC2 per Definition der Lokaldaten reiner Zufall,
    die Anmerkung von "190B" ist allerdings nicht korrekt, wie man im folgenden FAQ sieht.

    Als Beispiel zu Untermauerung sei gesagt, das man in der Praxis nicht wenig Programme findet,
    wo Flankenmerker also z.B. "FP L0.0", im Lokaldatenbereich liegen, und diese Programme oftmals
    viele Jahre funktionieren, bis halt irgendwer an einer völlig anderen Stelle was ändert.

    Hier etwas Input von Siemens:
    http://support.automation.siemens.com/WW/view/de/291495

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  6. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    190B (28.05.2012)

  7. #6
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von 190B Beitrag anzeigen
    Nein, der Lokaldatenbereich ist immer derselbe Speicherbereich, egal in welchen Baustein. L 0.0 belegt immer dieselbe Speicherzelle.
    Na, dann bin ich mal auf deine Antwort gespannt, wie es "S" schafft, mit einem Pointer im Speicherbereich V die vorherigen Lokaldaten (Code b#16#87) eines vorangegangenen Bausteins adressieren zu können, obwohl die gem. deinem Zitat überschrieben werden
    kind regards
    SoftMachine

  8. #7
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Sollte nicht vielmehr darauf hingewiesen werden, dass es Sinn macht die Bezeichnung Lokal zu beachten?
    Der lokale Stack ist ein Speicherbereich, der überschrieben wird, wenn es notwendig ist.
    Der Bereich ist nicht geschützt, daher kann es so funktionieren wie es der TE schreibt, muss es aber nicht.


    bike

    bte LOkal ist nicht nur die Kneipe um die Ecke
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  9. #8
    Registriert seit
    15.04.2011
    Beiträge
    1.122
    Danke
    229
    Erhielt 208 Danke für 176 Beiträge

    Standard

    [QUOTE=MSB;388829]Der Lokaldatenbereich wird von der CPU zur Laufzeit je Prioritätsklasse dynamisch zugewiesen.

    Wenn du L0.0 im FC2 also nur lesend verwendest, dann ist der Zustand im FC2 per Definition der Lokaldaten reiner Zufall,
    die Anmerkung von "190B" ist allerdings nicht korrekt, wie man im folgenden FAQ sieht.
    [/QOUTE]

    Hallo MSB,

    Danke für das Richtigstellen und den Link.
    Gruß
    190B

  10. #9
    jessymindy ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.11.2011
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Erstmal ein danke an alle für eure antworten.
    Habe ich es jetzt richtig verstanden das
    Solang ich diesen Speicherbereich nicht überschreibe er seinen Wert behält.
    Rufe ich in FC2 die gleiche Speicherzelle ( L0.0) auf und frage diese nur ab, diese den zustand aus FC1 zugewiesen bekommt.

    ……..Richtig ? Gruß, Mike

  11. #10
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von jessymindy Beitrag anzeigen
    Erstmal ein danke an alle für eure antworten.
    Habe ich es jetzt richtig verstanden das
    Solang ich diesen Speicherbereich nicht überschreibe er seinen Wert behält.
    Rufe ich in FC2 die gleiche Speicherzelle ( L0.0) auf und frage diese nur ab, diese den zustand aus FC1 zugewiesen bekommt.

    ……..Richtig ? Gruß, Mike
    Es kann sein oder auch nicht.
    Doch warum über so etwas nachdenkst, verschliesst sich meinem Verständnis.
    Willst du ein Programm das immer funktioniert oder willst du spielen?


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

Ähnliche Themen

  1. Deklaration Datenbaustein
    Von AxelK83 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 13.02.2012, 11:20
  2. Antworten: 2
    Letzter Beitrag: 18.03.2011, 13:19
  3. frage zur deklaration
    Von PPatte im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 11.03.2009, 21:47
  4. Unbekannte Deklaration
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 14.10.2005, 20:50
  5. TP170B Deklaration
    Von Holle6 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 09.09.2005, 12:12

Lesezeichen

Berechtigungen

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