Partitioning points between projects?

(OK, I know I'm rambling on here, but I'm not fully clear on what the best solution would be for my particular use case)

I am experimenting with Ignition to create mock ups of physical user panels to help test the PLC projects that I write. Each project has a bunch of panels that are sort of the same between projects, but are not equal. Thus each project has its own collection of points of which some subset are not shared between projects. But as I only have a single test PLC, each project will talk to the same PLC at the same IP address. I also only deal with a small number of different PLC projects at a time, and generally switch to a new project every 6 months or so. Finally the goal is to be able to hand the solution for a single project to someone else, so that they can do their own testing, with their own PLC.

Now, I can partition each set of panels in their own project, but with a single GW, I have every tag of every project in the GW configuration, and this doesn't feel right to me, as I wonder what resources are consumed by all those points that are configured but not used in the current system I am developing.

In my use case, the only solution I can see is to partition each project into its own virtual machine. That way I can start a singe project and know that I am only dealing with the resources related to that project. To that end I built a VM using a server based version of Ubuntu that "only" runs to 6GB that I can clone for each project. But sending a 6GB VM to someone on the other side of the country is harder than sending a GW backup of a few tens of MB.

In my mind the proper solution would be to partition the points on the GW with the project, and be able to start/stop whole projects as required. Perhaps this could be achieved through a separate OPC UA provider for each project, but that still means that a GW backups contain all points and all projects, and there are hoops to jump through to ensure that only the desired project is running.

It also may be that I don't fully understand how best to partition projects for my use case, or that the design goals of Ignition are not well suited for what I want to do.

What other architectures would people suggest for my use case?

Separate VMs (or Docker containers) is the right answer. IMNSHO. There's no reason you can't grab a VM's gateway backup to deliver to a client. No need to ship entire VM images.

(Tags do not belong to projects in Ignition--the best you can do is use separate tag providers per project.)

Now that I think about it, I think that hybrid solution using a VM is the way to go.

  • I have one VM that runs Ignition.
  • I develop a single project in that VM.
  • When I am happy with that project I make a GW backup tagged with the project name.
  • When I need to swap projects I restore the appropriate GW backup.
  • When I need to send my work to someone else, I only send the relevant GW backup.
1 Like