Commit f3753a6e authored by Pavel Vainerman's avatar Pavel Vainerman

(docs): пишу документацию по чуть..чуть..

parent 6021e254
/*! \page page_Uniset Краткое описание библиотеки libuniset
Основной целью библиотека libuniset является предоставление готовых "кубиков",
для построения АСУ.
Графически libuniset можно представить так:
- \ref pg_UniSet_Common
- \ref pg_Uniset_Processes
- \ref pg_UniSet_Network
- \ref pg_UniSet_Utilities
\section pg_UniSet_Common Общее описание libuniset
Основной целью библиотеки \b libuniset является предоставление готовых "кубиков", для построения АСУ.
Графически её можно представить так:
\image html libuniset.png
\section pg_Uniset_Processes Взаимодействие процессов на узле
В основу положена технология CORBA (omniORB - реализация AT&T).
Но основе вызовов CORBA построено всё взаимодействие. При этом API библиотеки,
"максирует" взаимодействие через CORBA и при необходимости
взаимодействие может быть переписано на основе других механизмов.
В библиотеке реализованы наиболее распространённые интерфейсы обмена,
это \b ModbusTCP и \b ModbusRTU. Помимо этого имеется собственный интерфейс \b UNet,
реализующий обмен по протоколу UDP.
Для взаимодействия с базами данных, реализован базовый DBInterface,
на основе которго можно писать интерфейсы для подключения uniset
к различным СУБД. В самой libuniset реализовано взаимодействие с MySQL.
Помимо собственно единого интерфейса, в библиотеке реализованы \b "готовые компоненты"
для построения АСУ. К ним относятся:
- \b SharedMemory - хранение "переменных"
- \b IOControl - работа с картами ввода/вывода
- \b Modbus TCP/RTU slave и master режимы
- \b UNetExchange - взаимодецствие по протоколу UDP
- \b LogicProcessor - компонент, позволяющий описывать алгоритмы на основе, логических схем
(записываемых в xml-файле).
\b Готовые \b компоненты - представляют из себя уже законченные программы (процессы),
которые "умеют" взаимодейсвовать с SharedMemory и позволяют легко
"развёртывать" распределённые системы.
Всё взаимодействие в libuniset построено на понятии "датчик". Это некоторая
"информационная единица", позволяющая процессам взаимодействовать между собой.
При этом создаётся \b "прозрачная сеть" и каждый процесс использующий тот или иной
датчик в своих целях, "не знает" где физически он находиться и одинаково
взаимодействует с локальными и удалёнными датчиками.
Далее будут рассмотрены типичные схемы построения этого взаимодействия на основе \b libuniset.
\section pg_Uniset_Processes Взаимодействие процессов на узле
На рисунке представлено типичное взаимодействие процессов на узле.
\image html uniset-node.png
......@@ -44,4 +84,21 @@
\section pg_UniSet_Network Распределённое взаимодействие (сетевое)
\image html uniset-typical.png
Для обеспечения \b "прозрачности сети" всё взаимодействие построено на
использовании \b SharedMemory \b(SM), хранящей состояние датчиков во \b ВСЕЙ системе.
При этом на каждом узле запускатся своя копия \b SM. "прозрачность" при этом
обеспечивают процессы обмена между узлами по соответствующему протоколу
(на рисунке это CAN и UNET). Узлы \b постоянно обмениваются между собой
датчиками обеспечивая \b "одинаковостть" хранимой в SM информации.
Каждый процесс обмена получает от других узлов информацию о находящихся у них датчиков,
и в свою очередь посылает другим узлам информацию о датчиках находящихся у него на узле.
Так же через SM функционирует и процесс ввода/вывода (IOControl). Всё, что считывается с карт ввода
сохраняется в SM, а состояние "выходов" читается из SM и выводится в карты каналы вывода.
\section pg_UniSet_Utilities Утилиты входящие в состав libuniset
...
*/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment