Просмотр полной версии : Ошибки при обмене по протоколу Modbus RTU-485
Здравствуйте!
Имеется 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 будут опрашиваться, чётные или нечётные.
Исправный ПЛК опрашивает без проблем, и пофиг на четные, нечётные.
У вас либо слейв садит линию, либо что то с мастером. Или в проекте накрутили чего не надо.
Исправный ПЛК опрашивает без проблем, и пофиг на четные, нечётные.
У вас либо слейв садит линию, либо что то с мастером. Или в проекте накрутили чего не надо.
Если сделать все слейвы чётными либо нечётными, они читаются, следовательно вариант с линией отпадает. В проекте никаких настроек связанных с чтением только чётных или нечётных слейвов не производил, да и вряд ли такие есть. Как писал ранее, изменение чтения чётных/нечётных может произойти прямо во время работы, при отключении чётной/нечётной ПЛК
kondor3000
13.04.2026, 20:28
Если сделать все слейвы чётными либо нечётными, они читаются, следовательно вариант с линией отпадает. В проекте никаких настроек связанных с чтением только чётных или нечётных слейвов не производил, да и вряд ли такие есть. Как писал ранее, изменение чтения чётных/нечётных может произойти прямо во время работы, при отключении чётной/нечётной ПЛК
Такого не бывает, значит накрутили в проекте. Выкладывайте проект.
In_Da_Cher_A
13.04.2026, 20:45
Здравствуйте!
Имеется 9 ПЛК110-24.60.Р-М [М02], один выступает в роли мастера
там два RS
раскидайте слейвы по разным портам
Такого не бывает, значит накрутили в проекте. Выкладывайте проект.
К сожалению, полный проект выложить не могу, выкладываю проект с настройками соединений
там два RS
раскидайте слейвы по разным портам
Вторая RS занята модулями дискретного ввода и вывода, в теории можно перекинуть половину туда, но конструкция уже не позволяет
Зачем 9600? Выше не? Там по километру что ли?
Замените 4 регистра на строку для 1-ого опроса 4 регистров сразу
Таймаут поменяйте на 30...40. Максимум 50 (для 9600)
А лучше на либы перейдите. Конфиг-мастер - глючный (правда не с 1 регистром)
Там вообще без проблем вообще всё повесить на 1 порт и ПЛК и МВ и МУ
Были бы руки.
kondor3000
13.04.2026, 21:30
К сожалению, полный проект выложить не могу, выкладываю проект с настройками соединений
У вас много ошибок и неточностей, по первому порту зачем то режим Both с обоих модулях, должно быть чтение циклическое.
По второму порту, в ТСР, стоит Serial вместо ТСР, слейв вообще не привязан к порту, а болтается в воздухе,
мало того, 2 мастера и слейв по второму порту, так не делают. Всё это и мешает работе.
А где там TCP? 2 порта, empty и слейв по ничему
kondor3000
13.04.2026, 21:50
А где там TCP? 2 порта, empty и слейв по ничему
empty ставят когда ТСР делают, иначе зачем IP 192:168:137:65 и слейв адрес 1 у СПК.
Слейв надо вообще удалить или привязать к 232 ( или ТСР). Мастер только один делают по 1 порту.
У вас много ошибок и неточностей, по первому порту зачем то режим 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 мастера на одном порту и слейв до кучи.
empty ставят когда ТСР делают, ...
Понятно, я такое и с такими проблемами давно забыл - только через либы.
В этой дичи спортивный интерес - как оно именно Rs2 грохает по описанному?
А 8xПЛК, МВ, МУ ниочем для 1 порта. Да и SPK без проблем туда же по RS тоже
Чтобы работал ТСР надо поставить ТСР, а у вас стоит Serial, и получается 2 мастера на одном порту и слейв до кучи.
Согласен, в настройках СПК нужно выбрать TCP, ещё не дошёл до настройки обмена с СПК, но почему 2 мастера на 1 порту? RS-485-2 выбран
только для одного слейва
kondor3000
13.04.2026, 22:24
Согласен, в настройках СПК нужно выбрать TCP, ещё не дошёл до настройки обмена с СПК, но почему 2 мастера на 1 порту? RS-485-2 выбран
только для одного слейва
Потому что стоит Serial , и во втором порту слейв и 2 мастера.
А у слейва порт не указан, зато у мастера второго порта указан.
Понятно, я такое и с такими проблемами давно забыл - только через либы.
В этой дичи спортивный интерес - как оно именно Rs2 грохает по описанному?
А 8xПЛК, МВ, МУ ниочем для 1 порта. Да и SPK без проблем туда же по RS тоже
Я бы тоже на одну RS всё повесил, но к сожалению не я конструировал систему и уже изменить не получится, а RS2 и вправду забавно сейчас работает), первый раз такое вижу, причём с первой РС'кой всё хорошо. Ещё нашёл вот такую штуку в документации, завтра буду пробовать 88817
А 9600 зачем?
И какие слейвы в тех 8ми ПЛК ? Что так мало-то - 4 регистра?
и уже изменить не получится,
2 проводочка переставить на 5мм ниже.
Дольше доки менять, это да
а RS2 и вправду забавно сейчас работает
Это эвфемизм слова кривой.
Этот стоматолог забавно работает. Каждый второй выдернутый зуб здоровым оказывается был.
А 9600 зачем?
И какие слейвы в тех 8ми ПЛК ? Что так мало-то - 4 регистра?
2 проводочка переставить на 5мм ниже.
Дольше доки менять, это да
Другие скорости пробовал, вплоть до 19200, не помогает, до самой дальней будет 100 м+-, когда ПЛК на свои места установят, подберу оптимальную. На 8 ПЛК нет слейвов, это всё, к этому у меня тоже вопросы, там по факту и одного регистра хватит))) А с доками вопрос критичный, они уже сданы) Такие дела
до самой дальней будет 100 м+-,
Этож ничто
вплоть до 19200, не помогает,
Вплоть это со 115200 начинать. Не помогает что - победить эту хрень с адресами? Так тут не из-за скорости/длины.
Этож ничто
Вплоть с 115200 начинать. Не помогает что - победить это хрень с адресами?
Завтра 115200 и установлю. Да, хрень с адресами, понимаю что это не поможет, но под конец дня уже всё пробовал. В крайнем случае просто все сделаю чётными/нечётными, просто интересно почему так происходит
просто интересно почему так происходит
)) Почему конфиг-мастер настолько крив? Любопытно конешно.
Ещё нашёл вот такую штуку в документации
про слейв
уже всё пробовал.
Ну вот kondor3000 выше предложил.
SPK: NetMode = TCP (да?)
Слейв: воткнуть какой-нить порт (232 или 232-debug)
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot