Posts by mjnewsum

    Really? What versions of KSS did that? I don't recall ever running into it, and I started with KSS 2.x on KRC1s. Whenever I failed to DECL a variable, the controller would invariably fail at compile time.

    I can test on the KRC2 to make sure it lets me use variables that are not declared. That bot is in production right now, but I can run a test when it is down and let you know the KSS that it is using.

    I searched all files in multiple backups of the KRC2 controller and found that TTool is declared in two places: config.dat and sps.sub.

    Both declare TTool as an array of Frame. This doesn't seem to help understand how this is working on the KRC2 controller.

    I am also not sure how to know which TTool is being used by the toolChange program.

    I am configuring a KRC4 robot and it is having errors that didn't show up on our KRC2 robot running the same programs.

    I did not set up the program on the KRC2, so I am trying to understand the intent while developing the functionality.

    The specific issue I would like to ask about is that in the KRC2 program an array of FRAME called TTool is being set equal to the system variable $Tool.

    This throws an error in the KRC4. I am assuming this is because an array of FRAME is set equal to a FRAME object. In KRC2, does this just set the first indexed item of TTool equal to the FRAME $Tool?

    DECL FRAME TTool[6]
    ; TTool is declared in system.dat

    ; TTool values are set by a loaded program

    ; In the ToolChange program

    TTool = $Tool

    ; this works in KRC2 (somehow) and has an error in KRC4

    ; KRC4 assumed solution

    TTool[toolIndex] = $Tool

    ; This would work in KRC4, but I want to know if KRC2 would assume the toolIndex to be 0.

    I was trying to draw simplified diagrams to just show the number of points being considered and the trigger relationship. The points will in fact cause a change in motion. There will also be changes such as velocity, ACC and APO among other changes of parameters at every point. The Wait Sec 0.0 was included to stop the advance run from reading ahead.

    The parameter for toolOffTriggerDistance is controlled by an operator and this value changes very often. The points involved in this process are also always changing. The start point does not know how many points will follow before an end point in the path either. This is why the end point needs to trigger the tool to turn off. The problem is just that the end motion may be shorter than the length needed to stop the tool at the right moment.

    panic mode, since I can not make this work with triggers provided by KRL, is there a way to spawn a synchronous task to handle a custom trigger? I think I could set this up in the submit, but I would like to know if Kuka allows for additional synchronous tasks.

    Good to know. I could have sworn that I have seen a trigger happen after the move it was specified with.

    The move was ~25mm and the trigger was Trigger When Path=35.0 ONSTART Delay=0.0 Do Wait Sec 1.0. I am pretty sure the trigger happened after the next motion started.

    Alright, I think I am understanding a bit more. I was misunderstanding delay completely.
    I was using it in the example as if it was going to do a Wait Sec.

    I have attached a sketch showing a path through 3 points. If I used the following code, would the trigger event happen before p2?

    $Advance = 1
    p1 = 0.0, 0.0, 0.0
    p2 = 50.0, 0.0, 0.0
    p3 = 100.0, 0.0, 0.0
    Lin p1
    Wait Sec 0.0
    Lin p2
    Trigger When Path = -70 Delay 0.0 Do Wait Sec 1.0
    Lin p3

    KSS 8.3.34

    When using Trigger When Path = - Distance, should the trigger happen at the start of the move if the distance is greater than the length of the move? I am trying to understand how this should happen when there is only one move to consider as well as when there are multiple motion commands before the trigger.

    $Advance = 1
    p1 = 0.0, 0.0, 0.0
    p2 = 50.0, 0.0, 0.0
    Lin p1
    Wait Sec 0.0
    Trigger When Path = -100 Delay 1.0
    Lin p2

    In the case above, would the 1.0 second delay happen before the motion to p2 starts?

    In this case above, would the 1.0 second delay happen at { 20.0, 0.0, 0.0 } or would it happen at p2?

    Also, when using Trigger When Distance = Switching_Point, can you use a decimal value to make the trigger happen between the start and end points?

    Dear robot wizards,

    I have two different main programs that my robot runs often. Each program requires a long list of variables to monitor and modify using the ConfigMon.ini. When I change programs, I have to replace the ConfigMon. Is there any way I can package a custom ConfigMon with my program, or make the program configure the ConfigMon?

    KSS 8.3

    I am mostly only monitoring ints and reals. There are also some $OUT, $ANIN, $TIMER and various values from tools like Tool[1].X.

    Before making changes, I had 15 groups. I removed 6 groups that would not be needed for the program that was being developed. I added 3 new groups and developed the new program. Once everything was working in the new system, I added back in the 6 groups that I removed.

    While the 6 groups were removed and the 3 new ones were added, I did not see any errors.

    After adding the 6 groups back in, I have seen the error on all the robots running the program.

    I am about to remove the 6 groups again and see if the error goes away.

    The error pops up randomly, so it is hard to tell if the problem is solved. I guess I just have to wait and see if see if it runs fine with less groups.

    I have tried searching through manuals, but I have only found the max number of ConfigMon groups for KRC2 (10 max with 25 items).

    Is the max supposed to be 10 on KRC4?

    I have successfully added 15 groups in the past on KRC4. I am asking now because I recently added 3 more groups (now at 18).

    Soon after, I started getting random windows errors that crash the KUKA interface.

    Error :


    External component has thrown an exception. (SEHException)


    The application must shut down.


    The configMon is my best guess right now. Any advice would be greatly appreciated.

    I am trying to have multiple versions of a module on a controller. I have some programs that want the old module and some that require the new. The breaking change between the two is that my main method in the new module had additional parameters. I can't find a way in KRL to set default values for a method parameter, so I can't get my old programs to work with the new module's main method.

    The only other solution I can think of would be is to append a version number to the module name, all of the method names and every program call to the module.... which sounds like a crappy solution.

    We only run a program on our robot once and we output new programs multiple times a day. Sometimes we run older programs again, so we have to come up with ways to be backwards compatible. Our company focuses on mass customization instead of mass production which is why we have so many programs and process changes.