MetaKit Руководство по компонентам

WDMaster — проверка связи по запросу и ответу

WDMaster проверяет, отвечает ли другое устройство. Он периодически отправляет контрольное число и ждёт это же число обратно. Если ответ долго не приходит, компонент сообщает о потере связи.

На второй стороне работает WDSlave, который возвращает полученное число. Такая пара подходит, например, для контроля связи между двумя шкафами управления.

Если другое устройство уже передаёт свой меняющийся счётчик и не требует ответа, используйте WDSimple.

Состав и связи

WDMaster: На другой стороне нужен WDSlave. Обмен переменными между устройствами настраивается отдельно от проверки связи.
В рамке — состав компонента, снаружи — подключения проекта. Нажмите на схему, чтобы открыть её крупнее.

На другой стороне нужен WDSlave. Обмен переменными между устройствами настраивается отдельно от проверки связи.

Первое подключение

Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.

Главный шкаф обменивается данными со шкафом котла. В главном шкафу установим WDMaster, в шкафу котла — WDSlave.

1. Выделите два значения для обмена

Переменная в примере Тип Направление
wBoilerRequest WORD Главный шкаф → шкаф котла
wBoilerReply WORD Шкаф котла → главный шкаф

Это два контрольных числа. Их передачу между шкафами нужно настроить вместе с остальными данными связи. Компоненты WatchDog работают с этими переменными; сетевое соединение настраивается отдельно.

2. Подключите WDMaster в главном шкафу

Параметр Значение для примера
WDMasterId BoilerLink
WDMasterComment Связь со шкафом котла
WDMasterIn wBoilerReply
WDMasterOut wBoilerRequest

В WDMasterIn приходит ответ, из WDMasterOut отправляется запрос.

3. Подключите ответную сторону

В шкафу котла укажите у WDSlave:

Параметр Значение для примера
WDSlaveId MainLink
WDSlaveComment Связь с главным шкафом
WDSlaveIn wBoilerRequest
WDSlaveOut wBoilerReply

Здесь имена обозначают местные переменные шкафа котла. Через настроенный обмен они связаны с одноимёнными переменными главного шкафа.

4. Задайте время проверки

Настройка Значение для примера Что означает
Conf.BoilerLink_WDMaster_diPeriod 1 Новое контрольное число отправляется каждую секунду
Conf.BoilerLink_WDMaster_diTimeout 5 Допустимое время ожидания правильного ответа, с

После первого правильного ответа BoilerLink_WDMaster_Inst.out_bConn станет TRUE. Если ответы перестанут соответствовать отправляемому числу в течение 5 секунд, выход станет FALSE.

5. Используйте состояние связи

BoilerLink_WDMaster_Inst.out_bConn показывает наличие связи. Условие NOT BoilerLink_WDMaster_Inst.out_bConn можно передать в SignalsFilter как причину «Нет связи со шкафом котла».

Дальше используйте выход этого канала в тех местах, где потеря связи должна вызывать предупреждение или останов. Сам WDMaster оборудование не останавливает.

Как проходит проверка

Шаг Действие
WDMaster отправил число 10 WDSlave получает 10 и возвращает его
WDMaster получил 10 Связь подтверждена
Наступил следующий период WDMaster отправляет 11
Ответ не совпадает с запросом Начинается ожидание правильного ответа
Время ожидания истекло Связь считается потерянной
Снова пришёл новый правильный ответ Связь восстанавливается автоматически

В начале работы связь ещё не подтверждена. Простого совпадения начальных нулевых значений недостаточно: нужно получить изменение ответа, совпавшее с текущим запросом.

Как выбрать период и время ожидания

Период должен давать второму шкафу время получить число и вернуть его. WDMaster отправляет следующее число по времени, даже если ответ на предыдущее ещё не получен.

Например, при обмене несколько раз в секунду можно начать с периода 1 с и ожидания 5 с. Если полный путь запроса и ответа занимает больше секунды, увеличьте период. Время ожидания задайте с запасом относительно периода и обычных задержек обмена.

Нулевые или отрицательные значения не отключают проверку: при таком периоде число меняется при каждом выполнении компонента, а при таком времени ожидания несовпадение сразу снимает связь. Для обычной работы задавайте положительные значения.

Параметры компонента — Params

Параметр По умолчанию Назначение
$WDMaster Ведущий WatchDog Название группы параметров
WDMasterId _ID_ ID проверки; для BoilerLink создаётся BoilerLink_WDMaster_Inst
WDMasterComment Комментарий Название проверяемой связи
WDMasterIn _WD_IN_ Полученное ответное число, WORD
WDMasterOut _WD_OUT_ Переменная WORD для отправляемого числа
WDMasterConf Пусто ID набора настроек. Если пусто, используется WDMasterId
WDMasterConfComment Пусто Название набора настроек. Если пусто, используются WDMasterComment и $WDMaster
WDMasterConnMsg Связь установлена Подпись состояния связи; на проверку не влияет

Настройки во время работы — Conf

Имена приведены для WDMasterId = BoilerLink и пустого WDMasterConf.

Настройка Тип Начальное значение Назначение
Conf.BoilerLink_WDMaster_diPeriod DINT 1 Через сколько секунд отправлять следующее контрольное число
Conf.BoilerLink_WDMaster_diTimeout DINT 5 Сколько секунд допускается несовпадение ответа с текущим запросом

Для одинаковых выдержек у нескольких WDMaster задайте им общий WDMasterConf. Например, при WDMasterConf = CabinetLinks создаются настройки Conf.CabinetLinks_WDMaster_diPeriod и Conf.CabinetLinks_WDMaster_diTimeout. Состояние каждой связи проверяется отдельно.

Выходы компонента

Выход для примера Тип Что означает
BoilerLink_WDMaster_Inst.out_wMasterWD WORD Контрольное число для отправки; в примере записывается в wBoilerRequest
BoilerLink_WDMaster_Inst.out_bConn BOOL Связь подтверждена и время ожидания ответа не истекло
BoilerLink_WDMaster_Inst.out_bSync BOOL В этом цикле ПЛК получен новый ответ, совпавший с текущим запросом

out_bSync отмечает отдельный ответ. Для постоянного признака наличия связи используйте out_bConn.

Для панели создаются View.BoilerLink_WDMaster_Inst_out_bConn и View.BoilerLink_WDMaster_Inst_out_bSync. Отдельных команд оператора у компонента нет.