Hi, how reliable is virtual controller in Roboguide? From time to time I'm getting errors when executing my code (like INTP-311,INTP-106), while code is correct. If I restart PC/Roboguide, program works fine after that. It's very annoying as I don't know if code is incorrect or it just a quirk of RG.
Reliability of Roboguide virtual controller
-
PetrBroza -
November 30, 2020 at 11:56 AM -
Thread is Unresolved
-
-
What do you want to hear?
From time to time RG needs a restart. This is the way nowadays complex software works.
-
Pretty reliable on my end to the point where I can dump and go my .TP, IIC, DCS, Registers, etc etc. It's like having a robot controller in front of you. Usually when I receive the alarm codes you mentioned it is MY code that is wrong. Make sure you initialize your Position Registers before using them. I will go into the Pos Reg list and type in all zeroes to XYZWPR to initialize the PR I want to use. You can do it in code to by using PR[x] = LPOS-LPOS, which will do the same thing as manually typing in all zeroes.
As far as INTP-106: Continue request failed - If you're trying to go backwards in your program to another point and that point has a WAIT (for example) after it, the robot will not back up behind the WAIT statement.
To put it bluntly, there are reasons you are receiving those alarms and it is probably not the virtual robot controller. Keep researching and learning and definitely ask questions! We are here to help!
-
I understand that no software is perfect. It's just that I'm getting errors which I shouldn't be getting.
For example "INTP-311 Uninitialized data is used". No matter what I done with register, I was getting this error every time, when function was used in program with input parameters, then suddenly it start working, with no change in the code.
Code
Display MoreHome program: CALL INPOSITION(210,100,50)) Program INPOSITION: UFRAME_NUM=1 UTOOL_NUM=1 R[100]=0 PR[100]=LPOS IF (PR[100,1]>AR[1] AND PR[100,2]>AR[2] AND PR[100,3]>AR[3]) THEN R[100]=1 ENDIF
When I deleted input parameters for program call, it was working and replaced AR with constants, it was working.
-
You have a syntax error above on line 2. Extra parenthesis.
-
I understand that no software is perfect. It's just that I'm getting errors which I shouldn't be getting.
For example "INTP-311 Uninitialized data is used". No matter what I done with register, I was getting this error every time, when function was used in program with input parameters, then suddenly it start working, with no change in the code.
Code
Display MoreHome program: CALL INPOSITION(210,100,50)) Program INPOSITION: UFRAME_NUM=1 UTOOL_NUM=1 R[100]=0 PR[100]=LPOS IF (PR[100,1]>AR[1] AND PR[100,2]>AR[2] AND PR[100,3]>AR[3]) THEN R[100]=1 ENDIF
When I deleted input parameters for program call, it was working and replaced AR with constants, it was working.
Agreed, no software is perfect. I've blamed Roboguide many times thinking it was their fault, but every time it has turned out to be mine, that's what I'm getting at. Every time I've received Uninitialized data it's because I didn't setup a PR before hand or I didn't have the right GROUP MASKED to the job.
-
Thanks. How do I properly set up PR? What is group masking used for?
-
Thanks. How do I properly set up PR? What is group masking used for?
Well the PR[100]=LPOS should be doing the trick, that is grabbing the robot's current linear position and config and placing it into PR[100]. The Group Mask is setup in the Job Details page. SELECT -> cursor to job -> F2 for Detail -> Group Mask (*, *, *, *, *, *) or however many asterisks there are. Under the Group Mask you set an asterisk to a 1 using the function soft keys. What this tells the robot is your job uses only the group masked in the job.
So if you have lets say two robots on one controller with a turntable, you have 3 groups (Robot 1 = Group 1, Robot 2 = Group 2, Turntable = Group 3). If you need a job that only spins the turntable 180° from side a to side b, you would MASK the ROTATE_TT.TP job to Group 3, so it would look like: Group Mask: (*, *, 1, *, *, *). Any PR's you have inside the ROTATE_TT.TP job will only write to Group 3 of the PR. So if you had PR[100] in that job you would only use data for Group 3 of PR[100].
Not sure if you have multiple groups, but if you do check that they are masked correctly. Even if you have only 1 group, you still need to make sure it is masked to the job, so the robot knows which group to place the data into. Hopefully that makes sense, I can explain better if need be - I don't always do the best job...
-
That's what I'm saying I have PR[100]=LPOS command, but it's giving me "INTP-311 Uninitialized data is used" (there were data in PR[100] before anyway).
Thanks for great explanation of groups. I do have 1 robot and masking is set correctly (1, *, *, *, *, *).
-
That's what I'm saying I have PR[100]=LPOS command, but it's giving me "INTP-311 Uninitialized data is used" (there were data in PR[100] before anyway).
Thanks for great explanation of groups. I do have 1 robot and masking is set correctly (1, *, *, *, *, *).
Huh, well if you do have the correct group masked inside the job using the PR then yes that should be working...I know I've ran into this before when making a home program a while ago. I promise you it was an issue with my program and NOT Roboguide. I am kicking myself for not remembering what the darn problem I had when getting the INTP-311 before when everything seemed all well and good... maybe I took notes...hmm...
-
Did you fix the syntax error I mentioned yet? The extra parenthesis.
-
I made mistake when pasting code in the forum, code in controller is correct.
Error disappeared after restarting controller and I'm not able to replicate it again.