Перейти к содержанию
    

маленький вопрос по Modbus

Добрый день. Использую Modbus RTU по интерфейсу rs-485. Краем уха слышал где-то, что в зависимости от того, какую разновдность протокола и по какому интерфейсу я использую это безобразие регистры хранения имеют разные адреса. Т.е. в одном случае адрес первого регистра 1, а в другом 40001. В стандарте я это либо пропустил, либо действительно об этом не сказано, так что просветите пожалуйста :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть как бы 2 стандарта.

1 - стандарт конторы Modicon, которая собс-но модбас и выдумала

2 - стандарт Modbus IDA (modbus.org), который дополнен, расширен и постоянно дорабатывается.

 

1-й был заточен под конкретные ПЛК, и вот там как раз имеется привязка по номерам регистров

2 -й более универсальный.

 

PS: это чисто ИМХО, как я себе представляю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, все проще.

Номера регистров по протоколу передаются всегда начиная с 0-го номера.

При описании же адресов в SCADA-системе ПРИНЯТО (но стандарт MODBUS как таковой тут не причем) нумеровать их же с 1-цы, и при этом первым символом адреса (то есть номера регистра) указывать тип регистра (а именно какие команды MODBUS будут использоваться). Так, первый символ 4 означает что будут использоваться команды 3 для чтения и 6/16 для записи, первый символ 3 означает что будут использоваться команды с кодом 4 для чтения, а запись в эти регистры недопустима (это входные регистры). Первый символ 1 - указывает на битовые регистры (команда с кодом 1).

Таким образом, 40001 - означает доступ к регистру 0 с возможностью чтения командой 3 и записи командами 6 или 16. Если нужен номер регистра больше чем 10000 (например 20000), то в скаде этот номер должен быть записан как 420001 (То есть первая цифра - именно служебный символ, в протоколе он не используется!).

Если SCADA-системы не применяются, можно этим не заморачиваться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Таким образом, 40001 - означает доступ к регистру 0 с возможностью чтения командой 3 и записи командами 6 или 16. Если нужен номер регистра больше чем 10000 (например 20000), то в скаде этот номер должен быть записан как 420001 (То есть первая цифра - именно служебный символ, в протоколе он не используется!).

Если SCADA-системы не применяются, можно этим не заморачиваться

 

В том то и дело, что до этого никакую SCADA мы не использовали. А правильно ли я понял, что если в SCADA прописать опрос регистра с номером 40001, то фактически будет послан такой запрос:

 

[xx][03][00][01]...[crcH][crcL]

 

где [00][01] - это и есть адрес регистра?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, будет послан запрос для адреса регистра 0, то есть

[xx][03][00][00]...[crcH][crcL]

либо запрос с кодом команды 0x10, если регистров несколько подряд и скада решит запросить их одним запросом (массивом).

Я ж сказал (может это получилось несколько сумбурно) - в адресации протокола регистры с 0 нумеруются,а при описании в скаде они же - с единицы, и при этом перед номером регистра приписывается кодовый символ, определенным образом указывающий скаде, какие команды использовать для этого регистра (в данном случае это 4).

Повторюсь - это просто принятые соглашения в скада-системах (возможно не всех), чтобы запутать пользователя.

Если вы не используете готовую скаду, то лучше на это не ориентироваться и делать по-человечески :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...