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.