PDA

Просмотр полной версии : Ошибки при обмене по протоколу Modbus RTU-485



Adore
13.04.2026, 19:03
Здравствуйте!
Имеется 9 ПЛК110-24.60.Р-М [М02], один выступает в роли мастера и опрашивает остальные 8 Slave'ов, проекты написаны в CoDeSys v2.3.
Обмен производится по протоколу ModBus по RS485.
При попытке обмена, Master ПЛК видит только 4 Slave ПЛК, причём только нечётные, если отключить первую нечётную ПЛК, Master наоборот видит только чётные. Подключался сторонним приложением к сети RS для чтения пакетов, видно что изменяется именно опрос главной ПЛК.
Такая проблема возникла впервые, раньше настраивались системы и с большим количеством ПЛК и с опросом всё было хорошо, пытался найти настройку в CoDeSys, но так и не нашёл, как я понимаю, при добавлении Slave устройств, CoDeSys автоматически формирует пул пакетов и нельзя выбрать какие Slave будут опрашиваться, чётные или нечётные.

kondor3000
13.04.2026, 20:08
Здравствуйте!
Имеется 9 ПЛК110-24.60.Р-М [М02], один выступает в роли мастера и опрашивает остальные 8 Slave'ов, проекты написаны в CoDeSys v2.3.
Обмен производится по протоколу ModBus по RS485.
При попытке обмена, Master ПЛК видит только 4 Slave ПЛК, причём только нечётные, если отключить первую нечётную ПЛК, Master наоборот видит только чётные. Подключался сторонним приложением к сети RS для чтения пакетов, видно что изменяется именно опрос главной ПЛК.
Такая проблема возникла впервые, раньше настраивались системы и с большим количеством ПЛК и с опросом всё было хорошо, пытался найти настройку в CoDeSys, но так и не нашёл, как я понимаю, при добавлении Slave устройств, CoDeSys автоматически формирует пул пакетов и нельзя выбрать какие Slave будут опрашиваться, чётные или нечётные.

Исправный ПЛК опрашивает без проблем, и пофиг на четные, нечётные.
У вас либо слейв садит линию, либо что то с мастером. Или в проекте накрутили чего не надо.

Adore
13.04.2026, 20:26
Исправный ПЛК опрашивает без проблем, и пофиг на четные, нечётные.
У вас либо слейв садит линию, либо что то с мастером. Или в проекте накрутили чего не надо.

Если сделать все слейвы чётными либо нечётными, они читаются, следовательно вариант с линией отпадает. В проекте никаких настроек связанных с чтением только чётных или нечётных слейвов не производил, да и вряд ли такие есть. Как писал ранее, изменение чтения чётных/нечётных может произойти прямо во время работы, при отключении чётной/нечётной ПЛК

kondor3000
13.04.2026, 20:28
Если сделать все слейвы чётными либо нечётными, они читаются, следовательно вариант с линией отпадает. В проекте никаких настроек связанных с чтением только чётных или нечётных слейвов не производил, да и вряд ли такие есть. Как писал ранее, изменение чтения чётных/нечётных может произойти прямо во время работы, при отключении чётной/нечётной ПЛК

Такого не бывает, значит накрутили в проекте. Выкладывайте проект.

In_Da_Cher_A
13.04.2026, 20:45
Здравствуйте!
Имеется 9 ПЛК110-24.60.Р-М [М02], один выступает в роли мастера
там два RS
раскидайте слейвы по разным портам

Adore
13.04.2026, 20:53
Такого не бывает, значит накрутили в проекте. Выкладывайте проект.

К сожалению, полный проект выложить не могу, выкладываю проект с настройками соединений

Adore
13.04.2026, 20:56
там два RS
раскидайте слейвы по разным портам

Вторая RS занята модулями дискретного ввода и вывода, в теории можно перекинуть половину туда, но конструкция уже не позволяет

Валенок
13.04.2026, 21:22
Зачем 9600? Выше не? Там по километру что ли?
Замените 4 регистра на строку для 1-ого опроса 4 регистров сразу
Таймаут поменяйте на 30...40. Максимум 50 (для 9600)
А лучше на либы перейдите. Конфиг-мастер - глючный (правда не с 1 регистром)
Там вообще без проблем вообще всё повесить на 1 порт и ПЛК и МВ и МУ
Были бы руки.

kondor3000
13.04.2026, 21:30
К сожалению, полный проект выложить не могу, выкладываю проект с настройками соединений

У вас много ошибок и неточностей, по первому порту зачем то режим Both с обоих модулях, должно быть чтение циклическое.
По второму порту, в ТСР, стоит Serial вместо ТСР, слейв вообще не привязан к порту, а болтается в воздухе,
мало того, 2 мастера и слейв по второму порту, так не делают. Всё это и мешает работе.

Валенок
13.04.2026, 21:48
А где там TCP? 2 порта, empty и слейв по ничему

kondor3000
13.04.2026, 21:50
А где там TCP? 2 порта, empty и слейв по ничему

empty ставят когда ТСР делают, иначе зачем IP 192:168:137:65 и слейв адрес 1 у СПК.
Слейв надо вообще удалить или привязать к 232 ( или ТСР). Мастер только один делают по 1 порту.

Adore
13.04.2026, 22:07
У вас много ошибок и неточностей, по первому порту зачем то режим Both с обоих модулях, должно быть чтение циклическое.
По второму порту, в ТСР, стоит Serial вместо ТСР, слейв вообще не привязан к порту, а болтается в воздухе,
мало того, 2 мастера и слейв по второму порту, так не делают. Всё это и мешает работе.

Режим Both в первом порту не мешает обмену по нему. Не понимаю как настройки первого порта могут влиять на обмен по второму.
TCP не находится во 2 порту, кроме того, Empty[slot] корректно работает, и обмен по TCP идёт, в CoDeSys 2.3 нет возможности выбрать элемент "TCP", нужно просто указать нужный IP адрес в настройках Universal Modbus Device. Второй слейв "Test for Qt Prog" включаю при отладке программы с помощью программы на Qt. В данном случае он в обмене не участвует, собственно модуль обмена в нём для этого и не выбран. В любом случае, все эти настройки почему-то не мешают обмену по первому порту RS-485, но обмен по второму порту работает некорректно

kondor3000
13.04.2026, 22:12
Режим Both в первом порту не мешает обмену по нему. Не понимаю как настройки первого порта могут влиять на обмен по второму.
TCP не находится во 2 порту, кроме того, Empty[slot] корректно работает, и обмен по TCP идёт, в CoDeSys 2.3 нет возможности выбрать элемент "TCP", нужно просто указать нужный IP адрес в настройках Universal Modbus Device. Второй слейв "Test for Qt Prog" включаю при отладке программы с помощью программы на Qt. В данном случае он в обмене не участвует, собственно модуль обмена в нём для этого и не выбран. В любом случае, все эти настройки почему-то не мешают обмену по первому порту RS-485, но обмен по второму порту работает некорректно

Чтобы работал ТСР надо поставить ТСР, а у вас стоит Serial, и получается 2 мастера на одном порту и слейв до кучи.

Валенок
13.04.2026, 22:15
empty ставят когда ТСР делают, ...
Понятно, я такое и с такими проблемами давно забыл - только через либы.
В этой дичи спортивный интерес - как оно именно Rs2 грохает по описанному?
А 8xПЛК, МВ, МУ ниочем для 1 порта. Да и SPK без проблем туда же по RS тоже

Adore
13.04.2026, 22:20
Чтобы работал ТСР надо поставить ТСР, а у вас стоит Serial, и получается 2 мастера на одном порту и слейв до кучи.

Согласен, в настройках СПК нужно выбрать TCP, ещё не дошёл до настройки обмена с СПК, но почему 2 мастера на 1 порту? RS-485-2 выбран
только для одного слейва

kondor3000
13.04.2026, 22:24
Согласен, в настройках СПК нужно выбрать TCP, ещё не дошёл до настройки обмена с СПК, но почему 2 мастера на 1 порту? RS-485-2 выбран
только для одного слейва

Потому что стоит Serial , и во втором порту слейв и 2 мастера.
А у слейва порт не указан, зато у мастера второго порта указан.

Adore
13.04.2026, 22:41
Понятно, я такое и с такими проблемами давно забыл - только через либы.
В этой дичи спортивный интерес - как оно именно Rs2 грохает по описанному?
А 8xПЛК, МВ, МУ ниочем для 1 порта. Да и SPK без проблем туда же по RS тоже

Я бы тоже на одну RS всё повесил, но к сожалению не я конструировал систему и уже изменить не получится, а RS2 и вправду забавно сейчас работает), первый раз такое вижу, причём с первой РС'кой всё хорошо. Ещё нашёл вот такую штуку в документации, завтра буду пробовать 88817

Валенок
13.04.2026, 22:57
А 9600 зачем?
И какие слейвы в тех 8ми ПЛК ? Что так мало-то - 4 регистра?


и уже изменить не получится,
2 проводочка переставить на 5мм ниже.
Дольше доки менять, это да


а RS2 и вправду забавно сейчас работает
Это эвфемизм слова кривой.
Этот стоматолог забавно работает. Каждый второй выдернутый зуб здоровым оказывается был.

Adore
13.04.2026, 23:08
А 9600 зачем?
И какие слейвы в тех 8ми ПЛК ? Что так мало-то - 4 регистра?


2 проводочка переставить на 5мм ниже.
Дольше доки менять, это да

Другие скорости пробовал, вплоть до 19200, не помогает, до самой дальней будет 100 м+-, когда ПЛК на свои места установят, подберу оптимальную. На 8 ПЛК нет слейвов, это всё, к этому у меня тоже вопросы, там по факту и одного регистра хватит))) А с доками вопрос критичный, они уже сданы) Такие дела

Валенок
13.04.2026, 23:11
до самой дальней будет 100 м+-,
Этож ничто


вплоть до 19200, не помогает,
Вплоть это со 115200 начинать. Не помогает что - победить эту хрень с адресами? Так тут не из-за скорости/длины.

Adore
13.04.2026, 23:15
Этож ничто


Вплоть с 115200 начинать. Не помогает что - победить это хрень с адресами?

Завтра 115200 и установлю. Да, хрень с адресами, понимаю что это не поможет, но под конец дня уже всё пробовал. В крайнем случае просто все сделаю чётными/нечётными, просто интересно почему так происходит

Валенок
13.04.2026, 23:22
просто интересно почему так происходит
)) Почему конфиг-мастер настолько крив? Любопытно конешно.


Ещё нашёл вот такую штуку в документации
про слейв


уже всё пробовал.
Ну вот kondor3000 выше предложил.
SPK: NetMode = TCP (да?)
Слейв: воткнуть какой-нить порт (232 или 232-debug)