WDMaster — проверка связи по запросу и ответу
WDMaster проверяет, отвечает ли другое устройство. Он периодически отправляет контрольное число и ждёт это же число обратно. Если ответ долго не приходит, компонент сообщает о потере связи.
На второй стороне работает WDSlave, который возвращает полученное число. Такая пара подходит, например, для контроля связи между двумя шкафами управления.
Если другое устройство уже передаёт свой меняющийся счётчик и не требует ответа, используйте WDSimple.
Состав и связи
На другой стороне нужен 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. Отдельных команд оператора у компонента нет.