Num Daten aus mehrern Task zugreifen- möglich? Anleitung Record funktion?

  • Hallo,
    habe eine kleines Problem. Habe zwei IRB4400 mit Multi-Move System. Nun zu meiner Frage. In der Task des Roboter 1 gibt es eine Routine die mir Parameter von der SPS in eine Tabelle schreibt. Nun kann ich die Werte aus der Tabelle entnehmen und Sie in eine Variable des Typs Num z.B. nDaten schreiben. Da es umständlich wäre jedes mal aus der Tabelle zu lesen....
    Ist es irgendwie möglich die Num Daten so anzulegen das ich von Beiden Task (Rob1 und Rob2) drauf zugreifen kann?
    Bis jetzt sind sie in einer Sysdata deklaration die jeweils jede Task hat als Variable gespeichert.
    Vielleicht könnt ihr mir helfen!? Sollte es vielleicht der Typ PERS sein!?
    Dann noch eine andere kurze Frage…
    Gibt es irgend wo eine Anleitung über die RECORD Instruktion? Habe in dem Rapid Handbuch nichts gefunden. Damit sollte es möglich sein Parameter oder ähnliches zu erstellen.
    Danke schon einmal für eure Antworten

  • ANZEIGE
  • Hier mal ein Beispiel zu Anwenderdatentypen::



    RECORD mytype
    string messagetext;
    num errornum;
    loaddata myload;
    ENDRECORD


    Damit kannst du einen (Deinen) Daten-Typ definieren. Danach folgt die Deklaration der Variablen Deines Typs:


    VAR mytype Variable1;


    Du kannst sogar Felder Deines Types deklarieren:


    VAR mytype Feld{10};


    Zugiff auf die Unterelemente dann mit Punkt-Operator:


    Variable1.messagetext:="Aha";
    Feld{2}.errornum:=10;


    dust2

  • Hallo Snoopy01,
    ich möchte auch noch was zu dem Thema "Records" beisteuern. Bei den meisten Sprachen nennt man das eine Struktur! Wie schon Dust2 geschrieben hat du kannst damit eigene Datentypen erstellen. Als erstes muss dieses Record deklariert werden. Wichtig: Diese Definition muss am Anfang im Modul beschrieben werden.


    Record KistenDaten
    num X
    num Y
    num Z
    string Kistentext
    ENDRECORD


    erst jetzt kommt alles andere. Variablen usw. Andernfalls gibt es Ladefehler.
    Ein Beispiel:
    Du hast 2 Kisten von denen du die Größe benötigst. Zum Palettieren oder so.
    Du kannst jetzt diese Daten einzeln Beschreiben.
    num Kiste1x=
    num Kiste1y=
    num Kiste1z=
    string Kiste1Text=
    num Kiste2x=
    num Kiste2y=
    num Kiste2z=
    string Kiste2Text=
    Und das kann viel Arbeit sein und es wird schwer zu lesen sein. Eine bessere Schreibweise wäre:


    VAR KistenDaten meineKisten[2]:=[[10,10,10,"Kiste1"],[20,20,20,"Kiste2"]];


    Im Programm kannst du jetzt diese Records ansprechen.


    Offs:=meineKisten[zähler].x;
    Offs:=meineKisten[zähler].y;


    meineKisten[1]:=meineKisten[2]


    Bei Übergabeparameter in Routinen und Funktionen kann man direkt diesen Typ übergeben.


    PROC Rechen(KistenDaten AktuelleKiste)....
    ohne Records
    PROC Rechnen(num DatenX,num Dateny, num DatenZ)....
    Das ganze geht natürlich auch mit einem Rückgabewert.
    ...return KistenDaten
    Also damit kannst du Programme schreiben die Übersichtlicher werden. Und damit auch einfacher um neue Änderungen einzubauen oder auch zu entfernen.
    In der Doku ist über diese Thema leider wenig zu finden. :denk:
    Gruß Paule

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

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