Overview ======== Basics ------ QuadlogSCADA is a comparatively compact and simple SCADA framework system, with SCADA being Supervisory Control And Data Acquisition. It operates on GNU/Linux based systems, though untested, should work equally well on other nix based operating systems. One of its aims is to facilitate an easy and cost effective entry into the realm of SCADA systems, especially for small and low risk non-critical process systems where the cost of traditional SCADA software suits may be cost prohibitive. The QuadlogSCADA framework is extendable to suit the needs of users individual process applications. Being a framework, it requires programmatic configuration after installation for for it to function. This aspect of configuration is detailed in another section of this document where the various components are described in greater detail using examples (TODO). QuadlogSCADA is primarily made up of two stand-alone applications, namely the IOServer and Webserver. Both applications operate independently of each other, but communicate with each other via a central data-store, Redis. Redis is a fast and efficient non SQL data storage system. The Redis data-store is used for storing of live process data as well as logging of alarms and historical data which can then be accessed and used for further analysis. During the setup process, both these components will be configured to start automatically on system boot via systemd unit files. QuadlogSCADA Core Components ---------------------------- IOServer ~~~~~~~~ The :program:`IOServer` is responsible for communications with PLC equipment, presently only via the Modbus RTU/TCP protocol, where data is both retrieved or sent to connected PLC devices on a cyclic time poll period. PLC device Data is held internally in the :program:`IOServer` according to configured mappings as data tags and is scaled to engineering terms as well as checked for alarm conditions. Data tags can also be configured to have their data logged for long term historical analyses, by storing to Redis. :program:`IOServer` also checks for user set-points and accepts this data from the Redis data store to be sent to specific PLC devices. The :program:`IOServer` can be configured to communicate with multiple PLCs via the Modbus protocol. Application specific configuration of the :program:`IOServer` is described in the configuration document under section IOserver. The server process uses a configuration file. This is typically located in :file:`/etc/supervisord.conf`. This configuration file is a "Windows-INI" style config file. It is important to keep this file secure via proper file system permissions because it may contain unencrypted usernames and passwords. WebServer ~~~~~~~~~ The :program:`WebServer` is exactly that, a lightweight and fast web server with some simple configuration required for the particular end user application. The web server allows a user to connect via a standard web browser, where the user is required to log in to gain further access. Once a user has successfully logged in to the web server, they will then have access to the SCADA system, where they can view and alter process data via configured HTML web based screens. Application specific configuration of the :program:`WebServer` is described in the configuration document under section :program:`WebServer`. Visit the server URL (e.g. ``http://localhost:8443/``) to view and control process status through the web interface.