Sounds good and thanks. I have not run across needing it before/believe it was so but at the same time one of our customers is showing 56 user outputs and 50 user inputs on their i/o map.
Posts by Robot_guy
-
-
Hey everyone i am trying to increase the number of User inputs and outputs on a Fanuc R30ib. Is this not possible or am I missing something?
Thanks in advance
-
You would have to look at your tool and know which direction the x,y,z is in your user frame is and what tool frame you are using that the point is taught in. then you would look at your tool and be able to guestimate based off from how the tool is rotated around W,P,R. Which W is the rotation around X. P is the rotation around Y. R is the rotation around Z.
Now if it is a PR I believe it would be the same thing but around the World Frame instead of the user frame.
-
If you have the option for shadow memory (its just upgraded memory to my understanding if you are running out of CMOS) you can choose to store programs under the shadow memory instead of under the CMOS.
To do this you need to Select a program under the program menu you can click detail under there you will have the option to choose whether you want to store it under shadow or CMOS.
sorry dont know much more then that didnt notice any difference in running my programs or any of the logic.
-
Hello All,
So far I have tested programs with offsets and programs that call other programs. Does not seem to be any different. Have not ran into any issues if any come up I will post what happened.
Thanks,
-
Hello all,
I am working on an R30IA and was wondering if anyone knew the difference between the Shadow Memory and the CMOS? Just mainly wondering if there is any limitations from putting a program in the shadow memory instead of leaving it in the CMOS.
Thanks
-
I am unsure what the menu path is to change the language to English can anyone help out?]
KRC4
current language is spanish -
The concept of FRAME is very similar to the MotomanPress MENU, SETUP, Frames
Then Details, screen will show a [Method], use the 3 PointLIke Fabian said
For creating a UFrame I normally just use the 3 point method. I start with a spot on the fixture that I can stamp and scribe. I then put a right triangle with each of the three corners pin stamped. I think stamp a O for Origin a Y for the Y direction and a X for the X Direction. After this I pick what frame I want the Uframe to go under. You will need to jog the robot to each point and record it in the UFrame. If you can get it where the robot can jog to each from the origin without hitting the part that seems to work the best. I would also recommend creating a program that has air moves to above each point.Now when you go to teach a program you are wanting to use the Userframe in you will want to set the Userframe before teaching any point. I would also recommend putting it in the logic with the correct tool that you used to teach it. (example below)
UFrame_Num=Constant
UTool_Num=ConstantWhere constant is put in the tool frame and user frame that you are using.
Now if you decide to move the fixture slightly you should be really close if you record the Uframe points after jogging to them.
-
make a home check program that gets called at the top of your main program. then make a alrarm inside that program or make a fold that has that they will have to correct the problem before it will move on. for example (Code for checking if a clamp is open in a reamer before moving on) you could just change parts of the below logic to look for the output saying the robot is at home position. if it is not on it will just fault out and display at the top that the robot is not home. you can also use whatever I/o you are using to show that the robot is faulted to your plc. then they will have to get someone that is knowledgable about the cell enough to get the robot home. sorry just woke up to if wording is off.
DECL KRLMSG_T CLAMP_OPEN
DECL KRLMSGPAR_T PARAMETER[2]
DECL KRLMSGOPT_T OPT
DECL INT TICKETCLAMP_OPEN = {MODUL[]"USER",NR 2018,MSG_TXT[]"THE REAMER CLAMP IS NOT OPEN!"}
OPT = {VL_STOP TRUE, CLEAR_P_RESET TRUE, CLEAR_P_SAW FALSE, LOG_TO_DB FALSE}
;ENDFOLDREPEAT
$TIMER[1]=0
$TIMER_STOP[1]=FALSE
WAIT FOR ($TIMER[1]>=2000) OR ($IN[603]==TRUE)
IF (($IN[603]==FALSE) AND ($TIMER[1]>=2)) THEN
$OUT[4]=true
TICKET = SET_KRLMSG (#NOTIFY,CLAMP_OPEN,PARAMETER[],OPT)
HALT
ENDIF
$TIMER_STOP[1]=TRUE
UNTIL $IN[603]==TRUE
;FOLD WAIT FOR ( IN 601 'Station in Use' );%{PE}%R 8.3.32,%MKUKATPBASIS,%CEXT_WAIT_FOR,%VEXT_WAIT_FOR,%P 2:, 4:, 5:$IN, 6:601, 7:Station in Use, 9:
WAIT FOR ( $IN[601] )
;ENDFOLD
;FOLD WAIT FOR ( IN 603 'Clamp Open' );%{PE}%R 8.3.32,%MKUKATPBASIS,%CEXT_WAIT_FOR,%VEXT_WAIT_FOR,%P 2:, 4:, 5:$IN, 6:603, 7:Clamp Open, 9:
WAIT FOR ( $IN[603] )
;ENDFOLD
;FOLD WAIT FOR ( IN 605 'Reamer Returned' );%{PE}%R 8.3.32,%MKUKATPBASIS,%CEXT_WAIT_FOR,%VEXT_WAIT_FOR,%P 2:, 4:, 5:$IN, 6:605, 7:Reamer Returned, 9:
WAIT FOR ( $IN[605] )
;ENDFOLD
;ENDFOLD
;FOLD ; **********************;%{PE}%R 8.3.32,%MKUKATPBASIS,%CCOMMENT,%VNORMAL,%P 2:**********************
;ENDFOLD -
Steps
1. Press MENU.
2. Select ALARMS. You will a error screen.
3. Press F4, RES_CH1.
4. Press F4, YES to reset the fault.
5. Press the RESET button on the teach pendant or operator panel.If this does not fix the issue you will have to find out what is causing your chain failure. Should find out prior but could by something simple and doing the above steps may fix your issue
-
put a 1 in where you want to enable the axis* not the brake so that part was incorrect.
-
Some of these robots DO NOT HAVE BRAKES ON ALL AXES!
If you are not getting errors I suspect that you have only brakes on axis 2 and 3.
Check to see if that is true.said some do not have brakes already...never seen one but have heard that
-
Robotguy this is not the correct information here. Changing the numbers in this area will not do what you are saying it will do. This variable assigns a number to a specific axis to be associated to that axis at the servo amp. The variable you want would be BRK_NUMBER
not completely incorrect because I did say that it would not be able to jog the joint if it was disabled and also it would drop if it was disabled so I would disagree that it is incorrect as you are saying because it was a place to check out. because he did not specify that he could jog the joints and did not specify exactly the robot just that the joints were dropping. so it was not incorrect information just a suggestion based off not having all the information needed.
-
press menu, 0(next Page),6(system).
Press F1 and select variables.
Scroll down to $SCR_GRP and press enter.
Select $SCR_GRP [1] press enter
Scroll down to axis order
Put a 1 in the axis order number for axis you want to enable the brake.if there is a one then you have a bad brake. but come to think of it you will not be able to jog the joint. so I think you probably have a bad brake. did you just buy the robot? Unless its a older robot I heard that there are some that they did not have brakes and you had to park the robot on a stand each time. idk I haven't seen one personally just remember a older guy telling me about it.
-
Use I/O and transfer it back and forth between the robots. then use a background logic program to set up different bits of information each input or output means.
-
Could also (I would think) at the top of your program use R[?]=AR[?] then use the R[?] inside the if statement. that would allow you also to not have to worry about losing the argument register if you go another layer deep inside your programs. I would have a House Keeping program that resents the registers in your main program though. like at the beginning and end. Just incase someone tries to run through a sub program it won't have something already in the register.
-
I just made a quick program on a R30iB tested out to 30 argument registers. then it would not let me add anymore
-
Never mind, I see how they work.Questions though.
Can you only have 1 argument per program?
you can have multiple I am not sure out to how many though. just if it calls another program or leaves the current program that you are in it will clear the argument registers
-
Argument registers work only one layer deep. So for calling a program you can do the follow
;Call programname(1,5)
This puts a 1 in argument register 1 and 5 in argument register 2
inside the program "programname" you can use this to control jump labels or what you desire to use it to do. For instance.;if (AR(1)=2) jump 1
;if (AR(2)=5) jump 3
;lbl [1]
;"task"
;jmp lbl [999]
;lbl [3]
;'task'
;jmp lbl [999]
;lbl [999]So in summary an argument register works as a normal register but when you either finish the program or call a different program the register is cleared.
-
When I have had Lincoln tell me to reload software it was on the robot side. And it wasn't completely reloading it was just doing the steps listed above. (I believe cant remember but it should be close) So hopefully they are not wanting you to do anymore then that.