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.
