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.
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
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.
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.
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)