Архитектура
Архитектура EDGE модулей
Общая схема взаимодействия ПО Edge агента с сервером показана на схеме ниже:
На рисунке показаны синим блоком (Драйверы) модули сбора, красными блоками (Монитор, Планировщик) модули процессинга, зелеными блоками показаны очереди брокера MQTT (mosquitto).
Драйверы сбора
Все драйверы являются своеобразными шлюзами между промышленным протоколом и MQTT протоколом. Должно соблюдаться следующее соглашение по семантики топика:
/devices/<T>_<A>/controls/<K>
где T - тип устройства (датчика)
A - адрес устройства
K - имя канала
Если параметр является управляемым, то в соответствующем топике для него имеется подтопик с названием on
, куда записываются значения, которые должны быть переданы на конкретное устройство.
/devices/<T>_<A>/controls/<K>/on
Для каждого канала /devices/<T>\_<A>/controls/<K>
, драйверами устройств записывается статус операции чтения/записи с датчиками/устройствами в топик
/devices/<T>_<A>/controls/<K>/meta/error.**
Модули процессинга
Взаимодействие между контроллером и сервером осуществляется путем обмена сообщениями по протоколу MQTT. Для реализации этого взаимодействия на стороне контроллера автоматически конфигурируется мост (Bridge) для объединения отдельных топиков очередей Mosquitto. Параметры конфигурации этого моста записываются в специальный конфигурационный файл сервера очередей контроллера (bridge.conf).
Для каждого контроллера на стороне сервера сбора участвуют:
три входных топика «/Controller/<Id>/In/+»
, где <Id>
- идентификатор контроллера;
два выходных топика «/Controller/<Id>/Out/+»
.
Параметры объединяемых топиков приведены в следующей таблице. В указанной таблице для каждой пары объединяемых топиков приведены:
- направление передачи данных Direct («OUT» - из контроллера в сервер сбора, «IN» - из сервера сбора в контроллер);
- рекомендуемый уровень качества сервиса QoS.
Схема объединения очередей контроллера и сервера сбора для штатного режима функционирования
Топик контроллера | Топик сервера сбора | Direct | QoS |
---|---|---|---|
/Controller/Out/Measure | /Controller/<Id>/In/Measure | OUT | 1 |
/Controller/Out/Signal | /Controller/<Id>/In/Signal | OUT | 2 |
/Controller/Out/Event | /Controller/<Id>/In/Event | OUT | 2 |
/Controller/In/ Command | /Controller/<Id>/Out/Command | IN | 2 |
/Controller/In/SetValue | /Controller/<Id>/Out/SetValue | IN | 2 |
Для инициализации контроллеров используется выделенный сервер сбора, который для взаимодействия использует следующие топики:
/Controller/In/InitRequest
- один топик на все контроллеры для получения от них запросов на инициализацию;/Controller/<SN>/Out/InitParam
- уникальный топик контроллера, обеспечивающий передачу в контроллер параметров инициализации (здесь<SN>
- серийный номер контроллера).