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

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

Thema: Unterschied zwischen temporäre Viariable und Merker

  1. #1
    Registriert seit
    31.07.2009
    Beiträge
    70
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich möchte gern wissen, was ist der Unterschied zwischen einer temporäre variable und einem Merker. Ausserdem kann ich die temporäre Variable ausserhalb des Bausteins genau so wie ein Merker benutzen ??
    Zitieren Zitieren Unterschied zwischen temporäre Viariable und Merker  

  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 temporäre Variable gibt es nur innerhalb des einen Bausteins, in dem sie deklariert wurde. Ihr Inhalt ist erst von dem Moment an definiert, wo du ihn zuweist - er kann nicht von Baustein-Ende bis Baustein-Neuaufruf gehalten werden.
    Ein Merker ist eine globale Variable. Er behält seinen Zustand von Zyklus zu Zyklus (außer er bekommt ihn neu zugewiesen). Er ist in allen Bausteine mit seinem Inhalt gültig.

    Gruß
    Larry

  3. #3
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Temporär = Kann innerhalb von ein Baustein genutzt werden.
    Besteht von den "L" (Lokal) Datenbereich innerhalb von der Baustein.
    Muss (zwingend !!!) initialisert werden bevor man es lesend zugreift.
    Hat kein 'Erinnerung' zwischen Baustein Aufrufe.
    Ohne initialiserung enthält die Lokaldaten zufällige Datenwerte.
    Eine Quelle für viele Anfängerprogrammfehler !

    Merker = Globale Variabeln.
    Stammt von die gute alte (böse alte) S5-Zeiten.
    Problematisch ist das selbst mit zugewiesene Symbole, kann man auf versehen Merkeraddressen zugreifen die man nicht wünscht.
    Z.B. MW10 überlappt MD10 und auch MD8. Und, M3.0 ist in MB3, MW2, MW3, MD0, MD1, MD2 und MD3 enthalten.
    Eine Quelle für viele Anfängerprogrammfehler !
    Merker soll generell vermeidet werden. Kann als "quick-and-dirty" Zwischenablage verwendet werden.
    Anstatt Merker empfehlt es sich DB's mit den benötigten Variabel-Struktur zu erzeugen.
    Jesper M. Pedersen

  4. #4
    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 JesperMP Beitrag anzeigen
    Muss (zwingend !!!) initialisert werden bevor man es lesend zugreift.
    wer zwingt Dich denn?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Ich habe mir offenbar schlecht ausgedruckt.

    Der Initialisierung von Temporäre Addressen ist ein absoluten "muss" bevor das man dieselbe Temporäre Adressen lest.
    Jesper M. Pedersen

  6. #6
    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 JesperMP Beitrag anzeigen
    Ich habe mir offenbar schlecht ausgedruckt.

    Der Initialisierung von Temporäre Addressen ist ein absoluten "muss" bevor das man dieselbe Temporäre Adressen lest.
    muss und zwingen kommt dann doch irgendwie auf's selbe raus...

    Baustein: OB1
    Temp-Variable: posFlag_HM

    U E1.0
    FP posFlag_HM
    etc. etc.

    funktioniert gut, ohne muss und Zwang
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Werden Temporäre Datenwerte in OB1 gerettet zwischen OB1 Auführungen ?
    Das habe ich nicht gewusst !
    Aber in den Fall wäre es eine Ausnahme, weil denselbe Code wird mit Sicherheit nicht funktionieren in andere Baustene, ausser OB1.

    Man macht sein Test-Code in OB1, und alles funktioniert bestens, aber wenn man es nach ein realen Program exportiert zu ein FC oder ein FB, dann funktioniert es nicht mehr.
    Jesper M. Pedersen

  8. Folgender Benutzer sagt Danke zu JesperMP für den nützlichen Beitrag:

    vierlagig (20.10.2014)

  9. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    Baustein: OB1
    Temp-Variable: posFlag_HM

    U E1.0
    FP posFlag_HM
    etc. etc.

    funktioniert gut, ohne muss und Zwang
    Lass mich raten:

    Das funktioniert nur solange man keine anderen OB's mit Temp-Variablen benutzt, die nach Beendigung und vor dem nächsten Aufruf von OB1 gestartet werden und somit den wieder freigegebenen Lokaldatenbereich des OB1 überschreiben könnten?
    Frage dazu: Gibt es solche und wenn ja, welche z.B.?

    Ansonsten liegt es einfach daran, dass der OB1 während der Abarbeitung der sonstigen FBs/FCs noch offen (in Benutzung) ist und somit seine temporären Daten dadurch vor dem Überschreiben geschützt sind.

    Richtig?


    In meiner Ausbildung damals wurde gelehrt, im OB1 nur einen FB unbedingt zu starten, in dem dann das gesamte Programm mit seinen FCs und FBs aufgerufen wird. In diesem Fall würde dann Dein Beispiel wahrscheinlich auch sicher in diesem ersten FB funktionieren, oder?


    Und das sind dann alles die Ausnahmen, die die Regel bestätigen.

  10. #9
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.735
    Danke
    321
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Das funktioniert nur solange man keine anderen OB's mit Temp-Variablen benutzt, die nach Beendigung und vor dem nächsten Aufruf von OB1 gestartet werden und somit den wieder freigegebenen Lokaldatenbereich des OB1 überschreiben könnten?
    Jeder OB, oder technisch Prioritätsklasse hat einen eigenen Stack in den Lokaldaten, folglich hat jeder OB auch seinen fest zugeordneten Bereich im L-Stack welcher sich auch nicht ändert.
    Da die Lokaldaten außerdem auch für den Bausteinaufruf verwendet werden, darf der aufgerufene Baustein natürlich die Lokaldaten des aufrufenden Bausteins nicht verändern.
    Insofern ist das für die jeweilige Prioritätsklasse betrachtet auch "nur" ein Merkerbereich.

    Wobei man vielleicht ausdrücklich erwähnen sollte, das obiges nur für Step7 gilt, da TIA leider nicht beschriebene Temp-Var auf jeden Fall auf Defaultwerte setzt.

    Mfg
    Manuel
    Geändert von MSB (20.10.2014 um 19:34 Uhr)
    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).

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

    hucki (20.10.2014)

  12. #10
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.735
    Danke
    321
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von JesperMP Beitrag anzeigen
    Aber in den Fall wäre es eine Ausnahme, weil denselbe Code wird mit Sicherheit nicht funktionieren in andere Baustene, ausser OB1.
    Das Problem war bzw. ist in so manchen in Betrieb befindlichen Programm, das dieses "mit Sicherheit" leider nicht wirklich stimmt ... sondern es da durchaus ein paar mehr oder weniger große Zufälle gibt,
    wodurch Temp-Flankenmerker durchaus funktionieren können.
    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).

Ähnliche Themen

  1. Step 7 Unterschied zwischen CP und DP
    Von widerstand im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 14.11.2013, 12:59
  2. Unterschied zwischen DA 2A und DA 0,5A
    Von Marcus im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 21.06.2008, 18:21
  3. Unterschied zwischen UC und Call
    Von Bitverbieger im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 17.08.2007, 23:33
  4. Unterschied zwischen EW und PEW
    Von SPSman im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.07.2007, 13:51
  5. unterschied zwischen S7 200 und S7 300
    Von Anonymous im Forum Stammtisch
    Antworten: 6
    Letzter Beitrag: 20.04.2005, 11:59

Lesezeichen

Berechtigungen

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