OPC-HDA support for Proficy Historian

I would like to connect to the GE Proficy Historian (Proficy.Historian.HDA) to view and store tags using Ignition. I see older posts regarding this when OPC-HDA support was not available in Ignition. It seems like the OPC COM module also has support OPC-HDA starting at some point but I don’t see it as an option when creating a new OPC Server connection. I am using Ignition v7.9.12, perhaps OPC-HDA was added later?

Also, if there is another (better) way to get data from Proficy to Ignition I would be interested to hear those suggestions as well.

Thanks,
Bob

https://docs.inductiveautomation.com/display/DOC79/OPC+COM

Scroll down or search for “Creating an OPC-HDA Connection”.

Makes sense. Thanks for the super quick reply!

I followed the doc and created a Historical tag provider and can add the tags from to an Easy Chart.

But now I want to create Tags in the designer and set them for historical storage to a SQL Server Ignition historian database. This would also allow me to have the tag values available to other simple controls. I’m probably missing something, but I am not seeing a way to easily do this.

Is the only option using system.opchda.browse and then create tags? I also tried just creating an expression tag with a tag patch no luck. Maybe it’s just a syntax issue.

Hello Bob,

I have same setup than you. Ignition gateway getting data from a GE Historian using the OPC-COM module (OPC-HDA protocol).

The connection is established with teh status running. I can browse the tags but when I select a tag and drag it on an easy chart, no data is displayed.

Any ideas?

It’s been a while, but I think we had the same problem with dragging on the tags and not getting data displayed. Not sure if this is the best way, but we wound up making expression tags for each of the desired PLC values with an expression like this this, just changing the Proficy tag path for each tag:

runScript('shared.getOpcHdaValue',0,'Proficy','Compact_PME.fm2_DelayFlow')

“getOpcHdaValue” is a function (below) in our shared script library.

Hope this helps!

Bob

def getOpcHdaValue(provider,path):
		"""
		OVERVIEW: Reads specified raw values from the specified OPC-HDA server using the supplied time interval
		ARGUMENTS:  provider - History Provider (string)
					path - Path to the object to retrieve from OPC-HDA server (string)
		RETURNS: Single value
		"""
		#use time interval of the last minute
		endTime = system.date.now()
		startTime = system.date.addMinutes(endTime, -1)
											
		#system.opchda.readRaw returns a list of results including OPC quality data
		#indicate the GE Proficy OPC-HDA server
		#the fifth argument indicates the maximum number of values to return, zero means unlimited
		q_values = system.opchda.readRaw(provider, [path], startTime, endTime, 1, 1)
		for value in q_values:
			#return only the tag value
			return value.values[0].getValue()
1 Like