... но не любой ценой.
-
- Тут есть нюанс. Некоторые модбас-клиенты, когда настроены
соответствующим образом, могут объединять запросы к близко
расположенным диапазонам адресов, даже если между этими диапазонами
есть зазор. Некоторые устройства отвечают на запросы, в диапазоне
адресов которых есть "дырки" - адреса, на которые сервер, по
стандарту, должен отвечать "Нет такого адреса". Nikolay_Po(311 знак., 12.03.2025 10:21)
- Мы делаем по стандарту. (точка) - Cкpипaч(12.03.2025 17:12)
- По крайней мере такой клиент не ломает работы другого оборудования.
А вот сервер с такими запросами - пример ТС. - Nikolay_Po(12.03.2025 17:32)
- Вы немного неаккуратно используете термины. В modbus есть master и
slave. Cкpипaч(501 знак., 12.03.2025 18:11)
- Интересно, с учётом сворачивания DEI, в Модбас вернут мастера и
слейва? А то в свежих спецификациях, мастер == клиент, слейв ==
сервер. Nikolay_Po(617 знак., 12.03.2025 18:31)
- Первоисточник - www.modbus.org. Насколько я помню, в документах им
опубликованных никто ничего не менял с 1980-го года. - Cкpипaч(12.03.2025 18:48)
- Сам протокол - да, не меняли. Но в описательной части, в
рекомендациях и прочем - встречал. И даже прямую рекомендацию
заменить терминологию. Может, в какой-то конференции (на форуме)... - Nikolay_Po(12.03.2025 19:00)
- На конференции - верю. Еще и из уст какого-нибудь стрёмного перца, в желтых штанишках... - Cкpипaч(12.03.2025 19:05)
- Сам протокол - да, не меняли. Но в описательной части, в
рекомендациях и прочем - встречал. И даже прямую рекомендацию
заменить терминологию. Может, в какой-то конференции (на форуме)... - Nikolay_Po(12.03.2025 19:00)
- мы староверы, "я твой слуга, я твой работник" LordN(4 знак., 12.03.2025 18:35, ссылка)
- Крафтверк. Слушал. В юности одна из любимых групп. - Nikolay_Po(12.03.2025 18:35)
- Извините, что встреваю, мне просто любопытно, а что (какие именно
данные) передает (или должен передавать по вашему мнению) слейв в
искусственно "склеенном" кадре, если у него наличествует "пробел" в
диапазоне запрошенных регистров? - reZident(12.03.2025 18:35)
- Любые. Они всё равно не учитываются мастером, так как не имеют
тегов на стороне мастера. Мой слейв зануляет байты пустых
промежутков. Это просто способ сократить количество служебной
информации и межкадровых промежутков. И это штатный функционал
HMI-панели, настраиваемый в среде разработки проекта. - Nikolay_Po(12.03.2025 18:40)
- Любыми? Ок. Это я и хотел узнать. - reZident(12.03.2025 18:41)
- По стандарту, если запрошен регистр, которого не существует у
слейва, слейв должен ответить ошибкой. Всё остальное - "грязные
хаки". - Nikolay_Po(12.03.2025 18:44)
- Ну да. Требование стандарта и ваш "грязный хак" вводит меня в
диссонанс. :-/ - reZident(12.03.2025 18:47)
- Это не мой грязный хак. Такую возможность обнаружили в массовых панелях HMI. Изучили. И доработали наши слейвы, чтобы поддерживали. По сути, отклонение от стандарта лишь в том, что отказ в выполнении запроса идёт только если запрос начинается с недействительного адреса, а не при наличии хотя бы одного недействительного адреса, как по стандарту. Nikolay_Po(359 знак., 12.03.2025 18:58)
- Ну да. Требование стандарта и ваш "грязный хак" вводит меня в
диссонанс. :-/ - reZident(12.03.2025 18:47)
- По стандарту, если запрошен регистр, которого не существует у
слейва, слейв должен ответить ошибкой. Всё остальное - "грязные
хаки". - Nikolay_Po(12.03.2025 18:44)
- Любыми? Ок. Это я и хотел узнать. - reZident(12.03.2025 18:41)
- Любые. Они всё равно не учитываются мастером, так как не имеют
тегов на стороне мастера. Мой слейв зануляет байты пустых
промежутков. Это просто способ сократить количество служебной
информации и межкадровых промежутков. И это штатный функционал
HMI-панели, настраиваемый в среде разработки проекта. - Nikolay_Po(12.03.2025 18:40)
- Первоисточник - www.modbus.org. Насколько я помню, в документах им
опубликованных никто ничего не менял с 1980-го года. - Cкpипaч(12.03.2025 18:48)
- нету максимального размера группового запроса? LordN(167 знак., 12.03.2025 18:28)
- Когда-то стандарт читал. Запомнилось, что максимальный размер
группового чтения - 120 регистров. - bodis(13.03.2025 09:07)
- вот что говорит про это дипсик LordN(1759 знак., 13.03.2025 10:00)
- дипсик выдал, как и следовало ожидать, весьма правдоподобный текст :) На самом деле в ответе есть ещё Byte count, поэтому для функций 3 и 4 макс. число регистров на 1 меньше - 125. А для /TCP ещё меньше, там два байта CRC убрали, 6 байт в начало добавили, а ограничение 256 байт на весь пакет оставили. Ещё 2 регистра долой. ЫЫyкпy(1 знак., 13.03.2025 16:17, картинка)
- вот что говорит про это дипсик LordN(1759 знак., 13.03.2025 10:00)
- По факту, у всех меньше чем теоретически может быть в пакете. - Cкpипaч(12.03.2025 18:49)
- Когда-то стандарт читал. Запомнилось, что максимальный размер
группового чтения - 120 регистров. - bodis(13.03.2025 09:07)
- Интересно, с учётом сворачивания DEI, в Модбас вернут мастера и
слейва? А то в свежих спецификациях, мастер == клиент, слейв ==
сервер. Nikolay_Po(617 знак., 12.03.2025 18:31)
- Что вы там вообще у ТСа понимаете, если он ни строчки кода не
привел - только какие-то долбанутые бесполезные картинки? - Eddy_Em(12.03.2025 18:05)
- А у него кода-то и нет! - Nikolay_Po(12.03.2025 18:32)
- вот да. все так. для меня модбас - черный ящик. его регистры ящички
с дырками. в одну суем данные для регистра, в другую суем
синхросигнал начала запроса записи или чтения, еще две дырки -
оттуда в проект падает вычитанные данные регистра и флаг успешного
чтения или/и записи. хотя нет. только чтения. по стандарту после
записи всегда должно проводиться чтение и сравнение этих двух. если
да, то флаг, если нет - то флага нет. - LordN(12.03.2025 18:32)
- Отсебятину несешь, нет в стандарте требования читать после записи.
Более того, регулярно попадаются слейвы у которых регистр-на-запись
вообще на чтение недоступен. Cкpипaч(75 знак., 12.03.2025 18:59)
- стандарта не читал, и читать не буду. я транслирую то, что говорит
производитель, там парни вроде дотошные, так вот, с их слов всё с
точностью до наеборот. запись без чтения - это мимо стандарта. LordN(90 знак., 13.03.2025 05:04)
- Повторяю, функция 6 (запись регистра) и функция 16 (запись
нескольких) состоят из команды мастера и ответа слейва. Ответ
означает успешную запись (кроме ответа об ошибке). Cкpипaч(209 знак., 13.03.2025 06:49)
- похоже твоя правда, но с оговорками LordN(1762 знак., 13.03.2025 10:06)
- Раз уж пошли оговорки, зачастую,проверку нужно выполнять чтением
ДРУГОГО регистра. - Cкpипaч(13.03.2025 11:59)
- да, и это засада :о) LordN(150 знак., 13.03.2025 12:44)
- Раз уж пошли оговорки, зачастую,проверку нужно выполнять чтением
ДРУГОГО регистра. - Cкpипaч(13.03.2025 11:59)
- похоже твоя правда, но с оговорками LordN(1762 знак., 13.03.2025 10:06)
- Повторяю, функция 6 (запись регистра) и функция 16 (запись
нескольких) состоят из команды мастера и ответа слейва. Ответ
означает успешную запись (кроме ответа об ошибке). Cкpипaч(209 знак., 13.03.2025 06:49)
- стандарта не читал, и читать не буду. я транслирую то, что говорит
производитель, там парни вроде дотошные, так вот, с их слов всё с
точностью до наеборот. запись без чтения - это мимо стандарта. LordN(90 знак., 13.03.2025 05:04)
- Отсебятину несешь, нет в стандарте требования читать после записи.
Более того, регулярно попадаются слейвы у которых регистр-на-запись
вообще на чтение недоступен. Cкpипaч(75 знак., 12.03.2025 18:59)
- Мы такие :о) - Cкpипaч(12.03.2025 18:12)
- Вы немного неаккуратно используете термины. В modbus есть master и
slave. Cкpипaч(501 знак., 12.03.2025 18:11)
- По крайней мере такой клиент не ломает работы другого оборудования.
А вот сервер с такими запросами - пример ТС. - Nikolay_Po(12.03.2025 17:32)
- да. "пустых" регистров в зоопарках слейвов дохера и больше. LordN(68 знак., 12.03.2025 10:55)
- Я говорю коллеге: "Давай уплотним в один блок?" Он: "Нет, у нас нет
на это времени. Вдруг мне придётся параметр добавлять, как я потом
все адреса буду перетряхивать? У меня не только здесь нужно
изменить, но и там. Нет, оставляем как есть." Пример из жизни. - Nikolay_Po(12.03.2025 11:24)
- Я делал два блока - один с полным набором регистров, другой для
быстрого чтения - только самое необходимое. Т.е. те же переменные,
но по разному сгруппированным адресам. - Pыгиcтp(13.03.2025 12:43,
)
- не, как это появляется в жизни, я это прекрасно понимаю, сам такой, на этапе когда "а давай сделаем" никто ни о чем не думает, вот поэтому так и выходит. LordN(174 знак., 12.03.2025 14:04)
- Я делал два блока - один с полным набором регистров, другой для
быстрого чтения - только самое необходимое. Т.е. те же переменные,
но по разному сгруппированным адресам. - Pыгиcтp(13.03.2025 12:43,
- Я говорю коллеге: "Давай уплотним в один блок?" Он: "Нет, у нас нет
на это времени. Вдруг мне придётся параметр добавлять, как я потом
все адреса буду перетряхивать? У меня не только здесь нужно
изменить, но и там. Нет, оставляем как есть." Пример из жизни. - Nikolay_Po(12.03.2025 11:24)
- Мы делаем по стандарту. (точка) - Cкpипaч(12.03.2025 17:12)
- Тут есть нюанс. Некоторые модбас-клиенты, когда настроены
соответствующим образом, могут объединять запросы к близко
расположенным диапазонам адресов, даже если между этими диапазонами
есть зазор. Некоторые устройства отвечают на запросы, в диапазоне
адресов которых есть "дырки" - адреса, на которые сервер, по
стандарту, должен отвечать "Нет такого адреса". Nikolay_Po(311 знак., 12.03.2025 10:21)