Страница 1 из 1

Программная смена сетевого адреса modbus.

Добавлено: 13 дек 2017, 19:15
Rovki
Приходится часто использовать коммуникации .В случае производства небольшой партии одинаковых устройств работающих с RS485 приходится прошивать разные адреса устройств если их несколько в сети .Хорошо было бы что бы была возможность программно менять через сетевой регистр (выбранный) адрес устройства .Например во всех устройствах по умолчанию адрес 1 .НО если я ставлю в сеть еще одно устройство ,то я временно выключаю 1 устройство ,подключаю второе с адресом 1 и меняю его сетевой адрес ,например 2 .Адрес 2 записывается в энергонезависимую память и теперь в сети 2 устройства с адресом 1 и 2 .Во многих китайских модулях с RS485 такая возможность есть .Возможно ли такое реализовать в FLprog?

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 06:22
nalnik
Rovki

после записи адреса нужно сделать reset.

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 09:08
Sancho
Rovki писал(а):НО если я ставлю в сеть еще одно устройство ,то я временно выключаю 1 устройство ,подключаю второе с адресом 1 и меняю его сетевой адрес ,например 2
Сделайте загрузочный проект с адресом, например, 111, и Вам при добавлении устройств по одному не придётся ничего отключать... Или не используйте в сети работающий адрес 1.

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 09:49
support
Rovki писал(а):.Возможно ли такое реализовать в FLprog?
 Да возможно. Ветка модбас в дереве проекта - специальные возможности -  Задание Slave адреса.
Вытягиваете это пункт на схему, создается блок. Какое значение на входе блока будет (Byte), такой и будет адрес слейва. Меняется на лету без рестарта контроллера. Ну а задавать его можно как через EEPROM, ну или просто задать его микриками на плате.

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 13:51
Rovki
support писал(а):Ну а задавать его можно как через EEPROM, ну или просто задать его микриками на плате.
Спасибо .Склоняюсь к программой задаче адреса ,без перепрошивки самого проекта

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 14:30
Sancho
Rovki писал(а):Склоняюсь к программой задаче адреса ,без перепрошивки самого проекта
Анатолий, здесь все об этом и говорят. Просто адрес назначенный Вами из регистра будет сохранятся в EEPROM и загружаться при перезагрузке. Наверно, придётся сделать лишь блокировку первоначальной записи при значении ноль в регистре - при старте контролера.
Уверен, разберётесь и придумаете.

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 15:03
Rovki
первоначально во всех будет адрес 1 .

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 17:39
Sancho
Rovki писал(а):первоначально во всех будет адрес 1 .
Я поступил бы так:
Сделать загрузочный проект с адресом по умолчанию, например, 111, и Вам при добавлении устройств по одному не придётся ничего отключать...
Или, как Вы хотите, не используйте в проекте сети устройство с адресом 1, что-бы ничего не отключать на время смены адреса у нового устройства.

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 19:47
Rovki
Не буду плодить тем ,спрошу у знатоков FL тут.
Память сетевых регистров совмещенная или разделенная (разные области памяти ) для дискрит инпут и холдинг регистров .Иначе спрошу-
0 бит дискрипт регистра оказывается в нулевом бите холдинг регистра с адресом 0 или это разные регистры  .?

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 20:42
support
Области памяти разделённые. 0 регистр в области HoldingRegisters и 0 InputRegistr - это разные данные.

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 21:00
Rovki
А дискрит инпут и холдинк то же раздельные ? Если так то я могу использовать 0,1....50 дискрипт инпут  и холдинг регистры 0,1....10 ?
Просто я хочу иметь возможность из модуля ввода читать дискретные входа как дискрит инпут (по битно) ,так и сразу все через холдинг регистр(сразу все) используя промежуточную переменную для связи этих разных областей .Вот как то так 

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 21:13
support
Нет, дискреты то же отдельная область, так что прочитать дискреты как холдинг регистр не получится.
А вот по вашей схеме да - получится (я просто не сразу её разглядел внимательно).
Вы можете прекрасно использовать одновременно 0,1....50 дискрипт инпут  и холдинг регистры 0,1....10 ? и это будут разные области памяти

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 21:23
support
Только схему записи в регистр немного измените, по вашей схеме работать не будет

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 21:28
Rovki
Спасибо ,все ясно ,просто в ПР области совмещены ,поэтому уточнил .

Добавлено (14.12.2017, 21:25)
---------------------------------------------
support писал(а):Только схему записи в регистр немного измените, по вашей схеме работать не будет
Спасибо

Добавлено (14.12.2017, 21:28)
---------------------------------------------
Аналогично хочу сделать управление выходами - либо через флаги (по битно) ,либо через холдинг регистр (сразу все биты)

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 22:26
Rovki
вот такая схема будет работать?

Программная смена сетевого адреса modbus.

Добавлено: 14 дек 2017, 22:34
support
Да эта будет

Программная смена сетевого адреса modbus.

Добавлено: 15 дек 2017, 21:08
Rovki
В Каскаде будет шаблон модуля ввода \вывода ,так что пользователю да же знать не нужно будет адреса регистрови задавать),они будут прописаны в шаблоне  ,а просто подключай входа \выхода .Будут 4 дискретных входа ,4 аналоговых входа ,4 релейных выхода ,2 транзисторных выхода (ШИМ) .

Связь с модулем будет по вайфай

Добавлено (15.12.2017, 21:08)
---------------------------------------------
Что то не стабильно работает смена сетевого адреса ,то работает при смене ,то не работает- какой то адрес записывает не понятно ,в результате таймауты ...

Программная смена сетевого адреса modbus.

Добавлено: 22 фев 2020, 09:23
Mihail_K
support писал(а): 14 дек 2017, 09:49 Меняется на лету без рестарта контроллера.
У меня без рестарта не получилось. Как написано во втором сообщении, после смены адреса контроллер перезагружаю. У меня работает стабильно.