Problem

Neptune operates a large SCADA system, and occasionally has to temporarily modify its programming to maintain continuity of operations. Temporary SCADA system modifications are often done in the form of forcing an I/O point, or making an edit to a PLC program routine. Unfortunately, the OEM software lacked the functionality required to track when these temporary SCADA system modifications were being made, who was making them, and whether they were still in place. Furthermore, Neptune was finding it cumbersome to use the out-of-the-box email notification functionality provided by the OEM software, to setup and maintain email notifications for important alarm events.

Solution

Interface 48 implemented an intranet web app that enables users to centrally track, query, and report on SCADA system events originating from various, otherwise disparate, data sources. Back-end services were implemented to more efficiently organize and contextualize the information output by OEM software, in an optimized data model. The optimized data model was essential in vastly improving the performance with which millions of SCADA system events—including I/O forces, bit toggles, alarms, and program deviations—could be queried and analyzed to uncover otherwise "hidden" data insights. Additionally, notification functionality was implemented to enable centralized management of email notifications for important SCADA system events.

Notable aspects of this project include:

  • Implementation of an intranet web app based on ASP.NET, together with jQuery and KnockoutJS for front-end client interactivity,
  • Back-end services for event processing and notification distribution,
  • RabbitMQ AMQP Broker for scalable event processing,
  • SQL Server Query Notifications for a reactive front-end UI.