• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Modbus TCP / RTU RS-485 + WEB server

DimonBiya

New member
Если UART овен плк 110 подключу к UART esp, при этом ESP мастер, плк слэйв. Все должно заработать?
 

DimonBiya

New member
Имеется МВА8 с датчиками PT100. Как сделать графики на 8 каналов. Запись показаний каждый час в течении года? Подключать планирую так: RX мва8 на TX есп, TX мва8 через делитель к RX есп.
DSC_0002.JPG
 

pvvx

Активный участник сообщества
Имеется МВА8 с датчиками PT100. Как сделать графики на 8 каналов. Запись показаний каждый час в течении года? Подключать планирую так: RX мва8 на TX есп, TX мва8 через делитель к RX есп.
А пока нет никаких записей и логирования.
 

ddv

New member
Всем привет!
что-то я не как не смог разобраться как нстроить модбас по уарту.
имеем: железка (ардуинка) на ней modbus клиент (19200 baud, 8-bits, even, 1-bit stop). 16 2-х байтных ячеек с 1-16.

Modbus-Master-Slave-for-Arduino/simple_slave2.ino at master · smarmengol/Modbus-Master-Slave-for-Arduino · GitHub

модбас на ней 100% работает (пулинг этих 16 ячеек проверял).
Но никак не могу в вашем проекте настроить опрос этой железки %(
пробовал разные прошивки, разные собирал WEB профили..

какая-то каша у меня в голове. или мне нужно было брать прошивку для 485? и там выставлять "управляющий ПИН = null" ?

Если делать опрос ESP через modbus tcp (slave id = 50), то железка опрашивается.
ячейки через ваб-админку меняю, в опросе они приходят..

Если делать опрос ESP через modbus tcp (slave id = 1, это ид модбаса на ардуинке), то железка опрашивается, но данных нет (reply time-out)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Всем привет!
что-то я не как не смог разобраться как нстроить модбас по уарту.
имеем: железка (ардуинка) на ней modbus клиент (19200 baud, 8-bits, even, 1-bit stop). 16 2-х байтных ячеек с 1-16.
Modbus-Master-Slave-for-Arduino/simple_slave2.ino at master · smarmengol/Modbus-Master-Slave-for-Arduino · GitHub
Про Ардуино сказать ничего не могу.
ESP (slave id = 50) - это адрес внутреннего устройcтва, для опроса внешнего устройства надо по TCP запрашивать внешний адрес, а не назначать его для ESP. Для чтения с внешнего устройства в таблицу ESP устройства существуют "транзакторы".
Пока все имеющиеся у меня устройства с modbus RTU на RS-485 полудуплеском работают. Или выставили что неправильно, или в Ардуино у вас не modbus RTU на RS-485 полудуплекс.
Из всех настроек на ESP у нас есть всего порт Modbus TCP, адрес внутреннего устройства и параметры порта RS-485 (скорость, parity и stop). Остальное - это уже внешнее ПО или устройства.
 
Последнее редактирование:

ddv

New member
Блин, у меня в старом хроме сортировки в твоих вэбовских таблицах идут в обратном порядке! могу скрин прислать.
в firefox все ок. счас "кликаю" по транзакторам, хоть стали лампочки моргать... хотя транзактор количество ошибок увеличивает, кстати, как глянуть кода ошибки? ты вроде писал что протоколируешь ошибки..
Я правильно делаю: транзактор на опрос первых 9 ячеек слейва с ид-1 в 0 внутренний адес 0 будет таким web.cgi?mdbt0=1,4,9,0,0,0,0
команда №4 это же опрос hold регистров?
 

ddv

New member
Уфф. разобрался! :) автору БОЛЬШОЙ РЕСПЕКТ, а я пошел выкидывать свой велосипед :)
итого для опроса по UART нужно:
В настройках ModBus: Boud 19203, Parity 1 stop(1)
Транзактор (опрос 8 ячеек с 1, ложить в 1): 1,4,8,1,1,1,0

Вопрос один: как сохранить настройки транзактора? ну типа я поигрался, настроил, и получить файл "с конфигурацией", и потом ее в прошивку закинуть...и

---
сам себе отвечу - mdb.bin

А можно заменить
WEBFS22.exe:
на что-то кросс-платформенное? ну скрипт какой... у меня везде Linux, приходится идти на машину с виндой...

или через тот же веб-интерфейс mdb.bin задеплоить...
 
Последнее редактирование:

ddv

New member
"64-х битный аппаратный MacTimer"

А для какой задачи его можно использовать? и, главное зачем? вот такой нубский вопрос возник :)
 

Surkov

New member
@pvvx читал, искал, но так и не нашел. Понятно, что я могу достучаться до GPIO выводов ESP8266 через web переменные. Можно ли работать с ними через coil команды modbus без промежуточной записи во flash память (чтобы избежать старения)?
 

pvvx

Активный участник сообщества
@pvvx читал, искал, но так и не нашел. Понятно, что я могу достучаться до GPIO выводов ESP8266 через web переменные. Можно ли работать с ними через coil команды modbus без промежуточной записи во flash память (чтобы избежать старения)?
Через coil нет. Они доступны через Holding Registers.
Смотрите Info-Help (c главной страницы web) и вкладку Modbus
Там Системные переменные с 1100 по 1109:
1100 16bit GPIO_IN Значения со входов: бит 0 = GPIO0, …, бит 15 = GPIO15
1101 16bit GPIO_OUT Выходные значения: бит 0 = GPIO0, …, бит 15 = GPIO15
1102 16bit GPIO_OUT_SET Установка выхода: бит равный 1 выставляет бит в GPIO_OUT
1103 16bit GPIO_OUT_CLEAR Сброс выхода: бит равный 1 сбрасывает бит в GPIO_OUT

...
 

NightScream

New member
Автору безусловно респект.
Подскажите или дайте ссыль на ebay покупку модуля, на котором я смогу поднять этот шлюз, просто их штук 11 разновидностей + какието версии еще.
Просто скажите что лучше и удобно из esp, может уже распаянные есть на плате с выводами.
Спасибо.
 

А возможно ли в ESP8266 реализовать юарт 9 бит режим?
Он там есть. В настройках parity - 1 stop.
Дело в том что мне нужно читать 9-й бит в прошивке ESP8266, которую я пилю, но не понимаю как это делать и как настроить на 9-ти битный режим.. Пока то что я нашел это
WRITE_PERI_REG(UART_CONF0(0),
(0x1 << UART_STOP_BIT_NUM_S) // 1 stop bit
| (0x3 << UART_BIT_NUM_S)); // 8 data bits
и описание регистра настройки ЮАРТ http://esp8266.ru/esp8266-uart-reg/ где ничего не сказано про 9 бит режим

stop_bit_num [5:4] 2'd1 R/W Set stop bit: 1:1bit 2:1.5bits 3:2bits
bit_num [3:2] 2'd3 R/W Set bit num: 0:5bits 1:6bits 2:7bits 3:8bits

Подскажите, что я понимаю не так, или чего не знаю?))
 

pvvx

Активный участник сообщества
Дело в том что мне нужно читать 9-й бит в прошивке ESP8266, которую я пилю, но не понимаю как это делать и как настроить на 9-ти битный режим.. Пока то что я нашел это
WRITE_PERI_REG(UART_CONF0(0),
(0x1 << UART_STOP_BIT_NUM_S) // 1 stop bit
| (0x3 << UART_BIT_NUM_S)); // 8 data bits
и описание регистра настройки ЮАРТ http://esp8266.ru/esp8266-uart-reg/ где ничего не сказано про 9 бит режим

stop_bit_num [5:4] 2'd1 R/W Set stop bit: 1:1bit 2:1.5bits 3:2bits
bit_num [3:2] 2'd3 R/W Set bit num: 0:5bits 1:6bits 2:7bits 3:8bits

Подскажите, что я понимаю не так, или чего не знаю?))
9-ть бит данных в Modbus не используется. Символ в Modbus RTU состоит из 11 бит:
1 старт,
8 данных,
1 стоп,
1 четности или как доп. стоп бит.
Прошивка и настройки позволяют задать вместо 2 стоп бита, 1 стоп бит без бита четности. Выходит всего 10 бит.
 
А мне не для Модбаса) А для MDB протокола.. просто я никогда раньше с 9 бит режимом не сталкивался... я так и не могу понять, возможно ли реализовать этот режим на 8266?

То есть мне нужен 9600 Baud, 9 data bits, no parity bit, and one stopbit
 
Последнее редактирование:

pvvx

Активный участник сообщества
А мне не для Модбаса) А для MDB протокола.. просто я никогда раньше с 9 бит режимом не сталкивался... я так и не могу понять, возможно ли реализовать этот режим на 8266?

То есть мне нужен 9600 Baud, 9 data bits, no parity bit, and one stopbit
А тут тема про Modbus RTU и Modbus TCP...
 

pistoletov

New member
А мне не для Модбаса) А для MDB протокола.. просто я никогда раньше с 9 бит режимом не сталкивался... я так и не могу понять, возможно ли реализовать этот режим на 8266?

То есть мне нужен 9600 Baud, 9 data bits, no parity bit, and one stopbit
mdb это немного другое. Протокол платежных систем. 9 бит нечасто в уартах встречаются. stm32 и 51 мк имеют 9 бит. Интересно зачем Вам на есп mdb?
 

pvvx

Активный участник сообщества
Сверху Снизу