Просмотр полной версии : Длина адреса регистров Modbus
Добрый день, пытаюсь добавить в облачный сервис сторонний прибор Modbus, возникла проблема.
Согласно документации на прибор, интересующий меня параметр имеет адрес 40004
86308
Но при вводе параметров в облачном сервисе, адрес регистра может иметь максимум 4 символа.
86309
Я что то не так делаю?
Пытался перевести из десятичной в шестнадцатеричную систему, но тогда параметр 40004 имеет так же 5 знаков 0x9c44, и его невозможно занести в настройки.
kondor3000
22.10.2025, 10:44
Адрес 40004 это адрес 4-1=3, четвёрка вначале указывает на область Холдинг регистров (функция чтения 0х03)
То есть в настройки параметра нужно записывать адрес 0004?
Да. И указывать функцию чтения 0х03.
То есть в настройки параметра нужно записывать адрес 0004?
Вам уже сказали адрес будет 0003
Кстати, а почему только 4 символа? У меня в хозяйстве, например, полно устройств с адресами типа 40978. 4-ка тут не префикс типа, это input-регистры.
Что за дискриминация со стороны ОС?
Да и так, по смыслу, адрес - это слово, 16 бит, 65535 максимум.
МихаилГл
22.10.2025, 12:35
Кстати, а почему только 4 символа? У меня в хозяйстве, например, полно устройств с адресами типа 40978. 4-ка тут не префикс типа, это input-регистры.
Что за дискриминация со стороны ОС?
Да и так, по смыслу, адрес - это слово, 16 бит, 65535 максимум.
Может так исторически сложилось?) Раньше области писали так, а до размера word в более новых протоколах расширили...
Может так исторически сложилось?) Раньше области писали так, а до размера word в более новых протоколах расширили...
Да ладно?! Хотите сказать, что при царе горохе word был слегка короче? Протоколу 100 лет в обед.
МихаилГл
22.10.2025, 12:53
Да ладно?! Хотите сказать, что при царе горохе word был слегка короче? Протоколу 100 лет в обед.
Не, просто стока регистров не планировали... Я так думаю)
Кстати, а почему только 4 символа? У меня в хозяйстве, например, полно устройств с адресами типа 40978. 4-ка тут не префикс типа, это input-регистры.
Что за дискриминация со стороны ОС?
при чем тут ОС, просто разработчики модбас решили что будет красиво разделить область памяти на диапазоны по 10000 значений для каждой области памяти, ни кто не верил что целесообразно в устройствах заполнять память кусками по всему диапазону
Кстати, а почему только 4 символа? У меня в хозяйстве, например, полно устройств с адресами типа 40978. 4-ка тут не префикс типа, это input-регистры.
Что за дискриминация со стороны ОС?
Да и так, по смыслу, адрес - это слово, 16 бит, 65535 максимум.
16#FFFF=65535
86319
МихаилГл
22.10.2025, 13:02
16#FFFF=65535
86319
Нашел статью, стандартное обозначение адресов, это шестнадцатеричный формат, а все остальное нестандарт:
Нестандартная адресация
В документации на некоторые, особенно старые, устройства адреса элементов (регистров) указываются в формате, не соответствующем стандарту. В этом формате тип элемента кодируется первой цифрой адреса, а адресация начинается не с нуля.
Как я и говорил, исторически накосячили и привыкли)
Можно было просто сказать, что там адреса в шестнадцатеричном представлении. Тогда понятно.
МихаилГл
22.10.2025, 13:07
Можно было просто сказать, что там адреса в шестнадцатеричном представлении. Тогда понятно.
В том то и дело, что в десятичном. Ну давно дело было. 1979 год вроде разработка. Просто в сименсе, например, указывают 4ххххх, в других 4хххх, просто знайте, что первая цифра ничего не значит, условно это область, и по ней надо правильно выбрать команду...
В том то и дело, что в десятичном.
Тогда странно. Впрочем, тут выше Nomad скриншот выложил.
просто знайте, что первая цифра ничего не значит, условно это область, и по ней надо правильно выбрать команду...
Не надо всех под одну гребёнку. Где не значит, а где и значит. В Citect, например, 1-я цифра в адресе тэга modbus-устройства явным образом указывает на тип регистра (0,1,3,4), а вот функцию при этом указывать не надо (да и негде, соббсна) - с этим драйвер протокола сам разбирается.
МихаилГл
22.10.2025, 16:16
Тогда странно. Впрочем, тут выше Nomad скриншот выложил.
Не надо всех под одну гребёнку. Где не значит, а где и значит. В Citect, например, 1-я цифра в адресе тэга modbus-устройства явным образом указывает на тип регистра (0,1,3,4), а вот функцию при этом указывать не надо (да и негде, соббсна) - с этим драйвер протокола сам разбирается.
Вы про скаду шнайдера? Ну тут сравнение некорректно немного. Мы же про регистры оборудования говорили, а не про утилиту для чтения этих регистров, тут уж как производитель ПО задумал, так и будет. А к железке это ПО обращаться будет как положено, там и команда будет, и контрольная сумма...
Вы про скаду шнайдера?
Она к шнайдеру имеет только то отношение, что он её в своё время с потрохами купил. Как и интач, к слову.
Ну тут сравнение некорректно немного.
Чего ж тут некорректного? Есть информация. В одном случае она является значимой для выбора функций для работы с регистром по данному адресу, в другом - просто явно указывает на тип регистра. Но, так или иначе, информация используется. Регистры оборудования сами по себе никому не интересны вне контекста работы с ними. Вот ведь - контрольная сумма. А в modbus tcp её нет.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot