Hello,
I've been searching for awhile, but have been unable to locate any documentation about RTCP for ABB robots. Does anyone have a manual that describes the setup procedure for this? Thanks in advance for your help.
Hello,
I've been searching for awhile, but have been unable to locate any documentation about RTCP for ABB robots. Does anyone have a manual that describes the setup procedure for this? Thanks in advance for your help.
I think OCTOPUZ would be a great solution for this
Display MoreIn the PROC rDropHandoffStand() which I assume is the one you're referring to, you use WObj:=wobjHandOffStand. I'd be taking a close look at this WObj to ensure it hasn't moved of been re-taught.
Next time you look at the robot running this routine with no issues, take note of the 'ABB' logo on axis 4, Is it normal or upside down?
Then, when you see it go out of position in this routine, check the ABB logo on axis 4 again and you may see that it is the opposite of what you observed previously.
I can't explain why this happens and perhaps some of the many experts on this site can provide an explanation but I've seen in the past where if ConfJ and ConfL are turned off, the robot can go to a position with axis 4 flipped over 180 degrees from the thought position which caused the position to be out by approx. 20mm which sounds a lot like what you're experiencing.
I can see that in parts of the program, you turn ConfJ and ConfL off.
If you think its worth trying, simple add these two lines to the start of the rDropHandoffStand() routine.
ConfJ\On;
ConfL\On;
I'm no expert but I've seen this exact problem happen a few times in the past. Hope this helps!
ConfJ and ConfL are used to specifiy whether or not the robot's configuration is to be controlled during joint movement or linear movement. If it is turned \Off the robot will search for a solution with the same axis configuration as the current one, but it will move to the closest wrist configuration for axes 4 and 6 (which is why you witnessed axis 4 flipping). With it turned \On the robot moves to the programmed position and orientation, if this is not possible the program execution stops.
Check out the sections on weavedata and welddata in the Application Manual - Arc and Arc Sensor. Application Manual_Arc_and_Arc_Sensor.pdf
Yes it is called RobotStudio
Whenever you execute a move instruction there are several arguments that must be passed into the instruction in order for the movement to be executed. For example:
MoveJ p1, v20, z30, tool2;
This instruction tells the robot to move to robtarget p1 at a velocity of 20mm/s with the zone radius of 30mm with reference to the TCP of tool2.
Here is a visual description of zonedata:
All of this information is very well documented in the Technical Reference Manual - Rapid Instructions, Functions and Data types
What is the size of your zone?
program not running as per its taught position
How far off is it? 1mm? 100mm? 100 km?
Robtarget position gets shifted suddenly
How far is it being shifted? Is it consistently the same distance or is it a uniquely incorrect position every time?
Have you examined the event log for hardware errors?
There MAY be a problem with the internal cable harness.
No hardware errors, always resolver values lost and SMB communication errors
Hello,
We have an ABB IRB 6700 that has been experiencing errors related to the SMB. We were receiving errors such as 10036 Revolution counter not updated and 20477 SMB Communication Failure, which were initially solved by replacing the SMB battery. After a few months, the issue returned, but could be easily remedied by returning the robot to its calibration position and updating the revolution counters (this would keep the robot running for at least 2-3 days). Last week we decided to replace the SMB and the cable entirely as the errors were interfering with production. Once replaced, the errors disappeared for at least 4 days, until we again received 10036 Revolution counter not updated. What could be causing this? I have seen this error occur even while robot is in 100% automatic mode running a program. My next thought is that there is a fault with the resolvers themselves. Any ideas? Thanks for your help.
I have found the solution now, the trick is to add another IF statement at the bottom of the function. Instead of:
RETURN NumToStr(hours,0) + ":" + NumToStr(minutes,0);
You need:
IF minutes < 10 THEN
RETURN NumToStr(hours,0) + ":" + "0" + NumToStr(minutes,0);
ELSE
RETURN NumToStr(hours,0) + ":" + NumToStr(minutes,0);
ENDIF
Hello,
I am working on a function that converts seconds to time:
FUNC string SecondtoTime(num s)
VAR num seconds:=0;
VAR num minutes:=0;
VAR num hours:=0;
s:=Round(s);
IF s>=60 THEN
minutes:= s DIV 60;
seconds:= s MOD 60;
ELSE
seconds:=s;
ENDIF
IF minutes >= 60 THEN
hours:= minutes DIV 60;
minutes:= minutes MOD 60;
ELSE
minutes:=minutes;
ENDIF
RETURN NumToStr(hours,0) + ":" + NumToStr(minutes,0);
ENDFUNC
Display More
The problem I'm having is when you input an amount of seconds that returns minutes that are less than 10, a zero is missing. For example 5:05 PM (18300 seconds) reads as 5:5 instead of 5:05. Is there a RAPID command that allows me to prepend a zero? I've looked through the Technical Reference Manual and can't seem to find anything like this. Thanks for your help.
Good idea, I have actually been working on this in a different direction now by using CTime() to output the current time + the duration of the cycle as opposed to constantly updating the remaining duration. The plan is to convert the output from CTime() to seconds, add it to the duration (in seconds) and then use a function to convert total seconds to a time format.
As long as you program it without any Wait commands, it shouldn't disrupt the existing task.
I think that is my main problem, my program to count time relies on line 24 of the code I posted above (WaitTime currentTimeStep;) I'm going to have to find another solution, thanks for your help
I tried changing the module to SEMISTATIC by editing the controller section of the configuration editor, but then when I press pp to main it says there is not an active program pointer..I know the controller can run tasks in the background because there is already a task in there that is checking for errors while the robot is running. Perhaps I have too many background tasks now..
Hello,
I've put together this small program that counts down from a given amount of seconds and I would like it to display on the FlexPendant while the robot is running to let the operator know when the program will end. Because the cycle time is the same, this solution works as I can simply input the cycle time in seconds and have it count down from there. I am trying to get this program to run in the background because when you put in in the main program it always hangs on "WaitTime currentTimeStep" which makes sense, because it is an instruction telling the robot to wait. How can I get this program to run in the background so it doesn't get in the way of the main program?
MODULE WaitTimeModule
CONST num timeStep:=1;
PROC RemainingTime(num waitingTime)
VAR num currentTimeStep;
VAR num timeLeft:=0;
VAR string displayString;
timeLeft:=waitingTime;
WHILE timeLeft>0 DO
IF timeLeft<timeStep THEN
currentTimeStep:=timeLeft;
timeLeft:=0;
ELSE
Add timeLeft,-timeStep;
currentTimeStep:=timeStep;
ENDIF
TPErase;
TPWrite "Time Remaining is:" + SecondstoTime(timeLeft);
WaitTime currentTimeStep;
ENDWHILE
ENDPROC
FUNC string SecondstoTime(num s)
VAR num seconds:=0;
VAR num minutes:=0;
VAR num hours:=0;
s:=Round(s);
seconds:=0;
minutes:=0;
hours:=0;
IF s>=60 THEN
minutes:= s DIV 60;
seconds:= s MOD 60;
ELSE
seconds:=s;
ENDIF
minutes:=Trunc(minutes);
IF minutes >= 60 THEN
hours:= minutes DIV 60;
minutes:= minutes MOD 60;
ELSE
minutes:=minutes;
ENDIF
RETURN NumToStr(hours,0) + "hr" + NumToStr(minutes,0) + "m" + NumToStr(seconds,0) + "s";
ENDFUNC
PROC main()
RemainingTime 11400;
ENDPROC
ENDMODULE
Display More
Thank you for your support.
Fixture is rotating by Servo motor.
I have no information about World Zone.
Can you share information such as what is the World Zone, how to set it up?
There are many different shapes that WorldZones can be defined, see the Technical Reference Manual for more info. Keep in mind, the manual abbreviates WorldZone to WZ.