Benutzerspezifisches Positionsarray Global nutzen

  • Hallo zusammen,

    ich habe ein kleines Problem. Ich bin dabei mit einem Mitsubishi Roboter zu arbeiten, da wir einen im Hause haben, den wir nutzen dürfen.

    Ich habe jetzt das Problem, dass ich Positionsarrays nutzen kann, allerdings nur interne Variablen. Ich habe mir eine Datei mit dem Namen "GLOBALVARS.pgr" gemacht und hier folgende Variablen erstellt:

    Def Inte M_Schritt

    Def Inte M_Wait

    Def Pos P_Homepoint

    Dim P_Cubepos(10)


    Die Datei habe ich dann unter Parameter PRGUSR registriert als globales Programm.

    Jetzt kann ich schön auf M_Schritt und co zugreifen, doch auf das Positionsarray will definitiv immer ein Fehler kommen. Kann mir jemand erläutern warum?

    Controller ist ein CR800-D

    Hier einmal das Programm:


    '###################################################################################################

    ' Autor: Malte Löffler

    ' Company: Aukos GmbH

    ' Costumer: Aukos GmbH

    ' Project: Testprojekt

    ' Modul: Ablauf.prg

    ' Last change 20221201

    '###################################################################################################

    'Interrupts definieren

    Def Inte i

    Def Act 1,M_Schritt>9 GoSub *RESET_M_SCHRITT

    Def Act 2,M_Svo=0 GoSub *WaitServoOn

    Def Pos PTarget

    Dim PDrive(10)

    M_Schritt=1

    'Vorbesetzen der Programmablaufbestimmungen

    GoTo *PRESET

    '--------------------------------------------------------------------------------------------------

    ' Programmablaufschleife

    '--------------------------------------------------------------------------------------------------

    *LOOP

    PTarget=P_Cube(M_Schritt)

    'Fahre zur Position, auf die der Schleifenzähler zeigt

    Mov PTarget

    'Schleifenzähler erhöhen

    M_Schritt=M_Schritt+1

    Dly 0.5

    'Gehe zum Loop Anfang

    GoTo *LOOP

    '--------------------------------------------------------------------------------------------------

    ' Interrupt wenn durchläfe erledigt sind

    '--------------------------------------------------------------------------------------------------

    *RESET_M_SCHRITT

    M_Schritt=1

    M_Wait=1

    Dly 5

    Return 0

    '--------------------------------------------------------------------------------------------------

    ' Interrupt wenn Servos OFF

    '--------------------------------------------------------------------------------------------------

    *WaitServoOn

    'Prüfen des Servos

    While M_Svo=0

    Dly 1

    WEnd

    Return 0

    '--------------------------------------------------------------------------------------------------

    ' Bearbeitung der Befehel vor Programmstart

    '--------------------------------------------------------------------------------------------------

    *PRESET

    'Geschwindigkeit begrenzen

    If M_Ovrd>20 Then

    Ovrd 20

    EndIf

    'Warten bis die Servos Ein sind

    While M_Svo=0

    Dly 0.5

    WEnd

    'Prüfen der Basisi

    If M_BsNo<>0 Then

    Base 1

    EndIf

    'Interrupt freigeben

    Act 0=1

    Act 1=1

    Act 2=1

    GoTo *LOOP


    Würde mich sehr über Informationen freuen.

  • ANZEIGE
  • Hallo,


    Im Programm muss das Array auch nochmal definiert werden.


    Grüße

    Danke Kenny, das hat mir an der Stelle weitergeholfen. Ich frage mich nur, warum die M_XYZ P_POS global genutzt werden können und Arrays wiederum noch einmal deklariert werden müssen.

    Aber das hat auf jeden Fall geklappt.


    Grüße

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