PDA

Просмотр полной версии : Не присваивается модулю Slave id



Max434
26.01.2024, 16:49
Здраствуйте.В ModBus получается подключится под slave id 1 к модулю. Но когда я пытаюсь изменить slave id на 2 это не получается сделать. Т.е ID меняется на 2 , но входа выхода управляются только под slave id 1. А когда отключанаю питание к модулю вообще возвращается slave id 1. Функцию 3( ReadHoldingRegistr4x пробовал). Помогите пожалуйста.
Модуль CWT-BK-1616T-S.
Карта регистров. ПОМОГИТЕ ПОЖАЛУЙСТА!)


Параметры
PLC
Адрес
Код функции
Формат
Содержание
Запись/Чтение


Адрес
40001
03/06
UINT16
1~255
Запись/Чтение


Бит состояние
40002
03/06
UINT16
Бит0: связь RS232.
Бит 1: связь RS485
Запись/Чтение


Скорость в baud
40003
03/06
UINT16
48: 4800bps
96: 9600bps
192: 19200bps
1152: 115200bps
Запись/Чтение


Четность
40004
03/06
UINT16
0: нулевой
1: четный
2: ничетный
Запись/Чтение

In_Da_Cher_A
26.01.2024, 16:56
ну это форум ОВЕН, а вы купили китайскую железку, сами решили скроить копеечку, теперь сами и страдайте

Т.е ID меняется на 2 каким образом вы это узнали?
а скорость меняется под айди 1?
а под айди 2?
может ничего и не поменяется, при заказе надо было указывать адрес, а вам дали прошивку по-умолчанию, с номером 1, встречал такие приколы

Cs-Cs
26.01.2024, 17:10
Нужно больше точной инфы. В какой номер регистра и чем посылается запрос на смену адреса?
Запрос проходит успешно?
А то ведь 40001 - ЭТО НЕ НОМЕР РЕГИСТРА, КУДА НАДО ПИСАТЬ.

Алексей Фомин
26.01.2024, 18:14
Могу предположить, что возможно у вашего устройства существует регистр, предназначенный для записи сетевых настроек в энергонезависимую память и их применения. В таком случае нужно сначала записать адрес, потом команду в этот регистр, затем перезагрузить по питанию.
А возможно вы просто не правильно формируете запрос, исходя из ваших данных регистр должен быть 0 для адреса.

МихаилГл
27.01.2024, 08:15
Здраствуйте.В ModBus получается подключится под slave id 1 к модулю. Но когда я пытаюсь изменить slave id на 2 это не получается сделать. Т.е ID меняется на 2 , но входа выхода управляются только под slave id 1. А когда отключанаю питание к модулю вообще возвращается slave id 1. Функцию 3( ReadHoldingRegistr4x пробовал). Помогите пожалуйста.
Модуль CWT-BK-1616T-S.
Карта регистров. ПОМОГИТЕ ПОЖАЛУЙСТА!)


Параметры
PLC
Адрес
Код функции
Формат
Содержание
Запись/Чтение


Адрес
40001
03/06
UINT16
1~255
Запись/Чтение


Бит состояние
40002
03/06
UINT16
Бит0: связь RS232.
Бит 1: связь RS485
Запись/Чтение


Скорость в baud
40003
03/06
UINT16
48: 4800bps
96: 9600bps
192: 19200bps
1152: 115200bps
Запись/Чтение


Четность
40004
03/06
UINT16
0: нулевой
1: четный
2: ничетный
Запись/Чтение



У этой штуки по документации Ethernet, вы по нему подключаетесь?

1exan
27.01.2024, 08:38
Здраствуйте.В ModBus получается подключится под slave id 1 к модулю. Но когда я пытаюсь изменить slave id на 2 это не получается сделать. Т.е ID меняется на 2 , но входа выхода управляются только под slave id 1. А когда отключанаю питание к модулю вообще возвращается slave id 1. Функцию 3( ReadHoldingRegistr4x пробовал). Помогите пожалуйста.
Модуль CWT-BK-1616T-S.
Карта регистров. ПОМОГИТЕ ПОЖАЛУЙСТА!)


Параметры
PLC
Адрес
Код функции
Формат
Содержание
Запись/Чтение


Адрес
40001
03/06
UINT16
1~255
Запись/Чтение


Бит состояние
40002
03/06
UINT16
Бит0: связь RS232.
Бит 1: связь RS485
Запись/Чтение


Скорость в baud
40003
03/06
UINT16
48: 4800bps
96: 9600bps
192: 19200bps
1152: 115200bps
Запись/Чтение


Четность
40004
03/06
UINT16
0: нулевой
1: четный
2: ничетный
Запись/Чтение



Может на модуле есть переключатель, устанавливающий принудительно заводские параметры подключения и он сейчас включен?

Cs-Cs
27.01.2024, 09:47
Блин, да вы про фишки адресации Modbus вспомните все!
Советчики!! Переключатель, Регистр... Тьфу!
Он, скорее всего, пишет в регистр 40001, как в документации написано. А писать надо в регистр 4х (Holding) номер 1.
Поэтому нехрен путать людей. Ждём ответа на мои вопросы.

МихаилГл
27.01.2024, 10:33
Блин, да вы про фишки адресации Modbus вспомните все!
Советчики!! Переключатель, Регистр... Тьфу!
Он, скорее всего, пишет в регистр 40001, как в документации написано. А писать надо в регистр 4х (Holding) номер 1.
Поэтому нехрен путать людей. Ждём ответа на мои вопросы.

Если бы он не сказал, что адрес меняется, а после перезагрузки по питанию снова становится 1... Хотя всё может быть.

Cs-Cs
27.01.2024, 10:45
Если бы он не сказал, что адрес меняется, а после перезагрузки по питанию снова становится 1... Хотя всё может быть.
Версия от меня: китайский Modbus позволяет писать в какой попало регистр без ошибок =)
То есть, он записал в 40001 адрес - ошибки не было. Но это был и не регистр адреса =)

МихаилГл
27.01.2024, 10:50
Ну это да...

Max434
29.01.2024, 12:51
ну это форум ОВЕН, а вы купили китайскую железку, сами решили скроить копеечку, теперь сами и страдайте
каким образом вы это узнали?
а скорость меняется под айди 1?
а под айди 2?
может ничего и не поменяется, при заказе надо было указывать адрес, а вам дали прошивку по-умолчанию, с номером 1, встречал такие приколы





Отвечу на вопросы по порядку:
1)каким образом вы узнали что меняется slave id на 2? Ответ. визуально в modbus у строки slave id вместо 1 становится значение 2
2) скорость (scan rate) меняется и на id 1 и на id 2 . А baud только на 9600 дает соедениться

по поводу прошивки: у меня есть утилита для прошивки этого модуля.Но в самом мануале про этот подуль идет смена id через утилиту ModBus с помощью функции write single registr.
У них регистр меняется ,у меня нет.Почему? не понятно
в мануале написано что если смотреть через окно communication при slave id 1
Tx:000058-01 03 00 00 00 01 84 0A
Rx:000059-01 03 02 00 01 79 84
У меня так же, а вот когда я меняю на slave id 2 мои tx rx не совпадаю с тем что написано в мануале
в мануле при slave id 2 :
tx 06 00 02 04 80 2В 6А
rx 06 00 02 04 80 2В 6А
а у меня
Tx:000070-01 03 00 00 00 04 44 09
Rx:000071-01 03 08 00 02 C0 02 00 60 00 00 DE C9

Max434
29.01.2024, 13:13
Нужно больше точной инфы. В какой номер регистра и чем посылается запрос на смену адреса?
Запрос проходит успешно?
А то ведь 40001 - ЭТО НЕ НОМЕР РЕГИСТРА, КУДА НАДО ПИСАТЬ.

при коннекте с модулем я использую read holding registrs .adress у меня получается 1 тк стоит галочка в PLC adress Base(1). Чтобы сменить адрес после подключения к slave id 1 я использую функцию write singl registr
пареметры
slave id 1
adress 1
value 2
Запрос проходит успешно и строка с slave id 1 меняется на slave id 2 . Но входами выходами я управлять не могу под slave id 2 . Могу только при slave id 1. получается даже так что строка визуально показывает что slave id 2 а управление входами выходами происходит под slave id 1 .


еще конкретная информация :
в мануале к модулю написано что если смотреть через окно communication при slave id 1
Tx:000058-01 03 00 00 00 01 84 0A
Rx:000059-01 03 02 00 01 79 84
У меня так же, а вот когда я меняю на slave id 2 мои tx rx не совпадаю с тем что написано в мануале
в мануле при slave id 2 :
tx 06 00 02 04 80 2В 6А
rx 06 00 02 04 80 2В 6А
а у меня
Tx:000070-01 03 00 00 00 04 44 09
Rx:000071-01 03 08 00 02 C0 02 00 60 00 00 DE C9

МихаилГл
29.01.2024, 13:30
Используйте геркулес и https://rapidscada.net/modbus/
Разберитесь с модбасом. А то вы похоже путаете и коилы, и регистры, и команды чтения и записи.

Max434
29.01.2024, 13:43
ознакомлюсь,спасибо. Но эту задачу с присвоением все равно надо решить)

Max434
29.01.2024, 13:45
ethernet у модуля нет , подключаюсь через преобразователь usb в rs 485

kondor3000
29.01.2024, 14:59
ознакомлюсь,спасибо. Но эту задачу с присвоением все равно надо решить)

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

МихаилГл
29.01.2024, 16:40
ethernet у модуля нет , подключаюсь через преобразователь usb в rs 485

Не имеет значения, Геркулес поддерживает всё. И тот калькулятор тоже. Модбас что там что там одинаков. Команды и crc тоже.

In_Da_Cher_A
29.01.2024, 22:15
У них регистр меняется ,у меня нета ID и адрес - это точно одно и то же в Китае?

идет смена id через утилиту ModBus так что за утилита? через обычный модабс полл это работает? если это модбас, то похрен какая программа, железка модбас должна читаться и записывать, если всё, что заявлено, действительно реализовано
что там за джамперы на плате? чудес не бывает, тупая защита от записи, либо перемычка, либо джампер, либо ресет по питанию

Sergej_
30.01.2024, 04:44
Блин, да вы про фишки адресации Modbus вспомните все!
Советчики!! Переключатель, Регистр... Тьфу!
Он, скорее всего, пишет в регистр 40001, как в документации написано. А писать надо в регистр 4х (Holding) номер 1.
Поэтому нехрен путать людей. Ждём ответа на мои вопросы.

Совершенно верно. Плюс перезагрузить модуль по питанию. Не с этим именно, но с подобным имел опыт.

capzap
30.01.2024, 06:42
У меня так же, а вот когда я меняю на slave id 2 мои tx rx не совпадаю с тем что написано в мануале
в мануле при slave id 2 :
tx 06 00 02 04 80 2В 6А
rx 06 00 02 04 80 2В 6А
а у меня
Tx:000070-01 03 00 00 00 04 44 09
Rx:000071-01 03 08 00 02 C0 02 00 60 00 00 DE C9
Вам бы начать с изучения модбаса, а не задавать вопросы, чтоб по быстрее разделаться с этой задачей, в Вашем случае, с проблемой

tx 06 00 02 04 80 2В 6А - это пример как задать скорость 115200bps
rx 06 00 02 04 80 2В 6А - это ответ слейва что команда записи принята
06 это функция модбас для записи регистра
00 02 это регистр в который нужно записать 40003
04 80 это в HEX, а в DEC это 1152
2В 6А это контрольная сумма
ни какого отношение к смене адреса этот пример не имеет

Вы же как якобы делаете тоже самое
01 03 00 00 00 04 44 09
01 03 08 00 02 C0 02 00 60 00 00 DE C9
на самом деле используете третью функцию для чтения четырех регистров
01 это адрес
03 функция
0000 начальный адрес регистра
0004 количество регистров
4409 контрольная сумма

capzap
30.01.2024, 06:43
Совершенно верно. Плюс перезагрузить модуль по питанию. Не с этим именно, но с подобным имел опыт.

где же верно, 40001 согласно спецификации в логах будет обращение к нулевому регистру

Sergej_
30.01.2024, 07:43
где же верно, 40001 согласно спецификации в логах будет обращение к нулевому регистру73184
Вот скрин из документации

capzap
30.01.2024, 08:01
73184
Вот скрин из документации

Ну и почему Вы этот скрин не предъявили Cs-Cs, он же утверждает что 40001 это 1 )

МихаилГл
30.01.2024, 08:03
73184
Вот скрин из документации


Ну и почему Вы этот скрин не предъявили Cs-Cs, он же утверждает что 40001 это 1 )

Правильно он сказал. Тут 0834 это 2100, но в таблице написано 42100.
Первая цифра 4 это тупо область регистров. Многие это забывают. У сименса вроде вообще 4ХХХХХ пишут

Sergej_
30.01.2024, 08:31
Мы же не про смещение offset сейчас. Cs-Cs верно предположил, что ТС не тот адрес вбивает. Modbus Poll -м все должно читаться-писаться . 4-ку откинуть надо. Это один момент и перезагрузка по питанию . Есть модули с комбинированной задачей ID . Часть прописыватся в регистр , часть переключателями задается. Так в них такая история, даже задав переключателями, пока не перезагрузишь питанием изменения не вступают в силу.

МихаилГл
30.01.2024, 09:06
Мы же не про смещение offset сейчас. Cs-Cs верно предположил, что ТС не тот адрес вбивает. Modbus Poll -м все должно читаться-писаться . 4-ку откинуть надо. Это один момент и перезагрузка по питанию . Есть модули с комбинированной задачей ID . Часть прописыватся в регистр , часть переключателями задается. Так в них такая история, даже задав переключателями, пока не перезагрузишь питанием изменения не вступают в силу.

Да там у ТС путаница с понятиями, он просто делает то, что написано, но на самом деле вместо задания новых значений просто считывает, и не может это понять. Надо все таки почитать про протокол и команды, а то он так ничего не настроит. Или как в том анекдоте, один потерял, другой сломал...

melky
30.01.2024, 09:13
У меня так же, а вот когда я меняю на slave id 2 мои tx rx не совпадаю с тем что написано в мануале
в мануле при slave id 2 :
tx 06 00 02 04 80 2В 6А
rx 06 00 02 04 80 2В 6А

пакеты не парсятся.
Data package CRC error. Actual CRC is 2B 00. Expected CRC is 0E A0

Max434
30.01.2024, 09:30
У меня получилось это сделать через другую утилиту, которая специально для этого модуля сделана. ModBus_BSI. И да,на модуле были принудительно установлены настройки по умолчанию с slave id 1. Всем спасибо за помощь!

МихаилГл
30.01.2024, 09:41
пакеты не парсятся.
Data package CRC error. Actual CRC is 2B 00. Expected CRC is 0E A0

Надо 01 спереди добавить... Внимательнее

In_Da_Cher_A
30.01.2024, 09:44
И да,на модуле были принудительно установлены настройки по умолчанию с slave id 1. рукалитсо.жипег73188

melky
30.01.2024, 09:52
МихаилГл ага, увидел, только это явно не пример смены адреса.

Cs-Cs
30.01.2024, 11:06
Разберём все посылки. Ориентируюсь на эту вот статью из инета: https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/
Начало посылок - всегда АДРЕС устройства.
Конец - всегда два байта CRC.


в мануале написано что если смотреть через окно communication при slave id 1
Tx:000058-01 03 00 00 00 01 84 0A
Rx:000059-01 03 02 00 01 79 84
Передаём: Для Адреса 0x01 Команда 0x03 - прочитать значение из регистра 0x00 00 в количестве 0x00 01 штук.
Принимаем: От Адреса 0x01 ответ на Команду 0x03 - значения из регистров, занимают 2 байта (1 регистр) и равны 0x00 01.
То есть, тут мы читаем адрес при помощи команды 0x03 из РЕГИСТРА НОМЕР 0.


tx 06 00 02 04 80 2В 6А
rx 06 00 02 04 80 2В 6А
Это какая-то херня. Мы передаём, если это Modbus, Адресу 6 команду 00. Такого не бывает.


Tx:01 03 00 00 00 04 44 09
Rx:01 03 08 00 02 C0 02 00 60 00 00 DE C9
Передаём: для Адреса 0x01 команду 0x03 прочитать регистры начиная 0x00 00 в количестве 0x00 04 - четырёх штук.
Принимаем: от Адреса 0x01 ответ на команду 0x03 (чтение регистров) в виде 0x08 - 8 байт данных (4 регистра по 2 байта). Данные регистров:
0 = 0x00 02
1 = 0xC0 02
2 = 0x00 60
3 = 0x00 00

...якобы в регистре 0 (адрес, как написано в документации) записано 0x00 02.

capzap
30.01.2024, 11:19
Мы же не про смещение offset сейчас. Cs-Cs верно предположил, что ТС не тот адрес вбивает.

И я не про отбрасывание четверки говорил это само собой разумеющееся, допустим поверили Вам и Cs-Cs, отбросили четверку, получили 1(единицу) и записывают по этому адресу, в итоге опять ни чего не получится, потому что будут менять какой интерфейс использовать, а не адрес слейва(см. первый пост, скрин и последующие примеры запросов ответов)

Sergej_
30.01.2024, 14:29
И я не про отбрасывание четверки говорил это само собой разумеющееся, допустим поверили Вам и Cs-Cs, отбросили четверку, получили 1(единицу) и записывают по этому адресу, в итоге опять ни чего не получится, потому что будут менять какой интерфейс использовать, а не адрес слейва(см. первый пост, скрин и последующие примеры запросов ответов)

Вы имеете ввиду смещение номера регистра от адреса, т.н. смещение offset . Это смотря чем и как писать. В первом посту ТС ни слова про это, хотя встречается часто. На скрине чтение из регистра который я приводил в качестве примера (3- скорость 9600). Если поставить галочку , то да будет 2101.
73193

capzap
30.01.2024, 14:42
Вы имеете ввиду смещение номера регистра от адреса, т.н. смещение offset . Это смотря чем и как писать. В первом посту ТС ни слова про это, хотя встречается часто. На скрине чтение из регистра который я приводил в качестве примера (3- скорость 9600). Если поставить галочку , то да будет 2101.
73193

на Вашем скрине даже пример приведен в строке с адресом что 40011 -> 10, о чем я и пишу, чтоб не вводили людей в заблуждение

У ТС всё есть и адресация с учетом области памяти и пример разобран как записать скорость

МихаилГл
30.01.2024, 14:55
Мы по инерции тут пишем, он уже разобрался давно. Ну как разобрался, нашёл программу, если ещё раз столкнётся с модбасом придёт ещё!

Sergej_
30.01.2024, 15:17
на Вашем скрине даже пример приведен в строке с адресом что 40011 -> 10, о чем я и пишу, чтоб не вводили людей в заблуждение

Да я то не ввожу в заблуждение. Иногда в документации вводят в блуд, путая номер р-а с адресом . Про смещение все мы знаем надеюсь, но условно говоря опрашивая разными "мастерами" это смещение может задаваться автоматом. а может нет. Я об этом. Кто то про это смещение и связанные с этим моменты вообще не в курсе. ТС вполне возможно вообще просто целиком 40001 пробовал. Разобрался и хорошо, молодец.

Max434
02.02.2024, 09:59
Прорицатель))))

Max434
02.02.2024, 13:29
спасибо,доступно для понимания