Call Program in any way possible?

I have a UR10 CB3.1 (Polyscope 3.15) variant that im using for automated bending scheetmetal.
The idea for the program was that a barcode scanner would scan the product number and the software would call up the right program if avaliable.

At the moment this is all done in 1 program with blocks and i set the block as active.
But this way im worried ill hit a limit or problems. Im not talking about 5 or 10 programs blocks, im talking about at least 100 mayby up to a 1000 programs cropt in 1 program over time.
I know there are subprograms but i have workerd with those and i wasnt a fan. It worked oke but had some problems. (mayby because of the way i programmed it.)

Is there a way i can call a program. Not like a subprogram but reload the controller with a new program and installation. (installation may be important for some tasks.)
I havent found a way to call other programs in any way, not even via script.

If anyone knows the anwser, please share.

Do look into the Dashboard server as its possible to load and play/start programs through it, using a socket connection.
https://www.universal-robots.com/articles/ur/dashboard-server-e-series-port-29999/

Best Regards Casper

thank you for the reply but i have a UR10 not a UR10e.
This doesnt work for my application.

also this is not what im looking for for this application.
I need to load it from a program because a operator will be right next to it.

Interesting read tho.

wrong link then
https://www.universal-robots.com/articles/ur/dashboard-server-cb-series-port-29999/
but it Should still work, you will properly need to use it through a URcap then to fit it your application.

You may be able to do it using a Switch Statement.

I’m currently using a UR5 CB3.1 (Polyscope 3.15) integrated with a camera system to do part inspections. Currently have separate programs for each part, up to over 65 parts now. I have setup a top level program (loads on default) that uses Switch Statement and Subprograms. The subprogram just call the inspection part program. When shop floor operator powers on system, this top level program loads by default, a numeric keypad is displayed, operator enters part number, part inspection program runs for entered part number. The only limitation is the keypad is numeric - not alpha-numeric.

General program structure for using Switch Statement and Subprograms in my application is -

Top Level Program
Popup statement (Requesting user to enter part number)
Switch (user defined name) - i just used ā€œpartNumā€ for fx
Case 1 (where 1 is replaced by numeric number associated for a given part number - this is the number the operator will enter into the keypad)
Call Subprogram X (selected from list of Subprograms below)
Case 2
Call Subprogram Y
Case n
Call Subprogram Z

Subprogram X (Load desired part number program into Subprogram, and check ā€œkeep subprogram file updated with this programā€)
Subprogram Y
Subprogram n

1 Like

Just in case anyone stumbles upon this thread in the future:
I’ve built a URCap called ScanPilot that lets you load programs from barcodes on a Universal Robot. It also includes a switch-case node for barcode logic and a program switcher that works during execution. Could be useful if you’re dealing with lots of program changes or want to reduce operator errors.

There’s a demo version available here if you want to try it out:
:backhand_index_pointing_right: ScanPilot URCap - Palm Software

Just in case anyone stumbles upon this thread in the future:
I’ve built a URCap called ā€œScanPilotā€ that lets you load programs from barcodes on a Universal Robot. It also includes a switch-case node for barcode logic and a program switcher that works during execution. Could be useful if you’re dealing with lots of program changes or want to reduce operator errors.

There’s a demo version available here if you want to try it out:
:backhand_index_pointing_right: ScanPilot URCap - Palm Software

Hope that helps!

Hoi K.Koenders,

I work at a facility where we do a lot of HMLW (High mix low volume) production.
One way we found to work around this was to make a ā€˜recipe’ section in your program.
The idea is to have a popup, where the operator fills a product number, which is used to select a case corresponding to the product number.
In this switch case, you write into variables as per your recipe.
Let’s say for example how far in X and Y you want to make a bend, the angle for each etc.

Then once this has run, you can run a program that looks at specific things in your recipe, for example

If X bend = true,
do some stuff
end of if

If Y bend = true,
do some stuff
end of if.

I’m not sure if this is exactly what you will need.
This method makes it easy to generate new programs, but it is a pain to test, as you cannot just ā€˜move to’ variable waypoints.
But parameterized programs with recipes makes the workflow for adding new products much quicker. (Assuming it has been set up really good)