Yes, if the condition becomes TRUE while doing the motion, it skips the rest of the motion and continues the program
If the robot completes without detecting the condition, JUMP to a LBL to handle this condition
Posts by robotero
-
-
Thanks for your comments
I found also some errors in my code:
L P[1] 100mm/sec FINE Skip,LBL[25],PR[1]=LPOS ;
(I don't know if you have the high speed skip condiction function)
If not you can try
L P[1] 100mm/sec FINE Skip,LBL[25] ;
PR[1]=LPOS;I copy PR[1], stored in cartesian form because (using LPOS as opposed to JPOS); to PR[2]
I update the Yaw angle of the orientation by adding 20 degreesPR[2,4]=PR[2,4]+20;
PR[]=X,Y,Z,W,P,R so PR[2,4] points to the rotation around the Z axis
Positions registers are stored relative to the current active USER frame
so, basically this makes the tool pivot (in Z) around the FIRST sensorOnce the tool is aligned with the pallet, how you proceed?
Create a user frame in that position
UFRAME_NUM=0; switch to World coordinates; you can also switch to a different Tool number
PR[3]=LPOS;
UFRAME[8]=PR[3];
UFRAME_NUM=8;I've used this 4 lines snip with vizion in cases where the pick position is different than the capture position
Vixion locates the target, I aligned the robot with the target then
create a USER frame in that position, the rest of the program is reference to the created user frameFrom here, add your pick movements recording them under the defined USER frame
No need to do transformations
Just define a TCP at the center of the first sensor,
second sensor should be mounted along the TCP X axisJust to get you started, play with this code
For example, in the first search either sensor can detect the edge first
depending on the rotation of the part (negative or positive rotation)
So, a further development would consider that
You need to define a TCP at the sensorsSKIP CONDITION DI[1:FIRST_SENSOR]=ON OR DI[2:SECOND_SENSOR]=ON ;
P[1] 100mm/sec FINE Skip,LBL[25];
IF DI[2:SECOND_SENSOR]=ON AND DI[1:FIRST_SENSOR]=OFF THEN JMP LBL[10]
UTOOL_NUM=1;
PR[2]=LPOS;
PR[2,4]=PR[2,4]+20;
SKIP CONDITION DI[2:SECOND_SENSOR]=ON ;
L PR[2] 3 sec FINE Skip,LBL[25];JMP LBL[15]
LBL[10]UTOOL_NUM=2;
PR[2]=LPOS;
PR[2,4]=PR[2,4]-20;
SKIP CONDITION DI[1:FIRST_SENSOR]=ON ;
L PR[2] 3 sec FINE Skip,LBL[25];LBL[15]
SKIP CONDITION DI[3:THIRD_SENSOR]=ON ;
PR[1]=LPOS;
PR[2]=LPOS;
PR[2]=PR[2]-PR[2];
PR[2,1]=30;L PR[1] 100mm/sec FINE Tool_Offset PR[2] Skip,LBL[25];
UFRAME_NUM=0;
UTOOL_NUM=3;
PR[3]=LPOS;
UFRAME[8]=PR[3];
UFRAME_NUM=8;..... INSERT YOUR PICK MOVEMENTS HERE
LBL[25: ERROR]
-
SKIP CONDITION DI[1:FIRST_SENSOR]=ON ;
L P[1] 100mm/sec FINE Skip,LBL[25],PR[1] ;
WAIT 1 sec;
SKIP CONDITION DI[2:SECOND_SENSOR]=ON ;
PR[2]=PR[1]
PR[2,4]=PR[2,4]+20;L PR[2] 3 sec FINE Skip,LBL[25],PR[1] ;
SKIP CONDITION DI[3:THIRD_SENSOR]=ON ;
PR[2]=LPOS;
PR[2]=PR[2]-PR[2];
PR[2,1]=30;L PR[1] 100mm/sec FINE Tool_Offset PR[2] Skip,LBL[25],PR[3] ;
.....
LBL[25: ERROR]
You must define the TCP at the center of first sensor
Program a search movement
When sensor detects the endge, skip and store the position in PR[1]To pivot around the found point, add 20 degrees to the position
Do the second search
When the second sensor is made, skip and store the positionFinally w do a search in the X direction
When the THIRD sensor is made, skip and store the positionWhen you define the TCP, the FIRST and SECOND sensors must me mounted along the X direction
PLEASE FEEDBACK IF IT WORKS!
-
Vadimas
I think is a good idea
Here are my thoughts:
Define a TCP at the center of the first sensor then use the SKIP instruction to find apoint on one edge
Record the point of contact
Once you have this point, pivot around it using another SKIP instruction until it find a second point
Now both sensors are on an edge
Finally move along the line defined by these two sensors until the third sensor finds the secon edge
Then the tool will be aligned with the pallet/partYou must thought of a good search strategy, and also install your sensor strategically
Ensuring that the robot would not miss the edge -
Hi
Nop, you cannot redefine the model coordinate frame
It's definition is simply read from the model fileSetting up the frame correctly is one of the task of modeling your a parts
-
When a User Frame is stored in a position register it is stored in Matrix form
In this form the Y coordinate is now the 11th element, not the second
There is no need to convert it back to cartesian form
Just use it as isJust remember that if you shift in that way, is actually a shift in World coordinates
If you want to apply the shift in User Frame directions, use instead Offset PR
-
Nation: Isn't it actually the inverse of the User Frame???? (Step 3 in your procedure??)
Since the PR[] is the position of the robot is user coordinates:
To calculate the X,Y position of the wrist center in world coordinates one must
pre-multiplied the PR[] by the inverse user frame transformation
then post multiply the result by the inverse of the tool frame
finally post multiply by the transformation in -Z to get the position of the wrist center
This is the general mathematical solution
The math can be simplified, but need to know more information:
Tool Frame data, User Frame data, a sample of PRs
Is not a practical solution but here is a trick:
Disable the group motion (to put the robot in machine look)
Then command the robot to the desired PR
wait until the motion command is completed (robot does not actually move)Then just read the joint value
All this can be done in a program by reading and writing the robot variables
I don't have the manual with me but if you check on the forum you can find the variables -
The Amperage or amplifier 3 is higher than the amperaje of amplifier 2
Table axis should be driven by third amplifier.
When you make a mistake in the group configuration you must delete both groups, re-start the controller then add the groups again.
If I remember correctly under DATA menu -> Servo you can see the system axes configuration without going into controlled startSent from my iPhone using Tapatalk
-
If parts have the same orientation (no rotation in any direction required)
Then a pure translational offset would do the job
Choose a common feature point to use as a base point
Store the position as a position register:
DATA -> Position Register -> Record (For example PR[1])
Now moving in World, USER, of Tool Frame (without reorienting the tool)
Move to robot to the next part exactly at the same feature used as reference in the base part
Insert the following code in your program
L PR[2] 100 mm/sec FINE Offset PR[1]
Then touch up the point PR[2]
A message appears asking: Do you want to substract the offset data?
Click YES: Now the PR[2] contains the offset needed to shift the entire program for that part
Repeat the process for the rest of the parts
You can reuse this line of code again using a new PR[]
Once you have all offsets defined you can erase the code or turn it into a Remark it to keep it for future use,
Now just copy and paste the welding program adding the offset instructions
either using the Offset PR[] option at every line
or programing an Offset Condition as Hawked suggested
Have fun!
-
If you have a backup you can load the SYSMASTER file in controlled start to restore the original counts
The original counts are also in a sheet inside the controller.Once restored, single axis master the corresponding motor
Sent from my iPhone using Tapatalk
-
Hi,all
If I remember correctly (please someone correct me if I am wrong)
You can only manipulate the master count values while in controlled startSo you go into controlled start, alter the master count values,
then change the master done bit to 1,
reebot then calibrateThere is no need to type-in the count values every time
The master count values are stored in the SYSMASTER file of the backup (ALL or system)Just make a backup for each master set values then
every time you need to switch go into controlled start and load the corresponging SYSMASTER file
reebot (no need to change rhe master done bit to 1 but probably still need to recalibrate though)
Please try this and feedback if it works!
I don't think a program shift would work here ,....
because every position would require a different adjustment
But probably would get close enough .....The only way to have all programs running with a common masterization is to teach every position again.
Do you have roboguide? -
Hi Jonatan
Yes you can ping the controller using any ethernet cable (straight or crossover)
You only need to define the IP and subnet mask for the controller
There are two ports available, so you have two up addresses in separate networks
Usually one is used for the local (station/cell) network
while the other is used for the plant/factory networkYou are probably configuring one port but connecting to the other one???
Sent from my iPhone using Tapatalk
-
Anything rigidly attached to the gripper will do, just avoid re-orienting the gripper. Move only in X,Y,Z while defining the User Frame.
A screw (if rigidly attached) is OK
Sent from my iPhone using Tapatalk
-
I did exactly what you want to do in a welding application
The system has 10 axis: the robot plus 2 auxiliary axis plus two extended axis
The robot welds using coordinate motion using the 10 axis simultaneouslyOnce the programs are created you can not mask the groups
So I re-create the torch cleaning program and part reposition programs masking the groups
that way I was able to run parallel programsThe main program have all groups masked, and basically calls or runs the subroutines that actually puts the groups in motion.
There are some variables you can use to check if a group is in use
You add a wait instruction before calling or running a programI use CALL for,the welding routines and RUN for part repostion and Torch cleaning
-
Try to teach the user frame without re-orienting the tool
Just move in User frame, Tool Frame, world frame X,Y,Z onlyIs your gripper a three finger or parallel gripper? Does it hold the screw concentric?
When you rotate around Z tool does the screw spins keeeping the tip at the same position?
You can verfy this to visualize where is your TCP defined.The controller uses the first points as the very exact origin of the user frame
and the second point as the exact X directionIs almost impossible to have the third point at exactly 90 degrees,
actually what the controllers does is to compute the Y direction
perpendicular to the X direction passing throughout the third pointYou can define the Y direction for example at 45 degrees and is still going to work
I think you reorient the tool when teaching the X direction
and the TCP is not at the tip of the screw, so when you reorient the tool, you induce an errorAgain, oce you have define the Usef frame you can manipulate the values to adjust the orientation
-
When you define the UF, only the location of the TCP is used
Orientation is irrelevant
But:
Robot needs to be mastered correctly
and you need to define a TCP (Tool frame)For pick and place 3 point method is enough
The UF is cartesian coordinate system
If your grid of holes is at 90 degrees
just teach the origin, X & Y directions
(all in the grid plane or a plane parallel to it)Once defined, you can change method to direct input to modify the UF data if needed
It seems that you need to adjust the W angle
Sent from my iPhone using Tapatalk
-
Are both cameras keyence???
You can locate the part with the camera mounted on the robot
Anyway, the part is located either by the fixed camera or the camera mounted on the robotSince you need to offset multiple points the best way is to offset a user frame
Keyence has robot vision tools to generate the X,Y,R offset
X,Y,R are real values, how do you read them using GI?
-
yes it was running up until about 10 hours ago or so, and yes powered on or off the robot holds position as well with the deadman switch pressed. I went over the cables once but will surely double check them again.When you press the deadman switch the motors are energized to hold the robot position.
If the controllers holds the robot weigth stationary without alarming, I would discard a servoamplifier problemWhen you jog J2, J3 also moves
If you robot can move other axis J1,J4,J5,J6 without alarming, the the problem is the motor (brake) or reducer.
Sent from my iPhone using Tapatalk
-
The system was running before???
When you press the deadman switch, the motors hold the arm??
I had a problem once with a robot
Somebody swapped the power cable at the servoamplifier. It immediately alarmed when the deadman switch was pressed.Make sure your cables are connected correctly.
Sent from my iPhone using Tapatalk
-