реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> маленький вопрос по Modbus, адресация holding registers
UniBomb
сообщение Apr 20 2009, 13:39
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416



Добрый день. Использую Modbus RTU по интерфейсу rs-485. Краем уха слышал где-то, что в зависимости от того, какую разновдность протокола и по какому интерфейсу я использую это безобразие регистры хранения имеют разные адреса. Т.е. в одном случае адрес первого регистра 1, а в другом 40001. В стандарте я это либо пропустил, либо действительно об этом не сказано, так что просветите пожалуйста smile.gif
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 20 2009, 13:52
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



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

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

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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
OlegH
сообщение Apr 20 2009, 17:28
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168



Нет, все проще.
Номера регистров по протоколу передаются всегда начиная с 0-го номера.
При описании же адресов в SCADA-системе ПРИНЯТО (но стандарт MODBUS как таковой тут не причем) нумеровать их же с 1-цы, и при этом первым символом адреса (то есть номера регистра) указывать тип регистра (а именно какие команды MODBUS будут использоваться). Так, первый символ 4 означает что будут использоваться команды 3 для чтения и 6/16 для записи, первый символ 3 означает что будут использоваться команды с кодом 4 для чтения, а запись в эти регистры недопустима (это входные регистры). Первый символ 1 - указывает на битовые регистры (команда с кодом 1).
Таким образом, 40001 - означает доступ к регистру 0 с возможностью чтения командой 3 и записи командами 6 или 16. Если нужен номер регистра больше чем 10000 (например 20000), то в скаде этот номер должен быть записан как 420001 (То есть первая цифра - именно служебный символ, в протоколе он не используется!).
Если SCADA-системы не применяются, можно этим не заморачиваться
Go to the top of the page
 
+Quote Post
UniBomb
сообщение Apr 21 2009, 05:36
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416



Цитата(Олег Хохлов @ Apr 20 2009, 21:28) *
Таким образом, 40001 - означает доступ к регистру 0 с возможностью чтения командой 3 и записи командами 6 или 16. Если нужен номер регистра больше чем 10000 (например 20000), то в скаде этот номер должен быть записан как 420001 (То есть первая цифра - именно служебный символ, в протоколе он не используется!).
Если SCADA-системы не применяются, можно этим не заморачиваться


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

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

где [00][01] - это и есть адрес регистра?
Go to the top of the page
 
+Quote Post
OlegH
сообщение Apr 21 2009, 06:10
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168



Нет, будет послан запрос для адреса регистра 0, то есть
[xx][03][00][00]...[crcH][crcL]
либо запрос с кодом команды 0x10, если регистров несколько подряд и скада решит запросить их одним запросом (массивом).
Я ж сказал (может это получилось несколько сумбурно) - в адресации протокола регистры с 0 нумеруются,а при описании в скаде они же - с единицы, и при этом перед номером регистра приписывается кодовый символ, определенным образом указывающий скаде, какие команды использовать для этого регистра (в данном случае это 4).
Повторюсь - это просто принятые соглашения в скада-системах (возможно не всех), чтобы запутать пользователя.
Если вы не используете готовую скаду, то лучше на это не ориентироваться и делать по-человечески smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016