Offset position array
in RobotStudio
Hi
I am a student working with Robotstudio, and my current project involves stacking 2 different items each in 3 stacks of 3items, with only using 1 offset. I also have to be able to swap between those 2 items, and the robot needs to remember where in the stacking process it was.
I was thinking about using some array funktion to remember the positions.
If you have any tips on how to make the array function or another more simple way to solve this task, i would love to hear from you
In the example below from my code it just runs the For loop stacking all the 9 item, if you stop halfway it starts over.
Var robtarget PosChromeVar;
IF DI10_1 = 1 THEN
FOR z FROM 0 TO 2 DO
FOR x FROM 0 TO 2 DO
PosChromeVar := Offs(PosChrome,-x *50, 0,z *30);
chrome;
ENDFOR
ENDFOR
ELSEIF DI10_2 = 1 THEN
FOR z FROM 0 TO 2 DO
FOR x FROM 0 TO 2 DO
PosBlackVar := Offs(PosChrome,-x *50, 50,z *30);
black;
ENDFOR
ENDFOR
ENDIF
PROC chrome()
IF DI10_1 = 1 AND ChromeCount < 9 THEN
MoveJ Pos10, v1000, z50, AT2_Vacuum_Tool;
MoveL p20, v1000, z1, AT2_Vacuum_Tool;
SetDO\Sync, DO10_1, 1;
MoveL Pos10, v1000, z50, AT2_Vacuum_Tool;
MoveJ PosChromeVar, v200, z1, AT2_Vacuum_Tool;
Reset DO10_1;
MoveJ StartPos, v1000, z50, AT2_Vacuum_Tool;
Incr ChromeCount;
ENDIF
ENDPROC
Daniel
I am a student working with Robotstudio, and my current project involves stacking 2 different items each in 3 stacks of 3items, with only using 1 offset. I also have to be able to swap between those 2 items, and the robot needs to remember where in the stacking process it was.
I was thinking about using some array funktion to remember the positions.
If you have any tips on how to make the array function or another more simple way to solve this task, i would love to hear from you
In the example below from my code it just runs the For loop stacking all the 9 item, if you stop halfway it starts over.
Var robtarget PosChromeVar;
IF DI10_1 = 1 THEN
FOR z FROM 0 TO 2 DO
FOR x FROM 0 TO 2 DO
PosChromeVar := Offs(PosChrome,-x *50, 0,z *30);
chrome;
ENDFOR
ENDFOR
ELSEIF DI10_2 = 1 THEN
FOR z FROM 0 TO 2 DO
FOR x FROM 0 TO 2 DO
PosBlackVar := Offs(PosChrome,-x *50, 50,z *30);
black;
ENDFOR
ENDFOR
ENDIF
PROC chrome()
IF DI10_1 = 1 AND ChromeCount < 9 THEN
MoveJ Pos10, v1000, z50, AT2_Vacuum_Tool;
MoveL p20, v1000, z1, AT2_Vacuum_Tool;
SetDO\Sync, DO10_1, 1;
MoveL Pos10, v1000, z50, AT2_Vacuum_Tool;
MoveJ PosChromeVar, v200, z1, AT2_Vacuum_Tool;
Reset DO10_1;
MoveJ StartPos, v1000, z50, AT2_Vacuum_Tool;
Incr ChromeCount;
ENDIF
ENDPROC
Daniel
0
Comments
-
Try changing VAR to PERS.1
-
Lee Justice1
-
Thanks alot to both of you I really appreciate your help..
That program looks really usefull, i guess i can get some inspiration from that
0 -
I will thanks, Jmf
I guess right now the FOR loop is my problem.. that it wont remember the position it leaves, when changing to the other item and back again(right now it start over from pos 1.)
A solution could be IF ChromeCount = 4 Then … and then define x and z.
And again when ChromeCount = 7 or something like this. or find a way to make an array that defines x and z according to the counted value if thats posible0 -
The problem is that every time you initialize the FOR you are using a fixed value, 0. You can use a group input(if you have one), a group output (you can set up a dummy, simulated) or just use a PERS num variable like FOR z FROM nZCounter TO 2 DO
FOR x FROM nXCounter TO 2 DOLee Justice0
Categories
- All Categories
- 5.5K RobotStudio
- 395 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 249 ScreenMaker
- 2.7K Robot Controller
- 310 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 785 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 4 Job listings