Breaking up Project with one tag server into two servers

I currently have one project with one tag provider on one gateway. Within this project is six identical furnaces.
They now want to break it up into one front end gateway, and two backend gateways. The front end gateway will house the visuals (perspective) and the two backend gateways will be responsible for connecting to the six plc’s with one backend gateway connecting to furnaces 1-5 and the other backend gateway connecting to furnace 6.
I understand that I have to create two remote tag providers on the front end, one to connect to furnaces 1-5 gateway and the other to connect to furnace 6 gateway.
I am trying to keep it to one project if possible. If I already have everything dynamically set up to connect to different furnaces but using one gateway, how would I dynamically change things to now not only dynamically pick a different furnace but also dynamically pick a different tag provider???

The indirection, with indirect tags, can be at a variety of levels.

I guess you currently have the furnace number as an indirect parameter for the tags:


where {0} points to the furnace number.

You can add another parameter to your tags:


where {0} points to the tag provider and {1} to the furnace number.

You will either need to pass the tag provider along with the furnace number to views or set up some type of mapping parameter (expression on a custom property) to determine the tag provider based on the furnace number, if(furnace = 6, '[furnace_6]', '[furnace_1_5]').

1 Like

I recommend passing a tag path string that is complete from provider through the folder that contains the common structure.

1 Like

Is this what you mean? I have a data type called Furnace. I have six instances of that Furnace. I just added a new parameter to UDT Furnace called TagProvider. My two tag providers are either BladesideHT for furnaces 1-5 and BladesideSR for furnace 6. I would set TagProvider to either HT or SR. However now I would have to go through every single tag within my UDT’s and dynamically set the tag path of every one to include this new parameter? If I did create this TagProvider parameter what would I need to do throughout the program to use it and make it work? If you can only have one default tag provider for the project how would you get it to work when you call out, for example, [BladesideHT]…or [BladesideSR]…?

I am trying to get it done with least amount of work and changes. My other option is to copy and paste, create two identical projects, with the default tag provider set differently for the two projects, and then anywhere I have actually called out the tag provider I would do a copy and paste and replace BladesideHT with BladesideSR.

You can include a tag provider name in the single tagpath string you pass to windows and/or templates and/or views. Within your windows and templates your indirect bindings all start with {1}/ for this tagpath. After the slash is the constant part that matches your UDT structure. (The tagpath is a complete path to the folder containing one of the replicated structures.)

Once you do this, you can create these UDTs at any folder nesting level you need, in any provider you need.

Thanks. That is what I was thinking. I already have this project created and tested so I am trying not to have to redo everything meaning going through every view, window, and template. I was thinking I could create a session property because I will have two different sessions and bind that session property to the hostname (IP or computer name) and then I can dynamically set the tag provider to either BladesideHT or BladesideSR. Then I could use that for indirect tag addressing to populate that part of the tag provider.

Next time I will do this differently, unfortunately the customer told us this after the project was already done.

Think I will go with the two project method this time but will take this into account next time.

Definitely pays to design it correctly from the start to minimzie work.

1 Like