Project for "Software of supervisory management systems" university course.
The project is a general SCADA management system
, composed of four main components
:
- RTU client - C# console app
simulating field sensors
, sends new tag values every 1000ms to the core - SCADA core (back) - the heart of the backend, a
multi-threaded
ASP.NET application that runs the scan simulation in the infinite while loop + HTTP/ws endpoints - front - simple and efficient Angular
UI
- SQLite database - for storage and backup
The frontend
is further broken into three semantic clients:
- Trending - displays real-time updates of the tag values and alarm notifications, both arriving from the core through web-socket connections
- Database Manager - interface for CRUD operations on input and output tags
- Report Manager - displays detailed reports on chosen criteria
The app is not heavy on authorization and authentication (not the focus of the project), still, there are two user roles
:
- Admin - has access to all UI components and functionalities, as well as the CRUD operations on all entities
- User - can only monitor tags through the Trending app upon login
All above makes for a well-crafted simulation of general principles behind SCADA system management.
- Tag - represents a single physical quantity (
analog tags
- temperature, humidity...) or state (digital tags
- off/on), and can be used to read the value (input tags
) or to set it (output tags
) - Scan and scan time - determines how frequent is the reading of the new values of the input tags (
scan time
) and if the values in the frontend/db should be updated at all (scan boolean
) - Driver - specifies whether the new input tag values are provided by the RTU_Client simulation (
Real-time driver
) or by applying a function to the current timestamp (Simulation driver
) Alarm
- triggers when the tag value is greater/lower than the critical value, the priority of the alarm maps on the intensity of the notification in the Trending app
- ASP.NET
- SignalR
- EF
- SQLite database
- Angular
- Material Design
- Tina Mihajlović
- Srdjan Stjepanović
- Nemanja Vujadinović
To run the project:
- clone git repo
- run RTU_Client solution to start the simulation of the sensors
- run snus_back solution to start the backend core
- run front Angular app to start the frontend
*Registration of new users is not supported through the UI, you can add them directly through a database management software of your choice - after that you can log in and enjoy the app :)