3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK ABOUT BACKUPTOOL DATATOOL PROJECTS TAGS STA RTING FANU C R OBOTS IN AU TO FILED UNDER: FANUC You’ve finished programming your robot, tested it in T1, and now you want to run it faster. If you’re like me, you sometimes forget the details on Remote vs. Local, UOP signals and the di erent startup types available (RSR, PNS, Style, Other). For your (and my own) reference, here’s a quick no-BS guide on how to get things running. NOTE: If you like this post and are interested in the programming side of things, be sure to check out my book on programming FANUC robots. TH E MODE SELECT (T1/ T2 /AU TO) SW ITCH T1 and T2 are for teaching and testing the robot. T1 limits the tool center point (TCP) speed to a nice and safe 250mm/sec. If your robot has T2, you probably have an older robot or you’re outside the US. This mode became non-standard in the US several years ago, but it allows you to test-run programs with the teach pendant at full speed. Be careful out there. When the robot is switched into AUTO, you’re running programs without the teach pendant. In fact, if the teach pendant is enabled, the robot will be in a fault condition. Some other device (covered later) will issue signals to start the robot. https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ 1/9 3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company FENCE CIRCUIT ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK ABOUT BACKUPTOOL DATATOOL PROJECTS TAGS The fence circuit is bypassed in T1 and T2, but it must be closed when in AUTO mode. LOCAL MODE Now that your robot is in AUTO, you can choose to start it remotely or locally. This configuration option is on the System Config screen (Menu > System > Config). When in local mode, the robot will be started from the Standard Operator Panel (SOP) buttons located on the controller. Be careful: when the robot is in local mode, it will always run whatever program you have selected on the SELECT menu. The robot will ignore any setup you have done on the Program Select method screen. I generally switch things over to AUTO/Local a er some thorough testing in T1. Start out slow with your finger on the HOLD button, gradualling bumping up the override before doing the same thing with the PLC in charge. REMOTE MO DE When the robot is in Remote mode, it will follow the Program Select method and Production Start method you defined in the system config screen. You’ll probably always use UOP as the Production Start method. There are four Program Select methods: RSR, PNS, STYLE and OTHER, but I think OTHER is best option. OTH ER Ah, OTHER: the simplest, most barebones and easy-to-use startup method. The robot simply runs an explicitly stated program when it receives a start signal. Set your Program Select Mode to OTHER on the system config screen and then specify a program to run by hitting DETAIL. You can also set the program name via the $shell_wrk.$cust_name system variable. https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ 2/9 3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company I find that keeping it simple, having the robot start some main task and handling any job ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK ABOUT BACKUPTOOL DATATOOL PROJECTS requests, etc. from there is generally best, but I’ll briefly summarize the other methods as TAGS well. ROB OT SERVICE REQUEST ( RS R) I’m not sure why anyone would use this program select method. (If you have a compelling reason, please let me know.) RSR basically lets you specify 8 numerically identified programs that correspond to 8 input bits. You have the option to add an acknowledge bit, but it’s not really a full handshake. The setup screen has you associate a number with each of your 8 RSR bits (e.g. 10, 20, 30, etc.). You can also specify a base that these numbers will get added to (e.g. 100). With these example values, if the RSR1 input is given the robot will execute RSR0110 (base of 100 + RSR1 bit value of 10). RSR2 would execute RSR0120, RSR0130 for RSR3, and so on. You have to follow this naming convention (RSRxxxx) exactly, but you can modify the RSR prefix via $shell_cfg.$job_root . I’m not a fan of these non-descriptive names (what the heck does RSR0150 do again?), so I wouldn’t recommend using this method. PROGRAM N UMBER SEL ECT ( PN S ) PNS is kinda like RSR, but it interprets the 8-bits as a binary number. You don’t have to explicitly set numbers fo each signal, but you can define a base number $shell_cfg.$pns_base change the prefix with . The naming convention is similar (PNSxxxx) unless you $shell_cfg.$pns_program . This startup type is a bit more useful since it requires less setup and you get more jobs, but I’m still not seeing the benefit here… STYLE SELECT Style is basically PNS without a naming convention. You have to explicitly setup a table that associates a given TP program with the input job number. https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ 3/9 3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company Additionally, you can enable/disable entries via the setup table. You can also write a ABOUT BACKUPTOOL DATATOOL PROJECTS ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK comment to remind yourself what your poorly named program does if that’s how you roll. TAGS TH E BOTTOM LINE WITH PRO GRAM S EL ECT METHODS It seems to me that the RSR, PNS and STYLE Program Select methods are all remnants of an earlier time. Who wants to name their programs you could write something more descriptive like RSR0001 or UNLOAD_LATHE_A PNS1000 when ? If you can’t be bothered to setup your own logic for job requests, STYLE is probably your best bet. A SIMPLE JO B REQUEST HAN D S HAK E Here’s how I might write a simple routine to get a job request: ! get_job.ls LBL[1] ; WAIT (DI[1:job request]) TIMEOUT,LBL[500] ; R[1:job]=GI[1] ; ! GO[1:job] echos R[1] in BG logic ; DO[1:job ack]=ON ; LBL[2] ; WAIT (!DI[1:job request]) TIMEOUT,LBL[501] ; DO[1:job ack]=OFF ; END ; ; LBL[500] ; ! timed out waiting for job ; JMP LBL[1] ; ; LBL[501] ; ! timed out waiting for job request to go low ; JMP LBL[2] ; The PLC would be responsible for validating GO[1] a er DO[1:job ack] comes on. https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ 4/9 3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company Then your main routine might look something like this: ABOUT BACKUPTOOL ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK DATATOOL PROJECTS TAGS ! main.ls LBL[1] ; CALL GET_JOB ; SELECT R[1:job]=1,CALL SOME_JOB ; =2,CALL SOME_OTHER_JOB ; ELSE,CALL INVALID_JOB ; ! maybe put a job done handler here ; JMP LBL[1] ; In 2016 I think it’s a little silly to pass integers around… I haven’t personally seen anyone do it this way, but you could (in theory) use Explicit Messaging to set a string register and call the result: ! main.ls LBL[1] ; ! populate SR[1] ; CALL GET_JOB ; CALL SR[1] ; ! maybe put a job done handler here ; JMP LBL[1] ; UOP SIGNAL S I’m willing to bet you’re going to start your robot with a PLC communicating via Ethernet/IP. I won’t go over the Ethernet/IP setup here (maybe a topic for another post), but let’s quickly cover the various UOP signals and what they do. UOP INPUT SIGNALS On the input side (from the robot’s perspective), you get up to 18 signals, but you’ll probably only need the first 8. NOTE: You have to enable UI screen. Set “Enable UI Signals” to https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ signals from the TRUE MENU > System > Config . 5/9 3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK ABOUT BACKUPTOOL DATATOOL PROJECTS TAGS Leave this on all the time. When it drops, the robot will stop UI[1:*IMSTP] immediately, but this should not be used for safety purposes. Leave this on unless you want to pause the robot. If this signal ever UI[2:*Hold] dips, the robot will slow to a controlled stop, pause its program and wait for a start signal to resume. This annoying little signal is normally on. When it drops, it will pause UI[3:*SFSPD] the robot and clamp the override to the override to $scr.$sfrunovlim $scr.$sfjogovlim UI[4:Cycle stop] . This signal can be used as a cycle stop or immediate abort signal depending on the value of $shell_cfg.$use_abort abort signal. If set to false, you’ll have to check ABORT . If you’re in teach, it’ll clamp UI[4] . If set to true, it will act as an in your program and by hand. UI[5:Fault reset] Normally o , this signal will attempt to reset any errors on your robot. Note: your robot cannot start or resume if any faults are present. UI[6:Start] UI[6] start] This one depends on $shell_cfg.$cont_only will only resume a paused program, and you’ll have to use . If set to true, UI[18:Prod to start from scratch. If set to false, it will resume or start an aborted program from the cursor position. Pretty useless, but the idea is that your robot will execute a home macro UI[7:Home] when this signal is received. UI[8:Enable] When this signal is high, the robot can move. So basically, to start the robot: 1. Turn on UI[1:*IMSTP] 2. Turn on UI[2:*Hold] https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ 6/9 3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company 3. Turn on UI[3:*SFSPD] 4. Turn on UI[8:Enable] ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK 5. Pulse UI[5:Fault reset] 6. If there are no faults, pulse ABOUT BACKUPTOOL DATATOOL PROJECTS TAGS to clear any faults UI[6:Start] If the robot is paused (from dropping the hold signal, a fault or e-stop): 1. Keep UI[1:*IMSTP] UI[8:Enable] , UI[2:*Hold] , UI[3:*SFSPD] and high 2. Pulse UI[5:Fault reset] 3. Pulse UI[6:Start] if necessary to clear faults UOP OUTPUT SIGNALS You’ll get some signals back from the robot if you want. Feel free to use any or all of them to make your PLC more intelligent. UO[1:Cmd enabled] This is ON when the robot is in Remote mode and not faulted. You can only start/resume the robot when this is ON. UO[2:System ready] UO[3:Prg running] Servo motors are on A program is running A program is paused UO[4:Prg paused] UO[5:Motion held] On when the robot is actively being held (e.g. UI[2:*Hold] is low) UO[6:Fault] On when there is a fault that needs to be cleared/reset UO[7:At perch] UO[8:TP Enabled] When the robot is at reference position #1 When the teach pendant is on https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ 7/9 3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company UO[9:Batt alarm] When the CMOS RAM battery voltage is less than 2.6V or robot ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK ABOUT BACKUPTOOL DATATOOL PROJECTS TAGS battery voltage is low UO[10:Busy] When the robot is thinking I’m not a PLC guy, but I would: 1. Make sure UO[1:Cmd enabled] is on before issuing any start signals 2. Don’t bother issuing any start signals if held] or UO[6:Fault] UO[3:Prg running] , UO[5:Motion is on 3. Know that you’ll have to give a reset if UO[6:Fault] is on 4. Maybe prohibit a start from the top unless `UO[7:At perch] is on 5. Tell the operator to turn o the TP if you want to run and UO[8:TP enabled] is on 6. Tell someone to change the batteries if UO[9:Batt alarm] is on That about does it. At this point you should know how to start your robot both locally and remotely while in AUTO via whichever program select method serves you best. We also covered the UOP Startup Method which you’ll probably use 99% of the time. (The other option is OTHER, which looks at a system variable $shell_wrk.$cust_start , usually used when the robot is controlled by a PC.) Let me know if you have any questions or know something about RSR/PNS/STYLE that I’m missing! If you enjoyed this post and want to learn more about FANUC robot programming, please check out the book I wrote, Robot Whispering: The Uno icial Guide to Programming FANUC Robots. THERE ' S MO R E WHER E THAT CAME FR O M . https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ 8/9 3/16/2020 Starting FANUC Robots in AUTO - ONE Robotics Company ONE ROBOT IC S COMPANY ROBOT PROGRAMMING BOOK ABOUT BACKUPTOOL DATATOOL PROJECTS I email (almost) every Tuesday with the latest insights, tools and TAGS techniques for programming FANUC robots. Drop your email in the box below, and I'll send new articles straight to your inbox! FIRST NAME * EMAIL ADDRESS * I WANT MORE ROB OT PROGRAMMIN G GOODNES S , GE T ME ON TH E LIST! No spam, just robot programming. Unsubscribe any time. No hard feelings! ©2013-2019 ONE Robotics Company LLC. All rights reserved. Privacy • Terms • RSS Feed https://www.onerobotics.com/posts/2016/starting-fanuc-robots-in-auto/ 9/9