I am working on a new Vision project that is going to be controlling one machine/process. After we get this project done, we are going to duplicate the project 5 more times on the same gateway to control 5 other machines.
I have created a unique database connection, tag provider, and OPC path for each of the machines.
My plan is:
Duplicate the 'good' project.
Change default tag provider and database provider
Export tags, in Notepad++ change OPC Path to the new OPC Path and then Import into the New Tag Provider in Tag Browser.
I tried this and the only issue that I ran into was that when I use the Tag selector on the Property Bindings, I have to manually delete the Tag Provider from the Binding Property or it won't use the selected Project Default. Is there away to stop the Tag Selector from adding the Tag Provider? Or is there away to mass change a projects Tag Providers?
Are there any other gotchas that I need to look out for?
Make a folder per machine in the same tag provider. Share all the UDTs. Make every top-level window use a string parameter (root container custom prop) that contains the folder path of one machine.
Do all tag bindings indirectly in your windows using that tag path. Pass the tag path (or concatenations) to nested templates and popup windows.
One project. Same windows and templates run all the machines.
You can also make the database a parameter in your named queries.
I would only entertain separate projects & providers for the same views if you also need to control / limit access to each machine differently (User1 can operate only Machines 1 & 3, User2 can only operate Machine 2, etc). In that scenario, use project inheritance, so that desired resources auto-propagate from a parent project, and then you apply overrides where necessary (default tag provider & database, project & provider permissions, etc). While this can be handled in tag security alone, I prefer the multiple layers that a separate project & provider awards.
Not that I'm aware of...but you can find/replace all views after you're done developing to double-check that you removed them all
We had a similar project layout where we used a client script to grab the client IP, determine which machine it was, and write that value to a client tag that was used for the indirection and configuration in the project.
I've done it with different tag providers. It will work but requires a little extra setup in order for the UDTs to be shared. In my set up the default tag provider has all of the UDT definitions. There's an EAM task to "send" the UDT definitions to each of the tag providers. If a UDT needs to be updated make the changes on the default provider and run the EAM task. I did it this way because we had a master gateway that needed access to all tags and multiple edge gateways (as a fallback) that each needed access to a subset of tags. Each edge can only have one tag provider and they were different for each (the projects were still the same, some screens were just not reachable based on if it was the edge gateway or the master gateway).
That's one thing I wish there was a way to do.. maybe someday we'll get inheritable tag providers like projects?
We're using multiple providers for one of our offerings, and it makes it nice and clean as they each have their own project (inheriting from a template) as well, so everything is contained and easily handled for access control. But having to remember to copy UDTs around is annoying
2025's ICC, Toyota had a presentation that was a fascinating and unique solution I never thought of. It was two years ago so my memory is hazy (I'm sure there's VODs of it somewhere?)
Essentially they used MQTT and the nature of pub/sub to subscribe gateways and tag provider UDT defs to a master broker and published updates to UDT defs through the broker. Easily distributing out updates
Pretty cool concept imo. I'm not really at a point (and might never be) in my industry to need that, but that was probably one of the most unique presentations of ICC in recent memory for me (most are sales pitches for a product). Shame Toyota didn't come out again for 2026 (or at least they didn't present)
Watch out for your database connection names inside your SQL queries, if you hard coded the connection name instead of using a parameter, you'll have to change those manually too. Also, check your Vision Client tags. Sometimes they don't migrate perfectly if you don't sync the project properties first. Test the duplicated project in a separate environment before you put it live.