Modbus RTU + Nextion (Ошибка ответа устройства)

Использование протокола Modbus
valdemar71
Рядовой
Сообщения: 46
Зарегистрирован: 25.04.2022{, 15:45}
Репутация: 1
Имя: Владимир

Modbus RTU + Nextion (Ошибка ответа устройства)

#21

Сообщение valdemar71 » 28.03.2024{, 16:30}

WildCat, Добрый день ,простите пожалуйста что опять обращаюсь к вам за помощью, но без вас боюсь я так и буду буксовать.
Моя цель - сделать меню сетевых настроек Modbus RTU. Ввод настроек будет с панели Nextion, контроллер - Mega 2560.
Я пытаюсь передать 5 переменных, но к сожалению ничего не происходит. Делаю всё по примеру и инструкции по среде ecoins.
Скопировал с примера функцию main в необходимый таймер, прописал все переменные, но тщетно. Пробую уже 2 дня - переписывал main, проверял адреса и т.д. Всё тщетно. В итоге сделал простейший пример с 1 переменной - всё работает. Делаю 2 переменных - ничего не работает. Скорее всего проблема где-то в функции main, я на это надеюсь.
В приложении пример, если вас не затруднит - посмотрите пожалуйста, я уже всю голову сломал. :smile469:

С уважением,
valdemar71
Вложения
Test71-2.rar
(178.99 КБ) 11 скачиваний

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

Modbus RTU + Nextion (Ошибка ответа устройства)

#22

Сообщение WildCat » 29.03.2024{, 18:33}

valdemar71, посмотреть смогу не ранее вечера воскресенья

valdemar71
Рядовой
Сообщения: 46
Зарегистрирован: 25.04.2022{, 15:45}
Репутация: 1
Имя: Владимир

Modbus RTU + Nextion (Ошибка ответа устройства)

#23

Сообщение valdemar71 » 02.04.2024{, 10:17}

WildCat писал(а):
29.03.2024{, 18:33}
valdemar71, посмотреть смогу не ранее вечера воскресенья
ок

valdemar71
Рядовой
Сообщения: 46
Зарегистрирован: 25.04.2022{, 15:45}
Репутация: 1
Имя: Владимир

Modbus RTU + Nextion (Ошибка ответа устройства)

#24

Сообщение valdemar71 » 04.04.2024{, 09:44}

WildCat, Добрый день, есть предположения ,с чем может быть связана моя проблема?

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

Modbus RTU + Nextion (Ошибка ответа устройства)

#25

Сообщение WildCat » 04.04.2024{, 11:38}

valdemar71, сегодня гляну, занят был

Отправлено спустя 10 часов 50 минут 39 секунд:
valdemar71, неверный код задачи в таймере отправки.
Скриншот 04-04-2024 222244.jpg
Скриншот 04-04-2024 222244.jpg (57.17 КБ) 243 просмотра
в атрибутах параметров должны быть единицы.

это неверная посылка:
( prints qntReg,2 //--Кол-во записываемых регистров;
prints qntByte,2 //--Кол-во отправляемых байт;)
:\x06\x01\x02\x00\x02\x00\x01\x03╥ЪЪЪ

А это верная:
( prints qntReg,1 //--Кол-во записываемых регистров;
prints qntByte,1 //--Кол-во отправляемых байт;)
:\x06\x01\x02\x02\x01\x03╥ЪЪЪ

В этой секции атрибут 1 - это разрешение отправки значения (0/1), записанного ранее в переменные qntReg, qntByte
а вот ранее в эти переменные записывается именно значение количества байт и регистров (от 1 до ...)

Отправлено спустя 11 минут :
На будущее: если возникают вопросы по кодам задач, прикладывайте под спойлером сам код. Это ускорит процесс. Не всегда есть возможность открыть проект.

Отправлено спустя 16 минут 59 секунд:
WildCat писал(а):
04.04.2024{, 22:40}
В этой секции атрибут 1 - это разрешение отправки значения (0/1), записанного ранее в переменные qntReg, qntByte
Пардон, ошибся
<length> is either 0 (all) or number to limit the bytes to send.
prints t0.txt,0 // return 1 byte per char of t0.txt without null byte ending.
prints t0.txt,4 // returns first 4 bytes, 1 byte per char of t0.txt without null byte ending.
prints j0.val,0 // return 4 bytes for j0.val in little endian order
prints j0.val,1 // returns 1 byte of j0.val in little endian order
prints "123",2 // return 2 bytes for text "12" 0x31 0x32
prints 123,2 // returns 2 bytes for value 123 0x7B 0x00
Это возврат количества байт в отправляемом числе.

Если значение не верное (т.е. количество байт в отправке не совпадает с количеством байт в приеме сообщений в МК), то в МК получим белиберду.
Для однобайтового числа получим два байта, где второй будет 00. Но это значение попадет в первый байт второго регистра, и будет постоянно индицировать 0.

Кстати, ecoins, не в этом ли причина того, что через Ваши блоки приема данных не получалось передать значение integer?
Помнится, я сталкивался с этой проблемой. Но Вы сослались на то, что блок как-то не так работает.
А может дело именно в этом? Просто изменить атрибут отправки )

valdemar71
Рядовой
Сообщения: 46
Зарегистрирован: 25.04.2022{, 15:45}
Репутация: 1
Имя: Владимир

Modbus RTU + Nextion (Ошибка ответа устройства)

#26

Сообщение valdemar71 » 12.04.2024{, 10:57}

WildCat, добрый день, спасибо вам большое за помощь в реализации моего проекта. Всё работает!
Спасибо за обучающие материалы и комментарии по среде ecoins, они очень помогли!

ecoins, спасибо большое за способ реализации обмана данными МК - Nextion, без него я бы не смог реализовать задуманное!

:smile9:

Ответить

Вернуться в «Modbus»