Using Ignition With Wonderware/Aveva Historian

What is the best way to directly connect Ignition 8.1 to a Wonderware Historian (WWH) so our engineers and technicians can drag and drop tags from WWH and view historical data. We have a firmly entrenched Wonderware System Platform installation and don’t want to move all that to Ignition - although that might not be a bad idea. I’ve seen several posts about migration but that isn’t what I’m looking for. We want to Ignition to co-exist with WWH and use it, not the internal Ignition historian. We don’t want to rebuild our data acquisition and historian infrastructure. We do want to use Ignition for building mobile screens in Perspective. Any advice?

I’m an absolute noob - been using Ignition about a week now, so this could be something I should already know, so sorry about that. I’m really trying to compare/evaluate how to access WWH: SQL JDBC? OPC-UA? OPC-HDA?

1 Like

The WWH supports direct SQL access so just make a Microsoft SQL connection to it and write the queries you need to pull the historical trends.

You can use SQL bindings in perspective to get the data you need to feed the charting components.

The difficult part will be mapping tags you have created in Ignition (assuming you have made any) to the Wonderware Historian source.

If you have not made any tags yet. I would suggest you make a specific UDT to capture the data you need:

  1. OPC connection to actual PLC/Field devices.
  2. Tag name for the SQL query to the WWH
  3. SQL tag to grab the WWH data only when the date parameters change. Do not have it be polling all the time or it will flood your database connection with unnecessary queries!

You will find out quickly with Ignition there are many ways to implement a solution. Unlike Wonderware that really has only one path.


Thank you for your reply! I’m pretty good at SQL, and I can certainly do that. But I’m looking for a solution where engineers and technicians can do more of a drag and drop of existing tags in something they already see in the Ignition Designer. Writing a query that exposes every single tag in my WWH is something I could do, but is there some other way that could expose my WWH tags automatically to my engineers and techs so they don’t need me to write a new query every time they need something.

Please expand on how they would use these tags.
For animation bindings?
To get historical data?

Yes and yes. I think initially we’d be creating tables and charts of historical data a lot more frequently than we’d be making new HMIs.

Unfortunately there is no “Out of the box” method to do this.

What I would do is make a custom screen that did the query to pull all the WWH tag names and gave your engineers the ability to make new tags for doing HMI bindings on the fly. You could even do queries to get the real-time values out of the WWH if you want.

If you structure your UDT correctly then it would be pretty straightforward to do. You may be better off though just creating all the UDT tags you need up front so that the tags are then available for engineers and operators to choose from to create tables and charts as needed.

FYI. What you are going to find is that it all really comes down to having tags before you can do much of anything else in Ignition.

Sounds like someone needs to write a WWH tag and history provider module…

[/ducks and runs]


Does WWH support OPC HDA access?

Not directly. I’m trying to get the Integration Objects OPC DA & HDA Interface
for databases up and running now. It is supposed to be able to do that.

I think using the OPC COM module (and/or whatever licensing makes HDA connections available) is your only real option to get historical data aside from writing your own queries.

Similarly, if you need realtime data, an OPC UA or OPC Classic connection are your best options.

Thank you Kevin! That confirms I’m on the right track for what I hope to accomplish.

Does WW put the data into a single ‘wide’ table?
As of 8.1. you might be able to use ‘DB Table Historian Provider’:

Thank you for your reply! I should probably build a few tag sets (for lack of a better term) using the SQL interface to WWH.

I’d like to thank everyone for their prompt replies and valuable suggestions! Kudos to the forum. :slight_smile: I’ve discovered that any flavor of OPC other than UA is windows only, and obsolete. So no need for me to look there any more. I plan to further explore wide queries with the DB Table Historian Provider (thanks @PGriffith, I’m sure I could get this to work), OPC UA (thanks @Kevin.Herron), and UDT (thanks @brandon1).


@claude.hager … did you ever finish this? It is exactly what I’m looking for, too … can you put it up in the Exchange?

Good morning! We did not, although we are still very interested in exposing Wonderware Historian as a Historical Tag Source by some means. Right now I’m generating wide queries w/ SQL and then parsing out the individual tags into memory tags. Obviously that is non-browsable by our engineers and techs. :frowning: I am continuing to look into these 3 options:

Please let me know what you find out.

I’m using the DB Table Historian approach … and I’ve hit a snag … when I bind to the WWHistorian, it says that the keycolumn must be of integer type. So I was going to use the wwTagKey column. But … the “table” History in the WW HIstorian has a requirement (InSQL) that I use a valid TagName list … so I need more complicated WHERE clause … not sure how to do that

Sorry about the delay. I’ve been out on vacation. :slight_smile:

I setup a Query tag that runs this:

SELECT l.DateTime, l.TagName, l.Value, l.Quality, l.QualityDetail
FROM dbo.Live l
WHERE l.TagName IN (‘L408_Oven_Z1_Btm_PV’, ‘L408_Oven_Z1_Btm_Set’, ‘L408_Oven_Z1_Top_PV’, ‘L408_Oven_Z1_Top_Set’, ‘L408_Oven_Z2_Btm_PV’, ‘L408_Oven_Z2_Btm_Set’, ‘L408_Oven_Z2_Top_PV’, ‘L408_Oven_Z2_Top_Set’, ‘L408_Oven_Z3_Btm_PV’, ‘L408_Oven_Z3_Btm_Set’, ‘L408_Oven_Z3_Top_PV’, ‘L408_Oven_Z3_Top_Set’, ‘L408_Oven_Z4_Btm_PV’, ‘L408_Oven_Z4_Btm_Set’, ‘L408_Oven_Z4_Top_PV’, ‘L408_Oven_Z4_Top_Set’)
ORDER BY l.TagName;

And I have 16 Expression tags that extract the value from the dataset:


I run the query every 15 seconds, and I’m historizing the 16 Expression tags in Ignition.

Hope this helps!


Thanks for the idea … and … you are spot-on for pulling tag data from live Wonderware into a slowly-building Ignition historian.

The other use case is trying to build a self-serve tool for fetching the EXISTING data already in the Wonderware Historian – that was the urgent use-case that the customer was looking to understand.

For now, I’ve just set up a simple QUERY that pulls the tag list, and bound that tag name to another QUERY that populates a chart. The next phase/iteration is to rewrite all of that in Perspective. I’m working with the tech support group to do that … we’ll see if there’s a cute way of using the Historian capabilities or we’ll have to stick with SQL capabilities instead.

Thanks for the help.

I’m currently testing a 3rd party utility called “Integration Objects OPC UA Server for Databases”, that reads Live and History values from Wonderware Historian and then provides an OPC UA interface to that data. Which I can then use to create Ignition OPC tags.

It is possible to create tags in Ignition by pasting in a JSON data set of the tags to be added. All of the needed tag metadata is in the Wonderware Historian DB, and I can extract that with SQL. I plan to write a small application that would take the tag data and create a JSON data set of the Wonderware tags to be added to Ignition. This will give me an integrated tag provider that contains both Ignition and Wonderware tags.

The “Integration Objects OPC UA Sever for Databases” also connects to Oracle and SQL Server, which will allow us to surface values from these DBs onto tags in Ignition. This will be very useful as it allows us to get product attributes, specs, and production schedules into Ignition.

I’m not certain that this approach will work, but it is what I’m exploring right now.

1 Like