Posts by Nation

    Could you post the code that produces this?


    If it is a linear move, you could add the WJNT motion modifier. That forces the robot to honor turn numbers.


    So what is the difference between JPC and the regular soft limits? Just one is safety rated?


    JPCs are safety rated, whereas soft stops are not. JPCs can also be muted by a safety input, or by anything accessible in the DCS portion of the robot.


    For example, if you had a two station welding robot with a station at -90 degrees on J1 and another at 90 degrees on J1, you could make two 'no-go' zones that are only muted when the operator has cleared the lightscreen. You would setup one zone for -10 deg to -180 deg on J1, and only mute it when the lightscreen for that station is cleared, and then make another one for 10 deg to 180 deg on J1 for the other station. Robot home would be at 0 degrees. Using DCS in this manner eliminates the need for an additional lightscreen per station (or cam switches on J1) which would be needed to stop the robot if it attempts to enter the station in question while the operator is loading/unloading a part.


    Normally when I do this, I set it up so the zone is also muted when the robot is in T1 mode, to make recoveries easier.



    Also, after you make up the zones in Roboguide, how do you transfer it to the robot?



    Export dcsioc.sv (if using safety IO) and dcspos.sv from roboguide and load them into the robot at controlled start.

    How you have it would work, at least partially. However the problem is that you can't assign string registers directly. Also in the IF statement you can't compare to a string literal.


    You have to create a string assignment macro to do the assignment.


    So to make your program work you would have to do the following:


    Code
    /PROG CALLER
    /ATTR
    /MN
       1: CALL GRIPPER('Open')    ;
    /POS
    /END


    And then in gripper:


    Which would have to call STR_ASSIGN for the IF statement in GRIPPER to work.


    Code
    /PROG  STR_ASSIGN
    /ATTR
    /MN
       1:  !SR[1] stores what was passed in. ;
       1:  SR[1]=AR[1]    ;
    /POS
    /END

    You can kinda show a preview, even if you don't have the option.


    To do it, you just go to the test cycle menu, disable motion, and then run the move. The graphics will update, but the robot will stay where it is physically.


    Granted this is pretty clunky compared to the option.

    There goes my original idea.


    Are all the options on the robots the same? I think I've seen something like this when you try to load a file on a robot that doesn't have an option that the original robot has.


    Does anyone know where I can find system vars to modify comments of user frame? :help:


    :merci:


    They are not stored in the system vars. They are stored in the tpfdef Karel variable file. In order to name them, you have to execute a KCL command.


    Place the following into a text file, name it something that ends in .cf, and open it with the file menu by pressing enter on it.

    Code
    SET VAR [tpfdef]SETUP_DATA[1,1,1].$COMMENT = 'Eoat1'
    SET VAR [tpfdef]SETUP_DATA[1,1,2].$COMMENT = 'Eoat2'
    SET VAR [tpfdef]SETUP_DATA[1,3,1].$COMMENT = 'UFrame1'
    SET VAR [tpfdef]SETUP_DATA[1,3,2].$COMMENT = 'UFrame2'

    You unassigned the UOPs, but did you disable them? If you didn't disable them, that could be your problem.


    Sorry, forgot to respond to you all. I ended up using a flag that I pulsed for 5 seconds right when the button was pressed, then checked below if the button was ON and the flag was OFF, turn the output on. Worked pretty well. Thanks for the replies!


    Is this the right way to do it? You are really just checking if the button was on at the start and at the end of 5 seconds, and not if it was released anytime in between those two moments. You could just hammer the button, and if you timed it right, the output event would still occur.



    Marker bits are also an effective way to do what you describe. They act like single line BG programs. You have to enable them though, by setting $MIX_LOGIC.$use_mkr to true.

    I was wrong on where to set the password earlier. You should go to the host comm screen, and the select F4 for [ SHOW ] and then select Severs, select the FTP S1, and then you should be able to set the username and password in there.

    Turns out I was wrong, according to the 8.30 internet operations and setup manual, the inbuilt ftp server does not support usernames or passwords if the password option is not installed.

    We did this on a job I was on. We used the SNPX protocal to talk to the robots over TCP/IP. In order for this to work, you have to have the SNPX protocol installed on the robot (which makes the robot emulate a GE Fanuc PLC), and then there are a bunch of system variables you have to setup in order to map everything to be accessible via kepware.

    .L stands for local, as in the fault will only effect the task that issued the fault. .G stands for global, meaning the task that issued the fault will cause all tasks to respond the same way as the caller.


    Doesn't really make a huge difference on single arm robots, but if you are running multiple arms with independent programs, it can become pretty useful.

Advertising from our partners