The only robot I can think of (besides from what SkyeFire above suggested) is ABB’s kind of new IRB 1010. It’s small and neat as hell.
Posts by loopindex
-
-
Does the robot ”stop” in between each missions? (TCP-speed is close to 0)
In this case (I’m guessing that you don’t have a PLC when the robot seems to control the gate)
I’d make a new task which cyclic is checking if the robot is moving AND if the operator has requested to enter the cell.
This also solves if the robot suddenly stops within some of the procedures and you want to enter the cell.
-
Does the username of your windows user contain any special characters? (For Swedish folks it could be ”åäö” for example)
-
You get error messages when creating the system?! For me this is a clear sign, that robotstudio didn't create a complete and working system.
You must be able to create a system without error messages.
1. Use short patnames without special characters.
If that doesn't work, install roboguide again.
I don’t think installing roboguide would solve the Robotstudio problem… 😉
-
I also receive the following errors when we create a system from the backup.
"
RobotStudio .NET exception: Input string was not in a correct format.
============================================
Base exception: FormatException
Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseUInt32(String value, NumberStyles options, NumberFormatInfo numfmt)
at RobotStudio.Services.RobApi.RobApi1.RobInfoStream.RobotStudio.Services.RobApi.IRobInfoStreamInternal.TryDefineMoc(Int32 channel, RobInfoStreamMocSignalType signal, String unit, Int32 axis, Int32 rate, Int32 latency)
at RobotStudio.Services.RobApi.RobInfoStreamHelper.UpdateMocSubscriptions(Boolean restartInfoStream, String forSubscriber)
at RobotStudio.Services.RobApi.RobInfoStreamHelper.<>c__DisplayClass45_0.<SubscribeMocSignals>b__0()
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at RobotStudio.Services.Controller.VcSimHelper.<_timer_Elapsed>d__25.MoveNext()
"
That one could be special-characters i the directory. (Windows username)
-
MotorsOff & CycleOn which you mentioned is both System Signals. My tip is to check System Parameters manual instead.
(It describes the Motor System Signals pretty well even though I can’t remember exacly what conditions that is required for motorsOff)
I know the error-codes is sometimes very insufficent. 😬
-
Which manual are you referring to?
-
If you don’t know how to do this, I would highly recommend you to do a SafeMove-course provided by ABB or at least read and understand the documentation regarding SafeMove and Safety.
-
To either edit or disable the supervision you’ll have to login as a Safety or Admin user first (any user that has safety-commisioning-permissions)
After that you’ll have options from Robotstudio for example.
Why would you want to edit or disable that zone?
-
Understand what "problem"?
To begin with, are you familiar with C#?
If so, look up all the SDK's that ABB provides. (Robotstudio-, PC SDK etc)
There are probably a million ways to control/provide the robot with data from a PC for example.
Probably the only answer which maybe is edible for you is that No, you're probably not going to need a PLC. (Depending on what you would like to achieve of course)
-
Does the windows username contain any special-characters?
I have a weaker memory that using like ’åäö’ and such could trigger this fault.
-
why not write something short for testing and do test in a loop so you can see transitions over and over. see example below. if needed adapt point offsets.
then monitor $VEL_C on the robot (select continuous update)
Code
Display MoreDEF apo_test( ) DECL FRAME P1,P2,P3,P4 BAS(#initmov,0) $ADVANCE=5 $APO.CDIS=500 $TOOL = $nullframe $BASE = $nullframe PTP $AXIS_ACT PTP {A1 0, A2 -120, A3 110, A4 0, A5 45, A6 0} P1 = {x 0, Y 500, Z 500, A 0, B 0, C 0}:$POS_ACT P2 = {x 0, Y -500, Z 500, A 0, B 0, C 0}:$POS_ACT P3 = {x 0, Y -500, Z -500, A 0, B 0, C 0}:$POS_ACT P4 = {x 0, Y 500, Z -500, A 0, B 0, C 0}:$POS_ACT LOOP $VEL.CP=1.000 ;m/s LIN P1 C_DIS LIN P2 C_DIS $VEL.CP=0.100 ;m/s LIN P3 C_DIS LIN P4 C_DIS ENDLOOP END
Thanks! I’m absolutely going to do that. 👍
-
APO_dis in LDAT_ACT doesn't change anything until you call bas(#CP_PARAMS,velparam), in that call the parameters in LDAT_ACT are copied to parameters for path generation.
in case of the component "VEL" in LDAT_ACT: this parameter is never used, instead the second parameter in the call of BAS(#CP_PARAMS,velparam) is used.
You can have a look into BAS.SRC on the robot to look for what happens to all those parameters.
Alright! KSS is a little bit wierd but I’m starting to like it.
So if I call BAS with a certain velocity, will it affect the $VEL.CP as well?
-
sine points are quite from each other (more than couple of mm) advance can be 1.
the next thing to know is how are you testing... what mode and what program override?
$EXT and the idea is to always have 100% Override
-
Can't beleive that. If that was the fact also the normal inline forms with standard advance of 3 won't work, as the "bas(#cp_params,velparam)" also only sets $vel.cp to velparam.
APO_dis in LDAT_ACT doesn't change anything until you call bas(#CP_PARAMS,velparam), in that call the parameters in LDAT_ACT are copied to parameters for path generation.
in case of the component "VELDAT_ACT: this parameter is never used, instead the second parameter in the call of BAS(#CP_PARAMS,velparam) is used.
You can have a look into BAS.SRC on the robot to look for what happens to all those parameters.
Why do you ask more questions instead of answering the questions?
Sorry. Missed that one out 😉 The problem remains what ever the speed is. Sometimes the PLC says 250mm/s, sometimes 500.
The distance between the positions is abou 300-500mm.
Most People never show complete code, and make it more complicated to help.
APO.CDIS is set in BAS(#CP_PARAMS,vAppl_LIN.VEL))
I’ll post the BCO-run next time so it wont confuse you. 😉
-
Lowering the speed this way should work.
What are the actual values of PLCSpeed and StartSpeed? How long are the paths between the positions?
Actually, the problem is also keeping a constant path troughout the corners as well.
-
Here comes a really dumb question more:
What’s the difference if i change the $APO.CDIS compared to the APO_DIS in the ACT_LDAT? (The same for velocity, acceleration)
-
Oh, and it's a fixed tool and a moving Workpiece.
And yes, Panic-Mode. I'm not exacly clear all the time, but I'm getting better.
-
Hi,
I'm currently working on a KR16 KRC5, Glueingapplication.
The robot I'm working with is gluing a "C"-shaped string on a rectangular object.
This is the Speeddata i'd like to use.
DECL LDAT vAppl_LIN={VEL 1.00000,ACC 60.0000,APO_DIST 5.00000,APO_FAC 50.0000,AXIS_VEL 100.000,AXIS_ACC 100.000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 100.000,EXAX_IGN 0,CB {AUX_PT {ORI #CONSIDER,E1 #CONSIDER,E2 #CONSIDER,E3 #CONSIDER,E4 #CONSIDER,E5 #CONSIDER,E6 #CONSIDER},TARGET_PT {ORI #INTERPOLATE,E1 #INTERPOLATE,E2 #INTERPOLATE,E3 #INTERPOLATE,E4 #INTERPOLATE,E5 #INTERPOLATE,E6 #INTERPOLATE}}}
First I'm reading the m/s from the PLC and scales it to mm/s.
PLCSpeed = giPLC_Speed*0.001 ; This is the speed i'd like to use when the nozzle have stabilized and released it's startpressure.
StartSpeed = (PLCspeed * 3) ; This is the speed i'd like to use from the beginning because of the pressure built up in the nozzle.
; Initialize
$ADVANCE = 5
$BWDSTART = FALSE
LDAT_ACT = vAppl_LIN
BAS(#CP_PARAMS, vAppl_LIN.VEL)
$VEL.CP = StartSpeed
; To Startposition
LIN Offset(XCStr_P1,0,0,50) C_DIS C_DIS
LIN XCStr_P1
; Apply Glue
TRIGGER WHEN PATH = -50 DELAY = 0 DO doPLC_StartGlue = TRUE
LIN XCStr_P2 C_DIS C_DIS
LIN XCStr_P3 C_DIS C_DIS
$VEL.CP = PLCSpeed ; Lower Speed
LIN XCStr_P4 C_DIS
TRIGGER WHEN PATH = -50 DELAY = 0 DO doPLC_StartGlue = FALSE
LIN XCStr_P5 C_DIS
The problems I'm having is:
1. The Robot doesn't seem to adapt the Speed-set at the "; Lower Speed" - Line.
2. The Robot stops a little bit between P2 and P3. (It's not a approximationproblem because i've tried $STOPNOAPROX = TRUE)
What's the "correct" and "smoothest way" to lower speed during a continious movement?
Is it any .BAS-function I'm missing out?
Best regards!
-
Alright!
The reason why I don’t do it while the program is running is because I can’t predict where the robot is going to stop/what procedure is ongoing and I’m not in the mood for an interrupt. I’m doing the reset from the .SPS and that’s why I from the beginning also tried to saved the recent tool there.
It actually doesn’t matter if it’s the raw data or the index of the TOOL_DATA array, I simply just have to know which tool the robot used the recent movement.
If the function/variable I’m searching for is an integer, I can simply point with that inside of the TOOL_DATA array and the same if it returns ”raw-data” I can use that frame with relative homeing-positions.
The problem is still retaining the data after a program reset.
When the program gets reset, the PLC calls on a homeing-procedure if the PLC aren’t sure where the robot is.
The robot is using 3 grippers and depending on which one is recently used, I can make a pretty intelligent homeing procedure if I know that.
The ”Nono” meant that the tool-frame i copied still was 0 even if i checked that it was initialized. (I Saw you answered why)