приём из UART и передача по Modbus

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
philipp2222
Рядовой
Сообщения: 12
Зарегистрирован: 02.04.2019{, 11:35}
Репутация: 1
Имя: krimmel

приём из UART и передача по Modbus

#1

Сообщение philipp2222 » 12.03.2024{, 19:16}

Приветствую всех любителей электроники и программирования,

Возникла следующая задача:
- принимать данные из UART (Датчик измерения температуры, влажности и качества воздуха) и передавать эти данные по Modbus на PLC.
- считывание по UART идет стабильно.
- соединение Modbus с имеющемся RS-485 адаптером тоже работает хорошо (без программы приёма данных по UART).

проблема:

- как только активирую Modbus для передачи данных, полученных по UART, происходит следующее. По Modbus приходят 10-11 значений, потом появляется сдвиг значений, тоесть например в Holding Register 1 (Температура) пишется значение из Holding Register 2 или 3 (влажность или качество воздуха). Через пару циклов, значения в регистрах и вовсе пропадают, принимаются только 0.

Ниже выкладываю свой проект. Может кто то подскажет в каком направлении смотреть UART или Modbus. Что то подсказывает, что Буфер у Ардуино переполняется, но как это проверить я не знаю.

Буду рад любым идеям.
UART.flp
Приём данных по UART
(2.58 МБ) 11 скачиваний
Modbustest_Mega2560.flp
Тест Modbus
(127.74 КБ) 11 скачиваний
Programm.flp
Программа где возникает проблема
(2.21 МБ) 14 скачиваний

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

приём из UART и передача по Modbus

#2

Сообщение WildCat » 12.03.2024{, 19:33}

Какая версия ФЛП?

У меня тоже проблемы с ModBus, версии 8.2.0 и 8.2.3.

В версиях 8.** есть проблемы с модбас, нужно ждать выхода новой версии ФЛП. Говорят, скоро.

philipp2222
Рядовой
Сообщения: 12
Зарегистрирован: 02.04.2019{, 11:35}
Репутация: 1
Имя: krimmel

приём из UART и передача по Modbus

#3

Сообщение philipp2222 » 12.03.2024{, 21:47}

Привет,

версию исползую 8.2.3, с более старыми версиями не пробовал. Попробую, в конце недели сообщю о резултате.

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

приём из UART и передача по Modbus

#4

Сообщение WildCat » 12.03.2024{, 23:22}

У меня на версиях 8** 0 регистр не отправляется, 1 отправляется. И все последующие отправляются только при изменении предыдущего.

Сказали ждать ))

philipp2222
Рядовой
Сообщения: 12
Зарегистрирован: 02.04.2019{, 11:35}
Репутация: 1
Имя: krimmel

приём из UART и передача по Modbus

#5

Сообщение philipp2222 » 14.03.2024{, 23:16}

Продолжил пока работать в версии 8.2.3. Удалось сделать следующие наблюдения:

- Modbus передача работает стабильнее, как только уменьшил частоту запроса по UART (0.5 сек). Запросы по Modbus 1 сек.
- Наблюдается систематическая ошибка каждые 2.5 мин. Потом идет сбой передачи который длится 30 сек.

Использую следующие компоненты:
- Mega 2560
- RS-485 (https://joy-it.net/en/products/ARD-RS485)

Результат измерений:
- высокие пики, это данные с ошибкой, там приходит значение 9999.
- между пиками правилные данные

Какие будут идеи?
Вложения
1.png

holodaleksey
Лейтенант
Сообщения: 566
Зарегистрирован: 10.01.2016{, 13:47}
Репутация: 14

приём из UART и передача по Modbus

#6

Сообщение holodaleksey » 24.03.2024{, 00:35}

Попробуйте ЕСП, хотя бы вемос д1 мини. Там модбас ТСР.
Подпись удалена мною по требованию администрации форума, что является нарушение демократии )

ecoins
Полковник
Сообщения: 2947
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 454
Откуда: Шатура
Имя: Энвер

приём из UART и передача по Modbus

#7

Сообщение ecoins » 24.03.2024{, 00:48}

philipp2222 писал(а):
14.03.2024{, 23:16}
Какие будут идеи?
Полагаю проблемы из-за UART. В нынешней стандартной реализации блока (если Вы её используете) вывод реализован без буферирования и возникают временные "тормоза",которые в итоге и приводят к потерям(по тайм-ауту) части ответных пакетов Modbus.
С уважением, ecoins.

philipp2222
Рядовой
Сообщения: 12
Зарегистрирован: 02.04.2019{, 11:35}
Репутация: 1
Имя: krimmel

приём из UART и передача по Modbus

#8

Сообщение philipp2222 » 28.03.2024{, 13:40}

ecoins писал(а):
24.03.2024{, 00:48}
philipp2222 писал(а):
14.03.2024{, 23:16}
Какие будут идеи?
Полагаю проблемы из-за UART. В нынешней стандартной реализации блока (если Вы её используете) вывод реализован без буферирования и возникают временные "тормоза",которые в итоге и приводят к потерям(по тайм-ауту) части ответных пакетов Modbus.
С уважением, ecoins.
Всем привет,

имеются какие-нибудь способы (нестандартная реализация) этой проблемы?

Благодарю за ответ.

Аватара пользователя
Rovki
Полковник
Сообщения: 4877
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 268
Откуда: Чехов
Имя: Анатолий
Контактная информация:

приём из UART и передача по Modbus

#9

Сообщение Rovki » 28.03.2024{, 21:41}

Не совсем понятно по какому протоколу вы спрашиваете датчики? Через уарт
Электронщик до мозга костей и не только

philipp2222
Рядовой
Сообщения: 12
Зарегистрирован: 02.04.2019{, 11:35}
Репутация: 1
Имя: krimmel

приём из UART и передача по Modbus

#10

Сообщение philipp2222 » 08.04.2024{, 16:35}

Rovki писал(а):
28.03.2024{, 21:41}
Не совсем понятно по какому протоколу вы спрашиваете датчики? Через уарт
Да, совершенно верно. Датчик подключен к Serial 1 (Мега 2560).

Ответить

Вернуться в «Спросить у знатоков»