This project has moved. For the latest updates, please go here.

openPDC to PI historian

Mar 16, 2012 at 2:15 PM


This is Zoe from FNET Lab UTK.  We are trying to design the future FNET server infrastructure, which ideally uses openPDC as data concentrator and archives data into PI System. I saw in the "overview" section that “archive and storage of openPDC supports for most historian(e.g. PI) through output plug-in adapter". Could you please explain more about how exactly would be the best way for openPDC to talk to PI?(what is the particular output plug-in adapter?) The solution we think of so far is to use openPDC to output to one RDBMS, and use PI RDBMS via ODBC Interface to put the data into PI Archive. Is this the way you would recommend?

And, we are able to get the FNET frequency, angle, voltage magnitude data in PMU Connection Tester, but only frequency in openPDC. Is there a way that we can also see the angle and voltage magnitude measurement in openPDC? 

Thank you so much for your help.

Mar 16, 2012 at 2:25 PM

Hi Zoe,

The AdoOutputAdapter should be able to send data directly to PI via the ODBC interface. Please have a look at these discussions to help you understand how to set up the adapter.


Mar 16, 2012 at 2:40 PM


Thank you very much for the fast response!

I will read through the two posts.

Thanks again.


Mar 16, 2012 at 3:01 PM


I just remembered that there was one other discussion that talks about changes made to the Measurement fields since those posts were written.

If you are using openPDC SP2, you will need to download the AdoOutputAdapter Hotfix which is available on the Downloads page. Additionally, the possible fields to hold measurement data have changed. Give me a few minutes and I'll update the relevant information in Ritchie's posts and post that here.


Mar 16, 2012 at 3:07 PM

The goal of the ADO Output Adapter is to be able to use any database as an archive source (e.g., SQL Server, MySQL, Oracle or even OSI-PI via ODBC) - it is designed to be flexible, but has a few requirements for use:

  1. The connection string needs to define a table name in which to store the data.
  2. This table needs to have fields to hold measurement data - possible fields are:
    1. a Guid based ID field
    2. a string based MeasurementKey field
    3. a string based TagName field
    4. Timestamp field (can be a date/time or long integer)
    5. an integer based StateFlags field
    6. a double-precision Value field
    7. Any other IMeasurement properties can be defined as well
  3. You are only required to define one field for identification (one of "ID", "MeasurementKey" or "TagName"), then a timestamp field and a value field - other fields are optional
  4. The database field names can be any name, the connection string will map the property name to the field name, for example:
    1. tableName=DataValues; IDFieldName=SignalID; TimestampFieldName=Time; ValueFieldName=Value; timestampFormat="dd-MMM-yyyy HH:mm:ss.fff"
  5. A database connection string must be provided in the connection string parameter called dbConnectionString, for example:
    1. dbConnectionString = { Data Source=localhost\SQLEXPRESS; Initial Catalog=openPDC; Integrated Security=SSPI };
  6. A database provider string must be provided to tell the system which ADO assemblies and types to use for the connection, for example:
    1. dataProviderString = { AssemblyName={System.Data, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089}; ConnectionType=System.Data.SqlClient.SqlConnection; AdapterType=System.Data.SqlClient.SqlDataAdapter };
  7. You can look in the openPDC.exe.config settings file under the <exampleConnectionSettings> section for examples of database connection and provider strings.
  8. You would then add a new historian output adapter from the openPDC Manager (accessible via Adapters /Historians menu) or the Configuration Setup Utility using:
    1. Type Name = AdoAdapters.AdoOutputAdapter
    2. Assembly Name = AdoAdapters.dll
  9. Once enabled, you should be able to start using your ADO data source as a historian for the openPDC :-)
Mar 16, 2012 at 3:22 PM


Thanks a lot for all the help! 

I have read through the first post, and saw the examples for connection strings for several DBMSs. So,  I am wondering whether you happen to have some example cases for OSI-PI as well, which would be really great. But I completely understand if there isn't any. 

I will read all those posts you recommend thoroughly and see whether I can get it work. Thanks again!


Mar 16, 2012 at 7:28 PM

Hi Zoe,

We do not have example connection strings for OSI-PI. I can make a guess, but I can't guarantee these will work.

  • Data Source=host; Initial Catalog=dbName; User ID=user; Password=pass
  • Data Source=host; Initial Catalog=dbName; Integrated Security=SSPI


Nov 20, 2012 at 4:27 PM

I am trying to connect openPDC to a PI Historian as well. Is there an example of a connection string or have you successfully connected Zoe? I am trying to use the following configuration:
type Name: HistorianAdapters.RemoteOutputAdapters
Assembly Name: HistorianAdapters.dll
Connection String: server=http://PI; port=8080;

I get the message:
Attempting connection...
Connection attempt failed:Client is currently not disconnected


Any insight or guidance on where to get the correct connection would be great, thanks in advance!