most of my experience is with FANUC robot systems so I'm not sure if this is possible with ABB software but i would like to set a DO to go high when the robot is in a specific joint configuration. basically, I want to send feedback to our PLC when the robot is in its home position, so the PLC knows it's safe to convey the robot from its work position in front of the machine to its out of the way position. With FANUC robots it's as simple as linking a "Position Register" to a digital output. you can even set a range so it can be 10mm or 20mm or whatever you set from that point, like a bubble in space rather than just a point. is this possible with ABB software?
ABB Position register equivalent
-
Jleon89 -
July 25, 2024 at 12:50 PM -
Thread is Unresolved
-
-
You can use worldzones. To define a specific zone depending on a joint position you have to use the command WZHomeJointDef. If you'd like to set a DO when the robot is inside or outside of a worldzone you can use the command WZDOSet.
-
As Halbes Yoyo wrote, with ABB you need either the WorldZone option or the Multitasking option.
With multitasking, you check the current position in the background and compare it with your home position. If the robot is in a designated area, set the output.
This is easier and faster with WorldZone.CodeVAR shapedata shHome; VAR wzstationary wzHome; CONST jointtarget delta_Homepos:=[[2,2,2,2,2,2],[9E9,9E9,9E9,9E9,9E9,9E9]];
CodePROC rWorldZonesR1() !Worldzone Homeposition !********************* WZHomeJointDef\Inside, shHome, jHome_R1, delta_Homepos; WZDOSet\Stat, wzHome\Inside, shHome, doR1_InHome, 1; ENDPROC
Important, the output doR1_InHome must be set to ReadOnly
-
is worldzone an add on that i would need to purchase or is it included in the software?
-
World Zones is a paid option.
-
try to use MoveLDo,MoveJDo
so you can play with the Do ,to Know where are the robot
MoveLDO p1, v1000, z30, tool2, do1,1; look on help
i used many times this trick,
with Zone you must take care ,some time the robot its out of Zone but the part on griper its stil inside machine,so if you close the door with part inside.......
-
Use WordZone as mentioned above. And configure it so that the routine that defines WordZone runs every time you turn on the controller. To do this, go to Settings - Event Routine and set the routine to Event: "Power On".
-
so far ive gotten the worldzone established and it seems to be working most of the time but when i boot up initially the output is never on. i have to jog it out of home and then back to get it to turn on. it also sometimes will not turn off when moving through the main program and for some reason will turn on/off randomly with the motor on/motor off commands. im emailing an abb rep about it as well but welcome input from all sources.
-
Hi, take a look of wold zones instructions. See WZDOSet instruction and WzhomeJointDef.
You have to the world zones option. And WzhomeJointDef instruction only works since M2000 controller (Robotware 4.0).
/BlueIcaro
-
so far ive gotten the worldzone established and it seems to be working most of the time but when i boot up initially the output is never on. i have to jog it out of home and then back to get it to turn on. it also sometimes will not turn off when moving through the main program and for some reason will turn on/off randomly with the motor on/motor off commands. im emailing an abb rep about it as well but welcome input from all sources.
You have connected your Home routine to the Power On event? You are not calling the Home routine somewhere else in your program (don't do that)?
When you power on or restart the controller, all world zone outputs are off. This is normal behavior. It requires motors on to update the world zone status. Try this:
Switch to manual mode and move the robot to the home position. Restart the controller. WZ output should be off. After that, turn the motors on by pressing the enabling switch. WZ output should turn on and stay on (even if you turn the motors off). Jog the robot away from the home position until the WZ output turns off. Move back to home position and check if the WZ output is on again.
-
i do not have a homing program set to trigger at start up just a program to set a worldzone for the home position. usually when we go motors on the signal will pop up but not always. and sometimes motors off will turn it off even if its sitting at home. if i jog the robot out of then back to its home the output will turn on and if i jog out of home it turns off like it should but for some reason will be on most of the time when running the main program in auto. no matter where the robot is the robot at home bit is on. the customer does not want the operators to have to touch the TP at power up so i need it to see that its home without having to jog the robot.
-
i do not have a homing program set to trigger at start up just a program to set a worldzone for the home position.
Does that mean that your program for the WZ definition is connected to the Power On event? The WZ signal is set to ReadOnly?
Could you share your program (or at least some pictures) and the relevant settings?
the customer does not want the operators to have to touch the TP at power up so i need it to see that its home without having to jog the robot.
This is normally not necessary. If the robot is controlled by e.g. an external PLC, you will typically turn the motors on and after that, you should check the status of your world zones. If the robot is not in home position you can then call your home program.
-
i do not have a homing program set to trigger at start up just a program to set a worldzone for the home position. usually when we go motors on the signal will pop up but not always. and sometimes motors off will turn it off even if its sitting at home. if i jog the robot out of then back to its home the output will turn on and if i jog out of home it turns off like it should but for some reason will be on most of the time when running the main program in auto. no matter where the robot is the robot at home bit is on. the customer does not want the operators to have to touch the TP at power up so i need it to see that its home without having to jog the robot.
If you are having trouble getting the world zone to trigger before any major movements, you can create a short routine which captures the current position, then moves a few degrees or millimeters then returns to the original position. This should be sufficient to trigger the WorldZone, which I'm quite sure requires motion to activate/deactivate.
-
To summarize, for a WZ to work as intended, it is best practice to create a Power On Event routine to define the WZ. Once power is cycled motors must be powered on AND based on the shown jPosDelta all 6 robot joints must be +/- 3 mm from the definition of jHome.
-
Does that mean that your program for the WZ definition is connected to the Power On event? The WZ signal is set to ReadOnly?
Could you share your program (or at least some pictures) and the relevant settings?
yes, the program for the Worldzone definition is tied to the power on event and the DI is set to read only. pictures of this program and the target data used is in post #8 on this thread.
To summarize, for a WZ to work as intended, it is best practice to create a Power On Event routine to define the WZ. Once power is cycled motors must be powered on AND based on the shown jPosDelta all 6 robot joints must be +/- 3 mm from the definition of jHome.
i understand that i need to turn the motors on before ill get the signal which seems to be how its working but why would the signal turn off (sometimes not every time) when the motors off signal is received. and why would it not turn off as the robot is running through its main program? that's my biggest problem with it, when its in auto, no matter where the robot is in its motion the robot_at_home signal is on.
-
. the target data used is in post #8 on this thread...
The values for jdeltapos and jhome are missing in your post.
-
all 6 robot joints must be +/- 3 mm from the definition of jHome.
Degrees, not millimeters.
Check you IO mapping to make sure that there is no duplicate mapping on that output number. Especially likely that it could be a group output overlapping.
-
Check you IO mapping to make sure that there is no duplicate mapping on that output number. Especially likely that it could be a group output overlapping.
good call, i forgot that i had mapped that through system outputs when we were first setting I/Os. ill know after testing if that fixed the problem
-
-
Jleon89 , good practice for any jointtarget that isn't interfacing with some other part or fixture is to round numbers off so they're easy to read and quickly know if something is off. I typically stick to 5* increments.
e.g. JHome := [[-90,0,60,0,30,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];