Unterprogramm einbinden

  • Servus miteinander,


    ich hab mal wieder ein problem:
    Ich will in einem bestehenden roboterprogramm ein unterprogramm aufrufen in demdie aktuelle lagenzahl einer palette ermittelt wird.


    muss ich da ein modul erstellen oder eine function?


    in dem unterprogramm zur lagenermittlung steht nur


    IF ($POS_ACT.Z < 2000) AND ($POS_ACT.Z > 1900) THEN
    AKT_LAGEN = 10
    ENDIF


    IF ($POS_ACT.Z < 1800) AND ($POS_ACT.Z > 1700) THEN
    AKT_LAGEN = 9
    ENDIF


    usw.


    wie muss ich das schreiben?


    ich will es immer ausführen wenn der roboter in warteposition ist. diese stelle ist mir bekannt


    hab es mir so vorgestellt


    ...
    WAIT FOR $IN[5]
    und hier: AKTUELLE_LAGE ()
    dann weiter im programm
    ....



    das klappt aber nicht


    muss ich in meinem unterprogramm am schluss ein end schreiben damit er wieder im ursprünglichen programm weitermacht??


    besten dank für die hilfe

  • Schritt für Schritt zum Roboterprofi!
  • Hallo



    DEF MAIN ()


    .
    .
    .
    .
    WAIT FOR $IN[5]
    AKTUELLE_LAGE ()
    .
    .
    END




    DEF AKTUELLE_LAGE ()


    IF ($POS_ACT.Z < 2000) AND ($POS_ACT.Z > 1900) THEN
    AKT_LAGEN = 10
    ENDIF


    IF ($POS_ACT.Z < 1800) AND ($POS_ACT.Z > 1700) THEN
    AKT_LAGEN = 9
    ENDIF


    End

  • ich will das unterprogramm global verwenden da ich es in anderen programmen auch brauche.
    muss ich beim erstellen eine function oder ein modul auswählen?


    bei deinem beispiel steht das unterprogramm am ende vom hauptprogramm, oder? das will ich eigentlich nicht, da es sonst zu unübersichtlich wird.

  • du kannst fast jedes programm als unterprogramm aufrufen

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • also einfach ein neues modul erstellen und
    in der config.dat: EXT akt_Lagen()


    so sollte es dann functionieren?


    PS.: Was ist der Unterschied zwischen einem Modul und einer Funktion??

  • snoop


    1. EXT wird seit KRC2 nicht mehr benötigt.
    2. DEF AKTUELLE_LAGE () ist auch bei EXT deklaration nur ein lokales UP
    3. GLOBAL DEF AKTUELLE_LAGE () macht das UP für alle Programme nutzbar


    Gruß
    Robotnik

  • Es ist eine KRC2 Steuerung.


    Also wenn ich im Unterprogramm GLOBAL davorsetzte brauch ich das Programm niergends mehr zu deklarieren?


    Und was ist der Unterschioed zwischen Funktion und Modul??


    Ihr seit ja flott mit den Antworten :danke:

  • Ein Modul gibt keinen Wert zurück.
    z.B.

    Code
    DEF Up1()
     ...
    END


    Eine Funktion gibt einen Wert zurück.
    z.B.

    Code
    DEFFCT BOOL Fct1()
    BOOL dummy
    dummy=TRUE
    RETURN dummy
    ENDFCT

    Kontrolle ist eine Illusion, denn niemand weiss was als nächstes passiert.

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