Hallo,
ein Backup wäre gut, um ins Programm sehen zu können.
Prinzipiell ist es denkbar, dass der Controller abstürzt, wenn zu viele Tasks mit zu niedriger Priorität erstellt wurde.
Wird sich aber dann im Backup zeigen.
Hallo,
ein Backup wäre gut, um ins Programm sehen zu können.
Prinzipiell ist es denkbar, dass der Controller abstürzt, wenn zu viele Tasks mit zu niedriger Priorität erstellt wurde.
Wird sich aber dann im Backup zeigen.
Deine Frage ist nicht konkret genug.
Was genau meinst du mit: wie man einen String in eine Position schreiben kann?
Ist der Scanner über TCP/IP angeschlossen? Schickt der Scanner Daten (Strings) mit Positionen darin?
Bitte konkretisiere deine Frage, dann kann man dir ggf. helfen.
Hallo,
Annahme: alle Punkte/Frames sind unter world angelegt.
Wenn SRS vorhanden ist, dann könnet ihr unter Geometrische Beschreibung einen neuen frame (z.B. fOffset) unter world anlegen, der als z Eintrag 3 hat. Anschließend zieht ihr alle Punkte/frames unterhalb dieses neuen Frames
Alle Angaben ohne Gewähr!
WolfHenk Danke für ihre Antwort. Doktorarbeiten sind ja oft öffentlich einsehbar, haben Sie zufällig einen Link? Ich würde dies gerne nachlesen.
Hallo zusammen,
ich habe folgendes Video von UR gefunden:
Ab 2:44 min wird der Wizard gezeigt, bei dem mit 4 verschiedenen Roboterposen die Payload und das COG (Center of gravity) bestimmt wird.
Meine Frage: Wie wird dies intern berechnet bzw. welche Werte sind nötig, um dies selbst nachzurechnen?
Danke im Voraus!
Die USB-Schnittstelle lässt sich nicht in VAL3 integrieren, diese dient nur zum Exportieren/Importieren von Logger, Applikationen, ...
Also würde ich ganz klar RS232 empfehlen. Zur Konfiguration brauchst du dann eine sio Variable, da dies als serielle Schnittstelle definiert ist.
Hallo,
hier mal ein Beispielprogramm, das eine Datei einliest:
begin
// Open file to write
nFileHandler = $fileOpen("data.csv", "r")
// init Buffer sLine
resize(sLine, 1, 1)
sLine = ""
l_nDataSize = 0
// read line by line
do
nReadLines = $fileGet(nFileHandler,l_sLine,1)
if nReadLines > 0
append(sLine)
sLine[l_nDataSize] = l_sLine
endIf
l_nDataSize = l_nDataSize + 1
until nReadLines == 0
// remove last entry in sLine, because of "append" command before
resize(sLine, 1, size(sLine)-1)
// close file
$fileClose(nFileHandler)
end
Alles anzeigen
Die Idee ist, dass so lange mit $fileGet Zeile für Zeile eingelesen wird, bis die eingelesenen Zeichen 0 (und damit leer) ist.
Hier nochmals eine Beschreibung der Funktion $fileGet()
num $fileGet(num nFileHandler, string& sLines[], num NbLines)
Diese Anweisung liest nNbLines-Zeilen, speichert jede Zeile in einem Eintrag der Variablen nLines und gibt die Anzahl der effektiv gelesenen Zeilen zurück. Ein Zeilenende ist '\n' (0xa in binärer Form); die nachgestellten Zeichen \n und \r werden in der VAL3-Zeichenkette entfernt. Der nFileHandler ist der Dateibezeichner, der von der $fileOpen-Anweisung zurückgegeben wird.
Beispiel: $fileGet(nFileHandler, sLines[10], 7) : liest und speichert 7 Zeilen in sLines[10], sLines[11], ... sLines [16].
P.S.: Es ist auch möglich die Anzahl der einzulesenen Bytes anzugeben mit
num $fileGet(num nFileHandler, num& nBytes[], num nNbBytes)
Zum Schreiben von Dateien:
num $fileSet(num nFileHandler, string sLine, num NbLines)
Diese Anweisung schreibt nNbLines, die im Array sLines gefunden wurden, und gibt die Anzahl der effektiv geschriebenen Zeilen zurück. Nach jeder Zeichenfolge von sLines[] wird ein Zeilenende '\n' (0xa in binärer Form) geschrieben. Der nFileHandler ist der Dateibezeichner, der von der $fileOpen-Anweisung zurückgegeben wird. 5/7
Beispiel: $fileSet(nFileHandler, sLines[10], 7) : schreibt sLines[10], sLines[11], ... sLines[16] in 7 verschiedene Zeilen.
Man sollte noch dazu erwähnen, dass der Code von Nussknacker natürlich in einem parallelen Task laufen sollte.
Wie genau hast du denn deine Änderungen mit dem USB Stick eingespielt? Und reden wir über CS8C, CS9 oder etwas anderem?
Ich würde ganz klar SRS (Stäubli Robotics Suite) von Stäubli selbst empfehlen, da es genau die Punkte integriert hat, die du aufgezählt hast. Die EA-Verwaltung wüsste ich gar nicht anders als über SRS bzw. Sycon.net selbst zu konfigurieren (Sycon.net ist bei SRS automatisch mit dabei!). Ebenso kann mittlerweile die Saftey-Konfiguration über SRS erstellt werden, das Transferieren auf den Controller selbst geht dann mit SafePMT (Software gibt es im Downloadbereich bei Stäubli oder an der Hotline).
In SRS sind dann auch Emulatoren aller Controller bzw. deren Systemversionen vorhanden, was deinem virtuellen Teach Panel entspricht.
Zudem gibt es noch einige Extras:
Wegen SRC: Ich denke hier liegt eine Verwechslung vor. SRC (Stäubli Robotics Control) beschreibt eigentlich die Version der Software auf dem Controller und ist keine Software zur Konfiguration. Das wäre dann SRS (Stäubli Robotics Suite).
Ich habe noch eine bessere Variante gefunden, denn mit Hilfe des Expansion-AddOns kann man sich (mit 4 ms Verzögerung, aber das wird verkraftbar sein), die Ist-Geschwindigkeit ausgeben lassen, dann sieht dein paralleler Task (alle 4 ms) so aus:
do
nVelTCP=$getSpeedFbk(tTool)
aioSet(aoVel, nVelTCP)
delay(0)
until false
Damit schreibst du alle 4 ms auf dem analogen Ausgang aoVel die aktuelle Ist-Geschwindigkeit. Wenn du das Expansion-AddOn nicht hast, dann müssen wir auf die distance() Variante zurückgreifen. Die AddOns können von der technischen Datenbank geladen werden und sind spezifisch für die verwendete SRC Version zu installieren.
Du könntest in einem parallelen, synchronen Task (4 ms) dir immer mit dem Hilfe des distance()-Befehl ausgeben lassen, wie weit du zur letzten bekannten Position gekommen bist. Über v=s/t kannst du dir dann die Geschwindigkeit sehr leicht berechnen.
Über Fast-IOs wird das nicht funktionieren, da diese nur digitale IOs sind. Du müsstest den Geschwindigkeitswert mit aioset() auf eine analoge Variable mappen und dann über Feldbus etc. abschicken. Wenn es nicht echtzeitfähig sein muss, dann kannst du es auch über TCP-IP ausgeben.
Wenn du einen funktionstüchtigen VAL3-Code benötigst, dann kann ich diese gern zur Verfügung stellen.
Sie können überprüfen, ob beim Druck auf "Zeige alle Updates" die Updates kommen und zudem werden diese erst aktiviert, wenn Sie SRS beenden. Dann sollte rechts oben die Updates angezeigt werden.
Diese Karten sind nur original bei Stäubli zu bestellen, da sie meines Wissens gebrandet sind.
Jedoch gibt es in diesem Forenbeitrag auch andere Hinweise, jedoch werden diese nicht offiziell von Stäubli supported: CS8C-Profibuskarte
Da Sie uniVAL PLC verwenden wollen, würde ich sehr empfehlen die Originalkarte zu verwenden, da dann auch die Einrichtung etc. mit uniVAL PLC sichergestellt ist.
Guten Abend zusammen,
Fanuc bietet ja beispielsweise die Möglichkeit die Payload-Parameter automatisch ermitteln zu lassen.
Weiß jemand, wie dazu der Grundsätzliche Algorithmus funktioniert bzw. aus welchen Daten (Ströme, Drehmomente, ...) diese berechnet werden?
Ich binum jede Hilfe dankbar!
Man kann im Debugger Schritt für Schritt (Zeile für Zeile) ablaufen lassen und so sehen, an welche Positionen gefahren wird. Nur muss man eben beachten, dass durch die Parallelität der Tasks das Konzept anders ist als bei anderen Herstellern.
Hallo,
Zu deinen beiden Punkten:
Programmcode anzeigen/editieren: Dies ist im Prinzip möglich, jedoch etwas versteckt: Wenn man auf dem SP2 im Hauptmenü den "VAL3" Button drücken kann, dann ist dies erst nach einer Änderung der Datei usr/configs/controller.cfx möglich (FTP Verbindung aufbauen, Datei lokal kopieren, ändern, wieder hochladen). Dazu den Eintrag "
<Bool name="legacyEditor" value="false" />" suchen und den value auf true setzen, Steuerung neu starten. Dann ist der VAL3 Button auf dem Handbediengerät ausgegraut, dafür ist nun der Hardwarebutton links (drei waagrechte Striche, auch "BurgerButton" genannt) aktiv. Dann hat man den "alten" CS8C Style. Dann kann man darin im "Applikationsmanager" seine Applikation öffnen und in den RAM laden. öffnet man weiter den Dateienbaum, so sieht man unterhalb der geladenen Applikation "Programme". Man wählt das gewünscht Programm aus und drückt "F4" (edit) um das Programm zu editieren. Aber das macht nicht sehr viel Spaß auf dem Handbediengerät
Zum Programmzeiger: Da Stäubli mit parallelen Tasks arbeitet ist es nicht ohne weiteres möglich einen von anderen Herstellern bekannten Programmzeiger zu sehen. Zudem sind ja VAL3 und die Roboterbewegung getrennt voneinander.
Dennoch kann man im Taskmanager sehen, in welcher Programmzeile jeder Task gerade steht (Was nicht bedeutet, dass der Roboter alle Fahrbefehle bis dorthin schon ausgeführt hat!).
Ist die VAL3 Kachel im Hauptmenü vorhanden (nicht ausgegraut wie oben beschrieben), dann drückt man diese und wenn die Applikation läuft sieht man links oben drei Balken. Drückt man diese, dann erscheint der Taskmanager und man sieht, in welcher Zeile welcher Task steht. Man erkennt z.B. auch leicht, wenn auf Signale gewartet wird um Fehler zu beheben.
Falls wie oben beschrieben der legacyMode angeschalten ist, gibt es im Hauptmenü einen eigenen Eintrag "Applikationsmanager".
Ab SRC Version s8.10.3 ist es möglich ohne den "Hack" des Anpassens der controller.cfx Datei zum legacyMode umzuschalten. Ich weiß jedoch nicht aus dem Kopf, wie dies möglich ist (kann dies aber gerne nachtragen).