Beiträge von lutz

    EDIT: So, die Routine tut jetzt das was sie soll nach einigen Hürden und ein paar Bugs (Gewöhnung an RAPID noch nicht ganz abgeschlossen ;-)). Hab es jetzt mit nem einfachen Load,<Auslesen>,Unload implementiert, damit es auch auf der S4-Steuerung läuft.


    Das String-auslesen probier ich demnächst als Alternative.


    Danke nochmal an alle, klasse Forum!

    ich muss hier nochmal eine frage zum aktuellen quelltext stellen, es geht um folgende zeile:


    VAR loadsession load1;


    - wie es aussieht funktioniert das soweit bei dem Roboter mit S4C-Steuerung
    - bei dem Roboter mit S4-Steuerung kennt er angeblich den Datentyp "loadsession" nicht. Ich bin daraufhin in das Menü der Datentypen gegangen. Dort war neben den üblichen num, bool, usw. ein Eintrag "loadsession". Als ich diesen Datentyp anwählte, zeigte er zunächst eine leere Übersicht aller loadsession-Variablen um dann folgenden fehler anzuzeigen, dem man nur durch roboterneustart entgehen konnte: siehe Anhang


    also meine fragen:
    - kann es sein, dass loadsession gemäss rapid-handbuch seite 383/384 (Befehl StartLoad) erst ab S4C-Steuerung funktioniert?
    - hat jemand einen vorschlag für einen workaround?
    - ich will ja im prinzip nur eine integer-zahl von dem datenträger "flp1:" auslesen. ich hatte mir überlegt dazu das modul PICK.SYS einzuladen, die routine rIDENT darin auszuführen wodurch die variable nThispart mit der entsprechenden variable belegt wird. dann soll die variable in eine lokale variable überführt werden mit nActpart:=nThispart; um PICK.SYS (auf der floppy) dann wieder zu entladen. aber wenn es einen einfacheren weg gibt um eine integer-zahl von einer floppy auszulesen dann wäre ich für einen entsprechenden vorschlag nicht undankbar ;)



    EDIT: Habe erfahren, dass es den Datentyp loadsession tatsächlich erst ab S4C-Steuerung gibt. Man kann sich auf S4 mit Load und Unload behelfen.

    wow! superschnelle antwort! bin guter dinge, dass ich damit ans ziel komme. in jedem fall meld ich mich nochmal obs geklappt hat. :danke: und gruss!


    EDIT: stimmt, auf die Floppy-Notation hätte ich kommen können, ist ja in unserer BASE.SYS auch als
    CONST string flp1:="flp1:";
    definiert. ich mach mal weiter... schauen, dass der quelltext funktioniert

    Hallo!


    (Absatz enthält Vorgeplänkel und kann übersprungen werden ;) )
    Kurz zu mir: Ich habe schon mehrere Jahre Erfahrung damit, Bewegungsabläufe Offline mit Robotstudio zu simulieren und den Code entsprechend in RAPID-Quelltext auszugeben und auf den IRB2400ern (S4,S4C,S4C+) einzusetzen. Außerdem programmiere ich ziemlich viel in ObjectPascal und Visual Basic. Was mir aber neu ist, ist die Programmierung in RAPID. Durch meinen Background und Recherche in der mir vorliegenden Roboter-Programmstruktur komme ich ziemlich gut rein, allerdings hakt es noch an der ein oder anderen Ecke und dann was tun, wenn RAPID-Handbuch und google keine Hilfe bringt. Daher wollte ich mich mal gern im Forum nach einer Lösung erkundigen.


    3Punkte:


    1. Ich habe ein ziemlich langes Array hier und ich würde es gern der Übersichtlichkeit halber auf unterschiedliche Zeilen schreiben. Dazu kann man ja im VisualBasic einen Zeilenumbruch erzwingen indem man einfach " _" an ein Zeilenende schreibt und kann dann auf der nächsten Zeile weitermachen. Gibt es dazu ein Pendant im RAPID-Quelltext? Handbuch ist sehr mau wenn es um Arrays geht.


    2. Ich möchte ein Programm schreiben, welches
    - ein System-Modul von einer Floppy-Diskette öffnet
    - eine fest definierte Konstante ausliest
    - und das Systemmodul dann wieder entläd


    3. weiterhin soll es auch ein modul von einer diskette laden, den inhalt verändern und die veränderte Version auf die diskette zurückspeichern. allgemein gibt es ja dazu etwas im RAPID-handbuch mit startload, waitload und unload, allerdings ist nirgendwo aufgeführt, wie man auf das Diskettenlaufwerk verweist. daher meine frage und ich poste hier einfach mal den quelltext zu 2.:


    VAR BOOL bOK;
    VAR NUM nI;
    VAR NUM nActpart;
    VAR NUM nDiff;
    VAR NUM nTrgpart;
    VAR loadsession load1;
    StartLoad "HOME:" \File:="PICK.SYS", load1; !home muss ersetzt werden mit floppy
    WaitLoad load1;
    %"rIDENT"%;
    nActpart:=nThispart;
    UnLoad "HOME:" \File:="PICK.SYS"; !home muss ersetzt werden mit floppy
    bOK:=StrToVal(stProd{nI,6},nTrgpart);
    IF bOK=TRUE THEN
    nDiff:=nTrgpart-nActpart;
    IF (nDiff>0 AND Abs(nDiff)<50) OR (nDiff<0 AND Abs(nDiff)>50) THEN
    FOR nI FROM 1 TO Abs(nDiff) DO
    !PulseDO\PLength:=1,doUP;
    ENDFOR
    ELSE
    FOR nI FROM 1 TO Abs(nDiff) DO
    !PulseDO\PLength:=1,doDOWN;
    ENDFOR
    ENDIF
    ENDIF


    das ist der quelltext für 2.
    bei 3. würde mich nur interessieren, wie die syntax aussieht für "geändertes programm auf floppy zurückspeichern (überschreiben)"


    ist mein erster post, hoffe ist nich zuviel auf einmal. der rest funktioniert schon ganz gut. riesen :danke: :blumen: im voraus und ein schönes wochenende!


    gruss, lutz