Beiträge von Psyril

    Hallo Roboter2021,


    Beim CS9 Emulator ist der "Flash" Speicher der gleiche wie in SRS. daher können Applikationen auch direkt aus SRS geladen und gestartet werden. Es ist natürlich auch möglich die Applikation im Emulator wie bei der realen Steuerung zu laden und dann zu starten. Es wird jedoch kein Transfer Manager benötigt. Nach dem laden der Applikation im Emulator, befindet sich diese (eine Kopie) im RAM speicher. Daher haben Änderungen im SRS keinen direkten Einfluss auf die geladene Applikation im Emulator.


    Mittels Debuger kann eine direkte Verbindung zur laufenden Applikation erstellt werden. Da sieht man dann die laufenden Variablenwerte und kann auch direkt Änderungen im laufenden Code durchführen.


    Ich hoffe dies hilft für den Anfang


    Gruss Psyril

    Hallo ludr93,


    da du eine CS9 Steuerung verwendest würde ich mir eher anschauen ob deine Kommunikation mittels Variablen über OPCUA gelöst werden könnte. Da du nur auslesen möchtest wäre dies doch eine simple Lösung ohne zusätzliche Tasks die bei einer Socket Kommunikation sicherlich notwendig wären.


    Gruss Psyril

    Hallo Tobias a.k.a. Langebua,


    handelt es sich hier um ein Backup von einer CS8C oder CS9 Steuerung?
    Bei der CS8C Steuerung das errors.log oder errors.old mit einem Texteditor öffnen:

    Bei der CS9 Steuerung das im Zip enthaltene system.log mit einem Texteditor öffnen:

    Danach mittels suche nach "MAC" suchen..


    Bei CS8C solltest du so etwas finden:

    [OKT 11 2021 18:32:46]: <0x2401> Mac Adresse: 00-30-64-4d-k8-1e


    Bei CS9 solltest du so etwas finden (wichtig ist, du benötigst mit höchster Wahrscheinlichkeit die MAC-Adresse von J204, daher nach J204 Ausschau halten):

    {"entry":{"date":"2021-10-11T18:02:42","ts":"4.093641906","type":"msg","lvl":"INFO","id":"0x2401","val":"Mac Addresse = 00-30-64-4d-k8-1e (J204)"},"hash":"758267ba6b78ka66be"}


    Gruss Psyril

    Hallo Bippo,
    Du kannst einen String auf diverse Arten in einen Punkt "Umwandeln". Es kommt halt immer darauf an wie dein String aufgebaut ist.


    Wenn ein String zum Beispiel so aufgebaut ist: sFromKeyence = "90.2 0.0 -7.6 17.3 52.6 -36.5" (also alle Werte durch ein oder mehrere nicht numerische Zeichen getrennt), dann kannst du dies so mit toNum() umwandeln.

    Und umgekehrt geht sogar einfacher, halt mit toString().

    Code
    sBackToKeyence=toString(".1", pPoint.trsf.x)+" "+toString(".1", pPoint.trsf.y)+" "+toString(".1", pPoint.trsf.z)+" "+toString(".1", pPoint.trsf.rx)+" "+toString(".1", pPoint.trsf.ry)+" "+toString(".1", pPoint.trsf.rz)

    Es ist egal ob du die Änderungen über USB oder FTP auf die Steuerung bringst. Wenn der Code nicht stimmt (Syntaxfehler) wird die Applikation nie geladen. Diese muss auf der Steuerung ausführbar sein.


    Daher denke ich, dass dein Vorgehen auch mit dem USB schon funktioniert hätte.

    Naja..

    ... da bringt er aber Fehler von einer IF schleife obwohl da kein Fehler ist..

    Doch genau da ist der Fehler!


    Es wurden bereits diverse Lösungsansätze von diversen Mitgliedern erläutert.

    Was ist denn das Problem mit dem Verbinden? Kannst du das mal ein bisschen genauer erklären. Bis jetzt verstehe ich nur, dass du gerne alles kostenlos hättest.

    diMitAbb scheint eine Variable vom Typ DIO zu sein. Diese Variablen können nicht direkt wie BOOL verwendet werden. Sie müssen entweder verglichen oder mit dioGet(diMitAbb) und dioSet(diMitAbb) gelesen resp. beschrieben werden.

    Deine if Bedingung auf Zeile 6 sollte daher so aussehen: if diMitAbb==false oder if dioGet(diMitAbb)==0

    Viele Funktionen von Stäubli Robotics Suite sind kostenlos nutzbar (oder wie du schreibst "Demo Version""). In der tat unterliegen gewissen Funktionen einer Lizenz.

    Kostenlos :

    • Transfer Manager (FTP Werkzeug für das einfache Übertragen von Daten, Backup Erstellung)
    • Emulator von jedem Roboter
    • Roboter in der 3D-Umgebung (mit Synchronisation zum Emulator oder realer Steuerung)
    • Einsehen und Ausdrucken von VAL3 Code
    • ...

    Lizenzpflichtig:

    • VAL3 Applikationen (Code) abspeichern, Syntaxcheck
    • Debugging
    • 3D-Ansicht mit Grafikelementen und Kollisionskontrolle
    • Fernzugriff über Ethernet
    • ...

    Hallo ludr93,


    Da in jedem Moment maximal eine Applikation laufen kann ist es nicht möglich eine weitere Applikation zu starten. Es ist jedoch möglich Programme einer Bibliothek auszuführen. Mit libload() kann eine Bibliothek geladen (je nach Bedienereingabe) und dann die entsprechenden Programme als Task oder Unterprogramme aufgerufen werden.


    Ansonsten kann über den "Applikationsmanager" (CS8C) oder "VAL3" (CS9) mit dem Standard-HMI eine Applikation auf Tastendruck geladen und gestartet werden.

    Hallo ludr93

    du kannst die Funktion clock() verwenden.

    Funktion: num clock()
    Diese Anweisung liefert den aktuellen Wert des systeminternen Taktgebers in Sekunden. Die Genauigkeit des internen Taktgebers beträgt eine Millisekunde. Er wird beim Start der Steuerung auf 0 gesetzt und ist unabhängig von der Uhrzeit.
    Beispiel
    Zur Berechnung der Verzögerung zwischen 2 Anweisungen, den Uhrzeitwert vor der ersten Anweisung speichern:
    nStart = clock()
    Nach der letzen Anweisung die Verzögerung folgendermaßen berechnen:
    nDelay = clock() - nStart


    Gruss

    Psyril

    Hallo,


    AlexJobo und Robotnix haben recht. Beide Varianten können Funktionieren. Bei der Antwort von AlexJobo muss darauf geachtet werden, dass genügend Bewegungen im Motion Stack zum ausführen bereitstehen. Diese können dann in der Zeit in der Task wartet, ausgeführt werden. Der Rotorbewegung ist grundsätzlich egal ob ein Task pausiert ist oder nicht solange noch ein Task existiert (das muss nicht mal der sein der die Bewegung verlangt hat).

    Aber klar ist die Variante von Robotnix flexibler und vermutlich auch nachvollziehbarer.


    Gruss

    Psyril

    Hallo,

    um ein FTP Client zu konfigurieren muss der "Legacy editor" aktiviert sein. Ist dies nicht der Fall, kann er unter usr/configs/controller.cfx aktiviert werden.

    Danach kann man im Applikations Manager beim Öffnen einer Applikation eine FTP-Verbindung konfigurieren.

    1. Mit Name kann der FTP-Verbindung ein Name gegeben werden
    2. Die IP-Adresse entspricht der IP-Adresse des FTP-Servers
    3. Der Pfad entspricht dem gemeinsamen Verzeichnis im FTP-Dienstprogramm
    4. Der Benutzer entspricht dem im FTP-Dienstprogramm erstellten Benutzernamen
    5. Das Passwort muss dem Passwort des FTP-Benutzer entsprechen
    6. Nach Eingabe der Parameter, Seite mit "OK" bestätigen
    7. Nun kann über diese "Verbindung" auch ein Text-Dokument geöffnet werden

    Freundliche Grüsse

    Psyril

    Hallo nemez,


    ich bin mir ziemlich sicher, dass die call Funktion nicht über $exec ausgeführt werden kann. Ich hatte das auch schon mal probiert um dynamisch den Programmnamen der call Funktion zu ändern. Mir wurde dann gesagt ich soll die switch Struktur verwenden.


    Vielleicht weiss jemand anders mehr dazu..

    Hallo MaWeTis,


    Egal ob SRS 2016 oder 2019, ob du die WMS-Box verwenden kannst oder nicht hängt von der Konfiguration in der PMT Datei ab. Ist da bei "mode_WMS" eine eins gesetzt kann/muss die WMS-Box verwendet werden.


    Freundliche Grüsse
    Psyril

    Hallo talla,


    bei *BATRAM not initialized* handelt es sich um eine Batterie welche dafür sorgt, dass die gespeicherten Kalibrationsdaten vom Roboter im RAM auch beim Abschalten der Steuerung nicht verloren gehen. Nun sieht es so aus als wäre dies geschehen. Du müsstet eine Floppy Disk mit Standardwerten haben um die Kalibrationsdaten erneut zu übertragen.


    Gruss
    Psyril