ABB

来源:互联网 发布:淘宝店铺做淘客 编辑:程序博客网 时间:2024/05/02 02:00
I am trying to setup some worldzones to avoid our system from colliding with an overhead crane.

I have two park locations for the crane with sensors wired to digital inputs to the robot that tell when the crane is in one of those locations (diCranePark1, diCranePark2)

when the crane is in either of these park locations i define worldzone and apply the limit to stop the robot from entering this area, when the crane is in neither of these locations i apply a larger wordzone limit as i dont know where the crane is. I then made some interupts and traps that enable or disable the correct zones. 

WzFreewzCranePark1; 
WzFreewzCranePark2; 
WzFreewzCranePark3; 
WzLimJointDefInside,sCranePark1,jCranePark1_low,jCranePark1_high;
WzLimJointDefInside,sCranePark2,jCranePark2_low,jCranePark2_high;
WzLimJointDefInside,sCranePark3,jCranePark3_low,jCranePark3_high;

WzLimSupTemp,wzCranePark1,sCranePark1; 
WzLimSupTemp,wzCranePark2,sCranePark2; 
WzLimSupTemp,wzCranePark3,sCranePark3; 
WzDisablewzCranePark1; 
WzDisablewzCranePark2; 
WzDisablewzCranePark3; 
IFdiCranePark1=1 THEN 
WzEnablewzCranePark1; 
ELSEIFdiCranePark2=1 THEN 
WzEnablewzCranePark2; 
ELSE
WzEnablewzCranePark3; 
ENDIF 
CONNECTintCranePark1WITH trpCranePark1; 
ISignalDIdiCranePark1,edge,intCranePark1; 
CONNECTintCranePark2WITH trpCranePark2; 
ISignalDIdiCranePark2,edge,intCranePark2;


Now I have 2 problems with this solution.

1. The interupts only work whilst the robot is running, is there a better way to enable/disable the worldzone limits that would work whilst the robot was not running.

2. The worldzones all get wiped when we reset the program pointer to main or load a new program (which is something we do every time we run a program on the robot). I tested it with wzstationary instead of wztemporary and then I cant use wzenable / wzdisable. 

Any ideas on how to do this?




mattdavis2010-02-24 04:20:43

Comments

  • mattdavismattdavisAustralia
    February 2010
    found most of a solution.

    set all the zones to WZDOSet instead of WZLimSup and used cross connections with the diCraneParks to tell if the machine should stop and the cross connected this with a system input to quickstop the system.

    this only works in auto mode as quickstop is ignored in manual (and also silently stops the system with no error message at all)

    is there a way around these two problems?
  • j_proulxj_proulxUnited States✭✭
    February 2010
    Hello Matt,
     


    1. The interupts only work whilst the robot is running, is there a better way to enable/disable the worldzone limits that would work whilst the robot was not running.

     

    The ISignalDI has a switch called SingleSafe which will log your interrupt while the robot program is stopped.

     


    [ SingleSafe ]

    Data type:
    switch
    Specifies that the interrupt is single and safe. For definition of single, see description of
    Singleargument. A safe interrupt can not be put in sleep with instructionISleep. The safe interrupt event will be queued at program stop and stepwise execution, and when starting in continious mode again, the interrupt will be executed. The only time a safe interrupt will be thrown is when the interrupt queue is full. Then an error will be reported. The interrupt will not survive program reset, e.g. PP to main.

    2. The worldzones all get wiped when we reset the program pointer to main or load a new program (which is something we do every time we run a program on the robot). I tested it with wzstationary instead of wztemporary and then I cant use wzenable / wzdisable. 

     

    You may want to try a START Event Routine. Event Routines are a Controller system parameter

     


    Start : Execution is started from the beginning of the program. This is when you pressthe start or step buttons after having:
    ?_? loaded a new program or a new module

    ?_? ordered Start from beginning

    ?_? ordered Debug/Move PP to Main

    ?_? ordered Debug/Move PP to Routine

    ?_? moved the program pointer in such a way that the execution order is lost


    BR / Jim Proulx
  • mattdavismattdavisAustralia
    March 2010
    Have got a little bit further with this. 

    It works properly in auto mode using stationary zones triggering simulated outputs, with these outputs cross connected with the real zone enable/disable signals to trigger the system input quickstop. 

    I then added an event routine to run on quickstop that would inform the operator what the problem was, all of these keeps working after a new program is loaded as its setup in the power on event routine.

    The only issue is when you are jogging the robot manually if you approach the world zone you are not meant to go in the robot does stop moving, but doesn't run the quickstop event. If you then just let go of enabling device and press it again the robot will happily jog into the zone that it shouldn't. This is not a huge problem as the robot stopping should give the operator a bit of an idea that they should look if there going to hit something, but a message on the screen would be nice.
0 0