Hi @Future Robotics , thank you for your videos. They are very helpful! Can you please show us how to wire the safety electrical interlock for the robot? I plan on using a non contact door switch. How can we wire it into the emergency stop board? Thanks!
@@Ghufhf Wow, I was expecting RJ-3, I did not wire controllers after R-30iA, all goes trough DCS (ProfiSave, etc.) If you have time I can dig into it, but it will take some time, best if you text me on Facebook (see info on my main channel page on the bottom right corner of the top bar)
@@FutureRoboticsChannel Hi, I contacted FANUC and just wanted to share with you what I learned. It is very easy to wire the non contact door switch to the e stop board. All you need is a non contact door switch that has relay contacts. I am using sick re13-sac. Then, you wire two wires from the sensor to ports EAS11 and EAS1 on the e stop board, and the other two wires to EAS2 and EAS21
Can you explaint about Profibus configuration of Fanuc Robot?I have connected Simatic Manager with nettoplcsim to fanuc robot but i couldn't configure profibus network...Thanks
Have you taken a look at my Digital I/O video ? I do mention about mapping there, you need to have correct RACK and SLOT number. Make sure that the Profibus ring is ok and that you did terminate the connection at the end of the ring, if you didn't do it it will cause a network error and you won't be able to create communication.
This was completely different that i expected, in our factory we use group i/o to tell robots when other one can move and when other one needs to wait GI number from other robot, is that good or bad way for doing it?
Each facility has its own way of creating logic. I would not say there is a good or bad way. I like to evaluate the efficiency of the solution if it's good or bad. Run all possible scenarios in your head to see if there is a scenario that might cause an error, in other words try to see if you can "break the code"
Hi, thanks for your video! Is there any possibility to pass the values of some $variables or the, for example, a joint effective position to the group output? I was wondering how to tell a PLC over profinet/profibus where is the robot at the time: is that possible to do it or there's another trick? Thank you!
It depends if you want to send position live you would need to create a background logic and use current position from machine pulse: Set $SCR_GRP[1].$m_pos_enb to true and then use: GO[1:X POS]=($SCR_GRP[1].$MCH_POS_X*10) GO[2:Y POS]=($SCR_GRP[1].$MCH_POS_Y*10) GO[3:Z POS]=($SCR_GRP[1].$MCH_POS_Z*10) GO[4:W ANG]=($SCR_GRP[1].$MCH_POS_W*100) GO[5:P ANG]=($SCR_GRP[1].$MCH_POS_P*100) GO[6:R ANG]=($SCR_GRP[1].$MCH_POS_R*100) If you want to send position when robot is NOT moving than use PR[x]=LPOS and than GO[x]=PR[X,Y]. You also need to remember that you need to multiply the position, because you cannot send decimal numbers, only integers. And when PLC gets the number you need to divide it by the number that you multiply it on the robot
Hi, Have configured a GI as you suggested, but when I simulate the inputs, the value stays as 0. I have checked on production robot on our facility that has inputs on, the value reads as id expect, but when I simulate the first bit on, it doesnt add 1 to the value... Do you need a program running to update the GO value or something?
Great video(s)! I was wondering. Is there a way to increase the amount of GO and GI? Normally it's limited at 100. (I know that it's possible with DO and DI)
Hey @Rob Hebing, Not that I know of, I think they are limited. Most of the things that you can change (increase) would be under controlled start -> program setup. Just out of curiosity, why would you need more than 100 GO/GI ?
@@FutureRoboticsChannel I'm connected to a PLC and try to send position data of multiple(5 at the moment) positions at once(xyz,wpr,speed,ctn) so I can make a sequence on the side of the PLC with via positions. This uses a good portion of the 4096 points available. On the side of the PLC this is not very complex. But on the robot i'm trying to give some structure to all the data by using the group inputs(so the names will pop up in the code). For now it fits, I use 80 out of 100 GI's. I use EtherCat, the handling on Fanuc is very close to EthernetIP. Thank you for taking the time to respond and make all the video's. Very much appreciated!
Switch to I/O link if possible and your problem will be solved. Than you will be able to use R[x] to transfer data. I do not know how complex your application is, but maybe it's worth using Reference Positions and single DO associated with it. If you are using PR[x] in your program you can do the same, write a background program that will turn a DO when robot is close to a specific position (a lot of logic to use, but that will be a way around as well). Once more I do not know the application, but making a sequence based on robot position sounds a bit scary. Please keep in mind if you are using $scr_grp[1].$mch_pos as your current position there is a big delay between when this variable refreshes and robot position. You can also try using GO[x] "attached" to the point and send current "step" like this (best if you have distance before): J P[x] 100% CNT100 GO[x]=100 or better J P[x] 100% CNT100 DB 0.0mm, GO[x]=100
@@FutureRoboticsChannel Thank you! Im sending PLC data into a PR[x] to create 'offset data'. The userframe(s) is set in the robot, but the PLC will control the offset. It's for picking and placing products. For position data I do use $scr_grp[1].$mch_pos as HMI feedback, but not for control purposes. Could you please tell me more about this? J P[x] 100% CNT100 DB 0.0mm, GO[x]=100 I don't exactly know what you mean... Thanks for your hard work! (sometimes you make Fanuc seem easy ;-)
@@robhebing6831 FANUC is super easy and user friendly :-) So DB is called DISTANCE BEFORE, I've used it mostly in glue and laser brazing. There are 2 options DB and TB (Distance Before and Time Before). To make it very simple: DB - will trigger and action when the robot will be in a specified distance BEFORE the point (distance related) TB - will trigger and action when the robot will be in a specified time BEFORE the point (time related) TA - will trigger and action when the robot will be in a specified time AFTER the point (time related) Example: 1: J P[1] 100% CNT100 2: J P[2] 100% CNT100 DB 5.00mm, DO[100]=ON 3: J P[3] 100% CNT100 TB 0.50sec, DO[100]=OFF 1. Robot moves to the point 2. Robot moves to the point and 5.00mm BEFORE he will reach the point he will turn DO[100]=ON 3. Robot moves to the point and 0.5sec BEFORE he will reach the point he will turn off DO[100]=OFF
I don't think it's possible, but you can always write a background logic to transform Digital I/O to a group I/O 🙂, if you don't mind asking why do you need so many Group I/O's ?
@@FutureRoboticsChannel thanks for the answer. We we want to transfer the data from plc to the robot. So we need for each point 6 GI and 6x16DI. Then we write the gi in a background logic in the PR.
@@danielj.3687 I might not fully understand, but you can do that using only 1 GI (depends on the speed you need to transfer the data) and additional 3 DI and 1 DO, this way you can send the data using 1 GI and use DI to determinate what you are sending X,Y,Z, etc. easiest way would be to use I/O Link and use registers in this case, or if you have Ethernet use socket messaging
Thats the way we did it in the past. 1 GI to provide the coordinate and 1 GI to point at a register. But this needs a few seconds. So we thought it could be "simpler and faster" to use more Gis in a static way: GI1 = R[1: P1.x] GI2 = R[2: P1.y] : : Thanks for the tip with Ethernet Socket Messaging. I'm going to try this. We changed recently from Profinet to Ethernet Communciation. Because Profinet cards are not available.
@@danielj.3687 if you like in depth consultation you can always schedule them with me to go over problems and find solutions that might suite you: f-robotics.com/consultation
Great content...thanks for sharing your fanuc skills..I subbed
5:05 you got me right here buddy 😅
Hi @Future Robotics , thank you for your videos. They are very helpful! Can you please show us how to wire the safety electrical interlock for the robot? I plan on using a non contact door switch. How can we wire it into the emergency stop board? Thanks!
Hey, so there is a bit more info that you would need to share in order to help you out.
What controller are you using ? (R-30iA, R-30iB, etc)
@@FutureRoboticsChannel R-30iB
@@Ghufhf Wow, I was expecting RJ-3, I did not wire controllers after R-30iA, all goes trough DCS (ProfiSave, etc.)
If you have time I can dig into it, but it will take some time, best if you text me on Facebook (see info on my main channel page on the bottom right corner of the top bar)
@@FutureRoboticsChannel Ok, I will reach out via FB. Thanks!
@@FutureRoboticsChannel Hi, I contacted FANUC and just wanted to share with you what I learned. It is very easy to wire the non contact door switch to the e stop board. All you need is a non contact door switch that has relay contacts. I am using sick re13-sac. Then, you wire two wires from the sensor to ports EAS11 and EAS1 on the e stop board, and the other two wires to EAS2 and EAS21
Hello, you are doing very well;). Спасибо
Glad to hear that :-) Спасибо
Can you explaint about Profibus configuration of Fanuc Robot?I have connected Simatic Manager with nettoplcsim to fanuc robot but i couldn't configure profibus network...Thanks
Have you taken a look at my Digital I/O video ? I do mention about mapping there, you need to have correct RACK and SLOT number.
Make sure that the Profibus ring is ok and that you did terminate the connection at the end of the ring, if you didn't do it it will cause a network error and you won't be able to create communication.
This was completely different that i expected, in our factory we use group i/o to tell robots when other one can move and when other one needs to wait GI number from other robot, is that good or bad way for doing it?
Each facility has its own way of creating logic. I would not say there is a good or bad way.
I like to evaluate the efficiency of the solution if it's good or bad.
Run all possible scenarios in your head to see if there is a scenario that might cause an error, in other words try to see if you can "break the code"
Hi, thanks for your video! Is there any possibility to pass the values of some $variables or the, for example, a joint effective position to the group output? I was wondering how to tell a PLC over profinet/profibus where is the robot at the time: is that possible to do it or there's another trick? Thank you!
It depends if you want to send position live you would need to create a background logic and use
current position from machine pulse:
Set $SCR_GRP[1].$m_pos_enb to true and
then use:
GO[1:X POS]=($SCR_GRP[1].$MCH_POS_X*10)
GO[2:Y POS]=($SCR_GRP[1].$MCH_POS_Y*10)
GO[3:Z POS]=($SCR_GRP[1].$MCH_POS_Z*10)
GO[4:W ANG]=($SCR_GRP[1].$MCH_POS_W*100)
GO[5:P ANG]=($SCR_GRP[1].$MCH_POS_P*100)
GO[6:R ANG]=($SCR_GRP[1].$MCH_POS_R*100)
If you want to send position when robot is NOT moving than use PR[x]=LPOS and than GO[x]=PR[X,Y].
You also need to remember that you need to multiply the position, because you cannot send decimal numbers, only integers.
And when PLC gets the number you need to divide it by the number that you multiply it on the robot
@@FutureRoboticsChannel Thank you a lot, I'll try that one tomorrow in my lab!
@@iteimpiantielettrici2046 Sure thing, let me know how did it go :-)
Hi, Have configured a GI as you suggested, but when I simulate the inputs, the value stays as 0. I have checked on production robot on our facility that has inputs on, the value reads as id expect, but when I simulate the first bit on, it doesnt add 1 to the value... Do you need a program running to update the GO value or something?
If you want to simulate GI you need to use the simulation on the GI not on the DI, unfortunately, simulated DI doesn't "transfer to GI.
Great video, can you @Future Robotics make video same for PMC.
One day I'll make it :-)
Awesome vid, cheers
Great video(s)! I was wondering. Is there a way to increase the amount of GO and GI? Normally it's limited at 100. (I know that it's possible with DO and DI)
Hey @Rob Hebing,
Not that I know of, I think they are limited. Most of the things that you can change (increase) would be under controlled start -> program setup.
Just out of curiosity, why would you need more than 100 GO/GI ?
@@FutureRoboticsChannel I'm connected to a PLC and try to send position data of multiple(5 at the moment) positions at once(xyz,wpr,speed,ctn) so I can make a sequence on the side of the PLC with via positions. This uses a good portion of the 4096 points available. On the side of the PLC this is not very complex. But on the robot i'm trying to give some structure to all the data by using the group inputs(so the names will pop up in the code). For now it fits, I use 80 out of 100 GI's. I use EtherCat, the handling on Fanuc is very close to EthernetIP.
Thank you for taking the time to respond and make all the video's. Very much appreciated!
Switch to I/O link if possible and your problem will be solved. Than you will be able to use R[x] to transfer data.
I do not know how complex your application is, but maybe it's worth using Reference Positions and single DO associated with it. If you are using PR[x] in your program you can do the same, write a background program that will turn a DO when robot is close to a specific position (a lot of logic to use, but that will be a way around as well).
Once more I do not know the application, but making a sequence based on robot position sounds a bit scary. Please keep in mind if you are using $scr_grp[1].$mch_pos as your current position there is a big delay between when this variable refreshes and robot position.
You can also try using GO[x] "attached" to the point and send current "step" like this (best if you have distance before):
J P[x] 100% CNT100 GO[x]=100
or better
J P[x] 100% CNT100 DB 0.0mm, GO[x]=100
@@FutureRoboticsChannel Thank you! Im sending PLC data into a PR[x] to create 'offset data'. The userframe(s) is set in the robot, but the PLC will control the offset. It's for picking and placing products.
For position data I do use $scr_grp[1].$mch_pos as HMI feedback, but not for control purposes.
Could you please tell me more about this?
J P[x] 100% CNT100 DB 0.0mm, GO[x]=100
I don't exactly know what you mean...
Thanks for your hard work! (sometimes you make Fanuc seem easy ;-)
@@robhebing6831 FANUC is super easy and user friendly :-)
So DB is called DISTANCE BEFORE, I've used it mostly in glue and laser brazing. There are 2 options DB and TB (Distance Before and Time Before). To make it very simple:
DB - will trigger and action when the robot will be in a specified distance BEFORE the point (distance related)
TB - will trigger and action when the robot will be in a specified time BEFORE the point (time related)
TA - will trigger and action when the robot will be in a specified time AFTER the point (time related)
Example:
1: J P[1] 100% CNT100
2: J P[2] 100% CNT100 DB 5.00mm, DO[100]=ON
3: J P[3] 100% CNT100 TB 0.50sec, DO[100]=OFF
1. Robot moves to the point
2. Robot moves to the point and 5.00mm BEFORE he will reach the point he will turn DO[100]=ON
3. Robot moves to the point and 0.5sec BEFORE he will reach the point he will turn off DO[100]=OFF
Hi,
is it possible to extend the number of Group I/Os?
I don't think it's possible, but you can always write a background logic to transform Digital I/O to a group I/O 🙂, if you don't mind asking why do you need so many Group I/O's ?
@@FutureRoboticsChannel thanks for the answer.
We we want to transfer the data from plc to the robot. So we need for each point 6 GI and 6x16DI. Then we write the gi in a background logic in the PR.
@@danielj.3687 I might not fully understand, but you can do that using only 1 GI (depends on the speed you need to transfer the data) and additional 3 DI and 1 DO, this way you can send the data using 1 GI and use DI to determinate what you are sending X,Y,Z, etc.
easiest way would be to use I/O Link and use registers in this case, or if you have Ethernet use socket messaging
Thats the way we did it in the past. 1 GI to provide the coordinate and 1 GI to point at a register. But this needs a few seconds.
So we thought it could be "simpler and faster" to use more Gis in a static way:
GI1 = R[1: P1.x]
GI2 = R[2: P1.y]
:
:
Thanks for the tip with Ethernet Socket Messaging. I'm going to try this. We changed recently from Profinet to Ethernet Communciation. Because Profinet cards are not available.
@@danielj.3687 if you like in depth consultation you can always schedule them with me to go over problems and find solutions that might suite you:
f-robotics.com/consultation
Are you Polish by any chance or are varaible names just a coincidence?