Hi everyone,
I have a question about work objects: Is it possible to copy one workobject points to an another workobject without Robotstudio or offset the existing workobject without modify the workobject points position?
Thank for the help.
Hi everyone,
I have a question about work objects: Is it possible to copy one workobject points to an another workobject without Robotstudio or offset the existing workobject without modify the workobject points position?
Thank for the help.
Your workobject is like a 3D grid you teach your points on. If you move the workobject, you move all the positions taught to that grid. You cannot move one without affecting the other. If you want to move your workobject without moving your points you would need to move all your points opposite to what you moved your workobject.
You could let’s say move your object frame 100mm in the +y, you could use a displacement frame to move your points in the -y to keep the original positions. Why move the object frame in the first place?
Sent from my iPhone using Tapatalk
I've already thought of this method to offset the workobject and then the points in the opposite direction, but i have circa 200 points, so it would be a lot of time. I defined the workobject in the wrong positon and I noticed that after i taught the points. So i need to move the work object in the right position, with the same points or define a new work object wit the same positons.
It doesn't matter how many points you have. Create the displacement pose and pdispset pose at the start of your code and pdispoff at the end. All points will be affected.
There is (at least) one way and it only works for named positions (if I remember correctly), it's not very straight forward, so quite frankly - you're better off downloading a demo of RS and doing it through RS.
The short version is that you need to create fake Move, Arc, whatever move instructions you use with the exact syntax of the standard ones.
Then execute your programs as normal and these moves then convert your robtargets into joint targets using the wobj they were programmed in, and then convert them back to robtargets with the new workobject.
Change this line to return which workobject you wish your existing targets to use.
RETURN CalcRobT(jTemp,InTool\WObj:=wobj0);
%%%
VERSION:1
LANGUAGE:ENGLISH
%%%
MODULE MoveExChange (SYSMODULE, NOSTEPIN)
LOCAL PERS wobjdata tempWobj:=[FALSE,FALSE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
PROC ArcL(
\switch On
|switch Off,
PERS robtarget ToPoint,
speeddata Speed,
\num T,
seamdata Seam,
welddata Weld,
weavedata Weave,
zonedata Zone,
\num Z,
PERS tooldata Tool,
\PERS wobjdata Wobj,
\trackdata Track,
\string Seamname)
IF NOT Present(wobj) THEN
tempWobj:=wobj0;
ELSE
tempWobj:=wobj;
ENDIF
topoint:=translate(topoint,tempwobj,tool);
ENDPROC
PROC ArcC(
\switch On
|switch Off,
PERS robtarget CirPoint,
PERS robtarget ToPoint,
speeddata Speed,
\num T,
seamdata Seam,
welddata Weld,
weavedata Weave,
zonedata Zone,
\num Z,
PERS tooldata Tool,
\PERS wobjdata Wobj,
\trackdata Track,
\string Seamname)
IF NOT Present(wobj) THEN
tempWobj:=wobj0;
ELSE
tempWobj:=wobj;
ENDIF
topoint:=translate(topoint,tempwobj,tool);
cirpoint:=translate(cirpoint,tempwobj,tool);
ENDPROC
PROC MoveL(
\switch Conc,
PERS robtarget ToPoint,
speeddata Speed,
\num V,
\num T,
zonedata Zone,
\num Z,
\stoppointdata InPos,
PERS tooldata Tool,
\PERS wobjdata Wobj,
\switch Corr)
IF NOT Present(wobj) THEN
tempWobj:=wobj0;
ELSE
tempWobj:=wobj;
ENDIF
topoint:=translate(topoint,tempwobj,tool);
ENDPROC
PROC MoveJ(
\switch Conc,
PERS robtarget ToPoint,
speeddata Speed,
\num V,
\num T,
zonedata Zone,
\num Z,
\stoppointdata InPos,
PERS tooldata Tool,
\PERS wobjdata Wobj,
\switch Corr)
IF NOT Present(wobj) THEN
tempWobj:=wobj0;
ELSE
tempWobj:=wobj;
ENDIF
topoint:=translate(topoint,tempwobj,tool);
ENDPROC
PROC MoveC(
\switch Conc,
PERS robtarget CirPoint,
PERS robtarget ToPoint,
speeddata Speed,
\num V,
\num T,
zonedata Zone,
\num Z,
\stoppointdata InPos,
PERS tooldata Tool,
\PERS wobjdata Wobj,
\switch Corr)
IF NOT Present(wobj) THEN
tempWobj:=wobj0;
ELSE
tempWobj:=wobj;
ENDIF
topoint:=translate(topoint,tempwobj,tool);
cirpoint:=translate(cirpoint,tempwobj,tool);
ENDPROC
PROC SMA_SearchL(
PERS robtarget pStartPredef,
PERS robtarget pSearchPredef,
num EndDist,
num ReturnDist,
speeddata vTravel,
speeddata vSearch,
num CorrStepNumb,
PERS tooldata Tool
\PERS wobjdata WObj)
IF NOT Present(wobj) THEN
tempWobj:=wobj0;
ELSE
tempWobj:=wobj;
ENDIF
pStartPredef:=translate(pStartPredef,tempwobj,tool);
pSearchPredef:=translate(pSearchPredef,tempwobj,tool);
ENDPROC
PROC sma_init()
ENDPROC
LOCAL FUNC robtarget Translate(
PERS robtarget InRobT,
PERS wobjdata InWobj,
PERS tooldata InTool)
VAR jointtarget jtemp;
jTemp:=CalcJointT(InRobT,InTool\WObj:=InWobj);
RETURN CalcRobT(jTemp,InTool\WObj:=wobj0);
ENDFUNC
ENDMODULE
Display More
@SAABoholic Love your replies...Learn something new everytime