Просмотр полной версии : Потеря связи по Modbus
Подключил влагомер по модбасу к СПК107, всё работает нормально, данные считываються. Но заметил что в Кодесисе на странице модбас слейв где прописаны адреса по которым я беру данные в прибора где то раз в 10 сек проскакивает ошибка "Шина не подключена". Как можно учесть етот фактор что бы во время такой ошибки данные с прибора не брались?
Попробуйте статус шины в это время посмотреть (внизу на вкладке привязки регистров, см. скриншот).
Не успеваю, ошибка исчезает за 0.5 секунды. Раз в 10сек такое происходит, ничего не рассмотреть в ето время. Я вот думаю как мне не использовать данные от устройства во время такой быстрой ошибки. Значение принимает вид 2.14Е13 что то типа такого.
А зачем Вам успевать, это плк должен следить если xError ИСТИНА то полученное значение не обрабатываем
"xError" ето и есть ошибка потери связи или вы так образно?
в третьем кдс, х обозначает булевое значение,оно может только сказать что блок обработал ошибку, теоретически любую, так же у них есть параметр отсылающий к бибке cmperror, в которой прописаны все встречающиеся ошибки
Где искать мою ошибку? Я и сам понял как сделать то что хотел, но проблема в том как написать ошибку.
Мурат Ахриев
22.10.2014, 15:42
"Имя слейв".xError - если нет связи по сети либо ошибка, данная переменная будет "TRUE"
IF Modbus_Slave_COM_Port.xError=TRUE THEN F1:=0;
END_IF
Modbus_Slave_COM_Port.xError всегда в состоянии FALSE даже при ошибке: "Шина не подключена".
может не у слейва надо искать ошибку, а у мастера
мастер.xError попробовал но ничего не получилось. Разбивает на переменные мастер и еррор
Мурат Ахриев
24.10.2014, 11:17
Имеется возможность прислать проект на проверку (можно в личные сообщения)?
Добрый вечер!
Такая же проблема - только периодически отваливается опрос двух модулей МВА8 и одного МВУ8. Проверка .xError не ловит ошибку, хотя модули не опрашиваются. Время работы без сбоев от 5 до 50 минут.
Как можно оценить состояние шины? узнать ошибку или причину сбоя?
Мурат Ахриев
28.10.2014, 13:03
Пример пере подключения:
VAR
Blink_01: BLINK;
END_VAR
IF Modbus_Slave_COM_Port.xError THEN //Перезапуск подключения по Modbus
Blink_01(ENABLE:= TRUE, TIMELOW:= T#1S, TIMEHIGH:= T#10MS);
Modbus_Slave_COM_Port.xReset:= Blink_01.OUT;
END_IF
А зачем здесь генератор импульсов BLINK?
почему невозможно сделать так:
Modbus_Slave_COM_Port.xReset:=TRUE?
для импульсного сброса, но перед сбросом нужно остановить мастера. после ухода всех ошибок заново сбросить, а потом запустить мастера.
спасибо!
а в случае, если мастер опрашивает несколько слейвов? нужно каждый из них перезапускать после ресета?
нет,достаточно те,которые с ошибкой были.
Nts, Спасибо за пояснение
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot