PDA

Просмотр полной версии : Проблемы связи по RS-485 и Modbus



vasylye
23.09.2015, 07:49
Здравствуйте!
Есть ПЛК-150 и некий измерительный прибор (весы), из которого ПЛК считывает два регистра.
Также есть адаптер RS-485, который позволяет смотреть на компьютере, что делается в сети. Адаптер подключен к клеммам ПЛК.
Длина кабеля между ПЛК и весами примерно 30 м.
В конфигурации ПЛК задан опрос по Модбас устройства по адресу 1, стартовый регистр 0х14, считать 2 регистра
считывание идет раз в секунду.

ПЛК шлет запрос:
01 04 00 14 00 02 31 cf
В ответ приходит:
11 04 00 00 eb 1d 75 7d - что естественно, вовсе не то что должно прийти.

Когда тот же запрос формируется с компьютера (опрос с плк остановлен вводом в соотв. поле числа 254):
01 04 00 14 00 02 31 cf
В ответ получаю
01 04 04 00 00 ef 4a 36 43 - и по форме, и по содержанию правильный ответ.

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

capzap
23.09.2015, 08:23
а если оставить в линии только плк и весы, а приходящее значение смотреть онлайн по ethernet, то возвращаемое значение похоже на правду?

vasylye
23.09.2015, 08:29
Если только ПЛК и весы, то плк возвращает ошибку - таймаут

разве-что вручную формировать пакет запроса и ловить ответ?

vasylye
23.09.2015, 08:31
получается, что сам ответ "11 04 00 00 eb 1d 75 7d" - начинается не с того адреса, должно быть 01 04 ....

capzap
23.09.2015, 09:26
Если только ПЛК и весы, то плк возвращает ошибку - таймаут

разве-что вручную формировать пакет запроса и ловить ответ?

чудес то не бывает, запросы Вы пишите одинаковые от обоих мастеров отличается только ответ, скорее всего о чем то не договариваете

ASo
23.09.2015, 09:38
Например, перепутаны А и В.

vasylye
23.09.2015, 15:17
К сожалению, вышло так что я не смог поехать на обьект, там напарник подключил комп к ПЛК по езернету, и через переходник к RS-485
ну и я могу видеть экран компьютера
В общем, беда ((((

Если А и В перепутаны, то тогда или монитором некорректно данные принимались, или ответы бы не приходили....

vasylye
23.09.2015, 16:05
я сделал программку, которая все, что на линии пишет в буфер ПЛК
Отправляю запрос с компьютера,, получаю корректный ответ (проверяю контрольную сумму ответа)

в буфере ПЛК вижу - как запрос, так и ответ без всяких проблем и искажений, все отлично!

Но когда отправляю запрос из ПЛК (сформированный в программе) - ответ приходит неправильный ((((((
это видно как по буферу ПЛК , так и по монитору, причем содержимое и буфера ПЛК, и принятое компьютером идентично

vasylye
23.09.2015, 16:09
20114
Это скриншот, когда ПЛК формирует запрос, и получает некорректный ответ, а в самом низу - запрос с компа и правильный ответ

может что-то в аппаратной части этих весов неладно ?

vasylye
23.09.2015, 16:25
в общем, такое впечатление, что первых два байта не принимаются корректно.
Они принимаются как один испорченный байт.

Откуда такой вывод?
вот ответ, только что принятый ПЛК: 44 04 00 00 EB AF F5 08

Если 44 заменить на 01 04, получим:
01 04 04 00 00 EB AF F5 08 ---- здесь корректный ответ, контрольная сумма сходится, и сами данные - 00 00 EB AF -- корректны

Как бы ПЛК не успевает переключиться после передачи на прием, или что-то в этом роде, не могу понять

capzap
23.09.2015, 16:28
Но когда отправляю запрос из ПЛК (сформированный в программе) - ответ приходит неправильный
а когда Вы сказали, что не пользуетесь конфигуратором, не пользуетесь бибкой modbus.lib, здесь телепатов нет чтоб разобраться в Вашем самопальном коде

rwg
23.09.2015, 17:47
я сделал программку, которая все, что на линии пишет в буфер ПЛК
Отправляю запрос с компьютера,, получаю корректный ответ (проверяю контрольную сумму ответа)
Но когда отправляю запрос из ПЛК (сформированный в программе) - ответ приходит неправильный ((((((

То есть у Вас в ПЛК одновременно две программы работают с одним портом ПЛК - одна ведёт обмен с весами , а вторая всё, что попадает в его приёмный регистр, пишет в буфер?

vasylye
23.09.2015, 18:05
Нет, один раз я запрограммировал ПЛК на опрос через конфигуратор,
потом - вручную
а еще потом - чтобы просто принимать все в буфер, не отправляя никаких запросов (в этом случае запрос отправлял из компьютера)

spectrum48k
23.09.2015, 23:36
Нет, один раз я запрограммировал ПЛК на опрос через конфигуратор,
потом - вручную
а еще потом - чтобы просто принимать все в буфер, не отправляя никаких запросов (в этом случае запрос отправлял из компьютера)

в лучших традициях фрума: "проект в студию, а дальше обсудим предметно"

vasylye
02.10.2015, 15:01
Попросили изготовителя весов сделать так, тобы ответ по modbus отправлялся с задержкой 2 мс, они перепрограммировали их, и все заработало как надо! )))

Sergey666
02.10.2015, 18:28
Попросили изготовителя весов сделать так, тобы ответ по modbus отправлялся с задержкой 2 мс, они перепрограммировали их, и все заработало как надо! )))

Стандартная задержка ответа , нормальные производители вводят настроечный параметр , просто троешники прописывают жестко , а "умники" перешивают терминалы уже проданные .