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

Ergebnis 1 bis 8 von 8

Thema: Prinzipieller Programmaufbau Globaler Variablen

  1. #1
    Registriert seit
    24.10.2010
    Beiträge
    233
    Danke
    55
    Erhielt 28 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe eine Frage zum prinzipiellen anlegen von (globalen) Variablen.
    Ich hatte vor langer Zeit ein Problem mit Wago Controllern, wenn die Hardware verändert wurde (I/Os dazu oder weg) haben sich interne Speicherbereiche verschoben und die retain und/oder persistent Variablen hatten andere (falsche) Werte.
    Daraufhin bin ich dazu übergegangen, alle retain/persistent variablen global zu speichern. Dies war laut damaliger Aussage vom Support die bessere Variante.

    Nun werden aber die Programme mittlerweile immer unübersichtlicher, ich würde zukünftig gerne die Variablen wieder im entsprechenden Programmteil anlegen.
    Seht Ihr hier ein Problem, bekomme ich wieder Probleme mit den retain/persistent Variablen?

    Wie legt Ihr eure retain/persistent Variablen an um kein Problem bei I/O-Erweiterungen zu bekommen?

    Schöne Grüße
    Daniel
    Zitieren Zitieren Prinzipieller Programmaufbau Globaler Variablen  

  2. #2
    Registriert seit
    11.10.2015
    Beiträge
    111
    Danke
    0
    Erhielt 18 Danke für 17 Beiträge

    Standard

    Moin,
    Du könntest Merker verwenden und diese als Retain und/oder Persistent deklarieren, da Merker auch im nicht flüchtigen Speicherbereich liegen. Damit hat eine Variable immer eine fixe Adresse im Speicher.

  3. #3
    Registriert seit
    13.09.2007
    Beiträge
    565
    Danke
    50
    Erhielt 65 Danke für 57 Beiträge

    Standard

    Moin
    Bei einer Veränderung der Hardware ist das normal das die Daten nicht stimmen. Daher gibt es bei den meisten Steuerungen die Möglichkeit die Retain Dateninhalte zu speichern und später wieder zuladen. Manche machen das auch über "Rezepte"



    Sent from my iPhone using Tapatalk

  4. #4
    Wu Fu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.10.2010
    Beiträge
    233
    Danke
    55
    Erhielt 28 Danke für 22 Beiträge

    Standard

    Vielen Dank für eure Antworten, hierzu hätte ich noch folgende Fragen.

    Du könntest Merker verwenden und diese als Retain und/oder Persistent deklarieren
    Hierzu würde ich in der Variablendeklaration unter Adresse den Merkerbereich angeben und die Variabel natürlich als reatin und persistent deklarieren, richtig?
    Wenn das klappt scheint es eine gute Lösung zu sein, ich muss mir nur noch eine Strategie überlegen, wie ich den Überblick behalte, welche Merker bereits belegt sind.

    die Möglichkeit die Retain Dateninhalte zu speichern und später wieder zuladen
    Meinst Du über den PLC-Browser?
    So sichere ich mir die Daten momentan bereits.
    Funktioniert das auch, wenn sich die Speicherbereich nach einer Hardwäreänderung in einem anderen Speicherbereich befinden?
    Ich kenne leider den Mechanismus dahinter nicht.

    Schöne Grüße

  5. #5
    Registriert seit
    11.10.2015
    Beiträge
    111
    Danke
    0
    Erhielt 18 Danke für 17 Beiträge

    Standard

    Entweder jede Variable auf einen einzelnen Merkerbereich, oder eine eigene Struktur.
    VAR RETAIN PERSISTENT
    wVar_01 AT %MW0: BOOL;
    xVar_02 AT %MX1.0: WORD;
    xVar_03 AT %MX1.1: WORD;
    END_VAR

    VAR RETAIN PERSISTENT
    typVarSet AT %MW0: myVar;
    END_VAR

    TYPE myVar :
    STRUCT
    xVar_11 : BOOL;
    wVar_12 : WORD;
    xVar_13 : BOOL;
    END_STRUCT
    END_TYPE

    Speichern und Laden aller Retain-Variablen geht mit der SysLibPLcCtrl.lib

  6. #6
    Registriert seit
    11.10.2015
    Beiträge
    111
    Danke
    0
    Erhielt 18 Danke für 17 Beiträge

    Standard

    Zitat Zitat von Wu Fu Beitrag anzeigen
    Funktioniert das auch, wenn sich die Speicherbereich nach einer Hardwäreänderung in einem anderen Speicherbereich befinden?
    Das Prozessabbild (HW-Änderungen) liegt in einem seperaten Speicherbereich und stellt sicher kein Problem dar, aber beim Hinzufügen neuer Variablen kommt unter umständen blödsinn bei raus.

  7. #7
    Wu Fu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.10.2010
    Beiträge
    233
    Danke
    55
    Erhielt 28 Danke für 22 Beiträge

    Standard

    Hallo KLM,

    vielen Dank für Deine Antwort.
    Die erste Variante mit einzelnen Mekerbereichen scheint mir sympathischer.
    Ich muss mir dann nur gewissenhaft immer die benutzen Merker notieren.

    Die SysLibPLcCtrl.lib scheint mir das gleiche zu machen wir die PLC-Browser Befehle saveretain und restoreretain nur mit dem Unterschied, dass ich den Namen selbst festlegen kann.

    Das Prozessabbild (HW-Änderungen) liegt in einem seperaten Speicherbereich und stellt sicher kein Problem dar, aber beim Hinzufügen neuer Variablen kommt unter umständen blödsinn bei raus.
    Wenn ich Dich richtig verstehe.
    Bei Verwendung von Merkern siehts du kein Problem bei HW-Änderungen
    Bei Verwendung von Merkern siehts du evtl ein Problem beim Hinzufügen neuer Variablen?

    Mhh, da müsste ich mir mal Hardware besorgen und das testen.
    So wie ich dass mit den Variablen in Erinnerung habe als ich dies im Programm und nicht global abgelegt habe, hatte ich nicht immer das Problem sondern nur manchmal, warum auch immer.
    Ich habe nur die Befürchtung dass beim Test im Büro alles klappt und an der Anlage dann doch wieder nicht.

    Schöne Grüße
    Daniel

  8. #8
    Registriert seit
    11.10.2015
    Beiträge
    111
    Danke
    0
    Erhielt 18 Danke für 17 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bei Verwendung von Merkern siehts du kein Problem bei HW-Änderungen
    Richtig. Kein Problem, weil andere Speicherbereiche.

    Bei Verwendung von Merkern siehts du evtl ein Problem beim Hinzufügen neuer Variablen?
    Kein Problem, solange Du nicht die Merker durchander bringst. Einen weiteren Retain Merker hinten anhängen geht aber.
    Weitere "normale" Retain Variablen sollte auch gehen, das aber bitte testen.
    Edit: Bei letzterem tritt natürlich wieder das Eingangsproblem auf, nur die Retain Merker sollten gleich bleiben
    Geändert von KLM (18.08.2016 um 23:11 Uhr)

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 11.06.2012, 09:13
  2. Liste globaler Variablen per Befehl ausschalten
    Von UlTra im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 10.04.2012, 10:16
  3. Programmaufbau, -ablauf
    Von Stoif im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.05.2009, 20:47
  4. Programmaufbau C7-633 bzw. AG-Abzug
    Von digga im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.04.2008, 19:00
  5. Programmaufbau
    Von ralle81 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 13.02.2008, 23:58

Lesezeichen

Berechtigungen

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