Fehler bei Parameterübergabe zwischen zwei UP

  • Hallo,
    ich habe bei der Übergabe von Parametern von einem zu einem anderen Unterprogramm ein Problem und seh einfach den Fehler nicht. Vielleicht sieht ja jemand von euch mehr. Softwarestand ist KRC 5.4.13


    Hier erstmal die Variablendeklarationen und der Aufruf des UP


    BOOL oben, dyn_orientierung, erste_hoehe_anders
    REAL A, B, C, alternativhoehe
    DECL REAL ellBahn_mm[500,2]
    DECL E6POS ellBahn_E6POS[500]


    CreateE6POSBahn_ell(ellBahn_mm[,], a, b, C, dyn_orientierung, erste_hoehe_anders, alternativhoehe, oben, ellBahn_EPOS6[])
    (für diese Zeile werden mir die beiden folgenden Fehler angezeigt: "Name nicht als Feld vereinbart" und "Typ aktueller/formaler Parameter nicht verträglich")



    Und hier Kopfzeile Identifikatoren des aufgerufenen UP


    DEF CreateE6POSBahn_ell(realeBahn[,] :IN, a :IN, b :IN, C :IN, dyn_Orientierung :IN, erste_hoehe_anders :IN, Alternativhoehe :IN, oben :IN, ret[] :OUT)

    REAL a, b, C, alternativhoehe
    BOOL oben, dyn_orientierung, erste_hoehe_anders
    DECL REAL realeBahn [,]
    DECL E6POS ret[]



    Sieht jemand das Problem?

    EDIT: Man muss es wohl einfach mal irgendwo aufschreiben, um zu merken, dass E6POS und EPOS6 im Variablennamen nicht das gleiche ist. Thread hat sich erledigt.


    Gruß
    Finrod

    Einmal editiert, zuletzt von Finrod ()

  • Schritt für Schritt zum Roboterprofi!
  • Du solltest (zumindest lt. KUKA-Doku) auch darauf achten, das Felder immer als Out deklariert werden sollen.


    bei:

    Code
    DEF CreateE6POSBahn_ell(realeBahn[,] :IN, a :IN, b :IN, C :IN, dyn_Orientierung :IN, erste_hoehe_anders :IN, Alternativhoehe :IN, oben :IN, ret[] :OUT)


    hast du "realeBahn[,]" als IN deklariert.


    ... falls es mal doch Probleme geben sollte

  • Warum sollten Felder immer als OUT deklariert werden? Das hängt doch davon ab, was das UP machen soll.
    In diesem Fall wird realeBahn genommen und daraus wird ret generiert. Entsprechend soll im aufrufenden Programm auch nur ret (bzw dort heissts ellBahn_E6POS) verändert werden, aber nicht realeBahn (bzw ellBahn_mm).

  • Auszug Arbeitsheft Fortgeschrittene Roboterprogrammierung:


    Zitat


    ... Felder dürfen nur mit Parameter OUT (Call by reference) übergeben werden


    Mehr kann ich dazu nicht schreiben.

  • Geht leider wirklich nur als OUT. Hatte auch schon das Problem. Du musst es ja nicht als out nutzen. Das Programm bleibt ja gleich. Ist nur ein Schönheitsfehler im Programm, aber immer noch besser, als für das Feld ein Globales anlegen zu müssen.
    Und da wird gerade bei Feldern sind. Die haben auch eine maximale Größe. Das steht glaubisch nirgends in der Doku.

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