I am building a PI ACE calc to perform calculations on tags that are not initially specified in the PI ACE calculation configuration. This is how I am planning it:
- Calculation context is started
- In the initialization phase, it search for tags and build a point list for the tags that match a certain attribute mask (using PI-SDK)
- Every N minutes (clock based), perform the calcs and output the results.
- A separate thread would be continuously searching for new tags to be included in the next calculation time
However, I believe I should leverage the power of PI point caching in ACE, and this is one thing that SDK is not going to give me. Is there any way to add PI ACE points on the fly into the calculation?
Also, I am concerned about performance. The type of calculation (formula used) will depend on some tag attributes. Is it a good practice to read a pipoint attribute every time a perform a calculation or it would be better to store the specific attribute value in arrays (considering that reading an array is usually faster than reading an object attribute)? Any recommendation regarding pipoint attribute reading performance?