Position nach Typnummer aus einer Liste von Robtargets ziehen

  • Hallo,
    heute habe ich mal eine Frage.

    Ich habe in der Datendeklaration eine Liste von 256 Robtargets angelegt.

    Im Moment schreibe ich im Programm


    MoveJ Offs(PositionTableP71(gi_TypeFromPLC),0,0,250),vmax,z60,tPlates\WObj:=wTransfStOffs;

    MoveJ Offs(PositionTableP71(gi_TypeFromPLC),0,0,20),vmax,z10,tPlates\WObj:=wTransfStOffs;

    MoveL PositionTableP71(gi_TypeFromPLC),vmax,fine,tPlates\WObj:=wTransfStOffs;


    PositionTableP71(gi_TypeFromPLC) ist eine Function, die mit ein Robtarget zurückgiebt.

    FUNC robtarget PositionTableP71(VAR signalgi Typenum)


    VAR robtarget TargetPos;

    TEST Typenum

    CASE 1:

    RETURN p71aP_Type_001;

    CASE 2:

    RETURN p71aP_Type_002;

    CASE 3:

    RETURN p71aP_Type_003;

    .

    .

    .

    .

    CASE 255:

    RETURN p71aP_Type_255;

    DEFAULT:

    RETURN p71aP_Type_000;

    ENDTEST

    ENDFUNC



    Die Frage, geht das nicht kürzer, ohne 256 Cases zu erstellen???
    Irgendwie sowas, wie man Strings auswertet?


    Teachen lassen sich die Positionen im Programdata Fenster in der Robtarget Liste.

  • ANZEIGE
    • Hilfreich

    Wenn eh über die Robtargetliste geteacht wird, warum dann nicht gleich ein Array mit robtargets?

    Code
    pers robtarget p71aP{256}:={ [[0,0,0],[1,0,0,0],[0,1,1,1],[......
    ...
    MoveJ Offs(p71aP{gi_TypeFromPLC},0,0,250),vmax,z60,tPlates\WObj:=wTransfStOffs;
    
    MoveJ Offs(p71aP{gi_TypeFromPLC},0,0,20),vmax,z10,tPlates\WObj:=wTransfStOffs;
    
    MoveL p71aP{gi_TypeFromPLC},vmax,fine,tPlates\WObj:=wTransfStOffs;

    Kleiner Hinweis: ich würde auf jeden Fall das gi_TypeFromPLC durch eine Variable, die am Anfang gesetzt wird ersetzen. Sonst könnte die SPS zwischendurch mal die Nummer ändern, was dann zu Diskussionen und Crash führen kann.

  • Alles klar Herrmann, funz so, Super Dankeschön :thumbup:

    Übrigens, mit einer Variabel zu arbeiten ist sowieso zwingend erforderlich,
    da bei Wert 0 im Gruppeneingang die Array-Abfrage eine Fehlermeldung macht.
    Muss Wert 1 bis 255 sein. Also, wenn Eingang Wert 0, dann Variable auf 255.

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden