Variable speichern

  • Hallo Stäublis,


    gibt es die Möglichkeit eine Variable vom Typ num zu speichern/sichern? So daß die Werte nach schliessen und wieder öffnen der Applikation noch vorhanden sind?
    Standartmässig gilt ja: "Variablen des Typs num werden vorprogrammiert auf den Wert 0 initialisiert".


    Danke

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • ANZEIGE
  • Hallo,


    also ich kenne auch nur diese beiden Möglichkeiten:


    a) bei den globalen Variablen kann im Deklarationsfenster ein fester Initialisierungswert angegeben werden. Dann wird die Variable automatisch beim Hochlauf immer mit diesem Wert beschrieben.


    b) Benötigte Variablen in eine Bibliothek auslagern und dann mit dem Befehl "libSave()" auf Anforderung (z. B. im stop-Programmteil) wegschreiben. Es wird dann eben der Wert im Moment des Beendens geschrieben (sollte nicht zu oft gemacht werden, da immer ein Zugriff auf den Flash-Speicher erfolgt).


    Für Zähler etc., die z. B. bei Stromausfall gesichert werden sollen, gibt's keine Möglichkeit. Wir schreiben diese über einen Feldbus auf eine Steuerung mit remanentem Speicher.


    Gruss,
    Stefan

  • Hallo,


    im Expansion-AddOn zu Val3 gibt es Befehle ($fileOpen, $fileClose, $fileSet, $fileGet) um Werte in Dateien zu schreiben und wieder einzulesen. Geht auch mit externen Medien, z.B. USB-Stick. Eventuell ist das eine Möglichkeit für dich.


    Grüße

    Urmel

    Einmal editiert, zuletzt von Urmel ()

  • stgo
    Eine übergeordnete Steuerung gibt es leider nicht. Der Roboter steuert die komplette Zelle alleine.
    Die Variable zu initialisieren bringt geht nicht da es sich um einen Zähler handelt der seinen Wert nicht verlieren sollte / darf.


    Urmel
    Diese AddOns werde ich mir mal genauer anschauen.
    Danke!


    Ich dachte schon an einen Trfs mit dem die Daten z.B. in einer Positionsvariablen gespeichert werden.

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer


  • b) Benötigte Variablen in eine Bibliothek auslagern und dann mit dem Befehl "libSave()" auf Anforderung (z. B. im stop-Programmteil) wegschreiben. Es wird dann eben der Wert im Moment des Beendens geschrieben (sollte nicht zu oft gemacht werden, da immer ein Zugriff auf den Flash-Speicher erfolgt).
    Gruss,
    Stefan


    Hab das jetzt mal auf diese Weise gelöst. Allerdings greife ich nicht auf den Flash-Speicher zu, sondern habe durch eine Änderung in der options.cfx den SRam aktiviert.
    Das Problem das jetzt auftritt ist, daß ich eine Fehlermeldung bekomme (VAL3 Laufzeitfehler. Externes Symbol konnte nicht aufgelöst werden) sobald ich einen der Zähler inkrementiere.

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Sodele, Probleme beseitigt, alles läuft.
    Sollte es von Interesse sein, kann ich eine kleine Anleitung schreiben wie Variablen vom Typ num gespeichert werden können ohne den Flash zu belasten.

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Vorab eine kurze Beschreibung wie eine Bibliothek erstellt wird.
    Gedacht als kleine Gedächstnisstütze da der Ein oder Andere sowas noch nie oder vor langer Zeit gemacht hat.


    Wir haben eine Hauptapplikation in der die Abläufe des Roboters programmiert sind und die wir einfachheitshalber HauptApp nennen.
    Zuerst wird eine neue Applikation erzeugt die in der gleichen Zelle liegen muss wie die HauptApp und nennen sie einfach mal ZaehlerApp.
    In der ZaehlerApp werden nun die Variablen vom Typ num deklariert (z.B. nZaehler1, nZaehler2 usw.) und durch das Setzen des Häckchens rechts oben public gemacht.
    In der HauptApp wird anschliessend eine neue Bibliothek erstellt die wir z.B. lib nennen. Den Namen doppelklicken und als Pfad für lib einfach ZaehlerApp eingegeben.
    Der Zugriff auf die Variablen erfolgt wie bei Zugriffen auf die Ein- und Ausgänge denen ein io: vorangestellt ist was ja aussagt in welcher Bibliothek sie liegen.


    Aus nZaehler1=0 wird dann lib:nZaehler1=0
    Aus nZaehler1=(nZaehler1+1) wird lib:nZaehler1=(lib:nZaehler1+1)


    Mit den Befehlen libLoad und libSave können die Werte der Variablen gespeichert und wieder geladen werden.


    Da die Flashkarte viele Speicherzugriffe nicht sehr gut verkraftet, wird der Sram erzeugt.
    Unter Staubli\CS8\sys\configs liegt die Datei options.cfx
    Diese mit einem Texteditor öffnen und folgende Einträge hinzufügen bzw. Copy/Paste:


    <Int name="magicFlag" value="32" />
    <Int name="plcSramSize" value="0" />


    Die Datei speichern und mittels FTP-Tool auf die Steuerung spielen.
    Anschliessend Steuerung einmal aus- und wieder einschalten.
    Die Bibliothek lib muss jetzt grundsätzlich aus dem Sram geladen werden.
    Dazu benötigen wir noch eine numVariable die lokal im Programm vom dem aufgerufen werden soll deklariert wird.
    Ich habe dies im Programm "start" gemacht und die Variable nStatus genannt.
    Syntax zum Laden der Zaehler:


    nStatus = lib:libLoad("Sram://ZaehlerApp")


    Wie bei Stäubli üblich, ist auf Groß- und Kleinschreibung zu achten. Sram muss grundsätzlich mit einem kleinen r geschrieben werden.


    Sollte es einen Fehler geben, was möglich wäre da die Bibliothek noch nicht auf dem Sram ist, behelfen wir uns mit einem einmaligen laden auf den Flash.
    Dazu ändern wir den Ladebefehl in
    nStatus = lib:libLoad("ZaehlerApp")
    und starten das Programm neu.
    Wenn alles funktioniert dann grundsätzlich auf Sram zurückstellen.


    Jetzt kann ohne Belastung der Flash alle 4 ms lustig geladen und gespeichert werden.
    Ich habe das so gemacht, daß ich im Programm "start" immer lade: nStatus = lib:libLoad("Sram://ZaehlerApp")
    und dort wo gezählt wird bzw. im Programm "stop" immer speichere: lib:libSave = ("Sram://ZaehlerApp")


    Ich hoffe und denke daß es der Ein oder Andere hier vielleicht verwenden kann.
    Für Fehler wird keine Garantie übernommen. :pfeif:

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

    Einmal editiert, zuletzt von Roboman ()

  • Jetzt hab ich es auch wieder in meiner "alten" Dokumentation gefunden. Als Info möchte ich noch anfügen, was Stäubli darin zur Pufferzeit schreibt:

    Zitat

    The Sram is persistent during 3 days garantied (usually one week)


  • Jetzt hab ich es auch wieder in meiner "alten" Dokumentation gefunden. Als Info möchte ich noch anfügen, was Stäubli darin zur Pufferzeit schreibt:


    Stimmt, daran sollte man denken und vor Ausschalten der Steuerung zur Sicherheit einen Speicherabzug machen.
    Allerdings ist es in den meisten Betrieben eher unüblich ein Robotersystem mehr als 3 Tage nicht zu betreiben. Von daher sehe ich für die meisten Anwendungsfälle kein Problem darin.

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Hallo Roland,
    dein Beitrag zum Sram ist sehr interessant, allerdings finde ich auf meiner Steuerung die Datei Options.cfx nicht.
    Steuerung: CS8C [s7.9.1]
    Hat vielleicht jemand eine Idee warum diese Datei nicht vorhanden ist?
    Oder reicht es einfach diese neu anzulegen? In diesen fall würde ich gerne den kompletten Code dieser Datei haben.

    Mein Bereich:<br />KUKA, ABB, STÄUBLI, FANUC<br />Kommunikation mit s7

  • Hallo FabiDe,
    Danke für die Info.
    Ich habe inzwischen auch eine Anleitung von Stäubli gefunden:
    es muss nur noch die "MagicFlag" angepasst werden: Diese ist schon in der cell.cfx deklariert, allerdings mit value=0, und muss auf 32 gesetzt werden.
    Das mit der "plcSramSize" wird da gar nicht erwähnt.

    Mein Bereich:<br />KUKA, ABB, STÄUBLI, FANUC<br />Kommunikation mit s7

  • Hallo Distman,


    das ist eine gute Frage. Ich würde mal in der Suche der technischen Datenbank von Stäubli "Magicflag" eingeben. Da solltest du bestimmt etwas finden.


    Falls du aber eine CS9 Steuerung hast, kannst du die Zeit sparen. Die CS9 hat keine echte sram mehr.


    Gruss Psyril

    Der Unterschied zwischen Theorie und Praxis ist in der Praxis weit grösser als in der Theorie.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden