Well with a lot of hair pulling and a lot of help from this site we are running production.
Now I want to improve on it. I have a noticeable jerk when jumping from one routine to another.
IE after dipping into the pot of aluminum and scooping out 68lbs the robot moves to the mold. Now we pour a lot of different molds
so as the robot approaches the safety door the program jumps to the pour program for that particular mold. It is this jump that I see the jerk causing
the aluminum to slop around. How do I smoothen this out without slowing down. I am loosing heat.
Thank you all
Smoothing out program
- 9566317
- Thread is marked as Resolved.
-
-
What kind of motions/routines are you running?
-
Sounds like youre missing a continue some place..... A copy of the lines before and after you change routine would maybe help so its easier for us too see =)
-
If all of your routines have a INIT section at the top, particularly a call to BAS(#INITMOV), that will cause the robot to come to a brief halt every time you call a new routine. However, the robot should not jer unless you have your accelerations set rather high.
-
Hi Been a bit since I could get at this again. I agree it is the brief halt between the routine that is causing my issue. Not a jerk. but with a full ladle cup of molten aluminum this
Halt causes some to slop around. I removed the BAS(#INITMOV) from the program but it still does this initial brief halt. -
Hi.
You have to search for an instruction that stops the advance pointer. Is the First instruction a movement?Neranol
-
Are there any non-local interrupts declared in your modules? That can cause an Advance run to break at an END statement, which of course every module ends with.
-
Well I think with your guys help I am getting closer.
What is happening is in a program I scoop up some aluminum and then take it to the front of the machine,
when it is at the machine I have a program choice.
IE
if $flag[28] then
H1pour8()
endif
if $flag[29] then
H1pour9()
endif
This continues for up to 15 differant pours.
These flags are turned on earlier in the program
Is it possible that the dwell I am seeing is the time it takes to see which of the 15 program to use?
If it is what are my options to get it to read in the background or is it? -
Flag evaluations trigger an advance run stop. If the robot is in the middle of a move while this advance run stop occurs, you may see a momentary stop in motion.
Try writing a CONTINUE on the line previous to any IF... statement in this routine.
So it would look like this:
CONTINUE
if $flag[28] then
H1pour8()
endif
CONTINUE
if $flag[29] then
H1pour9()
endifThe CONTINUE forces a continuation of the advance run pointer, thus allowing your motion to continue.
-
You want to be very careful about using the CONTINUE command -- with the default $ADVANCE value of three, that could cause the $FLAG to be checked 3 motion steps before the robot actually arrives at the decision point. If the $FLAG isn't set far enough in advance, the branching behavior could become unpredictable.
-
In addition to skyefires comments, do you do multiple pours? If not maybe a switch statement might be cleaner?
Also if your evaluating the io directly that can slow things down, have a look at putting the evaluation in the sps.Sent from my iPhone using Tapatalk
-
Flag evaluations trigger an advance run stop. If the robot is in the middle of a move while this advance run stop occurs, you may see a momentary stop in motion.Try writing a CONTINUE on the line previous to any IF... statement in this routine.
So it would look like this:
CONTINUE
if $flag[28] then
H1pour8()
endif
CONTINUE
if $flag[29] then
H1pour9()
endifThe CONTINUE forces a continuation of the advance run pointer, thus allowing your motion to continue.
To make sure youre programs is executed at the right times I wouldve have used a subroutine which I wouldve called with a trigger distance function (cause I guess you have points you can trigger on). Cause as SkyeFire mentions, continue can be a bit dangerous at times. Also as mentioned here a switch for all youre pour programs might be a bit cleaner..
So I would have maked the code something like this:
; If distance=1 it will jump into the subroutine when the first position after this line is reached.
TRIGGER WHEN DISTANCE=1 DELAY=0 DO Prog_Pour() PRIO=-1DEF Prog_Pour
CONTINUE
if $flag[28] then
H1pour8()
endif
CONTINUE
if $flag[29] then
H1pour9()
endifEND
-
Are there any non-local interrupts declared in your modules? That can cause an Advance run to break at an END statement, which of course every module ends with.I am having the same problem and I have a global interrupt monitoring my gripper status. How can I work around this if in fact this is the cause of my pauses?
-
Without details, I can only shoot in the dark. But my first though is to make a Global interrupt, or declare the Interrupt in your highest-level routine, and only turn the Interrupt on/off in your lower-level routines.
Create an account or sign in to comment
You need to be a member in order to leave a comment