Is it possible for a single ACE scheduler hosted on a PI server to write to multiple other PI servers (many target PI servers) ? If yes, then how to configure it?
If you read the first page of Chapter 1 of PI ACE 2010 R2 User Guide, you will see that one of the main features of PI ACE is to be use multiple PI tags from multiple PI Servers in calculations.
On the PI ACE Wizard, when you define the input and output tags during the creation of a new ACE executable, you should just write the full path of the tag with the PI Server name like \\MARC-PI2014\SINUSOID. This way you are able to use multiple PI tags from multiple PI Servers in PI ACE calculations.
Hope this helps you!
Thank you for the email.
I understand that we can use multiple PI tags from different PI servers in ACE calculations.
But what I want to know is about the ACE scheduler configuration.
Say I have 2 PI servers and an ACE box, and my scheduler is installed on one of the PI servers ( and not on the ace box), then in this case, how does my scheduler work? I would like to know explicitly about how the scheduler connects to either of the PI servers.
Kindly share your thoughts.
No, you can only write to 1 PI Server from a single ACE scheduler.
Abacus on the other hand....
PI ACE has the default SDK connection to one PI server, therefore, generally, it could just write the value to that PI server. However, if you include PI SDK/PI AF SDK in the project, your goal could be achieved. However, it is necessary to create SDK connections at the begining of the project at first.
Moreover, PI ACE scheduler could just be used for single PI server. Therefore, if you need some other natrual or time triggers from/for another PI server, you have to make a programming.
PI ACE is using PI SDK to retrieve events from the PI Server but PI API to write values. N-way buffering against a PI Server Collective is a supported feature. I haven't tried this but with the new PI Buffer Subsystem writing against multiple PI Data Archives (single PI Servers or Collectives) should work. New PI Buffer Subsystem refers to version 4.3 that is not released yet. A pre-release is available at vCampus Download Center.
Gregor BeckDear all, PI ACE is using PI SDK to retrieve events from the PI Server but PI API to write values. N-way buffering against a PI Server Collective is a supported feature. I haven't tried this but with the new PI Buffer Subsystem writing against multiple PI Data Archives (single PI Servers or Collectives) should work. New PI Buffer Subsystem refers to version 4.3 that is not released yet. A pre-release is available at vCampus Download Center.
That doesn't help though because PI ACE is hard coded to only have a single target PI Server. If you need multiple target PI Servers you'll likely be able to achieve your calculation needs in Abacus, with significantly more benefits.
You could write code within an ACE context to have multiple connections to different servers, but you'd have to ask yourself why you don't just spin up a VM with an additional ACE scheduler.
How about this configuration?
ACE scheduler hosted on ACE box. ACE class libraries hosted on one of the two PI servers( which implies the scheduler points to this server).
But the calculations utilize the MDB structure and PI tags on either of the two PI servers depending on the business requirements.
Is this a feasible option? In this case, will I be able to write to the output tags on the other PI server as well?
Please let me know.
My suggestion is to use PI SDK/PI AF SDK to achieve your goal. As you know, PI ACE is a plug-in on VS. Therefore, it is possible to add the .dll reference on any project for it. I make some screenshot, wish this could help you.
1. Add the PI SDK as the reference:
2. Select the reference what you need:
3. Import your choice to the project:
Then, you could PI SDK to connect any PI server in your network, and could create PI points, write values into these points.
You could implement this strategy but as PI ACE is hard coded to only have a single target PI Server, you will have to add external libraries (as following Xi’s procedure) in order to send data to 2 PI Servers.
Could you please clarify what is your end goal? Is my understanding correct, that you want to run one ACE scheduler against one PI Server and want to switch it sometimes (per business need) to the 2nd PI Server? What is the business need/requirement? Do you have different set of calculations on these 2 PI Servers?
If your goal is to write into tags from multiple PI Servers, is there a reason not to follow Marcos's suggestion in his first reply? As already said, ACE scheduler can be pointed to only one target PI Server. However ACE Scheduler can still write data to different PI Server's.
When you define input and output aliases in the ACE Wizard, you can define output tags from different PI Servers.
For the following example, I have: Server A - all ACE components, Server B - PI Server, Server C - PI Server (PI Server B and C are not in collective). ACE Scheduler Target PI Server is PI Server B.
On the screenshot below, there are 2 input tags and 2 output tags defined.
CDT158 and ACE_output_Server_B are from PI Server B.
SINUSOID2 and ACE_output_Server_C are from PI Server C.
Calculation for both output tags is the same: CDT158*2. Scheduling is natural and is based on the tag SINUSOID2 from PI Server C.
Retrieving data ...