Posts by kiwasuse

    AS_prog should also work on relative motion commands.


    Are you referring to something like?:
    - LIN_REL { E2: 0.0 } #TOOL #AS_PROG

    Yes. Lookup #AS_PROG.


    Right. Thank you.

    I do use #AS_PROG, but AFAIK, #AS_PROG only works with ASYPTP. My goal is to move away from ASYPTP and control E1, E2 only through LIN.

    For example:

    LIN { X 1288.000, Y -500.000, Z 1250.000, A 79.0000, B 90.0000, C 0.0000, E1 43.2303, E2 0.0000, S 'B00010', T 'B001010' } C_DIS

    Am I missing something?

    Hi all,

    I would like my external axis joints to get to exact value specified in the motion command, but that's not the case. The position always rotates in the direction where the angle is the closest to reach.

    For example:

    - Current angle of E2 is 200

    I want LIN {E2 0}

    The positioner rotates to 360.

    Is there any setting that can disable such behavior and instead rotate to exactly 0, in the right direction?

    Any help would be much appreciated!

    Positioner: DKP 400 1 40A

    Robot: KRC 60 3 C4

    KSS 8.5.7 HF1

    Have a look here (khash)

    Thanks MOM.
    From my understanding and trials, khash is used to encrypt the user's password on the KUKA to be used with `krl_mount`.

    I did manage to create a mount point, but then am I able to transfer files from that mounted point to my /R1 folder programmatically?

    Hello all,

    I recently stumbled upon CWRITE/CREAD manual, and I was surprised to see a bunch of file system operation commands ready to be used, but not the ability to copy a file from a specific location (either from local drive to R1 on the KUKA, or from a mounted shared disk to /R1).

    My goal is to have a piece of code that lives in an submit program, and copies (or removes) files on request from an external system.

    Would this be possible to achieve using CWRITE? If not, is there any other solution for that?

    Any help would be much appreciated!


    KSS 8.5.7 HF1

    WorkVisual 6.0

    you should read the manual. analog signal are in range 0..1 or -1..+1

    they can not have values like 327.68 or 20.0


    The manual states that analog signals are in range 0..1 or -1 to +1 - that is crystal clear.

    However, it doesn't say anything about the "calibration factor" that can be set in WoV. What is the usage of that?

    Furthermore, why can analog signals be set to different data types such as SINT, UINT, INT or even UNKNOWN?

    KRL treats any mulit-bit SIGNAL declaration as an Unsigned Integer (with the exception of a 32-bit SIGNAL, which is treated as Signed Integer implicitly). So calculating the value of a signed value less then 32 bits, it's necessary to separate the sign bit, evaluate the 'remainder', then use the sign bit to determine if the unsigned value needs to be negated.

    The given solution makes a lot of sense, thank you!

    That makes me wonder - in what circumstance is it a good idea to use analog signals instead of grouped digital signals?

    Hello all,

    I have a welding machine connected over EtherNet/IP. The welding machine has few outputs (from welding machine to robot) that returns two signals I'm interested in:

    1. Signal 1: a SINT16 signal whose range goes -327.68 to 327.67 [m/min] and factor of 100.
    2. Signal 2: a UINT16 signal whose range goes from OFF / 0.5 to 20.0 [mm] and factor of 10 (according to the manufacturer datasheet).

    I'm aware I can map the signal to a grouped digital input on the KUKA then do the mapping myself. However, I'd like to map it to analog input in order to have it mapped automatically.

    Regarding Signal 1, I mapped 16 bits then changed its type to the "+-" sign which infers the signal is of INT type. Then I tried to map it to an analog input ANIN[1] whose type is SINT with a calibration factor is set to 10. I can not connect the mapped EtherNet/IP signal to its analog input KUKA counterpart unless I change the ANIN[1] type to INT, but that's not what I'm aiming for.

    Regarding Signal 2, I proceeded in the same way, except that both ANIN[2] and the mapped EtherNet/IP signal types are UINT. However, how can I define the right range which is 0.5 to 20.0?

    I digged deeper in the forum regarding this, and I came across some comments saying it's better to avoid KUKA analog input/output. Why is that so?

    Additionally, manuals do not go deep when it comes to mapping on a binary level...

    Any help would be much appreciated!


    KSS 8.5.7 HF1

    WorkVisual 6.0

    Many thanks MOM, panic mode. If only such simplified explanation was added to the KUKA manual :beerchug:. Makes me wonder how KUKA came up with geometry operator syntax rather than raw mathematical commands...

    One last question I have, then, in this case, let's assume one knows the following:

    • Current TCP position relative to $NULLFRAME E6POS P0={X 1764.57,Y -61.02,Z 943.88,A 0.00,B 90.00,C 0.00,S 010,T 001010}
    • Calibration data for the external axis FRAME BASE_DATA[17]={X 1719.48,Y -4.1,Z 5.48,A 89.27,B 0.25,C -0.16}
    • Calibration data for tool 16
    • External axis values E1, E2

    Is it possible to transform TCP position relative to BASE_DATA[17]? Essentially calculating what the controller does when switching active base from $NULLFRAME to BASE[17] while keeping the same tool

    Hi panic mode ,

    Woow, I'm blown away by the detailed explanation and the exposed way of thinking behind your answer. Thank you!!

    I completely understood the logic behind your message. However, I am a little bit confused on few details.

    Assuming the following:

    • E6POS P0={X -1764.57,Y -61.02,Z 943.88,A 0.00,B 90.00,C 0.00,S 010,T 001010} (right side picture)
    • E6POS P17={X 60.78,Y 1708.54,Z 84.56,A 53.47,B 89.90,C 8.63,S 010,T 001010} (left side picture)

    • B0 = $NULLFRAME (where B0 refers to Base0, which is $NULLFRAME on the right side picture)

    • B17 is the external axis base fixed tool FRAME BASE_DATA[17]={X 1719.48,Y -4.1,Z 5.48,A 89.27,B 0.25,C -0.16}. This frame is the transformation from the tool/base management window

    • R1, R2: foot of the robot in the left side image, and right side image respectively. Is there any variable to retrieve such frame from?

    • T1: actual position of the robot?

    calculations for P17 and B17 led to:

    P17 doesn't result to the position from the left side of the image


    I recently got into a workshop in my city where they happen to have a KUKA w/ an external axis. Therefore, I'm use the occasion to explore and understand how things work.

    I noticed that, when switching the active base, the TCP position is transformed to fit that new base as frame of reference. So, I tried to figure out the math behind it using the function INV_POS I recently stumbled upon, which, from my understanding after reading the manual, simply calculates the inverse of a FRAME.

    Therefore, I noted down the TCP positions in two different bases:

    To go from TCP position in NULLFRAME to TCP position in ExAx frame, I came up with the following calculation:


    This didn't not return the TCP position calculated by the robot as shown on the left side of the screenshot.

    Any help is very welcome 😁!

    Sorry for not using KUKA/robotics specific terms, I'm just a hobbyist