World Zone Error

Hello,

I am new to RS and ABB, and I have gotten some great help on World Zones recently, but now I am running into another issue. I have a defined world zone, but every time I try to run my program, I get an error: Event Message 50183, Robot outside work area. Description: The robot has reached the World Zone object. Actions: Check the reason of the world zone. Use the joystick to move the robot out of the world zone if needed.
The problem is, is that it throws up that error anytime I try to start my program, no matter the position or placement of the TCP on the robot.
Attached is a text file of my code. I have changed the WZBoxDef to both Inside and Outside and I am getting the same event message. Any ideas to help me solve this problem?
Thanks,
SM
WorldZone12.txt (1.58 KB)

If I’m reading it correctly – you are defining the zone as everything “\Outside” of the tiny ~1 inch box – Is that what you’re wanting to do?

I want to do it such that when the robot enters the WZ, it will stop everything. But that error pops up no matter where the TCP is. Is it something to do with like my declaration or something? I created a POWER_ON Event and linked that to my zone_output routine and everything like you said, but it won’t give me any options for the “Task” except TROB1. Did I need to choose this Task?
Thanks,
SM

Does it error when you say that you are defining the “\Inside” instead of “\Outside”?

It doesn’t specify. The only thing the error says is: Event Message 50183, Robot outside work area. Description: The robot has
reached the World Zone object. Actions: Check the reason of the world
zone. Use the joystick to move the robot out of the world zone if needed.

So you changed your code to “\Inside”, cycled power, and you get the same error?

Yes. I don’t know what to do to fix it… It’s gotta be something small but I’m just not sure what it is…?

Could be that the zone is too close / inside the base of the robot and the software knows it’s not in the work envelope of the robot.

But it isn’t? I mean you can look at my code and the declaration isn’t that close to the robot. I just now noticed that the WZ does reach to outside the working envelope of the robot. Could this be the problem?

I am looking at your code – the tiny box you’re defining is most likely inside the base of the robot – about 1/2 inch out from the world coordinate system. Change your X numbers to something more reachable like a foot or two out in front of the robot (depends on the model robot you’re using) and try again. No, the world zone can be outside the limits of the robot.

My units are in inches though I believe? Unless they are always in mm no matter what your units are set for?

So the weirdest thing I just found out. I started from scratch, built a whole new program, new world zone, new path, new event routine, etc. Now it wasn’t picking up the world zone at all, but it wasnt giving me the error mentioned previously. So I was messing around with it to try to get the program to recognize that a world zone was there, and so I proccalled the “zone_output” routine from the main routine, and tried to run it. I got that error again. I then deleted that proccal out of my main routine and still got the error, but after I restarted my controller that error went away. However, my program still won’t recognize that there is a world zone there… So I am back to square 1… I don’t understand why it won’t recognize there is a world zone there. I did everything like I was told, declared my variables, created a POWER_ON event routine, etc… Is there anything I am missing?
Thanks,
Stephen

“My units are in inches…” – no relation to the display units on RobotStudio – world zone RAPID code is always millimeters.

I have changed only the values for the corners of the box (as shown below) to the code you posted earlier.

PROC zone_output()

VAR shapedata volume;

CONST pos corner1:=[1000,-500,0];

CONST pos corner2:=[1500,0,500];

WZBoxDef\inside,volume,corner1,corner2;

WZLimSup\Stat,object,volume;

RETURN ;

ENDPROC

This allows the robot to run outside the box but as soon as it tries enter the box it stops and gives the 50183 error.

It does not stop when jogging using the virtual FlexPendant.

I tried using outside instead of inside and I get the inverse situation where the robot can only move inside the box - again stopping at the edge of the box.

Thanks alot for the help, and I feel I am getting closer, but for some reason it still throws up the error when I try to start my program, no matter where the TCP is. I set better corners per soup’s suggestion (I was assuming RAPID was in inches like RS). I was hoping that was what was wrong but it still is putting out the 50183 error. So I started from scratch, again. Same error.

Maybe it is something in my Event Routine? Attached is what I currently have for my Event Routine. Am I supposed to say yes to the Tasks or choose something from “Task”? (my only options are “blank” or TROB1)
Thanks
sm

Above is the Event Routine I used in my test which was working.

Still not working lol… Could it have anything to do with that this is a brand new controller and robot? Meaning is there some other stuff I needed to do first before I try to do a WZ?

So let me go step by step to check and make sure I have everything…

  1. Start a station with backup of real controller, or connect directly to real controller (in my case IRC5 Compact)

  2. Create an Event Routine linked to POWER_ON and choose a routine that will be called out in the code:
    -

  3. Define a World Zone (name the routine the same as what was called out in the Event Routine):

  4. Define some random points that cause the robots TCP path to enter that world zone:
    MODULE MainModule
    CONST robtarget p10:=[[461.29,144.16,221.59],[0.29728,-0.143906,0.942789,0.0454265],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget p20:=[[422.52,-233.55,218.06],[0.287825,0.238498,0.924538,-0.0741974],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget p30:=[[422.52,-233.55,538.15],[0.287814,0.238489,0.924544,-0.0741978],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget p40:=[[433.25,226.30,534.73],[0.289204,-0.227574,0.927106,0.0710358],[0,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    !CONST robtarget p50:=[[373.93,0.03,630.05],[0.707179,-3.9492E-05,0.707034,9.98114E-06],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Home:=[[373.93,0.03,630.05],[0.707179,-3.9492E-05,0.707034,9.98114E-06],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    !CONST robtarget p60:=[[373.93,0.03,630.05],[0.707179,-3.9492E-05,0.707034,9.98114E-06],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

VAR wzstationary object;

PROC zone_output()
VAR shapedata volume;
CONST pos corner1:=[279.74,353.08,101.45];
CONST pos corner2:=[368.5,-355.72,533.53];
WZBoxDef\Inside,volume,corner1,corner2;
WZLimSup\Stat,object,volume;
RETURN ;
ENDPROC

PROC main()
Path_10;
ENDPROC

PROC Path_10()
MoveJ Home,v200,z5,tool0;
MoveJ p10,v200,z5,tool0;
MoveJ p20,v200,z5,tool0;
MoveJ p30,v200,z5,tool0;
MoveJ p40,v200,z5,tool0;
MoveJ Home,v200,z5,tool0;
ENDPROC
ENDMODULE

  1. Apply and synchronize to station, or just apply and release write access to the controller and test and the robot should stop once it reaches that zone.

However, this is not the case. The virtual robot is not picking up the WZ.

Graemepaulin, in regards to your previous post, I got an error saying: "RAPID symbol ‘main’ in ‘T_ROB1’ was not found. What does that mean?

Thanks for all the help and patience with me,
SM


Also does it matter if I am in Manual mode for the real controller rather than Auto?
Thanks,
SM

  1. Cycle power on the controller so the POWER_ON event routine is called.

How do I do that?
Thanks,
SM