Какую сенсорную шину лучше всего использовать?

sensors i2c modbus network

Я работаю над проектом, который требует, чтобы дюжина датчиков VL53l0X I2C-TOF была опрошена одним главным MCU через несколько метров кабеля.

Таким образом, я решил сопровождать каждый TOF Atmega8, действующим как шлюз между TOF и Modbus (используя MAX485), который управляется ESP32 (мастером). Так как мне требуется довольно низкая задержка (~ 10 считываний / сенсор / секунда) Я немного разочарован производительностью Modbus RTU (в основном вызванной принудительной задержкой 1,75 мс между кадрами).

Мой вопрос: существует ли более быстрый, более подходящий, переносимый Atmega протокол шины для больших расстояний? Ethernet, к сожалению, не вариант из-за ограниченной вычислительной мощности и стоимости ведомых устройств ...

, 👍2

Обсуждение

MODBUS - это просто протокол связи, который работает на существующем физическом уровне - RS485. Вам не нужно запускать MODBUS через RS485 - вы можете запускать все, что захотите, через RS485, это просто последовательный., @Majenko


1 ответ


1

Может для Phy (физического) слоя было бы хорошо для нескольких тысяч футов. Вы можете использовать любой бод и протокол на уровне CAN, который вам нравится, в пределах разумного. Я предполагаю (возможно, по ошибке), что все они общаются на одной шине. Эта БАНКА Phy была разработана именно для этого. Вы могли бы написать свой собственный протокол и просто обратиться к каждому по уникальному номеру или чему-то еще. Существует также возможность использования контроллера CAN, но я думаю, что для разработки вашего решения не потребуется много времени. Размещение Atmega8 на каждом датчике открывает перед вами массу возможностей.

,

Итак, правильно ли я понимаю, что каждому ведомому устройству потребуется свой собственный идентификатор объекта?, @Daniel D.

Не уверен, о чем вы спрашиваете. Каждому из них просто нужен уникальный идентификатор, чтобы вы могли обращаться к ним по отдельности. Вы можете сделать "все звонки, если хотите". Адрес может быть таким же простым, как A, B, C и т.д., тогда вы сможете увидеть его на мониторе шины. Например, когда вы обращаетесь к "А", он отвечает своими данными. Возможно, вам придется добавить преамбулу, чтобы подчиненные устройства знали, что это команда, а не данные. Никаких предложений, так как я не знаю, как будет выглядеть поток данных. Будьте проще, устранение неполадок намного проще., @Gil