1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Диагностика сети RS-485 дубль 3

RS-485, ProfiBUS, 4-20 mA, Wi-Fi, GSM и так далее

Модератор: Глоб.модераторы

Закрыто

Автор темы
Kaskad11
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 19 ноя 2018, 13:53
Имя: Иван
Страна: Украина
город/регион: Полтавщина
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Диагностика сети RS-485 дубль 3

Сообщение Kaskad11 »

Всем добра!
Что б не плодить темы напишу здесь, вопрос как раз по диагностике сети.
Имеем 3 слейва и мастер. Сеть на столе, расстояние между устройствами 30-40 см., Modbus RTU 19200. Все устройства "сидят" непосредственно на шине, никаких отводов.
Условно назовём слейвы А=01, В=02, С=03. Мастер их опрашивает, но отвечает только А. Была идея, что по какой то причине мастер не выдает для остальных запросы. Менял адреса, без толку, всё равно отвечает только А. Отключаю мастер, подключаюсь к шине через переходник USB-RS485 - все слейвы отвечают. Что может быть?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5790
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 673 раза
Поблагодарили: 841 раз

Диагностика сети RS-485

Сообщение Ryzhij »

Kaskad11 писал(а): 11 дек 2020, 13:03 Отключаю мастер, подключаюсь к шине через переходник USB-RS485 - все слейвы отвечают. Что может быть?
Вангую, что мастер слишком часто шлёт свои запросы. Дело может быть в настройках времени паузы и ожидания.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Sergey_P
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 26 мар 2018, 13:36
Имя: Сергей Поминовский
Страна: Украина
город/регион: Киев
Благодарил (а): 13 раз
Поблагодарили: 17 раз

Диагностика сети RS-485

Сообщение Sergey_P »

Соберите сеть с мастером, подключитесь к ней параллельно через преобразователь RS485/USB и запустите на компьютере программу из этой темы:
viewtopic.php?f=250&t=14510
Покажите лог и я уверен, что мы найдем причину.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
Kaskad11
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 19 ноя 2018, 13:53
Имя: Иван
Страна: Украина
город/регион: Полтавщина
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Диагностика сети RS-485

Сообщение Kaskad11 »

Ryzhij, мастер не имеет настроек связи. Они установлены программно и не меняются.
Sergey_P, сейчас попробую. По указанной схеме я подключался программой ComRead но она, почему то, писала только ответы от слейва, запросов мастера не показывает.

Отправлено спустя 23 минуты 47 секунд:
Вот лог.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Sergey_P
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 26 мар 2018, 13:36
Имя: Сергей Поминовский
Страна: Украина
город/регион: Киев
Благодарил (а): 13 раз
Поблагодарили: 17 раз

Диагностика сети RS-485

Сообщение Sergey_P »

Kaskad11, над логами мне нужно еще немного поразмышлять, а пока вопросы:

1) С настройками контроля четности все правильно? На компьютере задано EVEN, в мастере и слейвах так-же?

2) Должен ли мастер слать этот запрос:

Код: Выделить всё

01 03 02 01 3b f8 07
это чтение HR начиная с адреса 513 (0x201), количество 59 (0x3b)

Этот запрос правильный (CRC совпадает), но sniffer его почему-то считает неправильным (Unknown data). Я попытаюсь понять, почему так.

В логах я не увидел ответов от слейвов. На самом деле они что-то отвечали?
Последний раз редактировалось Sergey_P 11 дек 2020, 16:57, всего редактировалось 1 раз.

Автор темы
Kaskad11
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 19 ноя 2018, 13:53
Имя: Иван
Страна: Украина
город/регион: Полтавщина
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Диагностика сети RS-485

Сообщение Kaskad11 »

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

Отправлено спустя 10 минут 40 секунд:
При таких настройках на экран ничего не показывает, а лог пишет.

Отправлено спустя 2 минуты 47 секунд:
А как остановить работу скрипта? Просто закрываем командную строку?

Отправлено спустя 18 минут 52 секунды:
Вот уставки слейва.

Отправлено спустя 2 минуты 53 секунды:
Все слейвы одинаковые.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Диагностика сети RS-485

Сообщение Jackson »

Kaskad11 писал(а): 11 дек 2020, 14:19 мастер не имеет настроек связи. Они установлены программно и не меняются
Это проблемы мастера.
По вопросам работы Форума можно обратиться по этим контактам.

Sergey_P
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 26 мар 2018, 13:36
Имя: Сергей Поминовский
Страна: Украина
город/регион: Киев
Благодарил (а): 13 раз
Поблагодарили: 17 раз

Диагностика сети RS-485

Сообщение Sergey_P »

Насколько я понял, в мастер "зашиты" настройки 19200-8-EVEN-1 и эти-же настройки заданы в слейвах.
Т.е. вроде-бы все правильно.

Пока по логам видно, что мастер ведет себя "странно". Он многократно шлет неправильный запрос (01 03 02 01 3a 39 c7) и каждый раз ждет ответа примерно по 700 мс (это нормальный таймаут).
В этом запросе не хватает одного байта. Количество запрашиваемых регистров (0x3a) задано одним байтом, а должно быть два.
Поэтому и sniffer этот запрос трактует как мусор.
При этом удивительно, что контрольная сумма совпадает. Т.е. запрос изначально сформирован неправильно где-то в прикладной программе мастера. Совпадение контрольной суммы меня сбило с толку.

Потом в логе появляется правильный запрос:
03 03 00 0a 00 01 a5 ea
Это - чтение регистра 10 (температура) из слейва № 3.
Но ответа на этот запрос мастер ждет всего 60 мс и потом шлет следующий запрос. Слейвы ничего ответить не успевают.
Я думаю, надо для начала увеличить таймаут в мастере (минимум 300 мс) и понять откуда берется неправильный запрос.

Хотелось бы знать, что там за мастер. Может, это натолкнет на какие-то идеи.

Отправлено спустя 39 минут 18 секунд:
Кстати есть классная онлайн-утилита для проверки modbus-пакетов. Незаменимая вещь, если нужно убедить программиста, что его творение формирует неправильные запросы :ext_book:
http://rapidscada.net/modbus/ModbusParser.aspx

Автор темы
Kaskad11
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 19 ноя 2018, 13:53
Имя: Иван
Страна: Украина
город/регион: Полтавщина
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Диагностика сети RS-485

Сообщение Kaskad11 »

Вот опрос слейвов програмой ModbusPoll. Всё ОК. Файл Adres123.txt

Отправлено спустя 39 минут 59 секунд:
В лог-файлы записал комментарии, может так будет проще. ID:1-4 - только опрос, ID:5-8 - опрос и запись.
Только сейчас пришла в голову мысль - а что, если БП гонит помеху по питанию и мастер начинает дурить? В понедельник надо будет от аккумуляторов питание подать, что б уже наверняка.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Sergey_P
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 26 мар 2018, 13:36
Имя: Сергей Поминовский
Страна: Украина
город/регион: Киев
Благодарил (а): 13 раз
Поблагодарили: 17 раз

Диагностика сети RS-485

Сообщение Sergey_P »

С ModbusPoll все работает потому, что он шлет правильные запросы.

А вот с мастером явно что-то не так.
Блок питания здесь не при чем. Если бы он давал помехи, то в логах были бы случайные байты. А там повторяющаяся последовательность одних и тех-же пакетов.

Я не могу понять: если питание выключили, то кто шлет запросы?
Вот кусок из файла modbus1-log.txt:

Код: Выделить всё

...
00:00:29.590 - Unknown data: 01     <-- Это неправильный запрос с правильной контрольной суммой (запросов было много)
00:00:29.590 - Unknown data: 03
00:00:29.590 - Unknown data: 02
00:00:29.590 - Unknown data: 01
00:00:29.590 - Unknown data: 3b
00:00:29.590 - Unknown data: f8
00:00:29.590 - Unknown data: 07

Выключил питание схемы!!!!!

00:00:30.054 - Request: 08 04 d0 10 00 01 08 56                                     <--  Откуда эти запросы?
00:00:30.054 - ID: 8, Fn: 4 (Read IR), addr: 53264, count: 1, CRC: 0x5608

00:00:30.118 - Request: 08 06 d0 01 00 00 e0 53
00:00:30.118 - ID: 8, Fn: 6 (Write Single HR), addr: 53249, value: 0, CRC: 0x53e0
...
После выключения питания как раз и начинают идти правильные запросы. Только промежуток времени между ними маленький слишком. Мастер посылает новый запрос, подождав всего 70 мс.

Натравите мастера на симулятор https://sourceforge.net/projects/modrssim2/files/ через RS485/USB (компьютер будет в роли слейвов). Там в правом нижнем углу есть кнопка Comms - она откроет закладку с логом пакетов.

Автор темы
Kaskad11
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 19 ноя 2018, 13:53
Имя: Иван
Страна: Украина
город/регион: Полтавщина
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Диагностика сети RS-485

Сообщение Kaskad11 »

Много неправильных запросов - это при включенном питании.
Когда БП выключается напряжение проседает но какое то время ещё есть (разряд выходных конденсаторов). Именно в этот момент мастер и шлёт правильные запросы. Чертовщина какая то.
В понедельник возьму другой мастер и попробую с ним работать.

Sergey_P
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 26 мар 2018, 13:36
Имя: Сергей Поминовский
Страна: Украина
город/регион: Киев
Благодарил (а): 13 раз
Поблагодарили: 17 раз

Диагностика сети RS-485

Сообщение Sergey_P »

Так что там за мастер все-таки?

Если это какой-то общедоступный контроллер, то сообщите его модель. Может и другие сталкивались с такими проблемами.

Если мастер самодельный, то могу дать два совета:
1) Сигнал "включение передачи" на приемопередатчике RS485 должен быть подтянут к логическому нулю при выключенном процессоре. Если этого не сделать - при включении устройства оно будет "мусорить" в сеть пока процессор не инициализируется.
Вот тут в пункте 6 это описано: https://www.ivtechno.ru/articles-one?id=19
2) Не складывайте пакеты в очередь для передачи. Очередной запрос должен отправляться только после получения ответа или после достаточно большого таймаута. По моему опыту 500 мс обычно достаточно. Если меньше 100 мс - почти гарантированные проблемы. В официальной спецификации (https://modbus.org/docs/Modbus_over_ser ... _V1_02.pdf) все подробно описано.
Вот тут еще много полезного из первых рук: https://modbus.org/tech.php

Автор темы
Kaskad11
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 19 ноя 2018, 13:53
Имя: Иван
Страна: Украина
город/регион: Полтавщина
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Диагностика сети RS-485

Сообщение Kaskad11 »

Мастер там вот такой.

Отправлено спустя 3 минуты 3 секунды:
Так он выглядит внутри.

Отправлено спустя 13 минут 33 секунды:
По поводу остальных рекомендаций - мастер к нам приходит в составе аппарата охлаждения уже запрограммированным. Что либо менять и настраивать в нём нет возможности. Разве что проверить и подпаять резистор на вход разрешения приемника.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Sergey_P
здесь недавно
здесь недавно
Сообщения: 63
Зарегистрирован: 26 мар 2018, 13:36
Имя: Сергей Поминовский
Страна: Украина
город/регион: Киев
Благодарил (а): 13 раз
Поблагодарили: 17 раз

Диагностика сети RS-485

Сообщение Sergey_P »

Kaskad11 писал(а): 12 дек 2020, 12:12 Мастер там вот такой.
Kaskad11 писал(а): 12 дек 2020, 12:12 Что либо менять и настраивать в нём нет возможности.
Получается, что производитель жестко запрограммировал свое устройство (МКУ) на работу с конкретными Modbus-устройствами (преобразователями ПИУ), но по факту МКУ работает некорректно? Ведь он явно шлет не те запросы. Это однозначно проблемы в программе мастера и повод обратиться к производителю. Кроме него Вам никто не поможет.
Все-таки тут что-то не так. Ведь они должны были проверить работоспособность перед отправкой заказчику?
Kaskad11 писал(а): 12 дек 2020, 12:12 Разве что проверить и подпаять резистор на вход разрешения приемника.
Резистор может и избавит от мусора при старте, но он не исправит некорректную программу.

Автор темы
Kaskad11
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 19 ноя 2018, 13:53
Имя: Иван
Страна: Украина
город/регион: Полтавщина
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Диагностика сети RS-485

Сообщение Kaskad11 »

Да...
Какие строгости. Вроде и по правилам всё делал, а всё равно хоть кому то а не угодил. Неприятно.
Как будь-то в чашку кофе нассали. И не смертельно, а пить не хочется.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Диагностика сети RS-485

Сообщение Jackson »

Sergey_P писал(а): 12 дек 2020, 17:33 Ведь они должны были проверить работоспособность перед отправкой заказчику?
С чего Вы взяли? :)
Если бы так всегда делалось - многочисленные службы техподдержки сидели бы без работы.
По вопросам работы Форума можно обратиться по этим контактам.
Закрыто

Вернуться в «Интерфейсы, протоколы, связь»