
Сообщение от
Serj_N
У меня сложилось впечатление, что в Modbus-мастере чудес заложено больше, чем во всём остальном контроллере.
Не удивлюсь уже, если возможно возникновение такой ситуации:
Мастер посылает запрос на чтение строки длиной в 200 байт и ждёт ответ. Ответ не пришел в допустимое время. Мастер посылает другой запрос чтения, на этот раз одного регистра. И тут начинает поступать ответ на предыдущий запрос. Мастер принимает его и, т.к. не проверяет адрес отвечающего (CRC хоть проверяет?), то записывает всю 200-байтовую строку в область ввода, начиная с адреса регистра, который он запросил второй командой. Затирая тем самым ячейки памяти, лежащие за этим регистром...
Оценивая свой опыт борьбы с этим чудом, совсем не удивлюсь, если так и будет. Кстати, таким образом можно ведь и содержимое системной памяти повредить (если регистр последний в модуле, а модуль последний в конфигураторе)?
Теперь опишу, как я победил проблему с постоянными перезагрузками контроллера, описанную в начале ветки.
Всё просто. Против лома нет приёма. Модуль Modbus-мастер был удалён из конфигурации контроллера. А затем в течении пяти дней была написана и отлажена библиотека, реализующая команды 3 и 16 Modbus ASCII мастера. И всё.
Вся аппаратная конфигурация осталась прежней. Абсолютно. Те же радиомодемы. Те же ведомые. Те же физические подключения.
Более того. После завершения отладки библиотеки я продолжил дорабатывать основную программу. И она выросла ещё где-то на треть. И никаких проблем. Никаких резетов по watchdog. Стреляет очередями запросов и не спотыкается.
Так что ищите суслика в своём драйвере. А то и не одного.
P.S. А для себя пришлось сделать вывод: модуль Modbus Master для ПЛК100 не существует. То что имеется на данный момент - это не продуманное и не прошедшее тестирования НЕЧТО, способное работать лишь в самых простых конфигурациях.
P.S. А про надёжность модуля Modbus Slave плохого сказать нечего. Нормально работает. Быстрее бы ему доработали конфигуратор. Очень много времени отнимает нынешний, если переменных много.