Posts by Carleton Hall

    You simulate directly with kuka.sim or do you simulate with a office lite connected to Kuka.sim? In the first case its not supported. So no update in this case because it does not use the robot controller under the hood.


    Just KUKA.Sim, no OfficeLite, so that makes sense. Thanks for your help


    Hi, some alternative solutions:

    Why not put a sensor or three (depends on the shape and whether the cartridge is attached to the robot) into the cartridge? Then you could just see when it's empty from the inputs, no guesstimation needed.

    Could run a procedure in a submit that adds differences between previous position and current one when some flag is raised. No need to calculate movement lengths then. It's not going to be as mathematically rigorous due to timing issues, but I am going to assume you don't intend to use all the liquid/gas down to the last molecule :smiling_face: Also significantly easier to implement coding wise.

    I would love to for the sake of simplicity to but unfortunately, this is a research project, and the adhesive cartridge was given to us by our customer and I'm unable to modify it. I will ponder the submit interpreter idea for sure, might be an relatively easier solution.

    Why are you trying to add up everything yourself. You can use $distance. Its nulled whenever you do not blend so over a blended sequence it adds up.


    Thanks for the tip, I'm currently doing my development in KUKA.Sim while waiting for some stuff. Do you know if this variable does not get calculated in this environment, or do my point shift calculations somehow cause it to be nulled/0? When I try to monitor the value it remains at 0 throughout the program. I imagine it shouldn't be the calculations, as the advance run pointer works fine and the motions are blending properly.

    Hello, I'm working on an adhesive dispensing project where our application has a cartridge on it that has to be manually filled and does not contain enough to cover the entire part we are utilizing.

    I was looking for help to come up with a solution where the program can track the distance traveled by the TCP and call an interrupt that pauses the program so the cartridge may be refilled and then continued until the part has been covered. I am needing to do this programmatically because due to the nature of the project, the distances/speeds between passes may vary as we further develop. Or maybe there is an alternative route that is less complicated.

    I am utilizing a KRC4 controller running KSS 8.6.

    I've attached a snippet of the code below for reference:

    Is it possible under the Safety Distributed Bus there are two ranges of bits assigned to be used by KRC4 controller? I'm unfamiliar with Schneider and EIP, but here's what it looks like in Siemens TIA Portal (using ProfiSafe/ProfiNet) if it helps at all. Since you no longer have any safety faults and are able to jog, run programs, etc, it seems like the safety bits are assigned and integrated properly into the PLC program.

    It's a good idea to ping the IP of the robot ( to ensure you are able to reach the robot from the computer at least (since you can upload the WV project I imagine this isn't an issue, just a sanity check)

    Also within TIA portal under the properties of your 64 safe digital I/O (can be seen in the device view of KRC4), make sure the F_Dest_Add matches the device number configured in WorkVisual, I believe these defaults to 7 which should work fine.


    I am trying to dynamically change the TCP of our spindle to be along the bit based on a specified cut depth. We have software that is sending XYZABC coordinates that are normal to the surface we are attempting to mill and we are wanting a pocket cut that follows the shape. If we are able to move the TCP by 1/2 an inch up, we should be able to do this successfully, however when running this code, it does not use the new calculated TCP but rather the one saved in TOOL_DATA[9].

    I'm honestly not sure where the error in this is as my program compiles correctly and when I attempt to debug and monitor my millingOffsetTCP values, they are populated correctly, the motion is just using the wrong tool. I am currently running KSS 8.5.8 on a KUKA KRC4 controller, and any help would be much appreciated! Thank you and have a good day.

    I've added $stopnoapprox=true to the code and I'm able to run through the program without stopping. It appears when increasing the APO.CDIS to 10, it stops frequently. A low APO.CDIS of 0.1 or so is able to run through the motion but still appears fairly jittery.

    Here is an updated version of the code I am currently running:

    Did you checked APO_DIST in LCPDAT12 ?

    My apologies, I'm actually not using the extra syntax of the motion. Part of my rabbit hole troubleshooting was thinking that adding C_DIS after the motion command wasn't allowing it to approximate and that I needed the remaining syntax. I've since removed it and updated the main post.

    Is it possible my error is due to the advance program pointer not taking into consideration the incremented step counter and is attempting to move to the same position until the main pointer increments step counter?


    I am trying to create a program that is able to smoothly execute a motion path generated by custom software and sent to the robot. I currently have a .sps file running that writes the desired points into an array of E6POS.


    softWriteIndexInt = softWriteIndex //This is needed due to softWriteIndex being a real and casting into an int variable
    ToolpathData[softWriteIndexInt+1].X = plcReqXPos //there is a +1 due to software index beginning to write at 0 whereas KRL array begins at 1
    ToolpathData[softWriteIndexInt+1].Y = plcReqYPos
    ToolpathData[softWriteIndexInt+1].Z = plcReqZPos

    This function is working properly and we are able to populate all of the desired points into the array prior to executing any motion. Once the array is populated, I am wanting to execute a while loop to loop through all of the motion points.


    Running this for loop, I am able to move to all of the desired points, however, the motion is quite jumpy, and smooth motion is desired. I believe what is causing the issue is the advanced program pointer, however, I'm quite stuck on how to edit the program to move smoothly. I was able to find a topic that somewhat addresses my issue, however in the example provided, it appears that the amount of points sent to the robot is a fixed amount, however, in this application the amount of points is variable.

    Advance pointer trick with a WHILE LOOP KUKA KRC4 8.x

    Please let me know if more information is needed to help provide a solution. I am currently running KSS 8.5.8 on a KUKA KRC4 controller. Thank you.

    well you could describe your steps and exact WoV version. I use WoV6.0.12 all the time, both with KRCs and OL - Never had an issue.

    I am using WorkVisual 6.0 V6.0.3_Build0360. It appears 6.0.12 is a newer version, do I need to reinstall work visual entirely for this or is there an update option within WV?

    if problem persists, post a screenshot and list of steps to reproduce it

    1. Launch WV, cancel project open and move into Programming and diagnosis workspace

    2. Create and open a connection to my controller

    3. Establish controller state

    4. For demonstration, I will try to add a new home position to the $config.dat, here is a screenshot of before and after edits.


    I'm trying to make edits to my code within the WorkVisual programming and diagnosis workspace, however after completing edits and attempting to transfer to the controller, WorkVisual states there are no differences found. I've attempted to restart WV multiple times and my computer also but each time the error persists. I've also disconnected from the robot, deleting my working directly, and reconnecting but this also doesn't fix the issue.

    I am using work visual 6.0 and my controller is using KSS 8.5.8.

    Any suggestions? Thank you


    I'm trying to install RSI on my controller, however when generating the code for the project I get the following errors

    12:23:19 PM puff: Failed to build file "Config:\User\Common\PNIODriver.xml".

    12:23:19 PM puff: Failed to build file "Config:\User\Common\pndev1.xml".

    12:23:20 PM Unable to generate code for project <26110745350000120003035603>! Reason: The code generation failed.

    I'm using work visual 6.0 and KSS 8.5.8, let me know what other information may be needed to diagnose the issue.

    To me, it looks like there is an issue with the KUKA.PROFINET MS option, so I tried creating a new profile and reinstalling all of the options and redeploying, but no luck.

    Thank you

    This thread may help: How to use the Profisafe communication in TIA portal?

    Key point is to make sure that the Profisafe addresses match in both Work Visual (or SmartPad) and in TIA, the default address is 7 on the Kuka side of things. After that, you need to acknowledge the communication handshake, if I recall there is a safe DB in TIA that you will need to read and write from to handle the acknowledgement, or use the global ack block in your F program.

    Overlooked this when previously setting up, this is it! Possibly using the global ack block instead of the one specifically for DB30000 may fix it?

    Try executing a global safety acknowledge function block in your safety program.

    I was getting the same error and once I executed the global safety acknowledge everything was happy.


    Shortly after replying I discovered DB(30000) that is created when adding the 64 safe digital i/o module (I also needed to reset my F_Dest_Add to the proper safety address). There is a safety acknowledge ACK_REI and it got ProfiSafe working. Setting the first 2 SafeOperation input byes enables everything nicely except for motion enable. Were you able to fix this?

    We also have the same issue when after making any changes to the project and uploading, my 64 safe digital i/o module faults out, and in order to fix it I must delete the module and add it back and reset the F_Dest_Add safety address and it's all happy again. Any clue on how to overcome this?

    I believe I may be getting on the right track.

    I receive these two errors on the 64 safe digital i/o module. I located the ACK_REI tag within DB30000 and set it to true.

    The top error in the screenshot reads as follows:

    Check the PROFIBUS DP/PROFINET IO connection and ensure that there are no external interference sources.

    Check the F-monitoring time of the F-I/O in the hardware and network editor.

    Check the diagnostics information of the F-I/O.

    You can find more information by searching for the event ID in the STEP 7 online help.

    Any suggestions? Thank you all for the help thus far.

    This is our second try getting safety communication working with the KRC4. Previously we were using an AB plc and tried CIP Safety over EthernetIP and also was unable to get safety communication working either. Standard communication worked just fine.

    Hello all,

    I'm having issues setting up Profisafe communications between a Seimens S7-1500 PLC and Kuka KRC4 controller. I've spent weeks looking throughout forum posts, replicating configurations and still can't seem to find the solution (maybe I'm overlooking something). This is my first time working with KUKA robots and TIA portal.

    On the TIA Portal Side:

    I've setup the KRC4-ProfiNet_4.1 module and assigned 64 safe in/outputs to slot 1 and 256 non-safe in/outputs to slot 2. The device number and F_Dest_Add have been set to 2 in correspondence to the Safety number on the KUKA side.

    On the WorkVisual Side:

    Network adapter Intel(R) Ethernet Connection l217-LM

    Device name - ultron

    No. of safe i/o's 64

    No. of i/o's 256

    Compatibility mode: KRC4-ProfiNet 4.1

    Once both of these are setup, some type of connection is established and the two devices recognize each other, however I receive error KSS15002 on the smartPAD.

    Please let me know if more information is needed to be provided to find a solution.

Advertising from our partners