Вход

Просмотр полной версии : Помогите по работе с Modbus



vasylye
31.10.2012, 17:30
Здравствуйте!
Сделал тестовый проект для изучения modbus
Контроллер ПЛК-110, сконфигурирован как ведомый
Опрашивать его должен Лектус по интерфейсу RS-232, протокол ASCII
В контроллере увеличивается переменная, и сервер должен ее считывать.
(проект в архиве)

Лектус опрашивает переменную, в логе видно такие записи:

16:20:38.672 [3488] КЛИЕНТ ЗАПУЩЕН
16:20:39.561 [5564] (COM5)Tx: [17] ":01 03 00 01 00 01 FA CR LF "
16:20:39.608 [5564] (COM5)Rx: [11] ":01 83 02 7A CR LF "
16:20:39.608 [5564] Ошибка приема/передачи (COM5 Адрес:1)

Подскажите пожалуйста, в чем причина?

capzap
31.10.2012, 17:34
Здравствуйте!
Сделал тестовый проект для изучения modbus
Контроллер ПЛК-110, сконфигурирован как ведомый
Опрашивать его должен Лектус по интерфейсу RS-232, протокол ASCII
В контроллере увеличивается переменная, и сервер должен ее считывать.
(проект в архиве)

Лектус опрашивает переменную, в логе видно такие записи:

16:20:38.672 [3488] КЛИЕНТ ЗАПУЩЕН
16:20:39.561 [5564] (COM5)Tx: [17] ":01 03 00 01 00 01 FA CR LF "
16:20:39.608 [5564] (COM5)Rx: [11] ":01 83 02 7A CR LF "
16:20:39.608 [5564] Ошибка приема/передачи (COM5 Адрес:1)

Подскажите пожалуйста, в чем причина?


А Вы уверены что Лектус опрос ведет по протоколу ASCII, а не RTU? По логу, у меня возникли сомнения в этом

vasylye
31.10.2012, 17:48
Да, точно по ASCII.
в RTU нет двоеточия впереди пакета, ну и это лог Лектуса

vasylye
31.10.2012, 18:20
Вопрос снят!
моя вина, нужно было в Лектусе адрес переменной установить "0"

теперь обмен выглядит так:
17:20:00.021 [5564] (COM5)Tx: [17] ":01 03 00 00 00 01 FB CR LF "
17:20:00.068 [5564] (COM5)Rx: [15] ":01 03 02 00 04 F6 CR LF "

capzap
31.10.2012, 18:23
:) да промашка вышла, но с Вашей стороны тоже косяк имеется, в слейве у Вас один регистр с адресом 0, а опрашивать Вы пытаетесь второй регистр с номером 1, которого не существует, вот тут кстати http://ru.wikipedia.org/wiki/Modbus есть Стандартные коды ошибок

vasylye
01.11.2012, 10:18
Да, когда понял это, и исправил - заработало :)