RobotStudio event

World Zone Error

SteveMob
SteveMob
edited March 2016 in RobotStudio
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

Best Answer

«1

Answers

  • soup
    soup ✭✭✭
    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
  • soup
    soup ✭✭✭
    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.
  • soup
    soup ✭✭✭
    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...?
  • soup
    soup ✭✭✭
    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?
  • soup
    soup ✭✭✭
    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
  • soup
    soup ✭✭✭
    "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.

    WZ.JPG 24.9K
  • 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

    5. 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
  • soup
    soup ✭✭✭
    6. Cycle power on the controller so the POWER_ON event routine is called.
  • How do I do that?
    Thanks,
    SM
  • soup
    soup ✭✭✭
    Turn the Power Switch on the front of the controller from "ON" to "OFF" -- wait 30 seconds -- turn it back to "ON"
  • Do this before or after I apply my program to the controller? Because I already had the program on the controller, I turned it off when I left yesterday, and when I came back in today and started it all back up, of course my program was still on the controller. Still didn't work?
    Thanks,
    SM
  • soup
    soup ✭✭✭
    Cycle power after you add the zones definition procedure and the POWER_ON event routine to call the zones definition procedure. And, cycle power whenever you edit the zones so they update. You really don't need a path program, since the zone restrictions will be active in manual mode too. I'd make sure the robot is clearly outside the zone, cycle power, jog the robot into the zone. What error are you getting? -- still 50183?
  • In your above code you have a 'main' routine - but did you have one when you got the "RAPID symbol 'main' in 'T_ROB1' was not found" error?

  • Soup, I will try cycling the power again and seeing if that fixes it. Yes, it is still the 50183 error. Actually yesterday it wasn't even picking up the WZ at all.

    Graemepaulin, yes I did have a "main" routine when I was getting the "RAPID symbol 'main' in 'T_ROB1' was not found" error. That's why I didn't understand what it was saying... Any suggestions?

    Thanks,
    SM
  • Soup,

    I cycled the power and tried both jogging and running the path through the WZ and it did not recognize that a WZ was there... Is there anything else that I am missing or that you guys recommend I try? I just don't understand why the code works for y'all, but not for me... It must be something small that I am missing, but isn't super obvious... I tried calling out the zone_output routine in my main routine, but I got an error saying: Event Message 40672. Description: It is not possible to add the world zone object. Another world zone with the same name is already defined in the system. Program Ref. /MainModule/zone_output/WZLimSup/17. Actions: Check the name of the world zone.
    Any ideas on that? Should I possible try doing a temporary WZ and just using power on to setdo the temporary on/off? Would doing it this way still be functional for what I am needing to do?

    Thanks for the help,
    SM
  • soup
    soup ✭✭✭
    "Actually yesterday it wasn't even picking up the WZ at all." -- how can you tell / explain what you mean by this.
  • It was doing the same thing today. Basically I can jog the robot into the WZ and nothing happens (meaning I can continue jogging the robot in and out of the WZ and the controller doesn't recognize that there is an active WZ). It will just continue either following the path right through the WZ or I can jog it in and out and around the inside and outside of the WZ. I need the robot to stop as soon as it reaches the WZ, and that's not what is happening.

    Thanks,
    SM
  • soup
    soup ✭✭✭
    So, when do you get the error message?
  • Well I am not getting the error message now. Now the problem is that it is not recognizing the WZ at all... Any suggestions on what else to try? Should I possible try doing a temporary WZ and just using POWER_ON to setdo the temporary on/off? Would doing it this way still be functional for what I am needing to do?

    Thanks,
    SM
  • Please attach a backup of the controller as it stands currently - I will then create a system from this and see if I get the same issues as you.