Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
08. Februar 2012, 14:56:18
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: English and international Robotsupport now on Robot Forum. Also Supported by the Moderators of the roboterforum.de

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Stäubli Roboter (Moderator: titan72)  |  Thema: Variable speichern 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Variable speichern  (Gelesen 1171 mal)
Roland Keller
Administrator
Deluxe Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 479



« am: 04. August 2010, 10:09:06 »

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
Gespeichert

-------------
Gruß
Roland


Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer
stgo
Neuling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 19


« Antworten #1 am: 05. August 2010, 07:14:49 »

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
Gespeichert
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 743


« Antworten #2 am: 05. August 2010, 13:03:45 »

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
Gespeichert
Roland Keller
Administrator
Deluxe Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 479



« Antworten #3 am: 07. August 2010, 12:52:15 »


@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.
Gespeichert

-------------
Gruß
Roland


Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer
Roland Keller
Administrator
Deluxe Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 479



« Antworten #4 am: 23. August 2010, 14:43:12 »

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.
Gespeichert

-------------
Gruß
Roland


Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer
Roland Keller
Administrator
Deluxe Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 479



« Antworten #5 am: 24. August 2010, 15:16:33 »

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.
Gespeichert

-------------
Gruß
Roland


Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer
titan72
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 869



« Antworten #6 am: 24. August 2010, 16:39:05 »

yes, interesse!  gutidee !
Gespeichert

‘Go To Statement Considered Harmful’

„Seit Jahren bin ich nun mit der Beobachtung vertraut, dass die Qualität von Programmierern eine abnehmende Funktion der Dichte von GOTO Anweisungen in ihren Programmen ist.“
Edsger W. Dijkstra

Dem haben wir nichts hinzuzufügen!
Roland Keller
Administrator
Deluxe Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 479



« Antworten #7 am: 24. August 2010, 17:57:57 »

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
Gespeichert

-------------
Gruß
Roland


Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer
stgo
Neuling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 19


« Antworten #8 am: 25. August 2010, 07:03:49 »

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)
Gespeichert
Roland Keller
Administrator
Deluxe Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 479



« Antworten #9 am: 25. August 2010, 11:15:03 »

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)
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.
Gespeichert

-------------
Gruß
Roland


Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Stäubli Roboter (Moderator: titan72)  |  Thema: Variable speichern « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS