[ref]WildCat[/ref], Добрый день ,простите пожалуйста что опять обращаюсь к вам за помощью, но без вас боюсь я так и буду буксовать.
Моя цель - сделать меню сетевых настроек Modbus RTU. Ввод настроек будет с панели Nextion, контроллер - Mega 2560.
Я пытаюсь передать 5 переменных, но к сожалению ничего не происходит. Делаю всё по примеру и инструкции по среде ecoins.
Скопировал с примера функцию main в необходимый таймер, прописал все переменные, но тщетно. Пробую уже 2 дня - переписывал main, проверял адреса и т.д. Всё тщетно. В итоге сделал простейший пример с 1 переменной - всё работает. Делаю 2 переменных - ничего не работает. Скорее всего проблема где-то в функции main, я на это надеюсь.
В приложении пример, если вас не затруднит - посмотрите пожалуйста, я уже всю голову сломал.
С уважением,
valdemar71
Modbus RTU + Nextion (Ошибка ответа устройства)
-
- Рядовой
- Сообщения: 46
- Зарегистрирован: 25 апр 2022, 15:45
- Имя: Владимир
Modbus RTU + Nextion (Ошибка ответа устройства)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Modbus RTU + Nextion (Ошибка ответа устройства)
[ref]valdemar71[/ref], посмотреть смогу не ранее вечера воскресенья
-
- Рядовой
- Сообщения: 46
- Зарегистрирован: 25 апр 2022, 15:45
- Имя: Владимир
-
- Рядовой
- Сообщения: 46
- Зарегистрирован: 25 апр 2022, 15:45
- Имя: Владимир
Modbus RTU + Nextion (Ошибка ответа устройства)
[ref]WildCat[/ref], Добрый день, есть предположения ,с чем может быть связана моя проблема?
Modbus RTU + Nextion (Ошибка ответа устройства)
[ref]valdemar71[/ref], сегодня гляну, занят был
Отправлено спустя 10 часов 50 минут 39 секунд:
[ref]valdemar71[/ref], неверный код задачи в таймере отправки.
в атрибутах параметров должны быть единицы.
это неверная посылка:
( 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 секунд:
Если значение не верное (т.е. количество байт в отправке не совпадает с количеством байт в приеме сообщений в МК), то в МК получим белиберду.
Для однобайтового числа получим два байта, где второй будет 00. Но это значение попадет в первый байт второго регистра, и будет постоянно индицировать 0.
Кстати, [ref]ecoins[/ref], не в этом ли причина того, что через Ваши блоки приема данных не получалось передать значение integer?
Помнится, я сталкивался с этой проблемой. Но Вы сослались на то, что блок как-то не так работает.
А может дело именно в этом? Просто изменить атрибут отправки )
Отправлено спустя 10 часов 50 минут 39 секунд:
[ref]valdemar71[/ref], неверный код задачи в таймере отправки.
в атрибутах параметров должны быть единицы.
это неверная посылка:
( 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 секунд:
Пардон, ошибся
Это возврат количества байт в отправляемом числе.<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.
Кстати, [ref]ecoins[/ref], не в этом ли причина того, что через Ваши блоки приема данных не получалось передать значение integer?
Помнится, я сталкивался с этой проблемой. Но Вы сослались на то, что блок как-то не так работает.
А может дело именно в этом? Просто изменить атрибут отправки )
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Рядовой
- Сообщения: 46
- Зарегистрирован: 25 апр 2022, 15:45
- Имя: Владимир
Modbus RTU + Nextion (Ошибка ответа устройства)
[ref]WildCat[/ref], добрый день, спасибо вам большое за помощь в реализации моего проекта. Всё работает!
Спасибо за обучающие материалы и комментарии по среде ecoins, они очень помогли!
[ref]ecoins[/ref], спасибо большое за способ реализации обмана данными МК - Nextion, без него я бы не смог реализовать задуманное!
Спасибо за обучающие материалы и комментарии по среде ecoins, они очень помогли!
[ref]ecoins[/ref], спасибо большое за способ реализации обмана данными МК - Nextion, без него я бы не смог реализовать задуманное!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость