Просмотр полной версии : Восстановление связи modbus rtu
Павел163
29.12.2023, 16:20
Добрый день.
Для теста подключил два программируемых реле (пр205 и пр103) по модбас на rs485 .
После подачи питания обмен начинается только спустя около 2х минут.. также при обрыве и восстановлении линии связь восстанавливается тоже через такое долгое время.
Это нормальное поведение? никак нельзя снизить это время хотя бы до нескольких секунд?
В документации не нашел никакой информации....
kondor3000
29.12.2023, 16:50
Добрый день.
Для теста подключил два программируемых реле (пр205 и пр103) по модбас на rs485 .
После подачи питания обмен начинается только спустя около 2х минут.. также при обрыве и восстановлении линии связь восстанавливается тоже через такое долгое время.
Это нормальное поведение? никак нельзя снизить это время хотя бы до нескольких секунд?
В документации не нашел никакой информации....
Что то не так с настройками или адресами регистров. Скрины или проекты выкладывайте.
Павел163
30.12.2023, 06:39
Это конфигурация мастера (пр205)
72715
Это конфигурация слейва (пр103)
72716
72717
что-то неправильно?
Павел163
30.12.2023, 07:18
Да.. интересный ньюанс. Мастер у меня читает 2 регистра с адреса 16386. Если на слейве я пишу только в одну сетевую переменную (16386) то мастер это не читает.. но только я начинаю писать на слейве еще и в 16387, то сразу мастер читает эти 4 байта и связь восстанавливается мгновенно после обрыва.
Видимо если сетевая переменная явно не используется в проекте, то компилятор что-то оптимизирует.
Вообще да - всё, что явно не используется, в OWL обычно не обрабатывается. Про именно вот сетевые переменные - не уверен.
kondor3000
30.12.2023, 10:24
Да.. интересный ньюанс. Мастер у меня читает 2 регистра с адреса 16386. Если на слейве я пишу только в одну сетевую переменную (16386) то мастер это не читает.. но только я начинаю писать на слейве еще и в 16387, то сразу мастер читает эти 4 байта и связь восстанавливается мгновенно после обрыва.
Видимо если сетевая переменная явно не используется в проекте, то компилятор что-то оптимизирует.
Вы собираете и разбираете 32 битные переменные в мастере, а надо в слейве.
Смысл в том, что в Лоджике вы работаете с 32 битной переменной, для передачи в мастере вы просто ставите 2 регистра (если 1 регистр (функция записи 0х06),то передача 16 битной переменной), но в слейве 2 регистра для обмена выбрать нельзя,
поэтому там и надо собрать и разобрать переменные из двух 16 битных переменных, из старшего и младшего регистра.
То есть в мастере оставляете только две 32 битные сетевые переменные (по 2 регистра), а макросы переносите в слейв.
И ещё используйте функцию чтения 0х03 ( у вас 0х04 стоит), а записи 0х10 ( запись нескольких регистров)
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot