В MasterSCADA 4D при создании распределительных систем для организации обмена данными и сообщениями между различными устройствами предусмотрен ряд протоколов.
Например, для обмена текущими и архивными данными между проектами может быть использован протокол OPC UA. О том, как настроить проект MasterSCADA 4D для обмена данными по протоколу OPC UA, смотрите в справочной информации MasterSCADA 4D.
А для передачи и получения сообщений из архива сообщений между двумя независимыми исполнительными системами MasterSCADA 4D предназначен протоколMQTTEvents, о котором и пойдет речь в данной статье.
ПротоколMQTTEventsоснован на протоколеMQTTи является кроссплатформенным.
Для работыс MQTTEventsнеобходимо настроитьMQTT-брокер — центральный узел, обеспечивающий взаимодействие клиентов.
Важно! Протокол MQTTEvents не входит по умолчанию в состав MasterSCADA 4D RT. Чтобы использовать его, необходимо наличие опции MSRT4D-MQTTEvents в среде исполнения.
Пример использования протокола MQTTEvents для передачи сообщений между проектами
В данном примере показано, как настроить проекты MasterSCADA 4D для обмена архивными сообщениями, в качестве базы данных используется PostgreSQL.
Настройка проекта для отправки сообщений по протоколу MQTTEvents
- Для хранения сообщений в БД Postgree настраивается архив сообщений: указываются соответствующий тип БД и настройки для соединения с предварительно созданной БД:
- Для возможности работы с протоколомMQTTEventsего нужно добавить в узел АРМ. В панели свойств должен быть указансервер брокера MQTTипортподключения.
Важно! Если сервер MQTT использует защищенные сессии, то необходимо указать Имя пользователя и Пароль, к которым открыт доступ для подключения к брокеру MQTT. Настройки доступа к хосту прописаны в файле конфигурации брокера.
- Для возможности отправки сообщений на MQTT брокер в протокол добавляется модульEventsSender. В его свойствах необходимо указатьTopic— канал для передачи сообщений.
В панели свойств модуля можно задать и другие настройки. Можно задать в полеFilterфильтр по сообщениям. Например, чтобы получать сообщения с приоритетом большим или равным 500, нужно задать:
[«Active=TRUE», » Severity >= 500″].Тогда будут передаваться сообщения только от тех элементов, настройки приоритета которых соответствуют данным условиям.
Более подробно о всех свойствах модуля смотрите всправочной системе.
- Чтобы показать формирование сообщений в режиме исполнения, в данном проекте мы используем пользовательскую тревогу, настроенные дискретную шкалу логического параметраАварияи аналоговые шкалы вещественных параметровВлажностьиТемпература. Значения вещественных параметров формируются генератором синусоидального сигнала в программе. А параметрТемпературатакже связан с одноименным параметром Тревоги.
О работе со шкалами и тревогами смотрите в справочной информации в разделах:Шкалы,Тревоги.
Для работы с сообщениями в режиме исполнения создано окно, в которое добавлены две кнопки для управления логическим параметром и активностью тревоги, а также архивный журнал для отображения сообщений проекта. В журнал, помимо стандартных столбцов, добавлен столбецТемпература, соответствующий параметру пользовательской тревоги
После запуска проекта сообщения будут автоматически формироваться для вещественных параметров в соответствии с настроенными аналоговыми шкалами. Для формирования сообщений от параметра вещественного типа и тревоги используем кнопки. При срабатывании тревоги в столбцеТемпературабудет отображаться значение параметра на момент перехода активности тревоги в состояние True.
Настройка проекта для получения сообщений по протоколу MQTTEvents
- Так же, как и в первом проекте, для хранения сообщений в БД Postgree настраивается архив сообщений, указываются настройки для соединения с БД, отличной от той, что использовалась ранее.
- В проекте, который будет принимать сообщения по протоколуMQTTEvents, также необходимо добавление соответствующего протокола в узел АРМ. В свойствах протокола должен быть указан тот же сервер брокера MQTT и порт подключения, что и в проекте для отправки сообщений.
- Для возможности получения сообщений добавляется модульEventsReceiverс указанием такого жеTopic, который использовался для отправки:
Описание всех настроек данного модуля также можно найти всправочной информации.
- Для отображения сообщений в режиме исполнения на окно достаточно добавить архивный журнал и в окне редактирования этого журнала проставить флагГлобальный. Также для того, чтобы в режиме исполнения указывался источник сообщения из другого проекта, должен быть добавлен столбецВнешний источник:
После запуска проекта все сообщения, передаваемые черезMQTTEvents, будут отображаться в журнале. В столбцеИсточникбудет выводиться «EventsReceiver», так как сообщения передаются через данный модуль протокола. А информация об элементе, который формирует сообщение, будет выводиться в столбцеВнешний источник.
В базе данных архива сообщений проекта, настроенного на прием сообщений по протоколуMQTTEvents, в таблицеevents_alarmсоздается столбецexternal_path, где фиксируются все внешние источники, формирующие сообщения.
Эти источники и отображаются в столбце журналаВнешний источник.