<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>openpdc Wiki &amp; Documentation Rss Feed</title><link>http://openpdc.codeplex.com/Wiki/View.aspx?title=Home</link><description>openpdc Wiki Rss Description</description><item><title>New Comment on "Documentation"</title><link>https://openpdc.codeplex.com/documentation?&amp;ANCHOR#C27597</link><description>Dear Sir&amp;#47;Madam,&amp;#10;&amp;#10;I am Giang from Vietnam. I am learn about the software OpenPDC.&amp;#10;&amp;#10;I am currently involve in the project &amp;#34;Building a Lab Synchrophasor Model for an University in Vietnam&amp;#34;.&amp;#10;&amp;#10;According to my plan, the Lab Synchrophasor Model will includes the components below&amp;#58;&amp;#10;- The software OpenPDC administered by the Grid Protection Alliance &amp;#40;GPA&amp;#41;&amp;#10;- Five PMUs &amp;#40;using the set of SEL- 571A&amp;#41;&amp;#10;- One GPS clock &amp;#40;using the set of SEL 2407&amp;#41;&amp;#10;- Two Test Sets&amp;#10;&amp;#10;However, currently, I have some problems for this modle, my problems are&amp;#58;&amp;#10;- I don&amp;#39;t know all components above are enough to run the Synchrophasor model&amp;#63;&amp;#10;- How I can connect the software OpenPDC to PMUs&amp;#63;&amp;#10;- How I can send Synchrophasor data from PMUs to OpenPDC&amp;#63;&amp;#10;&amp;#10;Could you please give me some guides for the problems above&amp;#63;&amp;#10;Looking for your helps&amp;#33;</description><author>gianghtdbk</author><pubDate>Tue, 28 May 2013 06:38:47 GMT</pubDate><guid isPermaLink="false">New Comment on "Documentation" 20130528063847A</guid></item><item><title>Updated Wiki: Documentation</title><link>https://openpdc.codeplex.com/documentation?version=80</link><description>&lt;div class="wikidoc"&gt;
&lt;ul&gt;
&lt;li&gt;User's Documentation&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=FAQ&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Use and Configuration Guides&amp;referringTitle=Documentation"&gt;Use and Configuration Guides&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Introducing the openPDC Manager&amp;referringTitle=Documentation"&gt;Overview of the openPDC Management System&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Manager Configuration&amp;referringTitle=Documentation"&gt;How to Use the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Using%20a%20&amp;quot;Gateway%20Style%20Connection&amp;quot;%20between%20openPDCs%20and%2for%20openPGs&amp;referringTitle=Documentation"&gt;Using a &amp;quot;Gateway Style Connection&amp;quot; between openPDCs and/or openPGs&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Controlling UDP data loss" href="http://openpdc.codeplex.com/wikipage?title=Controlling%20UDP%20Data%20Loss"&gt;Controlling UDP data loss&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000"&gt;&lt;a href="/wikipage?title=Remote%20Console%20Security"&gt;Remote Console Security&lt;/a&gt;&lt;em&gt;&lt;strong&gt; NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Help Me Choose Diagrams&amp;referringTitle=Documentation"&gt;Help Me Choose Diagrams&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Config File&amp;referringTitle=Documentation"&gt;Configuration File Settings&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Uniform CPU Utilization Settings" href="http://openpdc.codeplex.com/wikipage?title=Settings%20for%20Uniform%20CPU%20Utilization%20"&gt;Setting for Uniform CPU Utilization&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Configuration Commands&amp;referringTitle=Documentation"&gt;openPDC Console Commands to Adjust Configuration Settings&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://openpdc.codeplex.com/wikipage?title=OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Data Quality Monitoring&amp;referringTitle=Documentation"&gt;Data Quality Monitoring Adapters&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Connection Strings&amp;referringTitle=Documentation"&gt;Adapter Connection String Syntax&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Historian Distribution Notes&amp;referringTitle=Documentation"&gt;Distributed Historian Setup Notes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Archive Data Recovery Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Archive%20Data%20Recovery%20Operation"&gt;Automated Archive Data Recovery Operation&lt;/a&gt;&amp;nbsp; (a.k.a., Missing Data Gap Filling)
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Connection Failover Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Connection%20Failover"&gt;Automated Connection Failover Operation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Adjusting Output Stream Labels to Meet ISO Naming Standard" href="http://openpdc.codeplex.com/wikipage?title=Adjusting%20Output%20Stream%20Labels%20to%20Meet%20ISO%20Naming%20Convention"&gt;Adjusting Output Stream Labels to Meet ISO Naming Standard&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://pmuconnectiontester.codeplex.com/documentation" target="_blank"&gt;PMU Connection Tester&lt;/a&gt; (accessed via host site)
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Manual Configuration&amp;referringTitle=Documentation"&gt;How to Manually Configure the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Bulk apply line-to-line adjustment" href="http://openpdc.codeplex.com/wikipage?title=Bulk%20apply%20line-to-line%20Sqrt%283%29%20adjustment%20to%20all%20voltage%20magnitudes"&gt;How to Bulk Apply line-to-line Sqrt(3) Adjustment to all Voltage Magnitudes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Overview&amp;referringTitle=Documentation"&gt;Single Page Overview&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;Developer's Documentation
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started (Developers)&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Frequently Asked Questions (Developers)&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Build openPDC Manager (Developers)&amp;referringTitle=Documentation"&gt;Build the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Data Access Options (Developers)&amp;referringTitle=Documentation"&gt;Data Access Options for the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Device to Data (Developers)&amp;referringTitle=Documentation"&gt;Device to Data in 5 Easy Steps&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=About the Code (Developers)&amp;referringTitle=Documentation"&gt;High-level Code Structure and Class Relationships&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Custom Adapter (Developers)&amp;referringTitle=Documentation"&gt;How to Create a Custom Adapter&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Two Custom Adapter Examples&amp;referringTitle=Documentation"&gt;Two Custom Adapter Examples&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Adapter Synchronization (Developers)&amp;referringTitle=Documentation"&gt;Multiple Adapter Synchronization&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="About the Signal Reference" href="http://openpdc.codeplex.com/wikipage?title=About%20the%20Signal%20Reference"&gt;About the Signal Reference Field&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Using Hadoop (Developers)&amp;referringTitle=Documentation"&gt;Processing openPDC data with Hadoop&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Code Blog (Developers)&amp;referringTitle=Documentation"&gt;Code Blog of Relevant Changes&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you can get a quick optimization of the openPDC run-time assemblies by using the .NET native image cache NGen. To apply these optimizations after the openPDC has been installed, run the following commands from an administrative console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CD &amp;quot;C:\Program Files\openPDC\&amp;quot; &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install openPDC.exe &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install TVA.PhasorProtocols.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install HistorianAdapters.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install PowerCalculations.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install ICCPExport.dll &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The most recent system API help and documentation can be downloaded from the &lt;a href="/wikipage?title=Nightly Builds&amp;referringTitle=Documentation"&gt;
Nightly Builds&lt;/a&gt; - it's included with the binaries. This help can be used as standalone, compiled help files (.chm) or can be directly
&lt;a href="http://openpdc.codeplex.com/Wiki/View.aspx?title=Getting Started (Developers)#integrate_help"&gt;
integrated within Visual Studio&lt;/a&gt;. We have also made our help system available online:
&lt;a href="http://www.gridsolutions.org/NightlyBuilds/openPDC/Beta/Libraries/Help/"&gt;
Synchrophasor Protocol Classes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ritchiecarroll</author><pubDate>Tue, 23 Apr 2013 13:52:59 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130423015259P</guid></item><item><title>Updated Wiki: openPDC OSI-PI Adapters</title><link>https://openpdc.codeplex.com/wikipage?title=openPDC OSI-PI Adapters&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;Minimum Requirements&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;PI SDK v1.4.0 or greater (use 32-bit or 64-bit to match openPDC) must be installed on the openPDC server
&lt;/li&gt;&lt;li&gt;Desired PI server connection must be added to the SDK &lt;/li&gt;&lt;li&gt;Access to PI system using PI trust (preferred) or explicit login
&lt;ol&gt;
&lt;li&gt;Connection must have access to read/write any points mapped to openPDC. &lt;/li&gt;&lt;li&gt;If the metadata synchronization is enabled, connection must also have read/write access to the pipoint database.
&lt;/li&gt;&lt;/ol&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Output Configuration on an Existing openPDC Installation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Open the openPDC manager and navigate to &lt;strong&gt;Outputs &lt;/strong&gt;&amp;gt;&lt;strong&gt; Historians&lt;/strong&gt;.
&lt;/li&gt;&lt;li&gt;Click the &lt;strong&gt;Clear&lt;/strong&gt; button to create a new historian. &lt;/li&gt;&lt;li&gt;Type name is PIAdapters.PIOutputAdapter. Assembly name is PIAdapters.dll. &lt;/li&gt;&lt;li&gt;Connection string should be the following: server&lt;em&gt;=&amp;lt;servername&amp;gt;&lt;/em&gt;;
&lt;ol&gt;
&lt;li&gt;For explicit logins, add the following: &lt;br&gt;
username=&lt;em&gt;&amp;lt;pi username&amp;gt;&lt;/em&gt;;password=&lt;em&gt;&amp;lt;pi password&amp;gt;&lt;/em&gt;; &lt;/li&gt;&lt;li&gt;To have openPDC create new PI tags for all archived measurements if they don&amp;rsquo;t already exist, add the following: runMetadataSync=True;
&lt;/li&gt;&lt;/ol&gt;
&lt;/li&gt;&lt;li&gt;Save the adapter configuration. &lt;/li&gt;&lt;li&gt;Navigate to &lt;strong&gt;Manage &lt;/strong&gt;&amp;gt;&lt;strong&gt; Measurements&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;Choose each measurement that should be archived to PI, and change its historian to the PI historian that was set up on the Historians page.
&lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Output Configuration on a new openPDC Installation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;In the configuration setup utility, make sure to check the &amp;ldquo;Setup / change the primary historian&amp;rdquo; checkbox on the &amp;ldquo;Apply configuration changes&amp;rdquo; screen.
&lt;/li&gt;&lt;li&gt;On the next screen, which is the &amp;ldquo;Set up primary historian&amp;rdquo; screen, select &amp;ldquo;PI : Archives measurements to a PI server using PI SDK&amp;rdquo;
&lt;/li&gt;&lt;li&gt;On the &amp;ldquo;Set up historian connection string&amp;rdquo; screen, set the servername property to the name of your PI server from the PI SDK.
&lt;ol&gt;
&lt;li&gt;For explicit logins, set the values of the username and password properties. &lt;/li&gt;&lt;li&gt;To have openPDC create new PI tags for all archived measurements if they don&amp;rsquo;t already exist, set the RunMetadataSync Property to True. Otherwise, set it to false.
&lt;/li&gt;&lt;/ol&gt;
&lt;/li&gt;&lt;li&gt;Continue with the setup utility. This will make all your measurements archive to PI by default.
&lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Real-time Input Adapter Configuration&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The real-time PI input adapter connects to PI using event pipes, which is the same mechanism process book uses to retrieve real-time data. The adapter also uses the
 connect on demand feature in openPDC, which allows it to only query PI for data being used an action adapter or output adapter.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the openPDC manager, go to &lt;strong&gt;Adapters&lt;/strong&gt; &amp;gt; &lt;strong&gt;Input&lt;/strong&gt;
&lt;strong&gt;Adapters&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;Enter a name for the PI input adapter. &lt;/li&gt;&lt;li&gt;For the type of adapter, choose &amp;ldquo;PI : Reads real-time measurements from a PI server using PI SDK.&amp;rdquo;
&lt;/li&gt;&lt;li&gt;Set the ServerName property to the name of the PI server from the PI SDK &lt;/li&gt;&lt;li&gt;If you wish to connect to the PI server using explicit logins, set the UserName and Password properties too.
&lt;/li&gt;&lt;li&gt;Add an additional property to the connection string: &amp;ldquo;ConnectOnDemand=True;&amp;rdquo;
&lt;/li&gt;&lt;li&gt;Next, go to the &lt;strong&gt;Manage&lt;/strong&gt; &amp;gt; &lt;strong&gt;Measurements&lt;/strong&gt; screen.
&lt;/li&gt;&lt;li&gt;You will need to manually add measurements that you wish to make available in openPDC. Either the point tag or the alternate tag must match the point&amp;rsquo;s tag in PI. It is recommended to create a separate historian (probably virtual output historian)
 to archive all measurements and set the PI adapter&amp;rsquo;s output measurement keys to everything on the historian with a FILTER expression.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>swilliam26</author><pubDate>Tue, 23 Apr 2013 12:41:43 GMT</pubDate><guid isPermaLink="false">Updated Wiki: openPDC OSI-PI Adapters 20130423124143P</guid></item><item><title>Updated Wiki: Documentation</title><link>https://openpdc.codeplex.com/documentation?version=79</link><description>&lt;div class="wikidoc"&gt;
&lt;ul&gt;
&lt;li&gt;User's Documentation&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=FAQ&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Use and Configuration Guides&amp;referringTitle=Documentation"&gt;Use and Configuration Guides&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Introducing the openPDC Manager&amp;referringTitle=Documentation"&gt;Overview of the openPDC Management System&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Manager Configuration&amp;referringTitle=Documentation"&gt;How to Use the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Using%20a%20&amp;quot;Gateway%20Style%20Connection&amp;quot;%20between%20openPDCs%20and%2for%20openPGs&amp;referringTitle=Documentation"&gt;Using a &amp;quot;Gateway Style Connection&amp;quot; between openPDCs and/or openPGs&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Controlling UDP data loss" href="http://openpdc.codeplex.com/wikipage?title=Controlling%20UDP%20Data%20Loss"&gt;Controlling UDP data loss&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000"&gt;&lt;a href="/wikipage?title=Remote%20Console%20Security"&gt;Remote Console Security&lt;/a&gt;&lt;em&gt;&lt;strong&gt; NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Help Me Choose Diagrams&amp;referringTitle=Documentation"&gt;Help Me Choose Diagrams&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Config File&amp;referringTitle=Documentation"&gt;Configuration File Settings&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Uniform CPU Utilization Settings" href="http://openpdc.codeplex.com/wikipage?title=Settings%20for%20Uniform%20CPU%20Utilization%20"&gt;Setting for Uniform CPU Utilization&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Configuration Commands&amp;referringTitle=Documentation"&gt;openPDC Console Commands to Adjust Configuration Settings&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://openpdc.codeplex.com/wikipage?title=OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Data Quality Monitoring&amp;referringTitle=Documentation"&gt;Data Quality Monitoring Adapters&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Connection Strings&amp;referringTitle=Documentation"&gt;Adapter Connection String Syntax&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Historian Distribution Notes&amp;referringTitle=Documentation"&gt;Distributed Historian Setup Notes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Archive Data Recovery Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Archive%20Data%20Recovery%20Operation"&gt;Automated Archive Data Recovery Operation&lt;/a&gt;&amp;nbsp; (a.k.a., Missing Data Gap Filling)
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Connection Failover Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Connection%20Failover"&gt;Automated Connection Failover Operation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Adjusting Output Stream Labels to Meet ISO Naming Standard" href="http://openpdc.codeplex.com/wikipage?title=Adjusting%20Output%20Stream%20Labels%20to%20Meet%20ISO%20Naming%20Convention"&gt;Adjusting Output Stream Labels to Meet ISO Naming Standard&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://pmuconnectiontester.codeplex.com/documentation" target="_blank"&gt;PMU Connection Tester&lt;/a&gt; (accessed via host site)
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Manual Configuration&amp;referringTitle=Documentation"&gt;How to Manually Configure the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Bulk apply line-to-line adjustment" href="http://openpdc.codeplex.com/wikipage?title=Bulk%20apply%20line-to-line%20Sqrt%283%29%20adjustment%20to%20all%20voltage%20magnitudes"&gt;How to Bulk Apply line-to-line Sqrt(3) Adjustment to all Voltage Magnitudes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Overview&amp;referringTitle=Documentation"&gt;Single Page Overview&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=openPDC%20OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;Developer's Documentation
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started (Developers)&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Frequently Asked Questions (Developers)&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Build openPDC Manager (Developers)&amp;referringTitle=Documentation"&gt;Build the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Data Access Options (Developers)&amp;referringTitle=Documentation"&gt;Data Access Options for the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Device to Data (Developers)&amp;referringTitle=Documentation"&gt;Device to Data in 5 Easy Steps&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=About the Code (Developers)&amp;referringTitle=Documentation"&gt;High-level Code Structure and Class Relationships&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Custom Adapter (Developers)&amp;referringTitle=Documentation"&gt;How to Create a Custom Adapter&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Two Custom Adapter Examples&amp;referringTitle=Documentation"&gt;Two Custom Adapter Examples&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Adapter Synchronization (Developers)&amp;referringTitle=Documentation"&gt;Multiple Adapter Synchronization&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="About the Signal Reference" href="http://openpdc.codeplex.com/wikipage?title=About%20the%20Signal%20Reference"&gt;About the Signal Reference Field&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Using Hadoop (Developers)&amp;referringTitle=Documentation"&gt;Processing openPDC data with Hadoop&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Code Blog (Developers)&amp;referringTitle=Documentation"&gt;Code Blog of Relevant Changes&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you can get a quick optimization of the openPDC run-time assemblies by using the .NET native image cache NGen. To apply these optimizations after the openPDC has been installed, run the following commands from an administrative console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CD &amp;quot;C:\Program Files\openPDC\&amp;quot; &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install openPDC.exe &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install TVA.PhasorProtocols.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install HistorianAdapters.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install PowerCalculations.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install ICCPExport.dll &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The most recent system API help and documentation can be downloaded from the &lt;a href="/wikipage?title=Nightly Builds&amp;referringTitle=Documentation"&gt;
Nightly Builds&lt;/a&gt; - it's included with the binaries. This help can be used as standalone, compiled help files (.chm) or can be directly
&lt;a href="http://openpdc.codeplex.com/Wiki/View.aspx?title=Getting Started (Developers)#integrate_help"&gt;
integrated within Visual Studio&lt;/a&gt;. We have also made our help system available online:
&lt;a href="http://www.gridsolutions.org/NightlyBuilds/openPDC/Beta/Libraries/Help/"&gt;
Synchrophasor Protocol Classes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>swilliam26</author><pubDate>Tue, 23 Apr 2013 12:36:21 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130423123621P</guid></item><item><title>Updated Wiki: Documentation</title><link>https://openpdc.codeplex.com/documentation?version=78</link><description>&lt;div class="wikidoc"&gt;
&lt;ul&gt;
&lt;li&gt;User's Documentation&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=FAQ&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Use and Configuration Guides&amp;referringTitle=Documentation"&gt;Use and Configuration Guides&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Introducing the openPDC Manager&amp;referringTitle=Documentation"&gt;Overview of the openPDC Management System&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Manager Configuration&amp;referringTitle=Documentation"&gt;How to Use the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Using%20a%20&amp;quot;Gateway%20Style%20Connection&amp;quot;%20between%20openPDCs%20and%2for%20openPGs&amp;referringTitle=Documentation"&gt;Using a &amp;quot;Gateway Style Connection&amp;quot; between openPDCs and/or openPGs&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Controlling UDP data loss" href="http://openpdc.codeplex.com/wikipage?title=Controlling%20UDP%20Data%20Loss"&gt;Controlling UDP data loss&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000"&gt;&lt;a href="/wikipage?title=Remote%20Console%20Security"&gt;Remote Console Security&lt;/a&gt;&lt;em&gt;&lt;strong&gt; NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Help Me Choose Diagrams&amp;referringTitle=Documentation"&gt;Help Me Choose Diagrams&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Config File&amp;referringTitle=Documentation"&gt;Configuration File Settings&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Uniform CPU Utilization Settings" href="http://openpdc.codeplex.com/wikipage?title=Settings%20for%20Uniform%20CPU%20Utilization%20"&gt;Setting for Uniform CPU Utilization&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Configuration Commands&amp;referringTitle=Documentation"&gt;openPDC Console Commands to Adjust Configuration Settings&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://openpdc.codeplex.com/wikipage?title=OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Data Quality Monitoring&amp;referringTitle=Documentation"&gt;Data Quality Monitoring Adapters&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Connection Strings&amp;referringTitle=Documentation"&gt;Adapter Connection String Syntax&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Historian Distribution Notes&amp;referringTitle=Documentation"&gt;Distributed Historian Setup Notes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Archive Data Recovery Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Archive%20Data%20Recovery%20Operation"&gt;Automated Archive Data Recovery Operation&lt;/a&gt;&amp;nbsp; (a.k.a., Missing Data Gap Filling)
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Connection Failover Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Connection%20Failover"&gt;Automated Connection Failover Operation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Adjusting Output Stream Labels to Meet ISO Naming Standard" href="http://openpdc.codeplex.com/wikipage?title=Adjusting%20Output%20Stream%20Labels%20to%20Meet%20ISO%20Naming%20Convention"&gt;Adjusting Output Stream Labels to Meet ISO Naming Standard&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://pmuconnectiontester.codeplex.com/documentation" target="_blank"&gt;PMU Connection Tester&lt;/a&gt; (accessed via host site)
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Manual Configuration&amp;referringTitle=Documentation"&gt;How to Manually Configure the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Bulk apply line-to-line adjustment" href="http://openpdc.codeplex.com/wikipage?title=Bulk%20apply%20line-to-line%20Sqrt%283%29%20adjustment%20to%20all%20voltage%20magnitudes"&gt;How to Bulk Apply line-to-line Sqrt(3) Adjustment to all Voltage Magnitudes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Overview&amp;referringTitle=Documentation"&gt;Single Page Overview&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="openPDC OSI-PI Adapters" href="openPDC OSI-PI Adapters" target="_self"&gt;openPDC OSI-PI Adapters&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;Developer's Documentation
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started (Developers)&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Frequently Asked Questions (Developers)&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Build openPDC Manager (Developers)&amp;referringTitle=Documentation"&gt;Build the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Data Access Options (Developers)&amp;referringTitle=Documentation"&gt;Data Access Options for the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Device to Data (Developers)&amp;referringTitle=Documentation"&gt;Device to Data in 5 Easy Steps&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=About the Code (Developers)&amp;referringTitle=Documentation"&gt;High-level Code Structure and Class Relationships&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Custom Adapter (Developers)&amp;referringTitle=Documentation"&gt;How to Create a Custom Adapter&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Two Custom Adapter Examples&amp;referringTitle=Documentation"&gt;Two Custom Adapter Examples&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Adapter Synchronization (Developers)&amp;referringTitle=Documentation"&gt;Multiple Adapter Synchronization&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="About the Signal Reference" href="http://openpdc.codeplex.com/wikipage?title=About%20the%20Signal%20Reference"&gt;About the Signal Reference Field&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Using Hadoop (Developers)&amp;referringTitle=Documentation"&gt;Processing openPDC data with Hadoop&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Code Blog (Developers)&amp;referringTitle=Documentation"&gt;Code Blog of Relevant Changes&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you can get a quick optimization of the openPDC run-time assemblies by using the .NET native image cache NGen. To apply these optimizations after the openPDC has been installed, run the following commands from an administrative console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CD &amp;quot;C:\Program Files\openPDC\&amp;quot; &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install openPDC.exe &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install TVA.PhasorProtocols.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install HistorianAdapters.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install PowerCalculations.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install ICCPExport.dll &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The most recent system API help and documentation can be downloaded from the &lt;a href="/wikipage?title=Nightly Builds&amp;referringTitle=Documentation"&gt;
Nightly Builds&lt;/a&gt; - it's included with the binaries. This help can be used as standalone, compiled help files (.chm) or can be directly
&lt;a href="http://openpdc.codeplex.com/Wiki/View.aspx?title=Getting Started (Developers)#integrate_help"&gt;
integrated within Visual Studio&lt;/a&gt;. We have also made our help system available online:
&lt;a href="http://www.gridsolutions.org/NightlyBuilds/openPDC/Beta/Libraries/Help/"&gt;
Synchrophasor Protocol Classes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>swilliam26</author><pubDate>Tue, 23 Apr 2013 12:34:19 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130423123419P</guid></item><item><title>Updated Wiki: Documentation</title><link>https://openpdc.codeplex.com/documentation?version=77</link><description>&lt;div class="wikidoc"&gt;
&lt;ul&gt;
&lt;li&gt;User's Documentation&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=FAQ&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Use and Configuration Guides&amp;referringTitle=Documentation"&gt;Use and Configuration Guides&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Introducing the openPDC Manager&amp;referringTitle=Documentation"&gt;Overview of the openPDC Management System&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Manager Configuration&amp;referringTitle=Documentation"&gt;How to Use the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Using%20a%20&amp;quot;Gateway%20Style%20Connection&amp;quot;%20between%20openPDCs%20and%2for%20openPGs&amp;referringTitle=Documentation"&gt;Using a &amp;quot;Gateway Style Connection&amp;quot; between openPDCs and/or openPGs&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Controlling UDP data loss" href="http://openpdc.codeplex.com/wikipage?title=Controlling%20UDP%20Data%20Loss"&gt;Controlling UDP data loss&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000"&gt;&lt;a href="/wikipage?title=Remote%20Console%20Security"&gt;Remote Console Security&lt;/a&gt;&lt;em&gt;&lt;strong&gt; NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Help Me Choose Diagrams&amp;referringTitle=Documentation"&gt;Help Me Choose Diagrams&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Config File&amp;referringTitle=Documentation"&gt;Configuration File Settings&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Uniform CPU Utilization Settings" href="http://openpdc.codeplex.com/wikipage?title=Settings%20for%20Uniform%20CPU%20Utilization%20"&gt;Setting for Uniform CPU Utilization&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Configuration Commands&amp;referringTitle=Documentation"&gt;openPDC Console Commands to Adjust Configuration Settings&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://openpdc.codeplex.com/wikipage?title=OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Data Quality Monitoring&amp;referringTitle=Documentation"&gt;Data Quality Monitoring Adapters&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Connection Strings&amp;referringTitle=Documentation"&gt;Adapter Connection String Syntax&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Historian Distribution Notes&amp;referringTitle=Documentation"&gt;Distributed Historian Setup Notes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Archive Data Recovery Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Archive%20Data%20Recovery%20Operation"&gt;Automated Archive Data Recovery Operation&lt;/a&gt;&amp;nbsp; (a.k.a., Missing Data Gap Filling)
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Connection Failover Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Connection%20Failover"&gt;Automated Connection Failover Operation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Adjusting Output Stream Labels to Meet ISO Naming Standard" href="http://openpdc.codeplex.com/wikipage?title=Adjusting%20Output%20Stream%20Labels%20to%20Meet%20ISO%20Naming%20Convention"&gt;Adjusting Output Stream Labels to Meet ISO Naming Standard&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://pmuconnectiontester.codeplex.com/documentation" target="_blank"&gt;PMU Connection Tester&lt;/a&gt; (accessed via host site)
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Manual Configuration&amp;referringTitle=Documentation"&gt;How to Manually Configure the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Bulk apply line-to-line adjustment" href="http://openpdc.codeplex.com/wikipage?title=Bulk%20apply%20line-to-line%20Sqrt%283%29%20adjustment%20to%20all%20voltage%20magnitudes"&gt;How to Bulk Apply line-to-line Sqrt(3) Adjustment to all Voltage Magnitudes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Overview&amp;referringTitle=Documentation"&gt;Single Page Overview&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="[openPDC OSI-PI Adapters]" target="_self"&gt;openPDC OSI-PI Adapters&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;Developer's Documentation
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started (Developers)&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Frequently Asked Questions (Developers)&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Build openPDC Manager (Developers)&amp;referringTitle=Documentation"&gt;Build the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Data Access Options (Developers)&amp;referringTitle=Documentation"&gt;Data Access Options for the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Device to Data (Developers)&amp;referringTitle=Documentation"&gt;Device to Data in 5 Easy Steps&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=About the Code (Developers)&amp;referringTitle=Documentation"&gt;High-level Code Structure and Class Relationships&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Custom Adapter (Developers)&amp;referringTitle=Documentation"&gt;How to Create a Custom Adapter&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Two Custom Adapter Examples&amp;referringTitle=Documentation"&gt;Two Custom Adapter Examples&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Adapter Synchronization (Developers)&amp;referringTitle=Documentation"&gt;Multiple Adapter Synchronization&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="About the Signal Reference" href="http://openpdc.codeplex.com/wikipage?title=About%20the%20Signal%20Reference"&gt;About the Signal Reference Field&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Using Hadoop (Developers)&amp;referringTitle=Documentation"&gt;Processing openPDC data with Hadoop&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Code Blog (Developers)&amp;referringTitle=Documentation"&gt;Code Blog of Relevant Changes&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you can get a quick optimization of the openPDC run-time assemblies by using the .NET native image cache NGen. To apply these optimizations after the openPDC has been installed, run the following commands from an administrative console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CD &amp;quot;C:\Program Files\openPDC\&amp;quot; &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install openPDC.exe &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install TVA.PhasorProtocols.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install HistorianAdapters.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install PowerCalculations.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install ICCPExport.dll &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The most recent system API help and documentation can be downloaded from the &lt;a href="/wikipage?title=Nightly Builds&amp;referringTitle=Documentation"&gt;
Nightly Builds&lt;/a&gt; - it's included with the binaries. This help can be used as standalone, compiled help files (.chm) or can be directly
&lt;a href="http://openpdc.codeplex.com/Wiki/View.aspx?title=Getting Started (Developers)#integrate_help"&gt;
integrated within Visual Studio&lt;/a&gt;. We have also made our help system available online:
&lt;a href="http://www.gridsolutions.org/NightlyBuilds/openPDC/Beta/Libraries/Help/"&gt;
Synchrophasor Protocol Classes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>swilliam26</author><pubDate>Tue, 23 Apr 2013 12:32:39 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130423123239P</guid></item><item><title>Updated Wiki: openPDC OSI-PI Adapters</title><link>https://openpdc.codeplex.com/wikipage?title=openPDC OSI-PI Adapters&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Minimum Requirements&lt;/b&gt;&lt;br /&gt;1.	PI SDK v1.4.0 or greater  (use 32-bit or 64-bit to match openPDC) must be installed on the openPDC server&lt;br /&gt;2.	Desired PI server connection must be added to the SDK&lt;br /&gt;3.	Access to PI system using PI trust (preferred) or explicit login&lt;br /&gt;a.	Connection must have access to read/write any points mapped to openPDC.&lt;br /&gt;b.	If the metadata synchronization is enabled, connection must also have read/write access to the pipoint database.&lt;br /&gt;Output Configuration on an Existing openPDC Installation&lt;br /&gt;1.	Open the openPDC manager and navigate to Outputs &amp;gt; Historians.&lt;br /&gt;2.	Click the Clear button to create a new historian.&lt;br /&gt;3.	Type name is PIAdapters.PIOutputAdapter. Assembly name is PIAdapters.dll.&lt;br /&gt;4.	Connection string should be the following: server=&amp;lt;servername&amp;gt;;&lt;br /&gt;a.	For explicit logins, add the following: &lt;br /&gt;username=&amp;lt;pi username&amp;gt;;password=&amp;lt;pi password&amp;gt;;&lt;br /&gt;b.	To have openPDC create new PI tags for all archived measurements if they don’t already exist, add the following: runMetadataSync=True;&lt;br /&gt;5.	Save the adapter configuration.&lt;br /&gt;6.	Navigate to Manage &amp;gt; Measurements.&lt;br /&gt;7.	Choose each measurement that should be archived to PI, and change its historian to the PI historian that was set up on the Historians page.&lt;br /&gt;Output Configuration on a new openPDC Installation&lt;br /&gt;1.	In the configuration setup utility, make sure to check the “Setup / change the primary historian” checkbox on the “Apply configuration changes” screen.&lt;br /&gt;2.	On the next screen, which is the “Set up primary historian” screen, select “PI : Archives measurements to a PI server using PI SDK”&lt;br /&gt;3.	On the “Set up historian connection string” screen, set the servername property to the name of your PI server from the PI SDK.&lt;br /&gt;a.	For explicit logins, set the values of the username and password properties.&lt;br /&gt;b.	To have openPDC create new PI tags for all archived measurements if they don’t already exist, set the RunMetadataSync Property to True. Otherwise, set it to false.&lt;br /&gt;4.	Continue with the setup utility. This will make all your measurements archive to PI by default.&lt;br /&gt;&lt;br /&gt;Real-time Input Adapter Configuration&lt;br /&gt;	The real-time PI input adapter connects to PI using event pipes, which is the same mechanism process book uses to retrieve real-time data. The adapter also uses the connect on demand feature in openPDC, which allows it to only query PI for data being used an action adapter or output adapter.&lt;br /&gt;1.	In the openPDC manager, go to Adapters &amp;gt; Input Adapters.&lt;br /&gt;2.	Enter a name for the PI input adapter.&lt;br /&gt;3.	For the type of adapter, choose “PI : Reads real-time measurements from a PI server using PI SDK.”&lt;br /&gt;4.	Set the ServerName property to the name of the PI server from the PI SDK&lt;br /&gt;5.	If you wish to connect to the PI server using explicit logins, set the UserName and Password properties too.&lt;br /&gt;6.	Add an additional property to the connection string: “ConnectOnDemand=True;”&lt;br /&gt;7.	Next, go to the Manage &amp;gt; Measurements screen.&lt;br /&gt;8.	You will need to manually add measurements that you wish to make available in openPDC. Either the point tag or the alternate tag must match the point’s tag in PI. It is recommended to create a separate historian (probably virtual output historian) to archive all measurements and set the PI adapter’s output measurement keys to everything on the historian with a FILTER expression.&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>swilliam26</author><pubDate>Tue, 23 Apr 2013 12:30:44 GMT</pubDate><guid isPermaLink="false">Updated Wiki: openPDC OSI-PI Adapters 20130423123044P</guid></item><item><title>Updated Wiki: Documentation</title><link>https://openpdc.codeplex.com/documentation?version=76</link><description>&lt;div class="wikidoc"&gt;
&lt;ul&gt;
&lt;li&gt;User's Documentation&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=FAQ&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Use and Configuration Guides&amp;referringTitle=Documentation"&gt;Use and Configuration Guides&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Introducing the openPDC Manager&amp;referringTitle=Documentation"&gt;Overview of the openPDC Management System&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Manager Configuration&amp;referringTitle=Documentation"&gt;How to Use the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Using%20a%20&amp;quot;Gateway%20Style%20Connection&amp;quot;%20between%20openPDCs%20and%2for%20openPGs&amp;referringTitle=Documentation"&gt;Using a &amp;quot;Gateway Style Connection&amp;quot; between openPDCs and/or openPGs&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Controlling UDP data loss" href="http://openpdc.codeplex.com/wikipage?title=Controlling%20UDP%20Data%20Loss"&gt;Controlling UDP data loss&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000"&gt;&lt;a href="/wikipage?title=Remote%20Console%20Security"&gt;Remote Console Security&lt;/a&gt;&lt;em&gt;&lt;strong&gt; NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Help Me Choose Diagrams&amp;referringTitle=Documentation"&gt;Help Me Choose Diagrams&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Config File&amp;referringTitle=Documentation"&gt;Configuration File Settings&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Uniform CPU Utilization Settings" href="http://openpdc.codeplex.com/wikipage?title=Settings%20for%20Uniform%20CPU%20Utilization%20"&gt;Setting for Uniform CPU Utilization&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Configuration Commands&amp;referringTitle=Documentation"&gt;openPDC Console Commands to Adjust Configuration Settings&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://openpdc.codeplex.com/wikipage?title=OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Data Quality Monitoring&amp;referringTitle=Documentation"&gt;Data Quality Monitoring Adapters&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Connection Strings&amp;referringTitle=Documentation"&gt;Adapter Connection String Syntax&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Historian Distribution Notes&amp;referringTitle=Documentation"&gt;Distributed Historian Setup Notes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Archive Data Recovery Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Archive%20Data%20Recovery%20Operation"&gt;Automated Archive Data Recovery Operation&lt;/a&gt;&amp;nbsp; (a.k.a., Missing Data Gap Filling)
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Connection Failover Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Connection%20Failover"&gt;Automated Connection Failover Operation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Adjusting Output Stream Labels to Meet ISO Naming Standard" href="http://openpdc.codeplex.com/wikipage?title=Adjusting%20Output%20Stream%20Labels%20to%20Meet%20ISO%20Naming%20Convention"&gt;Adjusting Output Stream Labels to Meet ISO Naming Standard&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://pmuconnectiontester.codeplex.com/documentation" target="_blank"&gt;PMU Connection Tester&lt;/a&gt; (accessed via host site)
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Manual Configuration&amp;referringTitle=Documentation"&gt;How to Manually Configure the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Bulk apply line-to-line adjustment" href="http://openpdc.codeplex.com/wikipage?title=Bulk%20apply%20line-to-line%20Sqrt%283%29%20adjustment%20to%20all%20voltage%20magnitudes"&gt;How to Bulk Apply line-to-line Sqrt(3) Adjustment to all Voltage Magnitudes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Overview&amp;referringTitle=Documentation"&gt;Single Page Overview&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;Developer's Documentation
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started (Developers)&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Frequently Asked Questions (Developers)&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Build openPDC Manager (Developers)&amp;referringTitle=Documentation"&gt;Build the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Data Access Options (Developers)&amp;referringTitle=Documentation"&gt;Data Access Options for the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Device to Data (Developers)&amp;referringTitle=Documentation"&gt;Device to Data in 5 Easy Steps&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=About the Code (Developers)&amp;referringTitle=Documentation"&gt;High-level Code Structure and Class Relationships&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Custom Adapter (Developers)&amp;referringTitle=Documentation"&gt;How to Create a Custom Adapter&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Two Custom Adapter Examples&amp;referringTitle=Documentation"&gt;Two Custom Adapter Examples&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Adapter Synchronization (Developers)&amp;referringTitle=Documentation"&gt;Multiple Adapter Synchronization&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="About the Signal Reference" href="http://openpdc.codeplex.com/wikipage?title=About%20the%20Signal%20Reference"&gt;About the Signal Reference Field&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Using Hadoop (Developers)&amp;referringTitle=Documentation"&gt;Processing openPDC data with Hadoop&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Code Blog (Developers)&amp;referringTitle=Documentation"&gt;Code Blog of Relevant Changes&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you can get a quick optimization of the openPDC run-time assemblies by using the .NET native image cache NGen. To apply these optimizations after the openPDC has been installed, run the following commands from an administrative console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CD &amp;quot;C:\Program Files\openPDC\&amp;quot; &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install openPDC.exe &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install TVA.PhasorProtocols.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install HistorianAdapters.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install PowerCalculations.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install ICCPExport.dll &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The most recent system API help and documentation can be downloaded from the &lt;a href="/wikipage?title=Nightly Builds&amp;referringTitle=Documentation"&gt;
Nightly Builds&lt;/a&gt; - it's included with the binaries. This help can be used as standalone, compiled help files (.chm) or can be directly
&lt;a href="http://openpdc.codeplex.com/Wiki/View.aspx?title=Getting Started (Developers)#integrate_help"&gt;
integrated within Visual Studio&lt;/a&gt;. We have also made our help system available online:
&lt;a href="http://www.gridsolutions.org/NightlyBuilds/openPDC/Beta/Libraries/Help/"&gt;
Synchrophasor Protocol Classes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Mon, 22 Apr 2013 15:30:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130422033046P</guid></item><item><title>Updated Wiki: Controlling UDP Data Loss</title><link>https://openpdc.codeplex.com/wikipage?title=Controlling UDP Data Loss&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;Regarding the issues that some openPDC users have reported about UDP data loss on 120 fps streams, a new parameter has been introduced to the connection string for input devices called
&lt;em&gt;bufferSize&lt;/em&gt;. This property controls the size of the kernel buffer used to receive data from the device so that packets will not be dropped during garbage collection. If you are experiencing UDP data loss, try increasing the buffer size by setting this
 property via the connection string used to connect to your device.&lt;/p&gt;
&lt;p&gt;Example connection string (2 MB buffer):&lt;br&gt;
localport=4712; transportprotocol=udp; interface=0.0.0.0;&amp;nbsp;&lt;strong&gt;bufferSize=2097152&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If modifying this property does not solve the UDP data loss, you may also try reading the information below.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Some openPDC users have reported UDP data loss on 120 fps streams and/or systems that were heavily loaded. That is even though Wireshark reported all the data arriving on the system, the openPDC wasn't receiving all the data. The issue here is the .NET Garbage
 Collector that blocks threads during a blocking/forced unused memory collection every 10-15 seconds - the more memory that is in use amplifies the time required to collect. More specifically, if you do not retrieve data from the Windows UDP socket buffer queue
 fast enough it will replace the existing buffer with new data. When the garbage collector starts taking more time there is more opportunity for loss (data replacement with new data) on the UDP socket.&amp;nbsp;&lt;span style="font-size:10pt"&gt;During garbage collection
 data loss can simply be caused by amplification in memory usage (which causes GC to take longer) or heavily loaded system (meaning the GC is competing for CPU and therefore taking longer).&amp;nbsp; The issue can occur simply by increasing samples per second and/or
 using large lag times, like 30 seconds.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;The solution is to force garbage collection more often.&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt"&gt;All recent versions of the openPDC include a setting in the configuration file to do a generation zero garbage collection on a specified
 interval - increasing the frequency of garbage collection for generation zero objects on the 4.0 framework will resolve data loss when lag times (i.e., basic memory utilization) are reasonable (e.g., 3-5 seconds of lag time) even when receiving data at 120
 samples per second.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;On .NET 4.0 builds the issue can return once lag times are increased (e.g., to 30 seconds) thereby increasing memory pressure and the need to collect large volumes of data - this is because with a large lag time the allocated
 memory will be promoted to generation 2 and 3 and a generation zero collection will be ineffective. Increasing the garbage collection to generation to 2 or 3 on an interval may increase CPU loading to a point where data can again occur.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;On .NET 4.5 the garbage collector has been vastly improved - the improvements include an &amp;quot;optimized&amp;quot; collect as well the ability to perform a non-blocking collect. On the .NET 4.5 build of the openPDC, code has been modified
 such that the interval garbage collection method can be performed against generation 1 through 3 objects using optimized, non-blocking garbage collection running every 5 milliseconds without a significant impact on CPU loading*. With this in place testing
 showed no data loss even with significant memory usage at 120 samples per second.&lt;/span&gt;&lt;span style="font-size:10pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Bottom line:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;If you are experiencing UDP data loss on GPA products where you can confirm that data is being received (e.g., with Wireshark), simply enabling the interval garbage collection method may help (i.e., change the
&lt;span style="color:#ff0000"&gt;systemSettings/GCGenZeroInterval&lt;/span&gt; to 50 milliseconds); continuing to increase frequency (i.e., lower interval) could make a difference. Upgrading the system to the .NET 4.5 version of the openPDC (version 2.0) will resolve
 the issue entirely.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;* Note that on .NET 4.5 deployments, garbage collection performance can be affected by the runtime settings in the config file (e.g., openPDC.exe.config). If these settings are defined in config file (see example below), please
 remove them so that the default settings will be used:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt; color:red"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;  &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;runtime&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;gcConcurrent&lt;/span&gt; &lt;span style="color:red"&gt;enabled&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;false&lt;/span&gt;&lt;span style="color:black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;gcServer&lt;/span&gt; &lt;span style="color:red"&gt;enabled&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;true&lt;/span&gt;&lt;span style="color:black"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;runtime&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;

&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:10pt; color:red"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Mon, 22 Apr 2013 15:30:20 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Controlling UDP Data Loss 20130422033020P</guid></item><item><title>Updated Wiki: Documentation</title><link>https://openpdc.codeplex.com/documentation?version=75</link><description>&lt;div class="wikidoc"&gt;
&lt;ul&gt;
&lt;li&gt;User's Documentation&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=FAQ&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Use and Configuration Guides&amp;referringTitle=Documentation"&gt;Use and Configuration Guides&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Introducing the openPDC Manager&amp;referringTitle=Documentation"&gt;Overview of the openPDC Management System&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Manager Configuration&amp;referringTitle=Documentation"&gt;How to Use the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Using%20a%20&amp;quot;Gateway%20Style%20Connection&amp;quot;%20between%20openPDCs%20and%2for%20openPGs&amp;referringTitle=Documentation"&gt;Using a &amp;quot;Gateway Style Connection&amp;quot; between openPDCs and/or openPGs&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Controlling UDP data loss" href="http://openpdc.codeplex.com/wikipage?title=Controlling%20UDP%20Data%20Loss"&gt;Controlling UDP data loss&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000"&gt;&lt;a href="/wikipage?title=Remote%20Console%20Security"&gt;Remote Console Security&lt;/a&gt;&lt;em&gt;&lt;strong&gt; NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Help Me Choose Diagrams&amp;referringTitle=Documentation"&gt;Help Me Choose Diagrams&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Config File&amp;referringTitle=Documentation"&gt;Configuration File Settings&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Uniform CPU Utilization Settings" href="http://openpdc.codeplex.com/wikipage?title=Settings%20for%20Uniform%20CPU%20Utilization%20"&gt;Setting for Uniform CPU Utilization&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Configuration Commands&amp;referringTitle=Documentation"&gt;openPDC Console Commands to Adjust Configuration Settings&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://openpdc.codeplex.com/wikipage?title=OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Data Quality Monitoring&amp;referringTitle=Documentation"&gt;Data Quality Monitoring Adapters&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Connection Strings&amp;referringTitle=Documentation"&gt;Adapter Connection String Syntax&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Historian Distribution Notes&amp;referringTitle=Documentation"&gt;Distributed Historian Setup Notes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Archive Data Recovery Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Archive%20Data%20Recovery%20Operation"&gt;Automated Archive Data Recovery Operation&lt;/a&gt;&amp;nbsp; (a.k.a., Missing Data Gap Filling)
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Connection Failover Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Connection%20Failover"&gt;Automated Connection Failover Operation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Adjusting Output Stream Labels to Meet ISO Naming Standard" href="http://openpdc.codeplex.com/wikipage?title=Adjusting%20Output%20Stream%20Labels%20to%20Meet%20ISO%20Naming%20Convention"&gt;Adjusting Output Stream Labels to Meet ISO Naming Standard&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://pmuconnectiontester.codeplex.com/documentation" target="_blank"&gt;PMU Connection Tester&lt;/a&gt; (accessed via host site)
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Manual Configuration&amp;referringTitle=Documentation"&gt;How to Manually Configure the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Bulk apply line-to-line adjustment" href="http://openpdc.codeplex.com/wikipage?title=Bulk%20apply%20line-to-line%20Sqrt%283%29%20adjustment%20to%20all%20voltage%20magnitudes"&gt;How to Bulk Apply line-to-line Sqrt(3) Adjustment to all Voltage Magnitudes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Overview&amp;referringTitle=Documentation"&gt;Single Page Overview&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;Developer's Documentation
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started (Developers)&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Frequently Asked Questions (Developers)&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Build openPDC Manager (Developers)&amp;referringTitle=Documentation"&gt;Build the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Data Access Options (Developers)&amp;referringTitle=Documentation"&gt;Data Access Options for the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Device to Data (Developers)&amp;referringTitle=Documentation"&gt;Device to Data in 5 Easy Steps&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=About the Code (Developers)&amp;referringTitle=Documentation"&gt;High-level Code Structure and Class Relationships&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Custom Adapter (Developers)&amp;referringTitle=Documentation"&gt;How to Create a Custom Adapter&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Two Custom Adapter Examples&amp;referringTitle=Documentation"&gt;Two Custom Adapter Examples&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Adapter Synchronization (Developers)&amp;referringTitle=Documentation"&gt;Multiple Adapter Synchronization&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="About the Signal Reference" href="http://openpdc.codeplex.com/wikipage?title=About%20the%20Signal%20Reference"&gt;About the Signal Reference Field&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Using Hadoop (Developers)&amp;referringTitle=Documentation"&gt;Processing openPDC data with Hadoop&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Code Blog (Developers)&amp;referringTitle=Documentation"&gt;Code Blog of Relevant Changes&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you can get a quick optimization of the openPDC run-time assemblies by using the .NET native image cache NGen. To apply these optimizations after the openPDC has been installed, run the following commands from an administrative console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CD &amp;quot;C:\Program Files\openPDC\&amp;quot; &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install openPDC.exe &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install TVA.PhasorProtocols.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install HistorianAdapters.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install PowerCalculations.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install ICCPExport.dll &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The most recent system API help and documentation can be downloaded from the &lt;a href="/wikipage?title=Nightly Builds&amp;referringTitle=Documentation"&gt;
Nightly Builds&lt;/a&gt; - it's included with the binaries. This help can be used as standalone, compiled help files (.chm) or can be directly
&lt;a href="http://openpdc.codeplex.com/Wiki/View.aspx?title=Getting Started (Developers)#integrate_help"&gt;
integrated within Visual Studio&lt;/a&gt;. We have also made our help system available online:
&lt;a href="http://www.gridsolutions.org/NightlyBuilds/openPDC/Beta/Libraries/Help/"&gt;
Synchrophasor Protocol Classes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ritchiecarroll</author><pubDate>Mon, 22 Apr 2013 14:19:12 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130422021912P</guid></item><item><title>Updated Wiki: Documentation</title><link>https://openpdc.codeplex.com/documentation?version=74</link><description>&lt;div class="wikidoc"&gt;
&lt;ul&gt;
&lt;li&gt;User's Documentation&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=FAQ&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Use and Configuration Guides&amp;referringTitle=Documentation"&gt;Use and Configuration Guides&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Introducing the openPDC Manager&amp;referringTitle=Documentation"&gt;Overview of the openPDC Management System&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Manager Configuration&amp;referringTitle=Documentation"&gt;How to Use the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Using%20a%20&amp;quot;Gateway%20Style%20Connection&amp;quot;%20between%20openPDCs%20and%2for%20openPGs&amp;referringTitle=Documentation"&gt;Using a &amp;quot;Gateway Style Connection&amp;quot; between openPDCs and/or openPGs&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Controlling UDP data loss" href="http://openpdc.codeplex.com/wikipage?title=Controlling%20UDP%20Data%20Loss"&gt;Controlling UDP data loss&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000"&gt;&lt;a href="/wikipage?title=Remote%20Console%20Security"&gt;Remote Console Security&lt;/a&gt;&lt;em&gt;&lt;strong&gt; NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Help Me Choose Diagrams&amp;referringTitle=Documentation"&gt;Help Me Choose Diagrams&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Config File&amp;referringTitle=Documentation"&gt;Configuration File Settings&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Uniform CPU Utilization Settings" href="http://openpdc.codeplex.com/wikipage?title=Settings%20for%20Uniform%20CPU%20Utilization%20"&gt;Setting for Uniform CPU Utilization&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Configuration Commands&amp;referringTitle=Documentation"&gt;openPDC Console Commands to Adjust Configuration Settings&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://openpdc.codeplex.com/wikipage?title=OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Data Quality Monitoring&amp;referringTitle=Documentation"&gt;Data Quality Monitoring Adapters&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Connection Strings&amp;referringTitle=Documentation"&gt;Adapter Connection String Syntax&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Historian Distribution Notes&amp;referringTitle=Documentation"&gt;Distributed Historian Setup Notes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Archive Data Recovery Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Archive%20Data%20Recovery%20Operation"&gt;Automated Archive Data Recovery Operation&lt;/a&gt;&amp;nbsp; (a.k.a., Missing Data Gap Filling)
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Connection Failover Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Connection%20Failover"&gt;Automated Connection Failover Operation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Adjusting Output Stream Labels to Meet ISO Naming Standard" href="http://openpdc.codeplex.com/wikipage?title=Adjusting%20Output%20Stream%20Labels%20to%20Meet%20ISO%20Naming%20Convention"&gt;Adjusting Output Stream Labels to Meet ISO Naming Standard&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://pmuconnectiontester.codeplex.com/documentation" target="_blank"&gt;PMU Connection Tester&lt;/a&gt; (accessed via host site)
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Manual Configuration&amp;referringTitle=Documentation"&gt;How to Manually Configure the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Bulk apply line-to-line adjustment" href="http://openpdc.codeplex.com/wikipage?title=Bulk%20apply%20line-to-line%20Sqrt%283%29%20adjustment%20to%20all%20voltage%20magnitudes"&gt;How to Bulk Apply line-to-line Sqrt(3) Adjustment to all Voltage Magnitudes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Overview&amp;referringTitle=Documentation"&gt;Single Page Overview&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;Developer's Documentation
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started (Developers)&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Frequently Asked Questions (Developers)&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Build openPDC Manager (Developers)&amp;referringTitle=Documentation"&gt;Build the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Data Access Options (Developers)&amp;referringTitle=Documentation"&gt;Data Access Options for the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Device to Data (Developers)&amp;referringTitle=Documentation"&gt;Device to Data in 5 Easy Steps&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=About the Code (Developers)&amp;referringTitle=Documentation"&gt;High-level Code Structure and Class Relationships&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Custom Adapter (Developers)&amp;referringTitle=Documentation"&gt;How to Create a Custom Adapter&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Two Custom Adapter Examples&amp;referringTitle=Documentation"&gt;Two Custom Adapter Examples&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Adapter Synchronization (Developers)&amp;referringTitle=Documentation"&gt;Multiple Adapter Synchronization&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="About the Signal Reference" href="http://openpdc.codeplex.com/wikipage?title=About%20the%20Signal%20Reference"&gt;About the Signal Reference Field&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Using Hadoop (Developers)&amp;referringTitle=Documentation"&gt;Processing openPDC data with Hadoop&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Code Blog (Developers)&amp;referringTitle=Documentation"&gt;Code Blog of Relevant Changes&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you can get a quick optimization of the openPDC run-time assemblies by using the .NET native image cache NGen. To apply these optimizations after the openPDC has been installed, run the following commands from an administrative console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CD &amp;quot;C:\Program Files\openPDC\&amp;quot; &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install openPDC.exe &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install TVA.PhasorProtocols.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install HistorianAdapters.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install PowerCalculations.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install ICCPExport.dll &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The most recent system API help and documentation can be downloaded from the &lt;a href="/wikipage?title=Nightly Builds&amp;referringTitle=Documentation"&gt;
Nightly Builds&lt;/a&gt; - it's included with the binaries. This help can be used as standalone, compiled help files (.chm) or can be directly
&lt;a href="http://openpdc.codeplex.com/Wiki/View.aspx?title=Getting Started (Developers)#integrate_help"&gt;
integrated within Visual Studio&lt;/a&gt;. We have also made our help system available online:
&lt;a href="http://www.gridsolutions.org/NightlyBuilds/openPDC/Beta/Libraries/Help/"&gt;
Synchrophasor Protocol Classes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ritchiecarroll</author><pubDate>Mon, 22 Apr 2013 13:41:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130422014140P</guid></item><item><title>Updated Wiki: Documentation</title><link>https://openpdc.codeplex.com/documentation?version=73</link><description>&lt;div class="wikidoc"&gt;
&lt;ul&gt;
&lt;li&gt;User's Documentation&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=FAQ&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Use and Configuration Guides&amp;referringTitle=Documentation"&gt;Use and Configuration Guides&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Introducing the openPDC Manager&amp;referringTitle=Documentation"&gt;Overview of the openPDC Management System&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Manager Configuration&amp;referringTitle=Documentation"&gt;How to Use the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Using%20a%20&amp;quot;Gateway%20Style%20Connection&amp;quot;%20between%20openPDCs%20and%2for%20openPGs&amp;referringTitle=Documentation"&gt;Using a &amp;quot;Gateway Style Connection&amp;quot; between openPDCs and/or openPGs&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Controlling UDP data loss" href="http://openpdc.codeplex.com/wikipage?title=Controlling%20UDP%20Data%20Loss"&gt;Controlling UDP data loss&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000"&gt;&lt;a href="/wikipage?title=Remote%20Console%20Security"&gt;Remote Console Security&lt;/a&gt;&lt;em&gt;&lt;strong&gt; NEW&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Help Me Choose Diagrams&amp;referringTitle=Documentation"&gt;Help Me Choose Diagrams&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Config File&amp;referringTitle=Documentation"&gt;Configuration File Settings&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Uniform CPU Utilization Settings" href="http://openpdc.codeplex.com/wikipage?title=Settings%20for%20Uniform%20CPU%20Utilization%20"&gt;Setting for Uniform CPU Utilization&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Configuration Commands&amp;referringTitle=Documentation"&gt;openPDC Console Commands to Adjust Configuration Settings&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://openpdc.codeplex.com/wikipage?title=OSI-PI%20Adapters"&gt;openPDC OSI-PI Adapters&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Data Quality Monitoring&amp;referringTitle=Documentation"&gt;Data Quality Monitoring Adapters&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Connection Strings&amp;referringTitle=Documentation"&gt;Adapter Connection String Syntax&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Historian Distribution Notes&amp;referringTitle=Documentation"&gt;Distributed Historian Setup Notes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Archive Data Recovery Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Archive%20Data%20Recovery%20Operation"&gt;Automated Archive Data Recovery Operation&lt;/a&gt;&amp;nbsp; (a.k.a., Missing Data Gap Filling)
&lt;/li&gt;&lt;li&gt;&lt;a title="Automated Connection Failover Operation" href="http://openpdc.codeplex.com/wikipage?title=Automated%20Connection%20Failover"&gt;Automated Connection Failover Operation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Adjusting Output Stream Labels to Meet ISO Naming Standard" href="http://openpdc.codeplex.com/wikipage?title=Adjusting%20Output%20Stream%20Labels%20to%20Meet%20ISO%20Naming%20Convention"&gt;Adjusting Output Stream Labels to Meet ISO Naming Standard&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://pmuconnectiontester.codeplex.com/documentation" target="_blank"&gt;PMU Connection Tester&lt;/a&gt; (accessed via host site)
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Manual Configuration&amp;referringTitle=Documentation"&gt;How to Manually Configure the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="Bulk apply line-to-line adjustment" href="http://openpdc.codeplex.com/wikipage?title=Bulk%20apply%20line-to-line%20Sqrt%283%29%20adjustment%20to%20all%20voltage%20magnitudes"&gt;How to Bulk Apply line-to-line Sqrt(3) Adjustment to all Voltage Magnitudes&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Overview&amp;referringTitle=Documentation"&gt;Single Page Overview&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;Developer's Documentation
&lt;ul&gt;
&lt;li&gt;&lt;a href="/wikipage?title=Getting Started (Developers)&amp;referringTitle=Documentation"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Frequently Asked Questions (Developers)&amp;referringTitle=Documentation"&gt;Frequently Asked Questions&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Build openPDC Manager (Developers)&amp;referringTitle=Documentation"&gt;Build the openPDC Manager&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Data Access Options (Developers)&amp;referringTitle=Documentation"&gt;Data Access Options for the openPDC&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Device to Data (Developers)&amp;referringTitle=Documentation"&gt;Device to Data in 5 Easy Steps&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=About the Code (Developers)&amp;referringTitle=Documentation"&gt;High-level Code Structure and Class Relationships&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Custom Adapter (Developers)&amp;referringTitle=Documentation"&gt;How to Create a Custom Adapter&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Two Custom Adapter Examples&amp;referringTitle=Documentation"&gt;Two Custom Adapter Examples&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Adapter Synchronization (Developers)&amp;referringTitle=Documentation"&gt;Multiple Adapter Synchronization&lt;/a&gt;&amp;nbsp;&lt;span style="color:#ff0000"&gt;&lt;em&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;a title="About the Signal Reference" href="http://openpdc.codeplex.com/wikipage?title=About%20the%20Signal%20Reference"&gt;About the Signal Reference Field&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Using Hadoop (Developers)&amp;referringTitle=Documentation"&gt;Processing openPDC data with Hadoop&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="/wikipage?title=Code Blog (Developers)&amp;referringTitle=Documentation"&gt;Code Blog of Relevant Changes&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you can get a quick optimization of the openPDC run-time assemblies by using the .NET native image cache NGen. To apply these optimizations after the openPDC has been installed, run the following commands from an administrative console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CD &amp;quot;C:\Program Files\openPDC\&amp;quot; &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install openPDC.exe &lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install TVA.PhasorProtocols.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install HistorianAdapters.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install PowerCalculations.dll
&lt;/li&gt;&lt;li&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen install ICCPExport.dll &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The most recent system API help and documentation can be downloaded from the &lt;a href="/wikipage?title=Nightly Builds&amp;referringTitle=Documentation"&gt;
Nightly Builds&lt;/a&gt; - it's included with the binaries. This help can be used as standalone, compiled help files (.chm) or can be directly
&lt;a href="http://openpdc.codeplex.com/Wiki/View.aspx?title=Getting Started (Developers)#integrate_help"&gt;
integrated within Visual Studio&lt;/a&gt;. We have also made our help system available online:
&lt;a href="http://www.gridsolutions.org/NightlyBuilds/openPDC/Beta/Libraries/Help/"&gt;
Synchrophasor Protocol Classes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Mon, 22 Apr 2013 13:21:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130422012141P</guid></item><item><title>Updated Wiki: OSI-PI Adapters</title><link>https://openpdc.codeplex.com/wikipage?title=OSI-PI Adapters&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;openPDC OSI-PI Adapters&lt;/h1&gt;

&lt;h3&gt;Minimum Requirements&lt;/h3&gt;
&lt;ol&gt;&lt;li&gt;PI SDK v1.4.0 or greater (use 32-bit or 64-bit to match openPDC) must be installed on the openPDC server&lt;/li&gt;
&lt;li&gt;Desired PI server connection must be added to the SDK&lt;/li&gt;
&lt;li&gt;Access to PI system using PI trust (preferred) or explicit login
&lt;ol&gt;&lt;li&gt;Connection must have access to read/write any points mapped to openPDC.&lt;/li&gt;
&lt;li&gt;If the metadata synchronization is enabled, connection must also have read/write access to the pipoint database.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
&lt;h3&gt;Output Configuration on an Existing openPDC Installation&lt;/h3&gt;
&lt;ol&gt;&lt;li&gt;Open the openPDC manager and navigate to &lt;b&gt;Outputs &amp;gt; Historians&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click the &lt;b&gt;Clear&lt;/b&gt; button to create a new historian.&lt;/li&gt;
&lt;li&gt;Type name is PIAdapters.PIOutputAdapter. Assembly name is PIAdapters.dll.&lt;/li&gt;
&lt;li&gt;Connection string should be the following: server=&lt;i&gt;&amp;lt;servername&amp;gt;&lt;/i&gt;;
&lt;ol&gt;&lt;li&gt;For explicit logins, add the following: username=&lt;i&gt;&amp;lt;pi username&amp;gt;&lt;/i&gt;;password=&lt;i&gt;&amp;lt;pi password&amp;gt;&lt;/i&gt;;&lt;/li&gt;
&lt;li&gt;To have openPDC create new PI tags for all archived measurements if they don&amp;#39;t already exist, add the following: runMetadataSync=True;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Save the adapter configuration.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;b&gt;Manage &amp;gt; Measurements&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Choose each measurement that should be archived to PI, and change its historian to the PI historian that was set up on the Historians page.&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
&lt;h3&gt;Output Configuration on a new openPDC Installation&lt;/h3&gt;
&lt;ol&gt;&lt;li&gt;In the configuration setup utility, make sure to check the &amp;quot;Setup / change the primary historian&amp;quot; checkbox on the &amp;quot;Apply configuration changes&amp;quot; screen.&lt;/li&gt;
&lt;li&gt;On the next screen, which is the &amp;quot;Set up primary historian&amp;quot; screen, select &amp;quot;PI: Archives measurements to a PI server using PI SDK&amp;quot;&lt;/li&gt;
&lt;li&gt;On the &amp;quot;Set up historian connection string&amp;quot; screen, set the servername property to the name of your PI server from the PI SDK.
&lt;ol&gt;&lt;li&gt;For explicit logins, set the values of the username and password properties.&lt;/li&gt;
&lt;li&gt;To have openPDC create new PI tags for all archived measurements if they don&amp;#39;t already exist, set the RunMetadataSync Property to True. Otherwise, set it to false.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Continue with the setup utility. This will make all your measurements archive to PI by default.&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
&lt;h3&gt;Real-time Input Adapter Configuration&lt;/h3&gt;
The real-time PI input adapter connects to PI using event pipes, which is the same mechanism process book uses to retrieve real-time data. The adapter also uses the connect on demand feature in openPDC, which allows it to only query PI for data being used by an action adapter or output adapter.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;In the openPDC manager, go to &lt;b&gt;Adapters &amp;gt; Input Adapters&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Enter a name for the PI input adapter.&lt;/li&gt;
&lt;li&gt;For the type of adapter, choose &amp;quot;PI: Reads real-time measurements from a PI server using PI SDK.&amp;quot;&lt;/li&gt;
&lt;li&gt;Set the ServerName property to the name of the PI server from the PI SDK&lt;/li&gt;
&lt;li&gt;If you wish to connect to the PI server using explicit logins, set the UserName and Password properties too.&lt;/li&gt;
&lt;li&gt;Add an additional property to the connection string: &amp;quot;ConnectOnDemand=True;&amp;quot;&lt;/li&gt;
&lt;li&gt;Next, go to the &lt;b&gt;Manage &amp;gt; Measurements&lt;/b&gt; screen.&lt;/li&gt;
&lt;li&gt;You will need to manually add measurements that you wish to make available in openPDC. Either the point tag or the alternate tag must match the point&amp;#39;s tag in PI. It is recommended to create a separate historian (probably a virtual output historian) to archive all measurements and set the PI adapter&amp;#39;s output measurement key to everything on the historian with a FILTER expression.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Mon, 22 Apr 2013 13:20:37 GMT</pubDate><guid isPermaLink="false">Updated Wiki: OSI-PI Adapters 20130422012037P</guid></item><item><title>Updated Wiki: Adapter Synchronization (Developers)</title><link>https://openpdc.codeplex.com/wikipage?title=Adapter Synchronization (Developers)&amp;version=13</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;To address limitations in the wait handle pattern for adapter synchronization, as of version 1.5.192 of the openPDC and to be included in the final release of v1.5 SP1, wait handle synchronization has been replaced by the &amp;quot;Queue
 and Notify&amp;quot; pattern.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Introduction of the queue and notify pattern has replaced the wait handle pattern, in that the wait handle pattern no longer exists. Any systems using the old pattern will need to migrate their connection strings and adapter code to the queue and
 notify pattern.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;Usage is similar to the wait handle pattern. The following connection string parameters can now be specified on the dependent adapter.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencies&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Comma separated list of adapter acronyms
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencyTimeout&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Maximum wait time, in seconds, before proceeding
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;These connection string parameters instruct the openPDC measurement routing system to wait for an adapter's dependencies to finish processing measurements before providing those measurements to the dependent adapter. Those measurements will instead be queued
 until either the dependency adapters notify the routing system or the timeout expires.&lt;/p&gt;
&lt;p&gt;Any adapter which is acting as a dependency will now be expected to call one of the OnNotify() overloads to indicate that it has finished processing its measurements.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;    &lt;span style="color:blue"&gt;protected&lt;/span&gt; &lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame, &lt;span style="color:blue"&gt;int&lt;/span&gt; index)
    {
        &lt;span style="color:green"&gt;// Set flags for flat-line values&lt;/span&gt;
        SetStateFlagsForFlatLineValues(frame.Measurements.Values);

        &lt;span style="color:green"&gt;// Release adapters waiting on flat-line state&lt;/span&gt;
        OnNotify(frame.Measurements.Values);
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: If dependency relationships are updated due to a configuration change, it will be necessary to notify the measurement routing system by sending the 'RefreshRoutes' command via the openPDC Console.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Advanced information&lt;/h3&gt;
&lt;h4&gt;Intelligent queuing&lt;/h4&gt;
&lt;p&gt;The measurement routing system attempts to determine which measurements need to be queued based on the routes that the measurement is taking through the system. For example, in the following diagram, the measurement routing system has received three measurements
 (m1, m2, and m3) which are to be routed to at least one of two adapters (Dependency Adapter and Dependent Adapter). Dependent Adapter has listed Dependency Adapter among its dependencies in its connection string.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631348" alt="Measurement routing example" width="358" height="366"&gt;&lt;/p&gt;
&lt;p&gt;Measurements m1 and m3 are each being sent to only one of the adapters, so they will be provided immediately to Dependency Adapter and Dependent Adapter respectively. However, m2 is being provided to both adapters. In this case, the measurement routing system
 recognizes that there is a dependency between the two adapters receiving the measurement and will therefore only provide m2 to Dependency Adapter. It will also hold onto m2 until Dependency Adapter has sent a notification to indicate that it has finished processing.
 When the routing system receives the notification, that is when it sends m2 to Dependent Adapter.&lt;/p&gt;
&lt;p&gt;The key point here is that although m3 is being sent to Dependent Adapter, the routing system recognizes that it is not also being sent to Dependency Adapter. The measurement will not be held pending notification.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Signal separation&lt;/h4&gt;
&lt;p&gt;Measurements are queued by signal for each dependent adapter. This means that a set of queues is created for each dependent adapter, and the number of queues matches the number of signals being received by that dependent adapter and its dependencies. The
 following diagram shows a system with three dependent adapters and three signals, where each adapter is receiving a different set of signals.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631357" alt="Signal separation" width="678" height="487"&gt;&lt;/p&gt;
&lt;p&gt;In this scenario, if m1.1 arrives before m2.1, but the dependency adapters finish processing m2.1 before m1.1, then m2.1 can still be dequeued and provided to the adapters without having to wait on m1.1. On the other hand, if a dependency adapter fails to
 process m1.1 but succeeds in processing m1.2, the routing system must provide these measurements to the dependent adapter in order. The routing system will automatically time out m1.1 so that both measurements can be provided to the dependent adapters immediately.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Multiple dependencies&lt;/h4&gt;
&lt;p&gt;In the case of multiple dependencies, where A3 depends on both A1 and A2, this situation is handled in much the same way as the first example under intelligent queuing. For each measurement that goes through the measurement routing system, the system determines
 whether any measurements are going to A1 and A3, A2 and A3, or all three of them. Then, for each measurement added to the queue, it stores two sets: a set of the dependencies which also received the measurement and a set of the adapters that have notified.
 When the set of dependencies matches the set of notifications, the measurement is provided to A3. This way, notifications can come from A1 and A2 at any time and in either order. The measurement will not be provided to A3 until all of its dependencies which
 also received the measurement have notified.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;New with any adapter in v1.4 SP2 of the openPDC there are now two new connection string parameters:&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleNames&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt; - Comma separated list of wait handle names&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleTimeout &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;These two parameters allow any adapter in the system to temporarily postpone processing until all the named wait handles have fired and/or the wait times-out. Waiting is built-in and automated for action and output adapters simply
 by specifying the wait handle names. This includes remote data subscribers - the subscription methods include these two items as optional parameters.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The wait handle timeout is an optional parameter. The default value for the wait handle timeout on action adapters is based on the frame rate, for example, if the frame rate is 30 samples per second, the default wait handle timeout
 will be 33 milliseconds. For non-action adapters, the value will default to 33 milliseconds unless otherwise specified.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The multiple wait handle names allows adapters to wait for multiple events (e.g., measurement validation and chained calculation results).&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The only code change that will be needed is to &amp;quot;release&amp;quot; the waiting adapters when your custom event or action has completed, for example, in the following code the external event wait handle named &amp;quot;FlatLineState&amp;quot; gets released
 once the flat-line set has been completed and the state flags have been assigned:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;protected&lt;/span&gt;
&lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame,
&lt;span style="color:blue"&gt;int&lt;/span&gt; index)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Set flags for flat-line values&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetStateFlagsForFlatLineValues(frame.Measurements.Values);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Release adapters waiting on flat-line state&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetExternalEventHandle(&lt;span style="color:#a31515"&gt;&amp;quot;FlatLineState&amp;quot;&lt;/span&gt;).Set();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;For the adapter that needs to wait for the state to be set before processing, you would only need to add &amp;quot;&lt;/span&gt;&lt;span style="color:#a31515; font-size:10pt"&gt;; waitHandleNames=FlatLineState&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;quot; to
 your connection string.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;That should be it - so now any adapter can &amp;quot;wait&amp;quot; on another for input and/or flags to be assigned before processing the measurements.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Thanks!&lt;br&gt;
Ritchie&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Wed, 17 Apr 2013 20:06:52 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Adapter Synchronization (Developers) 20130417080652P</guid></item><item><title>Updated Wiki: About the Signal Reference</title><link>https://openpdc.codeplex.com/wikipage?title=About the Signal Reference&amp;version=7</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:14pt"&gt;Signal Reference Notes:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For synchrophasor measurements the signal reference field is critical - it is used to map device elements in a protocol frame (e.g., IEEE C37.118) to and from measurements. The format of this field is very regular:&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:60px"&gt;The text based signal reference field must contain the Acroynm of the associated Device, followed by a dash (&amp;lsquo;-&amp;lsquo;), followed by the two character SignalType Suffix then optionally followed by an index. Note that the mapping
 is by order, not by index or name.&amp;nbsp; Thus, it is critical that the indexed measurements be modeled in the order that they are returned from the source device. For example SHELBY-PM4 represents the fourth phasor magnitude for the SHELBY Device and&amp;nbsp;
 SHELBY-SF represents its status flags.&lt;/p&gt;
&lt;p&gt;The information below describes the original specification:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;In order to rebroadcast data from the sub-second sources, a field is required to be able to associate each point with its associated &amp;quot;field&amp;quot; in a synchrophasor protocol data frame. This document defines these relations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;This field is normally for internal use only and is stored in a field associated with each defined measurement point:&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-left:60px"&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr align="center" valign="middle" style="background-color:#c4bfc1; height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="color:#000000"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;Type of Point&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;span style="color:#000000"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;Abbreviation&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="color:#000000"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;Indexed?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Phasor Magnitude&lt;br&gt;
i.e., Voltage (Volts) or Current (Amps)&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;PM&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Phasor Angle&lt;br&gt;
i.e., Angle (Degrees)&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;PA&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Frequency&lt;br&gt;
i.e., Frequency (Hz)&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;FQ&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;No&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;dF/dt&lt;br&gt;
i.e., Frequency rate of change&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;DF&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;No&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Digital Value&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;DV&lt;/span&gt; &lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8pt"&gt;Analog Value&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;AV&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;&amp;nbsp;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Status Flags&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;SF&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;No&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:10pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:10pt"&gt;Examples below follow the prescribed format of: the PMU/device acronym, a dash and one of the above abbreviations. Also, if the type of point is indexed, adding the associated entry index, for example:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:10pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM1&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor1 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA1&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor1 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM2&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor2 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA2&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor2 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM3&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor3 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA3&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor3 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM4&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor4 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA4&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor4 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM5&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor5 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA5&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor5 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-FQ&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Frequency value associated with Frequency entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-DF&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Rate of frequency change associated with Frequency entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-DV1&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Digital Value 1&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-DV2&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Digital Value 2&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-SF&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Status Flags&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;Using this information you can map individual measurements to and from most any synchrophasor protocol data frame.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ritchiecarroll</author><pubDate>Fri, 12 Apr 2013 17:55:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: About the Signal Reference 20130412055503P</guid></item><item><title>Updated Wiki: About the Signal Reference</title><link>https://openpdc.codeplex.com/wikipage?title=About the Signal Reference&amp;version=6</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:14pt"&gt;Signal Reference Notes:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For synchrophasor measurements the signal reference field is critical - it is used to map device elements in a protocol frame (e.g., IEEE C37.118) to and from measurements. The format of this field is very regular:&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left:60px"&gt;The text based signal reference field must contain the Acroynm of the associated Device, followed by a dash (&amp;lsquo;-&amp;lsquo;), followed by the two character SignalType Suffix then optionally followed by an index. Note that the mapping
 is by order, not by index or name.&amp;nbsp; Thus, it is critical that the indexed measurements be modeled in the order that they are returned from the source device. For example SHELBY-PM4 represents the fourth phasor magnitude for the SHELBY Device and&amp;nbsp;
 SHELBY-SF represents its status flags.&lt;/p&gt;
&lt;p&gt;The information below describes the original specification:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;In order to rebroadcast data from the sub-second sources, a field is required to be able to associate each point with its associated &amp;quot;field&amp;quot; in a synchrophasor protocol data frame. This document defines these relations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;This field is normally for internal use only and is stored in a field associated with each defined measurement point:&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-left:60px"&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr align="center" valign="middle" style="background-color:#c4bfc1; height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="color:#000000"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;Type of Point&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;span style="color:#000000"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;Abbreviation&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="color:#000000"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;Indexed?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Phasor Magnitude&lt;br&gt;
i.e., Voltage (Volts) or Current (Amps)&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;PM&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Phasor Angle&lt;br&gt;
i.e., Angle (Degrees)&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;PA&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Frequency&lt;br&gt;
i.e., Frequency (Hz)&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;FQ&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;No&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;dF/dt&lt;br&gt;
i.e., Frequency rate of change&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;DF&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;No&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Digital Value&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;DV&lt;/span&gt; &lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8pt"&gt;Analog Value&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;AV&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;&amp;nbsp;Yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align="center" valign="middle" style="height:50px"&gt;
&lt;td width="205"&gt;&lt;span style="font-size:8pt"&gt;Status Flags&lt;/span&gt;&lt;/td&gt;
&lt;td width="85"&gt;&lt;strong&gt;&lt;span style="font-size:8pt"&gt;SF&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="84"&gt;&lt;span style="font-size:8pt"&gt;No&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:10pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:10pt"&gt;Examples below follow the prescribed format of: the PMU/device acronym, a dash and one of the above abbreviations. Also, if the type of point is indexed, adding the associated entry index, for example:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:10pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM1&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor1 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA1&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor1 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM2&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor2 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA2&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor2 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM3&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor3 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA3&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor3 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM4&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor4 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA4&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor4 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PM5&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Magnitude associated with Phasor5 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-PA5&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Angle associated with Phasor5 entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-FQ&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Frequency value associated with Frequency entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-DF&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Rate of frequency change associated with Frequency entry&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-DV1&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Digital Value 1&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-DV2&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Digital Value 2&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-top:0in; margin-right:0in; margin-bottom:.0001pt; margin-left:.5in; line-height:normal; page-break-after:avoid"&gt;
&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt;SHELBY-SF&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:Wingdings"&gt;&amp;szlig;&lt;/span&gt;&lt;span style="font-size:9.0pt; font-family:&amp;quot;Courier New&amp;quot;"&gt; Status Flags&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;Using this information you can map individual measurements to and from most any synchrophasor protocol data frame.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ritchiecarroll</author><pubDate>Fri, 12 Apr 2013 17:54:35 GMT</pubDate><guid isPermaLink="false">Updated Wiki: About the Signal Reference 20130412055435P</guid></item><item><title>Updated Wiki: Adapter Synchronization (Developers)</title><link>http://openpdc.codeplex.com/wikipage?title=Adapter Synchronization (Developers)&amp;version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;To address limitations in the wait handle pattern for adapter synchronization, as of version 1.5.192 of the openPDC and to be included in the final release of v1.5 SP1, wait handle synchronization has been replaced by the &amp;quot;Queue
 and Notify&amp;quot; pattern.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Introduction of the queue and notify pattern has replaced the wait handle pattern, in that the wait handle pattern no longer exists. Any systems using the old pattern will need to migrate their connection strings and adapter code to the queue and
 notify pattern.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;Usage is similar to the wait handle pattern. The following connection string parameters can now be specified on the dependent adapter.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencies&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Comma separated list of adapter acronyms
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencyTimeout&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;These connection string parameters instruct the openPDC measurement routing system to wait for an adapter's dependencies to finish processing measurements before providing those measurements to the dependent adapter. Those measurements will instead be queued
 until either the dependency adapters notify the routing system or the timeout expires.&lt;/p&gt;
&lt;p&gt;Any adapter which is acting as a dependency will now be expected to call one of the OnNotify() overloads to indicate that it has finished processing its measurements.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;    &lt;span style="color:blue"&gt;protected&lt;/span&gt; &lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame, &lt;span style="color:blue"&gt;int&lt;/span&gt; index)
    {
        &lt;span style="color:green"&gt;// Set flags for flat-line values&lt;/span&gt;
        SetStateFlagsForFlatLineValues(frame.Measurements.Values);

        &lt;span style="color:green"&gt;// Release adapters waiting on flat-line state&lt;/span&gt;
        OnNotify(frame.Measurements.Values);
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: If dependency relationships are updated due to a configuration change, it will be necessary to notify the measurement routing system by sending the 'RefreshRoutes' command via the openPDC Console.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Advanced information&lt;/h3&gt;
&lt;h4&gt;Intelligent queuing&lt;/h4&gt;
&lt;p&gt;The measurement routing system attempts to determine which measurements need to be queued based on the routes that the measurement is taking through the system. For example, in the following diagram, the measurement routing system has received three measurements
 (m1, m2, and m3) which are to be routed to at least one of two adapters (Dependency Adapter and Dependent Adapter). Dependent Adapter has listed Dependency Adapter among its dependencies in its connection string.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631348" alt="Measurement routing example" width="358" height="366"&gt;&lt;/p&gt;
&lt;p&gt;Measurements m1 and m3 are each being sent to only one of the adapters, so they will be provided immediately to Dependency Adapter and Dependent Adapter respectively. However, m2 is being provided to both adapters. In this case, the measurement routing system
 recognizes that there is a dependency between the two adapters receiving the measurement and will therefore only provide m2 to Dependency Adapter. It will also hold onto m2 until Dependency Adapter has sent a notification to indicate that it has finished processing.
 When the routing system receives the notification, that is when it sends m2 to Dependent Adapter.&lt;/p&gt;
&lt;p&gt;The key point here is that although m3 is being sent to Dependent Adapter, the routing system recognizes that it is not also being sent to Dependency Adapter. The measurement will not be held pending notification.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Signal separation&lt;/h4&gt;
&lt;p&gt;Measurements are queued by signal for each dependent adapter. This means that a set of queues is created for each dependent adapter, and the number of queues matches the number of signals being received by that dependent adapter and its dependencies. The
 following diagram shows a system with three dependent adapters and three signals, where each adapter is receiving a different set of signals.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631357" alt="Signal separation" width="678" height="487"&gt;&lt;/p&gt;
&lt;p&gt;In this scenario, if m1.1 arrives before m2.1, but the dependency adapters finish processing m2.1 before m1.1, then m2.1 can still be dequeued and provided to the adapters without having to wait on m1.1. On the other hand, if a dependency adapter fails to
 process m1.1 but succeeds in processing m1.2, the routing system must provide these measurements to the dependent adapter in order. The routing system will automatically time out m1.1 so that both measurements can be provided to the dependent adapters immediately.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Multiple dependencies&lt;/h4&gt;
&lt;p&gt;In the case of multiple dependencies, where A3 depends on both A1 and A2, this situation is handled in much the same way as the first example under intelligent queuing. For each measurement that goes through the measurement routing system, the system determines
 whether any measurements are going to A1 and A3, A2 and A3, or all three of them. Then, for each measurement added to the queue, it stores two sets: a set of the dependencies which also received the measurement and a set of the adapters that have notified.
 When the set of dependencies matches the set of notifications, the measurement is provided to A3. This way, notifications can come from A1 and A2 at any time and in either order. The measurement will not be provided to A3 until all of its dependencies which
 also received the measurement have notified.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;New with any adapter in v1.4 SP2 of the openPDC there are now two new connection string parameters:&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleNames&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt; - Comma separated list of wait handle names&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleTimeout &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;These two parameters allow any adapter in the system to temporarily postpone processing until all the named wait handles have fired and/or the wait times-out. Waiting is built-in and automated for action and output adapters simply
 by specifying the wait handle names. This includes remote data subscribers - the subscription methods include these two items as optional parameters.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The wait handle timeout is an optional parameter. The default value for the wait handle timeout on action adapters is based on the frame rate, for example, if the frame rate is 30 samples per second, the default wait handle timeout
 will be 33 milliseconds. For non-action adapters, the value will default to 33 milliseconds unless otherwise specified.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The multiple wait handle names allows adapters to wait for multiple events (e.g., measurement validation and chained calculation results).&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The only code change that will be needed is to &amp;quot;release&amp;quot; the waiting adapters when your custom event or action has completed, for example, in the following code the external event wait handle named &amp;quot;FlatLineState&amp;quot; gets released
 once the flat-line set has been completed and the state flags have been assigned:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;protected&lt;/span&gt;
&lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame,
&lt;span style="color:blue"&gt;int&lt;/span&gt; index)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Set flags for flat-line values&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetStateFlagsForFlatLineValues(frame.Measurements.Values);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Release adapters waiting on flat-line state&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetExternalEventHandle(&lt;span style="color:#a31515"&gt;&amp;quot;FlatLineState&amp;quot;&lt;/span&gt;).Set();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;For the adapter that needs to wait for the state to be set before processing, you would only need to add &amp;quot;&lt;/span&gt;&lt;span style="color:#a31515; font-size:10pt"&gt;; waitHandleNames=FlatLineState&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;quot; to
 your connection string.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;That should be it - so now any adapter can &amp;quot;wait&amp;quot; on another for input and/or flags to be assigned before processing the measurements.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Thanks!&lt;br&gt;
Ritchie&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Wed, 27 Feb 2013 15:29:17 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Adapter Synchronization (Developers) 20130227032917P</guid></item><item><title>Updated Wiki: Adapter Synchronization (Developers)</title><link>http://openpdc.codeplex.com/wikipage?title=Adapter Synchronization (Developers)&amp;version=11</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;To address limitations in the wait handle pattern for adapter synchronization, as of version 1.5.192 of the openPDC and to be included in the final release of v1.5 SP1, wait handle synchronization has been replaced by the &amp;quot;Queue
 and Notify&amp;quot; pattern.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Introduction of the queue and notify pattern has replaced the wait handle pattern, in that the wait handle pattern no longer exists. Any systems using the old pattern will need to migrate their connection strings and adapter code to the queue and
 notify pattern.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;Usage is similar to the wait handle pattern. The following connection string parameters can now be specified on the dependent adapter.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencies&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Comma separated list of adapter acronyms
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencyTimeout&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;These connection string parameters instruct the openPDC measurement routing system to wait for an adapter's dependencies to finish processing measurements before providing those measurements to the dependent adapter. Those measurements will instead be queued
 until either the dependency adapters notify the routing system or the timeout expires.&lt;/p&gt;
&lt;p&gt;Any adapter which is acting as a dependency will now be expected to call one of the OnNotify() overloads to indicate that it has finished processing its measurements.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;    &lt;span style="color:blue"&gt;protected&lt;/span&gt; &lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame, &lt;span style="color:blue"&gt;int&lt;/span&gt; index)
    {
        &lt;span style="color:green"&gt;// Set flags for flat-line values&lt;/span&gt;
        SetStateFlagsForFlatLineValues(frame.Measurements.Values);

        &lt;span style="color:green"&gt;// Release adapters waiting on flat-line state&lt;/span&gt;
        OnNotify(frame.Measurements.ToArray());
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: If dependency relationships are updated due to a configuration change, it will be necessary to notify the measurement routing system by sending the 'RefreshRoutes' command via the openPDC Console.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Advanced information&lt;/h3&gt;
&lt;h4&gt;Intelligent queuing&lt;/h4&gt;
&lt;p&gt;The measurement routing system attempts to determine which measurements need to be queued based on the routes that the measurement is taking through the system. For example, in the following diagram, the measurement routing system has received three measurements
 (m1, m2, and m3) which are to be routed to at least one of two adapters (Dependency Adapter and Dependent Adapter). Dependent Adapter has listed Dependency Adapter among its dependencies in its connection string.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631348" alt="Measurement routing example" width="358" height="366"&gt;&lt;/p&gt;
&lt;p&gt;Measurements m1 and m3 are each being sent to only one of the adapters, so they will be provided immediately to Dependency Adapter and Dependent Adapter respectively. However, m2 is being provided to both adapters. In this case, the measurement routing system
 recognizes that there is a dependency between the two adapters receiving the measurement and will therefore only provide m2 to Dependency Adapter. It will also hold onto m2 until Dependency Adapter has sent a notification to indicate that it has finished processing.
 When the routing system receives the notification, that is when it sends m2 to Dependent Adapter.&lt;/p&gt;
&lt;p&gt;The key point here is that although m3 is being sent to Dependent Adapter, the routing system recognizes that it is not also being sent to Dependency Adapter. The measurement will not be held pending notification.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Signal separation&lt;/h4&gt;
&lt;p&gt;Measurements are queued by signal for each dependent adapter. This means that a set of queues is created for each dependent adapter, and the number of queues matches the number of signals being received by that dependent adapter and its dependencies. The
 following diagram shows a system with three dependent adapters and three signals, where each adapter is receiving a different set of signals.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631357" alt="Signal separation" width="678" height="487"&gt;&lt;/p&gt;
&lt;p&gt;In this scenario, if m1.1 arrives before m2.1, but the dependency adapters finish processing m2.1 before m1.1, then m2.1 can still be dequeued and provided to the adapters without having to wait on m1.1. On the other hand, if a dependency adapter fails to
 process m1.1 but succeeds in processing m1.2, the routing system must provide these measurements to the dependent adapter in order. The routing system will automatically time out m1.1 so that both measurements can be provided to the dependent adapters immediately.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Multiple dependencies&lt;/h4&gt;
&lt;p&gt;In the case of multiple dependencies, where A3 depends on both A1 and A2, this situation is handled in much the same way as the first example under intelligent queuing. For each measurement that goes through the measurement routing system, the system determines
 whether any measurements are going to A1 and A3, A2 and A3, or all three of them. Then, for each measurement added to the queue, it stores two sets: a set of the dependencies which also received the measurement and a set of the adapters that have notified.
 When the set of dependencies matches the set of notifications, the measurement is provided to A3. This way, notifications can come from A1 and A2 at any time and in either order. The measurement will not be provided to A3 until all of its dependencies which
 also received the measurement have notified.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;New with any adapter in v1.4 SP2 of the openPDC there are now two new connection string parameters:&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleNames&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt; - Comma separated list of wait handle names&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleTimeout &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;These two parameters allow any adapter in the system to temporarily postpone processing until all the named wait handles have fired and/or the wait times-out. Waiting is built-in and automated for action and output adapters simply
 by specifying the wait handle names. This includes remote data subscribers - the subscription methods include these two items as optional parameters.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The wait handle timeout is an optional parameter. The default value for the wait handle timeout on action adapters is based on the frame rate, for example, if the frame rate is 30 samples per second, the default wait handle timeout
 will be 33 milliseconds. For non-action adapters, the value will default to 33 milliseconds unless otherwise specified.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The multiple wait handle names allows adapters to wait for multiple events (e.g., measurement validation and chained calculation results).&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The only code change that will be needed is to &amp;quot;release&amp;quot; the waiting adapters when your custom event or action has completed, for example, in the following code the external event wait handle named &amp;quot;FlatLineState&amp;quot; gets released
 once the flat-line set has been completed and the state flags have been assigned:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;protected&lt;/span&gt;
&lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame,
&lt;span style="color:blue"&gt;int&lt;/span&gt; index)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Set flags for flat-line values&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetStateFlagsForFlatLineValues(frame.Measurements.Values);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Release adapters waiting on flat-line state&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetExternalEventHandle(&lt;span style="color:#a31515"&gt;&amp;quot;FlatLineState&amp;quot;&lt;/span&gt;).Set();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;For the adapter that needs to wait for the state to be set before processing, you would only need to add &amp;quot;&lt;/span&gt;&lt;span style="color:#a31515; font-size:10pt"&gt;; waitHandleNames=FlatLineState&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;quot; to
 your connection string.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;That should be it - so now any adapter can &amp;quot;wait&amp;quot; on another for input and/or flags to be assigned before processing the measurements.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Thanks!&lt;br&gt;
Ritchie&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Wed, 27 Feb 2013 14:37:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Adapter Synchronization (Developers) 20130227023708P</guid></item><item><title>Updated Wiki: Adapter Synchronization (Developers)</title><link>http://openpdc.codeplex.com/wikipage?title=Adapter Synchronization (Developers)&amp;version=10</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;To address limitations in the wait handle pattern for adapter synchronization, as of version 1.5.192 of the openPDC and to be included in the final release of v1.5 SP1, wait handle synchronization has been replaced by the &amp;quot;Queue
 and Notify&amp;quot; pattern.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Introduction of the queue and notify pattern has replaced the wait handle pattern, in that the wait handle pattern no longer exists. Any systems using the old pattern will need to migrate their connection strings and adapter code to the queue and
 notify pattern.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;Usage is similar to the wait handle pattern. The following connection string parameters can now be specified on the dependent adapter.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencies&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Comma separated list of adapter acronyms
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencyTimeout&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;These connection string parameters instruct the openPDC measurement routing system to wait for an adapter's dependencies to finish processing measurements before providing those measurements to the dependent adapter. Those measurements will instead be queued
 until either the dependency adapters notify the routing system or the timeout expires.&lt;/p&gt;
&lt;p&gt;Any adapter which is acting as a dependency will now be expected to call one of the OnNotify() overloads to indicate that it has finished processing its measurements.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;    &lt;span style="color:blue"&gt;protected&lt;/span&gt; &lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame, &lt;span style="color:blue"&gt;int&lt;/span&gt; index)
    {
        &lt;span style="color:green"&gt;// Set flags for flat-line values&lt;/span&gt;
        SetStateFlagsForFlatLineValues(frame.Measurements.Values);

        &lt;span style="color:green"&gt;// Release adapters waiting on flat-line state&lt;/span&gt;
        OnNotify(frame.Measurements.ToArray());
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: If dependency relationships are updated due to a configuration change, it will be necessary to notify the measurement routing system by sending the 'RefreshRoutes' command via the openPDC Console.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Advanced information&lt;/h3&gt;
&lt;h4&gt;Intelligent queuing&lt;/h4&gt;
&lt;p&gt;The measurement routing system attempts to determine which measurements need to be queued based on the routes that the measurement is taking through the system. For example, in the following diagram, the measurement routing system has received three measurements
 (m1, m2, and m3) which are to be routed to at least one of two adapters (Dependency Adapter and Dependent Adapter). Dependent Adapter has listed Dependency Adapter among its dependencies in its connection string.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631348" alt="Measurement routing example" width="358" height="366"&gt;&lt;/p&gt;
&lt;p&gt;Measurements m1 and m3 are each being sent to only one of the adapters, so they will be provided immediately to Dependency Adapter and Dependent Adapter respectively. However, m2 is being provided to both adapters. In this case, the measurement routing system
 recognizes that there is a dependency between the two adapters receiving the measurement and will therefore only provide m2 to Dependency Adapter. It will also hold onto m2 until Dependency Adapter has sent a notification to indicate that it has finished processing.
 When the routing system receives the notification, that is when it sends m2 to Dependent Adapter.&lt;/p&gt;
&lt;p&gt;The key point here is that although m3 is being sent to Dependent Adapter, the routing system recognizes that it is not also being sent to Dependency Adapter. The measurement will not be held pending notification.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Signal separation&lt;/h4&gt;
&lt;p&gt;Measurements are queued by signal for each dependent adapter. This means that a set of queues is created for each dependent adapter, and the number of queues matches the number of signals being received by that dependent adapter and its dependencies. The
 following diagram shows a system with three dependent adapters and three signals, where each adapter is receiving a different set of signals.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631357" alt="Signal separation" width="678" height="487"&gt;&lt;/p&gt;
&lt;p&gt;In this scenario, if m1.1 arrives before m2.1, but the dependency adapters finish processing m2.1 before m1.1, then m2.1 can still be dequeued and provided to the adapters without having to wait on m1.1. On the other hand, if a dependency adapter fails to
 process m1.1 but succeeds in processing m1.2, the routing system must provide these measurements to the dependent adapter in order. The routing system will automatically time out m1.1 so that both measurements can be provided to the dependent adapters immediately.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Multiple dependencies&lt;/h4&gt;
&lt;p&gt;In the case of multiple dependencies, where A3 depends on both A1 and A2, this situation is handled in much the same way as the first example under intelligent queuing. For each measurement that goes through the measurement routing system, the system determines
 whether any measurements are going to A1 and A3, A2 and A3, or all three of them. Then, for each measurement added to the queue, it stores two sets: a set of the dependencies which also received the measurement and a set of the adapters that have notified.
 When the set of dependencies matches the set of notifications, the measurement is provided to A3. This way, notifications can come from A1 and A2 at any time and in either order. The measurement will not be provided to A3 until all of its dependencies which
 also received the measurement have notified.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;New with any adapter in v1.4 SP2 of the openPDC there are now two new connection string parameters:&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleNames&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt; - Comma separated list of wait handle names&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleTimeout &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;These two parameters allow any adapter in the system to temporarily postpone processing until all the named wait handles have fired and/or the wait times-out. Waiting is built-in and automated for action and output adapters simply
 by specifying the wait handle names. This includes remote data subscribers - the subscription methods include these two items as optional parameters.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The wait handle timeout is an optional parameter. The default value for the wait handle timeout on action adapters is based on the frame rate, for example, if the frame rate is 30 samples per second, the default wait handle timeout
 will be 33 milliseconds. For non-action adapters, the value will default to 33 milliseconds unless otherwise specified.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The multiple wait handle names allows adapters to wait for multiple events (e.g., measurement validation and chained calculation results).&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The only code change that will be needed is to &amp;quot;release&amp;quot; the waiting adapters when your custom event or action has completed, for example, in the following code the external event wait handle named &amp;quot;FlatLineState&amp;quot; gets released
 once the flat-line set has been completed and the state flags have been assigned:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;protected&lt;/span&gt;
&lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame,
&lt;span style="color:blue"&gt;int&lt;/span&gt; index)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Set flags for flat-line values&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetStateFlagsForFlatLineValues(frame.Measurements.Values);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Release adapters waiting on flat-line state&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetExternalEventHandle(&lt;span style="color:#a31515"&gt;&amp;quot;FlatLineState&amp;quot;&lt;/span&gt;).Set();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;For the adapter that needs to wait for the state to be set before processing, you would only need to add &amp;quot;&lt;/span&gt;&lt;span style="color:#a31515; font-size:10pt"&gt;; waitHandleNames=FlatLineState&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;quot; to
 your connection string.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;That should be it - so now any adapter can &amp;quot;wait&amp;quot; on another for input and/or flags to be assigned before processing the measurements.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Thanks!&lt;br&gt;
Ritchie&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Wed, 27 Feb 2013 14:36:56 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Adapter Synchronization (Developers) 20130227023656P</guid></item><item><title>Updated Wiki: Adapter Synchronization (Developers)</title><link>http://openpdc.codeplex.com/wikipage?title=Adapter Synchronization (Developers)&amp;version=9</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;To address limitations in the wait handle pattern for adapter synchronization, as of version 1.5.192 of the openPDC and to be included in the final release of v1.5 SP1, wait handle synchronization has been replaced by the &amp;quot;Queue
 and Notify&amp;quot; pattern.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Introduction of the queue and notify pattern has replaced the wait handle pattern, in that the wait handle pattern no longer exists. Any systems using the old pattern will need to migrate their connection strings and adapter code to the queue and
 notify pattern.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt"&gt;Usage is similar to the wait handle pattern. The following connection string parameters can now be specified on the dependent adapter.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencies&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Comma separated list of adapter acronyms
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;dependencyTimeout&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;These connection string parameters instruct the openPDC measurement routing system to wait for an adapter's dependencies to finish processing measurements before providing those measurements to the dependent adapter. Those measurements will instead be queued
 until either the dependency adapters notify the routing system or the timeout expires.&lt;/p&gt;
&lt;p&gt;Any adapter which is acting as a dependency will now be expected to call one of the OnNotify() overloads to indicate that it has finished processing its measurements.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;    &lt;span style="color:blue"&gt;protected&lt;/span&gt; &lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame, &lt;span style="color:blue"&gt;int&lt;/span&gt; index)
    {
        &lt;span style="color:green"&gt;// Set flags for flat-line values&lt;/span&gt;
        SetStateFlagsForFlatLineValues(frame.Measurements.Values);

        &lt;span style="color:green"&gt;// Release adapters waiting on flat-line state&lt;/span&gt;
        OnNotify(frame.Measurements.ToArray());
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Advanced information&lt;/h3&gt;
&lt;h4&gt;Intelligent queuing&lt;/h4&gt;
&lt;p&gt;The measurement routing system attempts to determine which measurements need to be queued based on the routes that the measurement is taking through the system. For example, in the following diagram, the measurement routing system has received three measurements
 (m1, m2, and m3) which are to be routed to at least one of two adapters (Dependency Adapter and Dependent Adapter). Dependent Adapter has listed Dependency Adapter among its dependencies in its connection string.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631348" alt="Measurement routing example" width="358" height="366"&gt;&lt;/p&gt;
&lt;p&gt;Measurements m1 and m3 are each being sent to only one of the adapters, so they will be provided immediately to Dependency Adapter and Dependent Adapter respectively. However, m2 is being provided to both adapters. In this case, the measurement routing system
 recognizes that there is a dependency between the two adapters receiving the measurement and will therefore only provide m2 to Dependency Adapter. It will also hold onto m2 until Dependency Adapter has sent a notification to indicate that it has finished processing.
 When the routing system receives the notification, that is when it sends m2 to Dependent Adapter.&lt;/p&gt;
&lt;p&gt;The key point here is that although m3 is being sent to Dependent Adapter, the routing system recognizes that it is not also being sent to Dependency Adapter. The measurement will not be held pending notification.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Signal separation&lt;/h4&gt;
&lt;p&gt;Measurements are queued by signal for each dependent adapter. This means that a set of queues is created for each dependent adapter, and the number of queues matches the number of signals being received by that dependent adapter and its dependencies. The
 following diagram shows a system with three dependent adapters and three signals, where each adapter is receiving a different set of signals.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=openpdc&amp;DownloadId=631357" alt="Signal separation" width="678" height="487"&gt;&lt;/p&gt;
&lt;p&gt;In this scenario, if m1.1 arrives before m2.1, but the dependency adapters finish processing m2.1 before m1.1, then m2.1 can still be dequeued and provided to the adapters without having to wait on m1.1. On the other hand, if a dependency adapter fails to
 process m1.1 but succeeds in processing m1.2, the routing system must provide these measurements to the dependent adapter in order. The routing system will automatically time out m1.1 so that both measurements can be provided to the dependent adapters immediately.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Multiple dependencies&lt;/h4&gt;
&lt;p&gt;In the case of multiple dependencies, where A3 depends on both A1 and A2, this situation is handled in much the same way as the first example under intelligent queuing. For each measurement that goes through the measurement routing system, the system determines
 whether any measurements are going to A1 and A3, A2 and A3, or all three of them. Then, for each measurement added to the queue, it stores two sets: a set of the dependencies which also received the measurement and a set of the adapters that have notified.
 When the set of dependencies matches the set of notifications, the measurement is provided to A3. This way, notifications can come from A1 and A2 at any time and in either order. The measurement will not be provided to A3 until all of its dependencies which
 also received the measurement have notified.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;New with any adapter in v1.4 SP2 of the openPDC there are now two new connection string parameters:&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleNames&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt; - Comma separated list of wait handle names&lt;/span&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#1f497d"&gt;waitHandleTimeout &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;- Maximum wait time, in milliseconds, before proceeding&lt;/span&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;These two parameters allow any adapter in the system to temporarily postpone processing until all the named wait handles have fired and/or the wait times-out. Waiting is built-in and automated for action and output adapters simply
 by specifying the wait handle names. This includes remote data subscribers - the subscription methods include these two items as optional parameters.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The wait handle timeout is an optional parameter. The default value for the wait handle timeout on action adapters is based on the frame rate, for example, if the frame rate is 30 samples per second, the default wait handle timeout
 will be 33 milliseconds. For non-action adapters, the value will default to 33 milliseconds unless otherwise specified.&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The multiple wait handle names allows adapters to wait for multiple events (e.g., measurement validation and chained calculation results).&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;The only code change that will be needed is to &amp;quot;release&amp;quot; the waiting adapters when your custom event or action has completed, for example, in the following code the external event wait handle named &amp;quot;FlatLineState&amp;quot; gets released
 once the flat-line set has been completed and the state flags have been assigned:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;protected&lt;/span&gt;
&lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; PublishFrame(IFrame frame,
&lt;span style="color:blue"&gt;int&lt;/span&gt; index)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Set flags for flat-line values&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetStateFlagsForFlatLineValues(frame.Measurements.Values);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green"&gt;
// Release adapters waiting on flat-line state&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetExternalEventHandle(&lt;span style="color:#a31515"&gt;&amp;quot;FlatLineState&amp;quot;&lt;/span&gt;).Set();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;For the adapter that needs to wait for the state to be set before processing, you would only need to add &amp;quot;&lt;/span&gt;&lt;span style="color:#a31515; font-size:10pt"&gt;; waitHandleNames=FlatLineState&lt;/span&gt;&lt;span style="color:#1f497d"&gt;&amp;quot; to
 your connection string.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;That should be it - so now any adapter can &amp;quot;wait&amp;quot; on another for input and/or flags to be assigned before processing the measurements.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#1f497d"&gt;Thanks!&lt;br&gt;
Ritchie&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>staphen</author><pubDate>Tue, 26 Feb 2013 21:38:52 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Adapter Synchronization (Developers) 20130226093852P</guid></item></channel></rss>