KUKA Programmierer

  • Zitat

    Berechnung.X = (Reihe-1)* x_verschiebung1 * rNeg=1


    Wieso =1?
    Berechnung.X = (Reihe-1)* x_verschiebung1 * rNeg=1

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Schritt für Schritt zum Roboterprofi!
  • Ja danke habe ich falsch gemacht ;)


    Die Definition der Function ist an der Richtigen stelle oder gehört die unterhalb der Zeile:


    DEF KukaMatrixTest1 ( ) ???


    bzw. wo gehört diese hin im programm ??


    MFG
    Daniel

  • Die Function EVEN gehört entweder an das Ende der Datei:



    Ausserdem habe ich noch was vergessen. In der Funktion fehlt noch gleich nach der DEFFCT-Zeile:
    DEFFCT BOOL EVEN(iValue:IN)
    INT iVALUE
    IF ((IValue / 2)*2)<>iValue THEN
    RETURN FALSE
    ELSE
    RETURN TRUE
    ENDFCT

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • DEFFCT BOOL EVEN(iValue:IN)
    INT iVALUE
    IF ((IValue / 2)*2)<>iValue THEN
    RETURN FALSE
    ELSE
    RETURN TRUE
    ENDFCT


    kann es sein dass das IValue das I klein gehört also: iValue ?

  • Hi,
    normalerweise ist Groß-/Kleinschreibung egal, ist wegen der Lesbarkeit aber oft sinnvoll.
    Ich weis nicht ob es dir schon aufgefallen ist, aber das Ende einer FOR-Schleife muss ENDFOR heissen und nicht END FOR. :ks:


    Gruß

    &quot;Ich hab nichts gemacht, der Roboter blieb einfach stehen... &quot;


  • Ich weis nicht ob es dir schon aufgefallen ist, aber das Ende einer FOR-Schleife muss ENDFOR heissen und nicht END FOR. :ks:


    Das kommt davon, wenn man die verschiedensten Programmiersprachen durcheinanderwürfelt... :oops:

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.


  • Die Function EVEN gehört entweder an das Ende der Datei:


    Da habe ich wohl noch was vergessen, also:


    ...entweder an das Ende der Datei...


    ....oder in ein externen SRC.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Hej,


    greife das Thema noch mal kurz auf, weil mir eine Sache dabei nicht klar ist.
    Kann auch sein, dass ich mich jetzt hier als Mathe-Stümper hinstelle, aber was bewirkt die Berechnung:


    ((iVALUE / 2) *2)


    ((1/2)*2) = (0,5)*2 = 1
    ((2/2)*2) = (1)*2 = 2
    ((3/2)*2) = (1,5)*2 = 3
    ((4/2)*2) = (2)*2 = 4
    ((5/2)*2) = (2,5)*2 = 5


    Es kommt dabei doch immer ivalue als Ergebnis heraus!
    Wie kann ich darüber eine entscheidung über gerade/ungerade treffen???


    :kopfkratz:


    Seit aber bitte nicht so hart mit mir :biggrins:


    Gruß


    Robotiker

    Wenn die Menschen Flügel hätten und schwarze Federn, wären die wenigsten schlau genug, um Krähen zu sein! Henry Ward Beecher

  • Hallo Robotiker,


    ein Integer ist eine Ganzzahl, kann also keine Kommastellen haben.
    Die Kommastellen der Berechnung werden abgeschnitten.


    Deshalb sehen die Ergebnisse der Berechnung so aus:
    ((1/2)*2) = (0)*2 = 0 (FALSE)
    ((2/2)*2) = (1)*2 = 2 (TRUE)
    ((3/2)*2) = (1)*2 = 4 (FALSE)
    ((4/2)*2) = (2)*2 = 4 (TRUE)
    ((5/2)*2) = (2)*2 = 4 (FALSE)
    usw.


    Gruß Georg

  • iVALUE ist mit dem Datentyp INT deklariert, die Division (iVALUE / 2) wird deshalb als Ganzzahldivision ausgeführt
    und es ergibt sich:


    ((1/2)*2) = (0)*2 = 0
    ((2/2)*2) = (1)*2 = 2
    ((3/2)*2) = (1)*2 = 2
    ((4/2)*2) = (2)*2 = 4
    ((5/2)*2) = (2)*2 = 4


    Gruß


    Hinky

  • Hallo,


    für die Unterscheidung gerade oder ungerade bietet sich die Modulo-Funktion an. Diese ist leider nicht bestandteil der Standartfunktionen.


    Hier mal kurz die Funktion zum integrieten.

    Code
    GLOBAL DEFFCT INT Modulo (N:IN,M:IN)
    DECL INT N,M
    IF (N==0) OR (M==0) THEN
    RETURN 0
    ENDIF
    RETURN N-(N/M)*M
    ENDFCT


    Code
    IF Modulo(x,2) == 0 THEN
     ;gerade
    ELSE
     ;ungerade
    ENDIF



    Gruß
    notime

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

  • Hej,


    kleiner Trost für mich. Dann lag ich mathematisch doch nicht falsch :mrgreen: . Hatte nur nicht an den Variablentyp gedacht. :wallbash:


    Asche auf mein Haupt!!!!


    Aber danke für die Korrektur!


    Schönen Gruß


    Robotiker

    Wenn die Menschen Flügel hätten und schwarze Federn, wären die wenigsten schlau genug, um Krähen zu sein! Henry Ward Beecher

  • Kann sein das ich jetzt falsch liege, aber müsste "Reihe" und "Spalte" nicht auch irgendwo als INT deklariert werden?

  • Hej,


    die müssten eigenltlich irgendwo deklariert werden. Ist wahrscheinlich etwas untergegangen.


    SG


    Robotiker

    Wenn die Menschen Flügel hätten und schwarze Federn, wären die wenigsten schlau genug, um Krähen zu sein! Henry Ward Beecher

  • das kann nicht nur sein, dass ist so.


    Durch Null teilen ergibt Rest Fehlermeldung, null durch etwas teilen ergibt Rest null.

    Noch gestern standen wir vor dem Abgrund, und heute sind wir ein Schritt weiter!

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