I'm using the RDK_S3 program on a Fanuc R30i controller to connect to RoboDK over Ethernet. I run the RDK_S3 program first, which works fine, but then when I try to connect from RoboDK I get a INTP-311 fault on the controller which says "Uninitialized Data." This error is generated by line 507 in RDK_S3 and prevents the connection from happening. The odd thing is that this only randomly happens-- sometimes it doesn't happen and I get the connection without further problems while other times I get the error and the connection fails.
It is indeed always line 507, but it doesn't always happen. If I keep trying it eventually connects, but I haven't found a sequence of actions that allow it to work every time. The driver was downloaded last week and just says V9 as the version. Not sure how to access a more detailed version number, that is just the version used as the folder name the driver has on my PC. RoboDK version is 5.5.4. I'm not at the robot currently so I'll have to send the Fanuc controller software version later.
Once a connection is achieved there are no further problems from that point on.
There's a lot of components with various version numbers on the Fanuc software side, but I think the ones you probably want are these:
ARC Mate 120iD/35 V9.30P/29
Servo Code V11.0
Note that I also get the same fault message from line 507 when disconnecting from the robot. This doesn't impact my project, but might give a clue to the problem.
The programs I am running do change speed, but this error happens before any programs are ever run. The sequence to create the error is this:
1) Clear any running programs on the Fanuc controller using Function->Abort All
2) Clear all faults on Fanuc using Shift->Reset
3) Run RDK_S3 on the Fanuc controller by selecting it and pressing Shift->FWD
4) Verify Busy status is green and "Running" message is displayed with no faults
5) Click the Connect button on the robot connection window in RoboDK
6) The connection status on RoboDK will either turn green and everything is working, or it will remain orange and keep trying to connect while the INTP-311 fault is triggered on the Fanuc
I can not seem to find any action that impacts the seemingly random probability of outcomes in step 6 above. Sometimes it works, sometimes it doesn't. I know in the logic world of computers nothing is truly random and these kind of problems are tough to solve because the only truly random factor is what the human operator is doing :)
Thank you for your feedback, my guess is there may be something quirky with how the V9 fanuc controllers work, in order to prevent any problems on the PC side before connecting, you can double click the disconnect button to make sure it's running a fresh instance of the driver when you next hit connect.
From what I understand this only affects the connection phase right? Once it connects everything is fine right?
Yes, once it connects then the error never occurs. When the error does occur, clicking disconnect and re-running the RDK_S3 program usually fixes it. Sometimes it takes several tries.
I did find a much bigger problem yesterday that makes online programming a bigger risk than offline programming. It appears that when running a program on the robot from RoboDK, if a fault occurs on one of the commands that are sent over, once the operator clears that fault on the teach pendant then the rest of the commands in the program continue to run. I don't know what the hand shaking looks like between these two programs, but when an error occurs on the Fanuc then RoboDK needs to be aware of it and stop sending further commands to the Fanuc. The program needs to just end at that point because the robot is now in an unknown state from the perspective of RoboDK. In my case, the very first motion command the robot receives is one that removes a part from a holding fixture. This command failed, which resulted in the arm still being in it's home position with the part locked into the fixture while subsequent motion commands started coming in after the fault was cleared. This scenario can result in some serious and expensive damage. I don't know if the commands were buffered on the controller or if RoboDK just continued to send them over without knowing about the fault. I would think each command sent by RoboDK would have to wait for some kind of completion acknowledgement from the robot controller before sending the next command.
I think RoboDK would also benefit from some UI improvements that would make running programs easier. There should be a standard button set for run, pause, stop on the tool bar. Currently I only see a pause button. Some kind of large, clear visual indicator that shows when a program is running on the robot would be useful too, and a fault indicator that shows when a fault occured on the robot to mirror the fault alarm on the teach pendant if possible. The Run on Robot feature sort of transforms RoboDK into the realm of an HMI application and would benefit to having some of these common control interfaces found on HMI apps, along with the more restrictive and hyper safety oriented fault handling as found on the robot controller itself. Scenarios like the one above where the robot starts moving unexpectedly should be very difficult to accidentally happen.
That does sound like concerningly dangerous behavior from the robot? Do you which version of the fanuc firmware your robot is running so I can try and reproduce this.