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

Диапазон адресов ModBus

RS-485, ProfiBUS, 4-20 mA, Wi-Fi, GSM и так далее
Ответить
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Диапазон адресов ModBus

Сообщение megavolt86 »

Всем здрасьти!
Разбираясь с регистрами модбас наткнулся на такой момент интересный - в официальной литературе (разного рода стандарты) не нашел конечного адреса регистров модбас...есть только начальный.
Небольшое описание команды:
описание_команды.png
Особенно интересны адрес старшего и младшего байтов - значит всего адресов, допустим Holding registers будет 65535, а это 40001 - 105536, но в некоторых статьях и на форумах встречал иное - 40001-50000.
Может кто подскажет, какое утверждение верное?
Сомнение разбудила вот такая литература с описанием регистров:
Описание_адресов.png
На картинке описаны адреса для функций 0х06 и 0х0А
По моим расчетам получается адрес параметра "Секунды" будет 105286
:ext_secret:

rwg
почётный участник форума
почётный участник форума
Сообщения: 1041
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 55 раз
Поблагодарили: 134 раза

Диапазон адресов ModBus

Сообщение rwg »

megavolt86 писал(а): допустим Holding registers будет 65535, а это 40001 - 105536
Может быть 40000 - 4FFFF, где 4 - признак Holding registers?
Аватара пользователя

Serex
эксперт
эксперт
Сообщения: 2085
Зарегистрирован: 15 авг 2011, 21:36
Имя: Пупков Сергей Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 134 раза
Поблагодарили: 174 раза

Диапазон адресов ModBus

Сообщение Serex »

В любом простом вопросе можно запутать дело так, что не разберешься! :crazy0to: Особенно, когда дело касается Siemens :ext_secret:

40000 - 49999 (В десятичном формате - dec) это Holding Registr - это однозначно.
Есть еще расширенные 400'000 - 465'535 (в dec) - Это поле включает в себя первое.
Как? Когда на входе драйвера сименс пишешь адрес из 5 знаков - он делает одно преобразование с адресом, а если из 6 знаков, то другое.
Один из моих старых постов.
Основная особенность, что библиотека, предлагаемая разработчиками хоть и удобна, но имеет существенную особенность.
Когда указываем адрес данных с функцией 03, то функциональный блок делает такое преобразование
на входе х = 40'001-49'999, на выходе (в байтовой посылке) адрес будет У = х - 40'001
на входе х = 400'001 - 465'535, на выходе У = х - 400'001
...
У меня основную сложность вызвало сделать посылку с адресом 42'044. Чтобы ее послать, нужно указать адрес 442'045. Вот попробуй догадайся :)
Т.е. Допустимо использовать адрес, который на шине 0000-FFFF (hex) . Т.е. 65534 возможных вариантов адреса. А вот дальше начинается интерпретация разработчиков оборудования. Кто что имел ввиду. И конечно же каждый из них единственно верно понимает стандарт :ges_up:
Аватара пользователя

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

Диапазон адресов ModBus

Сообщение Jackson »

megavolt86 писал(а): Разбираясь с регистрами модбас
Какого устройства? :) У каждого устройства адресация может быть своя.
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Диапазон адресов ModBus

Сообщение megavolt86 »

rwg писал(а): 4 - признак Holding registers
Так оно и есть))) начинал заполнять адреса 0х00 - 40001, 0х02 -40003 и тд, в итоге набрал 37 листов с описанием всех типов регистров входных/выходных каналов и еще листов 20 будет с описанием параметров регуляторов
Serex писал(а): 40000 - 49999 (В десятичном формате - dec) это Holding Registr - это однозначно.Есть еще расширенные 400'000 - 465'535 (в dec) - Это поле включает в себя первое
Вот такого, даже не подозревал спасибо большое за подсказку, как раз таки в сименс и нужно будет организовать передачу. В блоке модбас на входе начального адреса надо будет прописать адрес с апострофом или как? :oops:
TEB писал(а): Какого устройства? :)
Отечественный плк базис-100, на сайте есть методичка с описанием адресов в хекс-формате, когда перевел в дек-формат то возник данный вопрос :ges_slap:


Но если стандарт модбас поддерживает расширенную адресацию, то можно сказать вопрос решен)))
:ext_secret:
Аватара пользователя

Serex
эксперт
эксперт
Сообщения: 2085
Зарегистрирован: 15 авг 2011, 21:36
Имя: Пупков Сергей Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 134 раза
Поблагодарили: 174 раза

Диапазон адресов ModBus

Сообщение Serex »

megavolt86 писал(а): Но если стандарт модбас поддерживает расширенную адресацию
Нет в стандарте расширенной адресации, она есть у сименса :)

Ради интереса заглянул в стандарт модбаса
И не нашел там про 40001-49999 упоминаний для Holding Registres
Только отсылку, что такое возможно по местечковым спецификациям, разработанным на базе стандарта.
Там все просто написано: от 0 до 65535. Сочетание адреса и номера функции должно уже определять целевую область памяти в приложении. Т.е. для каждой функции чтения/записи должна быть своя уникальная область памяти с адресами от 0 до 65535.
Такая простота мне нравиться :good:
Но у сименса все не просто так!!!
Аватара пользователя

Serex
эксперт
эксперт
Сообщения: 2085
Зарегистрирован: 15 авг 2011, 21:36
Имя: Пупков Сергей Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 134 раза
Поблагодарили: 174 раза

Диапазон адресов ModBus

Сообщение Serex »

megavolt86 писал(а): В блоке модбас на входе начального адреса надо будет прописать адрес с апострофом или как?
На всякий случай уточню, что речь идет о S7-1200 функция MB_MASTER v2.2
Просто на вход пишешь число в десятичном формате, как есть.
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Диапазон адресов ModBus

Сообщение megavolt86 »

Serex писал(а): На всякий случай уточню, что речь идет о S7-1200 функция MB_MASTER v2.2 Просто на вход пишешь число в десятичном формате, как есть.
Мне как раз таки и нужны будут функции новых контроллеров s7-1500)))) но думаю буду использовать mb_client v 4.0, с этим блоком я уже работал, есть наработки... и к тому же Сименс будет мастером сети.
Serex писал(а): Там все просто написано: от 0 до 65535. Сочетание адреса и номера функции должно уже определять целевую область памяти в приложении. Т.е. для каждой функции чтения/записи должна быть своя уникальная область памяти с адресами от 0 до 65535.
Значит в моем примере адрес должен быть 400001-465536, придется перелопатить немного табличку свою
:ext_secret:
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Диапазон адресов ModBus

Сообщение megavolt86 »

Знатоки не ошибаются!)))
Проверил модсканом, значение регистров выше чем 49999...
Следующим идет 410000 регистр.
Данные принимаются


Век живи -век учись!
:ext_secret:

heX
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 06 сен 2016, 12:36
Имя: Иванов Александр Семенович
Страна: Россия

Диапазон адресов ModBus

Сообщение heX »

С адресацией регистров у Modbus путаница!

Есть 6 знаковый формат.
Для каждого типа регистра делаем приставку - 0.., 1.., 3.., 4...
(Где - №2? - а его просто нет...)
(Почему они не взяли нумерацию на основе номеров функций 0x01, 0x02, 0x03, 0x04? - неизвестно...)

6 значный диапазон; Тип; Доступ; Название
0XXXXX | bit | RW | Discrete Output Coils
1XXXXX | bit | RO | Discrete Input Contacts
3XXXXX | word | RO | Analog Input Registers
4XXXXX | word | RW | Analog Output Holding Registers

Но в каждом типе регистра доступно только 65536 регистров!
Это значит что можно указывать только такие номера X00000..X65535.

А еще иногда не используют 6-ти знаковый формат - просто указывают номер регистра и название его типа.
_____________________________________________________________________

А еще в старых описаниях/стандартах можно найти диапазоны. Но диапазоны регистров никто не использует! (это касается и контроллеров и устройств) Изначально предполагалось что для каждого типа будет отведено всего 10000 регистров. Текущая ситуация - у каждого типа (4 типа) используется весь доступный диапазон - 65536 доступных регистров.

Диапазоны регистров (которые никто не использует!):
Discrete Output Coils: 1-9999; Read-Write;
Discrete Input Contacts: 10001-19999; Read-Only;
Analog Input Registers: 30001-39999; Read-Only;
Analog Output Holding Registers: 40001-49999; Read-Write;
Аватара пользователя

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

Диапазон адресов ModBus

Сообщение Jackson »

heX писал(а): А еще в старых описаниях/стандартах можно найти диапазоны. Но диапазоны регистров никто не использует!
Так уж и никто? :ges_down:

И вообще, я реплики не очень понял, в теме по которой ответ давно никому не нужен, свои личные заблуждения. Вы о чём, вообще?
По вопросам работы Форума можно обратиться по этим контактам.

rwg
почётный участник форума
почётный участник форума
Сообщения: 1041
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 55 раз
Поблагодарили: 134 раза

Диапазон адресов ModBus

Сообщение rwg »

Попробовал в ОВЕН ПЛК MODBUS SLAVE (CODESYS) создать 10 переменных по 2 байта, по адресу десятой переменной расположил в адресном пространстве слейва массив на 10 переменных типа Word (общий размер занятой памяти 19 регистров). Программа компилируется, ошибок нет, всё работает, но при запросе мастером информации слейв выдаёт только первые 10 регистров, при обращении за содержимым 11 ячейки со вторым элементом массива мастер получает сообщение о неправильном адресе. Из-за этого при адресном пространстве 1000 слов надо ручками добавлять каждый регистр по отдельности, массивов адресов CoDeSys 2.3 не понимает. :(
Аватара пользователя

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

Диапазон адресов ModBus

Сообщение Jackson »

rwg писал(а): но при запросе мастером информации слейв выдаёт только первые 10 регистров, при обращении за содержимым 11 ячейки со вторым элементом массива мастер получает сообщение о неправильном адресе.
Так это проблема конкретной реализации, а не то что "никто не использует"
Используют и довольно широко, и это работает, просто где-то это сделано криво, где-то нет.
По вопросам работы Форума можно обратиться по этим контактам.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Диапазон адресов ModBus

Сообщение Михайло »

Стандарт Модбас разработан инженерами Шнейдер Электрика более 50 лет назад. У них был контроллер с адресацией от 0 до 65535 (64 килобайта). Соответственно стандарт устарел и трактуется в некоторых вопросах более вольно и даже более проще...
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Диапазон адресов ModBus

Сообщение megavolt86 »

Михайло писал(а): разработан инженерами Шнейдер Электрика более 50 лет назад
Михаил, не шнейдер, а модикон разработал стандарт...это уже позже их купил шнейдер электрик)))
heX писал(а): Диапазоны регистров (которые никто не использует!):Discrete Output Coils: 1-9999; Read-Write;Discrete Input Contacts: 10001-19999; Read-Only;Analog Input Registers: 30001-39999; Read-Only;Analog Output Holding Registers: 40001-49999; Read-Write;
Извините, а какие адреса тогда используют?
:ext_secret:

heX
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 06 сен 2016, 12:36
Имя: Иванов Александр Семенович
Страна: Россия

Диапазон адресов ModBus

Сообщение heX »

megavolt86 писал(а):Извините, а какие адреса тогда используют?
0-65535 (1-65536) во всех 4 "адресных пространствах"/"типах регистров".
Лично проверял это в контроллерах фирм: Schneider Electric, B&R, Emicon, ProSoft (и еще каких-то, щас и не упомню).

Жесткого ограничения как в приведенном выше описании нигде не встречал.
Аватара пользователя

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

Диапазон адресов ModBus

Сообщение Jackson »

Даже если и так, то - это кому-то осложняет жизнь?
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Exactamente
частый гость
частый гость
Сообщения: 409
Зарегистрирован: 20 ноя 2012, 13:45
Имя: :.О.N.Ф
Страна: Россия
Благодарил (а): 3 раза
Поблагодарили: 7 раз

Диапазон адресов ModBus

Сообщение Exactamente »

heX писал(а): Лично проверял это в контроллерах фирм: ... B&R
Но ведь в б+р мы сами можем задать массив, который будет мапиться на соответствующие адреса, и для каждого "пространства" команд можем задать разные массивы. Разве нет?
«Сразу видно внимание к каждой мелочи, неиспорченным не осталось ничто».
Ответить

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