Hi:

We are in need to write some ACE code that may require access to external .NET assemblies (matrixes, SVD, eigen analysis, etc.), is it possible to use external assemblies in ACE or are we bounded to the VS capabilities?

Regards

Jaime

Hi:

We are in need to write some ACE code that may require access to external .NET assemblies (matrixes, SVD, eigen analysis, etc.), is it possible to use external assemblies in ACE or are we bounded to the VS capabilities?

Regards

Jaime

- 1 person found this helpful
It is certainly possible to use external .NET libraries within ACE code. For example, the ACE user guide shows an example of calling externally hosted MATLAB code.

One possible complication is if the assembly is built on .NET 4.x+. In this case, you should follow KB00645 - Specifying the version of .NET framework for PI ACE calculations to configure ACE for .NET 4.x+.

Another constraint is that you will be limited to the scheduler resources of ACE. If the calculation is run periodically at 1 min intervals and SVD takes 5 min to complete, then there will be problems...

ACE is generally useful if

1) You have relatively quick "streaming" calculations and want "streaming" output

2) You want to take advantage of its natural triggering and PI-context-aware capabilities

Sometimes, ACE is used to perform "batch" type analyses (run some CPU-intensive aggregate calculations on the past hour or days worth of data). Although possible with ACE, it is easy to abuse it in this way. In these "batch-oriented" cases, it is worth looking into custom code and/or scheduled with Windows Task Scheduler. There is no black-white, but if the matrix calculations are more like 1) and 2) above, then ACE is worth a try.

It is certainly possible to use external .NET libraries within ACE code. For example, the ACE user guide shows an example of calling externally hosted MATLAB code.

One possible complication is if the assembly is built on .NET 4.x+. In this case, you should follow KB00645 - Specifying the version of .NET framework for PI ACE calculations to configure ACE for .NET 4.x+.

Another constraint is that you will be limited to the scheduler resources of ACE. If the calculation is run periodically at 1 min intervals and SVD takes 5 min to complete, then there will be problems...

ACE is generally useful if

1) You have relatively quick "streaming" calculations and want "streaming" output

2) You want to take advantage of its natural triggering and PI-context-aware capabilities

Sometimes, ACE is used to perform "batch" type analyses (run some CPU-intensive aggregate calculations on the past hour or days worth of data). Although possible with ACE, it is easy to abuse it in this way. In these "batch-oriented" cases, it is worth looking into custom code and/or scheduled with Windows Task Scheduler. There is no black-white, but if the matrix calculations are more like 1) and 2) above, then ACE is worth a try.