On November 15, 2016, Kepware released KEPServerEX® Version 6. One of the major features of this update is the Configuration Application Programmable Interface (API), which addresses previous limitations related to remote programmatic configuration.
The Q&A pairs below provide more information on Configuration API and how it can help with your KEPServerEX projects.
Q: How was KEPServerEX configured prior to this API enhancement?
A: Prior to Version 6, there were only two ways to remotely configure a KEPServerEX project. The most common was through the configuration client application, which was installed with KEPServerEX and provided a User Interface (UI) with wizards and menus. It had to run on the same machine where KEPServerEX was installed.
The second method was through an XML file that described the configuration of the project. These XML files were developed by a third-party application and then ingested by KEPServerEX.
Q: Why did Kepware provide the API method?
A: Both the configuration client and XML file methods had their drawbacks. With the configuration client application method, remote users had to log in to the computer running KEPServerEX. If there were multiple users making project updates, then remote users had to wait their turn, with no way of knowing who was logged in ahead of them. In addition, the configuration client method provided no way to make programmatic updates to KEPServerEX.
The XML file method allowed users to make programmatic changes to the server, but also required the server be restarted each time an updated XML file was ingested. For very large projects with hundreds or even thousands of devices, the restart could take a long time. During this time, HMI/SCADA screens would be blank and applications consuming data from KEPServerEX would be left without data. This was not acceptable in some scenarios.
With the new API method, users can incorporate third-party applications to create, update, or delete KEPServerEX objects—such as channels, devices, tags, and advanced plug-in settings—via RESTful calls into the corresponding end points defined in the server. The object definitions are described in a standard human-readable JSON format. The changes take effect immediately and don’t require the server be restarted, so there’s no HMI/SCADA or data downtime.
Q: Does the API method allow multiple users or applications to simultaneously make changes?
A: Yes, by updating a project number each time the project changes. Changes can only be made if the RESTful call into the server uses the most up-to-date project number. If the number is outdated, the third-party application must first obtain the new project number and project description, thus ensuring it has the latest object definition before updating it. Only one user can write to the runtime process at a time, whether from the configuration client or any instance of the Configuration API.
Q: What about security? What keeps a rogue third-party application from making changes to the project?
A: A user or administrator must configure basic HTTP authentication before a third-party application is able to connect and make changes to KEPServerEX. HTTP over SSL (HTTPS) is also supported. The API supports restricted user-level access to KEPServerEX, based on User Manager and Security Policies settings.
Q: What are some use cases where this feature can help that weren’t previously possible?
A: Our customers have requested a Configuration API for many different scenarios. These are the primary use cases that we’re aware of:
- Field Technician Access: Technicians in the field or on the shop floor who need limited access to make simple server configuration changes, so that the KEPServerEX project is kept up-to-date with the equipment. Web-based applications can be developed and deployed that expose only the fields that these technicians require.
- Machine Builder Pre-Configuration: Machine builders who want to pre-configure KEPServerEX to accommodate the specific environment of the customer's site, while providing the customer access to make simple changes.
- Large and Frequently Changing Projects: Large and dynamic projects often require that configuration changes between SCADA applications and KEPServerEX be kept in-sync. The new API allows for the changes to only be performed in the SCADA or third-party application, which then programmatically makes the required changes to KEPServerEX.
- Integrated Solution Providers: Integrated solution providers embed KEPServerEX in their overall solution and provide their own UI. In some of these cases, the end user of the solution is unaware that KEPServerEX is running.
A: The Scheduler advanced plug-in and all KEPServerEX drivers are supported in the Version 6 release. Additional advanced plug-ins and other features will be supported in subsequent releases.
Do you have Configuration API questions that we didn’t answer here? Please comment below, and I will do my best to respond quickly. You can also contact the Kepware team with any questions, or download a free trial of Version 6 to experience it firsthand.