% Copyright (c) 2022 by Lars Spreng
% This work is licensed under the Creative Commons Attribution 4.0 International License.
% To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% You can add your packages and commands to the loadslides.tex file.
% The files in the folder "styles" can be modified to change the layout and design of your slides.
% I have included examples on how to use the template below.
% Some of it these examples are taken from the Metropolis template.
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


\documentclass[
17pt,notheorems,hyperref={pdfauthor=whatever}
]{beamer}
\usepackage[english,slovak]{babel}

\input{loadslides.tex} % Loads packages and some defined commands

\newcommand{\texten}[1]{\foreignlanguage{english}{\emph{#1}}}

\title[]{Otvorený systém pre~sledovanie technologických procesov}
\author[]{Juraj Marcin}
\institute{Fakulta informatiky \\ Masarykova univerzita}
\date{}

\begin{document}

% Generate title page
{
\setbeamertemplate{footline}{}

\begin{frame}

    \titlepage

% Vážená komisia, vážení pán vedúci, vážený pán oponent, drahá verejnosť.
% Moje meno je Juraj Marcin a dovoľte mi, aby som vám predstavil moju bakalársku
% prácu - Otvorený systém pre sledovanie technologických procesov.

\end{frame}
}
\addtocounter{framenumber}{-1}

\begin{frame}{Zhrnutie}

    \tableofcontents

% Na úvod priblížim motiváciu a cieľ mojej bakalárskej práce, potom predstavím
% úlohu systémov SCADA a nakoniec popíšem vlastný implementovaný systém.

\end{frame}

\section{Motivácia a cieľ}

\begin{frame}

\begin{itemize}
    \item zastarané proprietárne systémy
    \item komplikované prepojenie viacerých systémov
\end{itemize}

\vskip2em

\begin{itemize}
    \item cieľom navrhnúť a~implementovať všeobecný otvorený systém
\end{itemize}

% Systémy pre správu jednotlivých technologických celkov síce existujú, ale
% zväčša ide o zastarané a alebo proprietárne systémy pre jeden celkov, ktorých
% vzájomné prepojenie je značne komplikované.
%
% Cieľom teda bolo navrhnúť a implementovať nový otvorený systém, ktorý by
% umožňoval správu viacerých technologických celkov v jednom rozhraní a zároveň
% bol jednoducho rozšíriteľný.

\end{frame}

\section{Systémy SCADA}

\begin{frame}{}{
        \foreignlanguage{english}{Supervisory Control and Data Acquisition
        System}
    }

\begin{itemize}
    \item systémy merania a~regulácie~(MaR)
    \item monitorovanie a~ovládanie
        \begin{itemize}
            \item procesov
            \item zariadení
            \item budov
        \end{itemize}
\end{itemize}

% O aké systémy ale vlastne ide?
% Systémy SCADA, anglicky Supervisory Control and Data Aquisition System, inak
% známe aj ako systémy merania a regulácie sú systémy, ktoré slúžia na
% monitorovanie a ovládanie rôžnych technologických procesov, zariadení ale aj
% celých budov.

\end{frame}

\section{Architektúra systému}

\begin{frame}

\begin{figure}[!h]
    \centering
    \resizebox{!}{8cm}{\input{Diagrams/Architecture_high.latex}}
\end{figure}

% Môj vlastný systém sa skladá z 4 samostatne bežiacich programov.
% Dáta zo senzorov a zariadení zbiera nástroj Telegraf a tie následne ukladá to
% časozbernej databázy InfluxDB.
% Jedná sa o už existujúce nástroje, ktoré sú a dostupné pod otvorenou
% licenciou a sú jednoducho rozšíriteľné.
% Nástroj Telegraf využíva na komunikáciu zo zariadeniami a technologickými
% celkami pluginy, ktorých existuje veľké množstvo a zároveň je možné
% implementovať aj vlastné.
% Takýmto spôsobom som tento nástroj rozšíril o podporu protokolu BACnet.
%
% Ďalším programom je webová aplikácia určená na vizualizáciu a ovládanie
% technologických celkov.
% Tá okrem technologických celkov komunikuje aj s databázovým systémom, z
% ktorého získava v minulosti hodnoty zaznamenané.
%
% V neposlednom rade je súčasťou systému je aj Modbus multiplexer, pomocou
% ktorého komunikujú nástroje systému so zariadeniami Modbus.

\end{frame}

\section{BACnet plugin pre~Telegraf}

\begin{frame}

\begin{itemize}
    \item pravidelné čítanie zo~zariadení
    \item prijímanie oznámení o~zmene hodnoty
    \item automatické nájdenie zariadení v~sieti
    \item odkazovaný z~oficiálnej dokumentácie nástroja Telegraf
\end{itemize}

% Prvým implementovaným nástrojom je plugin pre systém zberu dát Telegraf.
% Motiváciou bola chýbajúca podpora protokolu BACnet v nástroji Telegrafe a
% taktiež neexistencia pluginu tretej strany.
%
% Mnou implementovaný plugin umožňuje pravidelné čítanie výstupov zo zariadení
% s náhodný m oneskorením, aby sa predišlo pravidelným zahlcovaniam v sieti.
% Taktiež dokáže prijímať oznámenia o zmene hodnoty, odoslané zo zariadení,
% ktoré to podporujú, a tak dokáže ešte viac ušetriť prenosovú kapacitu siete.
%
% Zariadenia, ktoré by mal monitorovať dokáže nájsť v sieti automaticky pomocou
% WhoIs správy vyslanej všetkým alebo určitej množine zariadení v BACnet sieti.
% Tým pádom nie je nutné každé zariadenie konfigurovať ručne.
%
% V neposlednom rade je tento plugin použiteľný v akomkoľvek prostredí
% využívajúcom nástroj Telegraf a odkaz naň sa po prijatí môjho pull requestu
% nachádza aj v oficiálnej dokumentácii nástroja Telegraf.

\end{frame}

\section{Modbus multiplexer}

\begin{frame}

\begin{itemize}
    \item serializácia prístupov k~zariadeniam bez~podpory súbežného prístupu
    \item vzdialené pripojenie k~zariadeniam na~sériovej linke
\end{itemize}

% Ďalším implementovaným nástrojom je Modbus multiplexer.
%
% U niektorých zariadení komunikujúcich protokolom Modbus nie možný súbeh
% viacerých spojení, a to už buď tým, že komunikujú po sériovej linke alebo to
% ich implementácia Modbus/TCP nepodporuje.
% Prístup k takýmto zariadeniam je teda nutné kooridnovať a serializovať,
% pretože opakovaný náhodný prístup by mohol viesť k zbytočne veľkej odozve až
% vyhladoveniu.
%
% Tento problém rieši mnou implementovaný softvérový multiplexer, ktorý prijme
% všetky spojenia, požiadavky serializuje a postupne ich preposiela cieľovým
% zariadeniam.
% Taktiež tak umožňuje vzdialené pripojenie k zariadeniam, ktoré pracujú len so
% sériovou linkou a monitorovací software teda nemusí bežať priamo na stroji, ku
% ktorému je sériová linka pripojená.

\end{frame}

\section{Vizualizácia a ovládanie}

\begin{frame}

\begin{itemize}
    \item vizualizácia technologických celkov vo~webovom prehliadači
    \item aktualizácia hodnôt cez~WebSockets
\end{itemize}

\begin{figure}
    \centering
    \includegraphics[height=6cm]{./Images/Implementation/visu_scheme.png}
\end{figure}

% Poslednou implementovanou aplikáciou je vizualizačná webová aplikácia.
%
% Tá vizualizuje technologické celky vo webovom prehliadači pomocou
% predpripraveného SVG, do ktorého vloží hodnoty a stavy získané zo zariadeni
% definovaných v konfigurácii schémy.
% Zobrazované údaje taktiež aktualizuje cez WebSockets spojenie so serverovou
% časťou, buď pravidelným dotazovaním alebo prijímaním oznámení o zmene hodnoty
% v prípade, že to sledované zariadenia podporujú.

\end{frame}

\begin{frame}

\begin{itemize}
    \item manuálne ovládanie jednotlivých komponentov
    \item zobrazenie historických hodnôt v~grafe
\end{itemize}

\begin{figure}
    \centering
    \includegraphics[height=6cm]{./Images/Implementation/visu_modal.png}
\end{figure}

% Po kliknutí na kompoponent je možné jeho hodnotu manuálne upraviť, čo je
% realizované tiež pomocou serverovej časti.
% Taktiež sa tu v interaktívnom grafe zobrazujú hodnoty namerané v minulosti,
% ktoré sú uložené v InfluxDB.
% Časový interval za ktorý sa tieto hodnoty zobrazujú je možné zvoliť.

\end{frame}

\begin{frame}

\begin{itemize}
    \item konfigurácia komponentov schémy s~využitím vlastných šablón
    \item modulárna komunikácia s~ďalšími celkami
        \begin{itemize}
            \item BACnet
            \item Modbus
            \item SNMP
            \item \ldots
        \end{itemize}
\end{itemize}

% Jednotlivé komponenty je možné v konfigurácii schémy definovať aj pomocou
% šablón, čo uľahčuje konfiguráciu v prípade veľkého množstva rovnakých častí.
% Zároveň je možné vizualizovať skoro akýkoľvek systém, pretože aplikácia
% obsahuje moduly pre komunikáciu pomocou protokolov Modbus, BACnet a SNMP a
% pridanie podpory pre ďalšie je vďaka modularite veľmi jednoduchá.

\end{frame}

\section{Záver}

\begin{frame}

\begin{itemize}
    \item funkčný systém použiteľný na~sledovanie a~ovládanie všeobecných
        technologických celkov
    \item samostatne použiteľné modulárne nástroje
    \item dostupné pod~otvorenou licenciou na~GitHube
\end{itemize}

% Výsledkom mojej práce tak je funkčný a rozšíriteľný systém, ktorý sa dá použiť
% na sledovanie a ovládanie akýchkoľvek technologických celkov.
% Nástroje, z ktorých sa tento systém skladá je vďaka použitiu zaužívaných
% protokolov a ich modularite, možné použiť aj samostatne alebo v iných sytémoch
% Všetky sú voľne dostupné pod otvorenou licenciou na GitHube, a tak ich môže
% ktokoľvek použiť alebo ich funkcionalitu rozšíriť.
%
% Ďakujem za pozornosť.

\end{frame}

\part{Otázky z posudkov}

\begin{frame}{Škálovateľnosť a~priepustnosť}{
        Moje otázka do~diskuse k~obhajobě je, aby student zkusil zhodnotit
        škálovatelnost systému, například v~situaci, kdy v~jedné vizualizaci
        máme devět čerpadel (\ldots), 15~ventilů se~servopohony (\ldots) zhruba
        dvě desítky teploměrů a~tlakoměrů a~další komponenty.
}

\begin{itemize}
    \item 400+ súčasne načítavaných dátových bodov cez Modbus multiplexer
    \item do budúcna možnosť pridania náhodného oneskorenia aktualizácie hodnôt
        jednotlivých komponentov
\end{itemize}

\end{frame}

\begin{frame}{Priepustnosť a~priepustnosť}{
        Dále pak zhodnotit propustnost v~systému, pro~velmi mnoho sbíraných
        datových bodů, byť ne ovládaných z~jedné obrazovky vizualizace. \ldots
        Které části systému vidí řešitel jako potenciální slabá místa z~hlediska
        výkonu?
}

\begin{itemize}
    \item Telegraf a~InfluxDB -- vkladanie 5~miliónov záznamov za sekundu, 7\%
        strát; pri menších intenzitách bez strát
    \item Modbus multiplexer -- 1200+ dotazov za sekundu z~200 paralelných
        spojení bez strát
    \item možnosť horizontálnej škálovateľnosti
\end{itemize}

\end{frame}

\begin{frame}{Riadenie prístupu}{
        Umožňuje vizualizácia riadenie prístupu (napr. pre~vybraných
        používateľov možnosť prístupu len na~čítanie alebo prístup len k~určitej
        časti dát), prípadne jeho doplnenie?
}

\begin{itemize}
    \item v~súčastnosti nepodporuje
    \item možné rozšírenie pomocou s~podporou LDAP v~budúcnosti
\end{itemize}

\end{frame}

\begin{frame}{Synchrónnosť}{
        Je synchrónnosť iniciálneho získania dát vo~vizualizácii rozumná (schémy
        s~väčším množstvom hodnôt, dočasná stratovosť siete, \ldots)?
}

\begin{itemize}
    \item hydratácia schémy pred prvým načítaním stránky je zamýšľanou
        funkcionalitou
    \item možné vylepšenie pridaním cache, resp.~načítaním iniciálnych dát
        z~InfluxDB
\end{itemize}

\end{frame}

\begin{frame}{Testovanie}{
        Bolo toto riešenie testované i~voči nejakým reálnym zariadeniam?
}

\begin{itemize}
    \item Modbus/RTU: teplotný regulátor CAL~3300
    \item Modbus/TCP: teplotný regulátor i16D53-C4EIT
    \item SNMP: router Mikrotik~hAP~ac, switch Mikrotik~RB260GS
\end{itemize}

\end{frame}

\end{document}
