PDA

Просмотр полной версии : Попеременный опрос двух модулей МВ110 и МУ110



VovkaK
15.03.2011, 07:08
Здравствуйте.
Перед наладкой большой схемы собрал уменьшенный вариант, состоящий из ПЛК 100, модуля МВ110-16 и МУ110-16. Контроллер опрашивает МВ110 и отправляет состояние входов МУ110, т.е. включение входа включает выход. Проект на вашей библиотеке ModBus.lib. Обмен идет, значения присваиваются, но все время происходит ошибка time-out модуля МУ110-16 и примерно каждые 2 минуты контроллер перезагружается. Если опрашивать модули по таймеру 100 ms все нормально, НО по задаче проекта обмен должен быть на максимально возможной скорости, т.к. модулей много, а использовать один большой контроллер не получится. Настройки: ModBus RTU, BaudRate 57600. У МВ110 адрес 5, у МУ110 адрес 9. Проект ПЛК прилагается.
Как с этим делом побороться?

VovkaK
15.03.2011, 08:25
Отвечу сам себе. Проблема исчезла после добавления триггера на переменную с выхода Complete блока MB_WR_REGS. Видимо блоку нужен цикл ПЛК для завершения своих дел.

Алексей Дмитриев
15.03.2011, 12:53
Настройки: ModBus RTU, BaudRate 57600

А почему скорость-то не 115200 - в два раза быстрее?:confused:

VovkaK
15.03.2011, 15:52
На 115200 изредка проскакивает ошибка. Да и в два раза быстрее только "полет" посылки. Но на фоне цикла ПЛК будет этот "полет" 3 мс или 1,5 мс нет разницы, я думаю.:)

Алексей Дмитриев
15.03.2011, 23:47
Ошибка как проявляется и каким кабелем соединили? Есть-ли терминальные резисторы на концах линии? Потом, я заметил, что у Вас огромный таймаут, аж 150 мс выставлен, хотя рекомендуют 20 - это зачем?:confused:

VovkaK
16.03.2011, 07:52
Ошибка таймаут, кабель марки "моток проводов". Терминальные резисторы есть, в модуле AC4. Но на этой скорости обмен нормально идёт и с отключенными резисторами. А насчет времени таймаута 150 мс, если ответ пришёл, ПЛК не будет ждать весь таймаут, вдруг ещё чего придёт:). По условиям проекта, если появляется ошибка два раза подряд -> остановка линии и разбор полетов. Главное, чтобы время не было слишком малым (появится ошибка time-out, причем может появляться при стечении обстоятельств) или большим (пока пройдет два таймаута всё уже уедет).

lara197a
16.03.2011, 15:57
попробуйте увеличить цикл ПЛК. возможно ПЛК не успевает все сделать. Как следствие ошибка связи.
Сильно увеличивает обмен данными, а как следствие и цикл режим Онлайн.
При отключении Онлайн время цикла заметно снижается.
В модуле статистик этого не видно. Если завести переменную через функцию MAX на время цикла, то обнаруживается , что максимальное время цикла в 3 раза больше, чем отображаемое в модуле статистик(для режима онлайн).
А Время таймаута можно сделать поменьше, но добавить повторов при запросе(Amount Repeat).

VovkaK
16.03.2011, 16:24
С циклом игрался, не помогло. С циклом в режиме Онлайн тоже разбирался, только записывал значение в массив через 1 сек. Но это ладно. Кстати упомянули про число повторов, может знаете ответ на вопрос: давно интересует:) логическая обработка повторов. При передаче указывается, что будет столько-то повторов и они сличаются? Или просто отправляются подряд и выполняется последний правильный?

Алексей Дмитриев
16.03.2011, 22:31
Ошибка таймаут, кабель марки "моток проводов". Терминальные резисторы есть, в модуле AC4. А насчет времени таймаута 150 мс, если ответ пришёл, ПЛК не будет ждать весь таймаут, вдруг ещё чего придёт:). По условиям проекта, если появляется ошибка два раза подряд -> остановка линии и разбор полетов. Главное, чтобы время не было слишком малым (появится ошибка time-out, причем может появляться при стечении обстоятельств) или большим (пока пройдет два таймаута всё уже уедет).
При большом времени таймаута у Вас все остальные модули, при отказе одного будут общаться медленнее на его величину, а именно на 150 мс, а если отвалилось 2 модуля, то на 300 и т. д. Это нормально разве?

VovkaK
17.03.2011, 05:48
интересует логическая обработка повторов.

Вы ж сказали что c modbus.lib работаете - все в ваших руках
Если я правильно понял, при работе через конфигуратор с числом повторов допустим 3, отправляется 1-й, приходит ответ, отправляется 2-й и т.д. Модуль "не знает" сколько будет повторов. А ПЛК при работе через конфигуратор как-нибудь обрабатывает повторы?

При большом времени таймаута у Вас все остальные модули, при отказе одного будут общаться медленнее на его величину, а именно на 150 мс, а если отвалилось 2 модуля, то на 300 и т. д. Это нормально разве?
Вы правы, да я и не спорю, что его смело можно уменьшить:). Но до скольки подгоню на полной схеме.