Страница 1 из 1
ModBus TCP/IP
Добавлено: 12 июл 2018, 15:57
starshoy81
[ref]garant[/ref], имхо, не взлетит, ресурсов крайне мало в ардуине для такого рода задач. Не зря выносят обработку сетевых протоколов на отдельные платы. Вариант использовать мост TCP-RTU для этого тоже нужен атмега 2560, так как 328 не вытягивает большого количества тегов из-за малого объёма памяти.
ModBus TCP/IP
Добавлено: 19 авг 2018, 07:08
romechka
Добрый Уважаемые гуру данного форума!
Подскажите кто сталкивался или в курсе данной проблемы!
Готовлю проект по удаленному мониторингу объекта. Обмен данными происходит по протоколу modbus TCP.
В качестве мастера использую мега+w5100+дисплей 2004+ энкодер.
меню собранно по принципу "красивое меню" с данного форума.
Как только начинаю подключать подключать теги,данные приходят, но резко пропадает отзывчивость энкодера, и меню не возможно управлять.
по отдельности все работает нормально. Скетч занимает 20% памяти меги.
Что это? нехватка оперативной памяти? или что другое?
ModBus TCP/IP
Добавлено: 19 авг 2018, 07:23
ecoins
Точно дисплей тормозит - вернее его библиотека. Может еще какие-то библиотеки в которых используется оператор delay() (например DS1820 - 1,2 сек, DHT11, DHT22, HC-SR04).
Вывод одной строки Lcd на скорости шины i2c 100кгц занимает около 30мс, четырех строк длиной 20 символов 122мс.
Вывод одной строки Lcd на скорости шины i2c 400кгц занимает около 12мс, четырех строк длиной 20 символов 49мс.
Вывод одной строки Lcd на скорости шины i2c 600кгц занимает около 10мс, четырех строк длиной 20 символов 39мс.
По умолчанию библиотека Wire.h устанавливает скорость 100кГц.
Есть другие библиотеки для Arduino и адаптированные под FLProg, но при их использовании нужно использовать дополнительный метод, обеспечивающий параллельно выполнение задач.
Это не сложно и такая библиотека с блоком под FLProg тоже есть.
ModBus TCP/IP
Добавлено: 19 авг 2018, 07:42
romechka
ecoins писал(а): 19 авг 2018, 07:23Точно дисплей тормозит - вернее его библиотека.
На самом мастере датчиков никаких нет, только дисплей и энкодер. тормозить начинает именно тогда, когда подключаю хоть один тег modbus TCP.
Касаемо библиотеке LCD, использую блок LCD Русский Автор Слимпер
ModBus TCP/IP
Добавлено: 19 авг 2018, 10:03
ecoins
Вот эта библиотека и тормозит. Так как я описал выше.
Можете сами проверить. Сделайте блок пользовательский micros() - на выходе блока значение функции micros();
Запомните результат перед и после вывода на Lcd, вычислите разницу и посмотрите это значение (вывести можно на терминал или на тот же LCD).
ModBus TCP/IP
Добавлено: 19 авг 2018, 11:16
romechka
ecoins писал(а): 19 авг 2018, 07:23
По умолчанию библиотека Wire.h устанавливает скорость 100кГц.
Дисплей подключен на прямую, без i2c расширителя
ecoins писал(а): 19 авг 2018, 07:23
Есть другие библиотеки для Arduino и адаптированные под FLProg, но при их использовании нужно использовать дополнительный метод, обеспечивающий параллельно выполнение задач.
Это не сложно и такая библиотека с блоком под FLProg тоже есть.
А можете тыкнуть пальцем или ткнуть носом, а то поиск по форуму не помогает мне...
Пока воткнул дополнительно к меги-уно с подключенный w5100?, т.с. разделил задачи, Уно только получает данные с модбас, а мега отображает на экране и все остальное...
ModBus TCP/IP
Добавлено: 19 авг 2018, 12:48
ecoins
Чтобы передать один байт на Lcd по 4-х битной шины нужно выполнить четыре транзакции.
Так и написана библиотека. А между транзакциями стоит все тот же оператор delay().
Еще раз рекомендую найти временной тормоз - можно как написал выше, можно через логический анализатор.