PDA

Просмотр полной версии : Modbus 485 - ошибка 81



drbril
17.11.2008, 10:24
Добрый день!
Есть такая связка - Овен ПЛК150 и измеритель напряжения Алекто AET421.
Опрос прибора идет по Modbus RTU по интерфейсу 485. Периодически Овен выдает 81 ошибку, а значения считываемых регистров становятся нулевыми. Эксперименты с таймаутами и временем опроса не помогают. При этом, если в сети только один прибор, ошибка выскакивает реже, если же приборов несколько, то постоянно. Попробовали подключиться к прибору через преобразователь RS232-RS485 и считывать данные напрямую в комп через OPC-сервер - все работало стабильно на протяжении более 2-х часов.
Есть еще в нагрузку дополнительный вопрос: в Овене в конфигурации забито Universal Modbus device, затем десяток Register input Module с соответствующими адресами регистров. При просмотре в PortMon пересылаемых посылок выяснилось, что контроллер опрашивает каждый регистр отдельной функцией. Почему не реализован групповой запрос, если регистры идут все подряд?

Николаев Андрей
17.11.2008, 10:39
81 ошибка - не доходят данные от модулей.

К сожалению приходится констатировать, что шаблоны нам не удались...
Добавляйте Universal ModBus Device, и нужное количество регистров (не забудьте про регистры аварии.

Групповой опрос в PLC Configuration не поддержан. Сейчас пишем библиотеку для работы с ModBus - там эта функция будет поддержана.

Филоненко Владислав
17.11.2008, 12:42
Добрый день!
Есть такая связка - Овен ПЛК150 и измеритель напряжения Алекто AET421.
Опрос прибора идет по Modbus RTU по интерфейсу 485. Периодически Овен выдает 81 ошибку, а значения считываемых регистров становятся нулевыми. Эксперименты с таймаутами и временем опроса не помогают. При этом, если в сети только один прибор, ошибка выскакивает реже, если же приборов несколько, то постоянно. Попробовали подключиться к прибору через преобразователь RS232-RS485 и считывать данные напрямую в комп через OPC-сервер - все работало стабильно на протяжении более 2-х часов.
Есть еще в нагрузку дополнительный вопрос: в Овене в конфигурации забито Universal Modbus device, затем десяток Register input Module с соответствующими адресами регистров. При просмотре в PortMon пересылаемых посылок выяснилось, что контроллер опрашивает каждый регистр отдельной функцией. Почему не реализован групповой запрос, если регистры идут все подряд?

Т.е. в ПЛК должен быть ИИ, который соберёт информацию о всех опрашиваемых переменных, сгрупирует её и опросит наиболее быстрым запросом? И учтёт особенности приборов и пр? Не слишком ли круто?

Jeck
18.11.2008, 01:49
При этом, если в сети только один прибор, ошибка выскакивает реже, если же приборов несколько, то постоянно.
а терминатор на конце линии есть?

AlexG
20.11.2008, 11:40
Этот "ИИ" не так уж и сложен, я написал Modbus-мастер с формированием оптимальных запросов для одной из своих разработок. Правда на Си.

Филоненко Владислав
20.11.2008, 14:00
Вот для конкретной разработки можно написать, а для "абстрактного" применения - нельзя. Слишком много переменных.
А хочется посылать всё одним запросом - используйте тип STRING в мастере и будет счастье.

AlexG
20.11.2008, 15:23
Технически это реализуемо (и реализовано). Конечно, есть некоторые сложности и вопрос целесообразности разработки.

Dimooon
30.10.2015, 19:14
Все понятно. А как убрать это?

Knive87
02.11.2015, 14:41
Добрый день!
Есть такая связка - Овен ПЛК150 и измеритель напряжения Алекто AET421.
Опрос прибора идет по Modbus RTU по интерфейсу 485. Периодически Овен выдает 81 ошибку, а значения считываемых регистров становятся нулевыми. Эксперименты с таймаутами и временем опроса не помогают. При этом, если в сети только один прибор, ошибка выскакивает реже, если же приборов несколько, то постоянно. Попробовали подключиться к прибору через преобразователь RS232-RS485 и считывать данные напрямую в комп через OPC-сервер - все работало стабильно на протяжении более 2-х часов.
Есть еще в нагрузку дополнительный вопрос: в Овене в конфигурации забито Universal Modbus device, затем десяток Register input Module с соответствующими адресами регистров. При просмотре в PortMon пересылаемых посылок выяснилось, что контроллер опрашивает каждый регистр отдельной функцией. Почему не реализован групповой запрос, если регистры идут все подряд?
Возможно у вас более одного мастера и при обращении к одному и тому же устройству, возникает ошибка. Другой момент обратите внимание на параметр таймаут в опрашиваемом устройстве. Недавно сам столкнулся с проблемой группового запроса. Нашелся выход чтением массива стринговой переменной. Если надо, могу подкинуть решение. Если переменные типа REAL, то необходима сборка из 2-х WORD, тоже могу дать.

petera
02.11.2015, 15:40
Возможно у вас более одного мастера и при обращении к одному и тому же устройству, возникает ошибка. Другой момент обратите внимание на параметр таймаут в опрашиваемом устройстве. Недавно сам столкнулся с проблемой группового запроса. Нашелся выход чтением массива стринговой переменной. Если надо, могу подкинуть решение. Если переменные типа REAL, то необходима сборка из 2-х WORD, тоже могу дать.
Вы своей затей по разбивке REAL на два WORD, извините, уже все темы засорили:rolleyes:

Knive87
02.11.2015, 17:41
Вы своей затей по разбивке REAL на два WORD, извините, уже все темы засорили:rolleyes:

Чем бы дитя не тешилось, лишь бы ни плакало))) Если вопрос между строк, то может и не заметит тот важный человек, а так шансы чуть по-больше))))