I am new to using the SDK with PI (and PI in general). I went through the material available online, but was not able to find a solution (or even cause) for the behavior I am going to attempt to explain.
I would like to use the UpdateValues command from the SDK to preload a test PI Server (default vCampus Install) with some historical records (roughly 2-weeks of 1sec data for about 120 tags).
I had started with a single tag, which I manually added in the Point Builder (No Compression, Zero’s and Spans set correctly, classic data point, point source=L, Archiving=On).
Below is the C# code I used to update the values to the existing point.
srv_write = g_SDK.Servers[textBox1.Text];// server object from the name in textBox1
ptPIPoint = srv_write.PIPoints["PLTFP09FV-1294"];
PISDKCommon.PIAsynchStatus asyncStatus = new PISDKCommon.PIAsynchStatus();
for (int jj = 0; jj < 300; jj++)
,PISDK.DataMergeConstants.dmInsertDuplicates , asyncStatus);
I can get the UpdateValues to perform as expected on a small amount of data points (<50 points). But, if I start adding larger amounts (say 300 points, ). Only a small fraction of the points actually get added to the Server, and some of the previously added points get removed. If I do a line by line check of the data as I am updating the Values, using:
ptPIPoint.Data.ArcValue(TimeStamp[jj], PISDK.RetrievalTypeConstants.rtAuto, asyncStatus).Value)
it shows every value is being written.
But when I use the “Recorded Values” in the PI System Management Tools, it will only list a fraction of the data I loaded. If I try to just add the data in batches of 50 and hit “Refresh” on the Recorded Values, the values that were previously there no longer show up.
I know I must be missing some crazy simple, but for the life of me I cannot figure it out. I am not using any interfaces. I have only added this one Point to the PI Server.
I appreciate any guidance you can provide!