Architecturally, OpenSCADA consists of the subsystems:
- Security — contains lists of users and groups of users, provides check of the rights of access to the program elements, etc.
- Modules Scheduler — provides the control over modules.
- Data Bases (modular) — provides access to databases.
- Transports (modular) — provides communications with external environment by means of various communication interfaces.
- Transport Protocols (modular) — closely connected with the transports subsystem and provides support of various exchanging protocols between external systems.
- Data Acquisition (modular) — provides data acquisition from external sources: controllers (PLC), sensors, etc. In addition, the subsystem can provide an environment for creating data generators: simulators, controllers (PLC), ... .
- Archives-Histories (modular) — contains of archives-history of two types: message and value archives. The method of archiving is determined by the algorithm that is provided in the archiving module.
- User Interfaces (modular) — contains functions of the user interfaces.
- Specials (modular) — contains functions that are not included in the other subsystems. Currently, these functions include test functions and libraries of static functions of the user API.