# rapidscada/scada-v6 architecture

> Architecture diagram of the GitHub repository rapidscada/scada-v6, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rapidscada/scada-v6
- Repository: https://github.com/rapidscada/scada-v6

## Overview

Rapid SCADA is a distributed industrial automation platform for monitoring and control. The main operator workflow is field-device data acquisition, server-side processing, and delivery of current, historical, and event data through web APIs; commands travel back toward devices. Administrators configure projects and communication, server, and web modules, and can deploy configurations to instances. The README also describes multi-node operation and real-time external database interaction. Sampled code confirms API calls, OPC UA command dispatch, and storage behavior; other subsystem links are based on the documented product workflow and tree.

Main entry points: [`ScadaServer/ScadaServer/ScadaServerEngine`](https://github.com/rapidscada/scada-v6/tree/master/ScadaServer/ScadaServer/ScadaServerEngine) (SCADA server), [`ScadaAdmin/ScadaAdmin/ScadaAdmin/Forms/FrmMain.cs`](https://github.com/rapidscada/scada-v6/blob/master/ScadaAdmin/ScadaAdmin/ScadaAdmin/Forms/FrmMain.cs) (SCADA Admin), [`ScadaWeb/OpenPlugins/PlgMain/Controllers/MainApiController.cs`](https://github.com/rapidscada/scada-v6/blob/master/ScadaWeb/OpenPlugins/PlgMain/Controllers/MainApiController.cs) (Web data API), [`ScadaCommon/ScadaCommon/Storages/StorageLogic.cs`](https://github.com/rapidscada/scada-v6/blob/master/ScadaCommon/ScadaCommon/Storages/StorageLogic.cs) (Storage abstraction)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Administration"]
  node_admin_app["SCADA Admin<br/>[FrmMain.cs]"]
  node_project_config["Project configuration<br/>[ScadaProject.cs]"]
  node_admin_extensions["Admin extensions"]
  node_deployment["Instance deployment"]
end

subgraph group_acquisition["Data acquisition"]
  node_comm_drivers["Communication drivers"]
  node_comm_engine["Communication engine"]
  node_opcua_server["OPC UA server<br/>[NodeManager.cs]"]
end

subgraph group_processing["Server processing"]
  node_scada_server["SCADA server"]
  node_calculation["Channel calculations<br/>[CalcEngine.cs]"]
end

subgraph group_web["Web access"]
  node_web_api["Web data API"]
  node_mimic_editor["Mimic editor<br/>[EditorManager.cs]"]
  node_scheme_components["Scheme components<br/>[CompManager.cs]"]
end

subgraph group_platform["Platform services"]
  node_agent["Scada Agent<br/>[CoreLogic.cs]"]
  node_storage_api["Storage abstraction<br/>[StorageLogic.cs]"]
  node_file_storage[("File storage")]
  node_postgres_storage[("PostgreSQL storage")]
end

node_admin_user(("Administrator"))
node_field_devices(("Field devices"))
node_web_user(("Web user"))
node_external_db[("External databases")]

node_admin_user -->|"configures"| node_admin_app
node_admin_app -->|"edits project"| node_project_config
node_admin_app -->|"opens tools"| node_admin_extensions
node_admin_app -->|"deploys config"| node_deployment
node_deployment -->|"transfers config"| node_agent
node_field_devices -->|"supply data"| node_comm_drivers
node_comm_engine -->|"runs drivers"| node_comm_drivers
node_comm_drivers -->|"send channel data"| node_scada_server
node_scada_server -->|"processes channels"| node_calculation
node_opcua_server -->|"reads data"| node_comm_engine
node_opcua_server -->|"sends commands"| node_comm_engine
node_scada_server -->|"uses storage"| node_storage_api
node_storage_api -->|"file backend"| node_file_storage
node_storage_api -->|"database backend"| node_postgres_storage
node_web_user -->|"requests data"| node_web_api
node_web_api -->|"requests data"| node_scada_server
node_web_api -->|"sends commands"| node_scada_server
node_web_api -->|"loads views"| node_storage_api
node_web_user -->|"edits mimics"| node_mimic_editor
node_mimic_editor -->|"loads components"| node_scheme_components
node_agent -.->|"exchanges node data"| node_scada_server
node_scada_server -.->|"exchanges data"| node_external_db

click node_admin_app "https://github.com/rapidscada/scada-v6/blob/master/ScadaAdmin/ScadaAdmin/ScadaAdmin/Forms/FrmMain.cs"
click node_project_config "https://github.com/rapidscada/scada-v6/blob/master/ScadaAdmin/ScadaAdmin/ScadaAdminCommon/Project/ScadaProject.cs"
click node_admin_extensions "https://github.com/rapidscada/scada-v6/tree/master/ScadaAdmin/OpenExtensions"
click node_deployment "https://github.com/rapidscada/scada-v6/tree/master/ScadaAdmin/ScadaAdmin/ScadaAdmin/Forms/Deployment"
click node_comm_drivers "https://github.com/rapidscada/scada-v6/tree/master/ScadaComm/OpenDrivers"
click node_comm_engine "https://github.com/rapidscada/scada-v6/tree/master/ScadaComm/ScadaComm/ScadaCommEngine"
click node_opcua_server "https://github.com/rapidscada/scada-v6/blob/master/ScadaComm/OpenDrivers/DrvDsOpcUaServer.Logic/NodeManager.cs"
click node_agent "https://github.com/rapidscada/scada-v6/blob/master/ScadaAgent/ScadaAgent/ScadaAgentEngine/CoreLogic.cs"
click node_scada_server "https://github.com/rapidscada/scada-v6/tree/master/ScadaServer/ScadaServer/ScadaServerEngine"
click node_calculation "https://github.com/rapidscada/scada-v6/blob/master/ScadaServer/ScadaServer/ScadaServerEngine/CalcEngine.cs"
click node_storage_api "https://github.com/rapidscada/scada-v6/blob/master/ScadaCommon/ScadaCommon/Storages/StorageLogic.cs"
click node_file_storage "https://github.com/rapidscada/scada-v6/blob/master/ScadaCommon/FileStorage/FileStorageLogic.cs"
click node_postgres_storage "https://github.com/rapidscada/scada-v6/blob/master/ScadaCommon/PostgreSqlStorage/PostgreSqlStorageLogic.cs"
click node_web_api "https://github.com/rapidscada/scada-v6/blob/master/ScadaWeb/OpenPlugins/PlgMain/Controllers/MainApiController.cs"
click node_mimic_editor "https://github.com/rapidscada/scada-v6/blob/master/ScadaWeb/Mimics/PlgMimicEditor/Code/EditorManager.cs"
click node_scheme_components "https://github.com/rapidscada/scada-v6/blob/master/ScadaWeb/OpenPlugins/PlgScheme.Common/CompManager.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_admin_app,node_project_config,node_admin_extensions,node_deployment,node_web_user toneBlue
class node_comm_drivers,node_comm_engine,node_opcua_server,node_external_db toneAmber
class node_scada_server,node_calculation toneMint
class node_web_api,node_mimic_editor,node_scheme_components toneRose
class node_agent,node_storage_api,node_file_storage,node_postgres_storage,node_admin_user,node_field_devices toneIndigo
```

## Components

### Administration

- [SCADA Admin](https://github.com/rapidscada/scada-v6/blob/master/ScadaAdmin/ScadaAdmin/ScadaAdmin/Forms/FrmMain.cs): `ScadaAdmin/ScadaAdmin/ScadaAdmin/Forms/FrmMain.cs`
- [Project configuration](https://github.com/rapidscada/scada-v6/blob/master/ScadaAdmin/ScadaAdmin/ScadaAdminCommon/Project/ScadaProject.cs): `ScadaAdmin/ScadaAdmin/ScadaAdminCommon/Project/ScadaProject.cs`
- [Admin extensions](https://github.com/rapidscada/scada-v6/tree/master/ScadaAdmin/OpenExtensions): `ScadaAdmin/OpenExtensions`
- [Instance deployment](https://github.com/rapidscada/scada-v6/tree/master/ScadaAdmin/ScadaAdmin/ScadaAdmin/Forms/Deployment): `ScadaAdmin/ScadaAdmin/ScadaAdmin/Forms/Deployment`

### Data acquisition

- [Communication drivers](https://github.com/rapidscada/scada-v6/tree/master/ScadaComm/OpenDrivers): `ScadaComm/OpenDrivers`
- [Communication engine](https://github.com/rapidscada/scada-v6/tree/master/ScadaComm/ScadaComm/ScadaCommEngine): `ScadaComm/ScadaComm/ScadaCommEngine`
- [OPC UA server](https://github.com/rapidscada/scada-v6/blob/master/ScadaComm/OpenDrivers/DrvDsOpcUaServer.Logic/NodeManager.cs): `ScadaComm/OpenDrivers/DrvDsOpcUaServer.Logic/NodeManager.cs`

### Server processing

- [SCADA server](https://github.com/rapidscada/scada-v6/tree/master/ScadaServer/ScadaServer/ScadaServerEngine): `ScadaServer/ScadaServer/ScadaServerEngine`
- [Channel calculations](https://github.com/rapidscada/scada-v6/blob/master/ScadaServer/ScadaServer/ScadaServerEngine/CalcEngine.cs): `ScadaServer/ScadaServer/ScadaServerEngine/CalcEngine.cs`

### Web access

- [Web data API](https://github.com/rapidscada/scada-v6/blob/master/ScadaWeb/OpenPlugins/PlgMain/Controllers/MainApiController.cs): `ScadaWeb/OpenPlugins/PlgMain/Controllers/MainApiController.cs`
- [Mimic editor](https://github.com/rapidscada/scada-v6/blob/master/ScadaWeb/Mimics/PlgMimicEditor/Code/EditorManager.cs): `ScadaWeb/Mimics/PlgMimicEditor/Code/EditorManager.cs`
- [Scheme components](https://github.com/rapidscada/scada-v6/blob/master/ScadaWeb/OpenPlugins/PlgScheme.Common/CompManager.cs): `ScadaWeb/OpenPlugins/PlgScheme.Common/CompManager.cs`

### Platform services

- [Scada Agent](https://github.com/rapidscada/scada-v6/blob/master/ScadaAgent/ScadaAgent/ScadaAgentEngine/CoreLogic.cs): `ScadaAgent/ScadaAgent/ScadaAgentEngine/CoreLogic.cs`
- [Storage abstraction](https://github.com/rapidscada/scada-v6/blob/master/ScadaCommon/ScadaCommon/Storages/StorageLogic.cs): `ScadaCommon/ScadaCommon/Storages/StorageLogic.cs`
- [File storage](https://github.com/rapidscada/scada-v6/blob/master/ScadaCommon/FileStorage/FileStorageLogic.cs): `ScadaCommon/FileStorage/FileStorageLogic.cs`
- [PostgreSQL storage](https://github.com/rapidscada/scada-v6/blob/master/ScadaCommon/PostgreSqlStorage/PostgreSqlStorageLogic.cs): `ScadaCommon/PostgreSqlStorage/PostgreSqlStorageLogic.cs`

### Other components

- **Administrator**
- **Field devices**
- **Web user**
- **External databases**

## Connections

- Administrator → SCADA Admin: configures
- SCADA Admin → Project configuration: edits project
- SCADA Admin → Admin extensions: opens tools
- SCADA Admin → Instance deployment: deploys config
- Instance deployment → Scada Agent: transfers config
- Field devices → Communication drivers: supply data
- Communication engine → Communication drivers: runs drivers
- Communication drivers → SCADA server: send channel data
- SCADA server → Channel calculations: processes channels
- OPC UA server → Communication engine: reads data
- OPC UA server → Communication engine: sends commands
- SCADA server → Storage abstraction: uses storage
- Storage abstraction → File storage: file backend
- Storage abstraction → PostgreSQL storage: database backend
- Web user → Web data API: requests data
- Web data API → SCADA server: requests data
- Web data API → SCADA server: sends commands
- Web data API → Storage abstraction: loads views
- Web user → Mimic editor: edits mimics
- Mimic editor → Scheme components: loads components
- Scada Agent → SCADA server: exchanges node data
- SCADA server → External databases: exchanges data
