У меня есть установка, в которой сенсорная плата Razor IMU с коммутационной платой RS-485 подключается к последовательному интерфейсу USB-RS485 через USB-кабель к моему ноутбуку. Я запускаю программное обеспечение на ноутбуке (Max/MSP), которое отправляет сообщения опроса на датчик, ждет данных ответа и при получении ответа автоматически запускает новое сообщение опроса. Это постоянный цикл:
Я хочу, чтобы этот опрос был как можно быстрее, так как мне придется подключить 21 из этих датчиков к одной и той же шине RS485. Прошивка Razor запрограммирована с помощью Arduino IDE , и, согласно коду, между сообщением опроса и записью ответа должна быть задержка всего ~ 2 мс. Прошивка также тратит 12 мс каждые 20 мс на размещение и расчет датчиков. Этот расчет иногда задерживает ответ на опрос. Я знаю об этом, и все результаты соответствуют этому.
Моя проблема сейчас заключается в том, что опрос датчика зависает со средней частотой обновления 15 миллисекунд. Я просмотрел данные с помощью своего маленького USB-осциллографа и сделал диаграмму (> PDF).
Мой осциллограф находится непосредственно на интерфейсе USB-RS485 и видит, как идет опрос и приходит ответное сообщение. Задержка между этими двумя составляет от 2 до 13 мс. Эта разница объясняется тем, что иногда бритва занята сенсорно-математическими вычислениями. Странный факт заключается в том, что, несмотря на то, что ответы приходят с разной задержкой, кажется, что опрос всегда происходит с одним и тем же интервалом около 15 мс.
Мы также реализовали ту же настройку с
Все возможные комбинации приводили к одному и тому же интервалу в 15 мс. Так что проблема не в Arduino-коде и не в Max/MSP. У меня есть подозрение, что проблема может быть связана с последовательным интерфейсом USB-RS485 и/или необходимым драйвером FTDI.
Эта проблема никому не знакома??
Это связано с таймером задержки 16 мс драйвера FTDI и тем фактом, что мои ответы на опрос не были достаточно длинными, чтобы заполнить 64-байтовый буфер для автоматического запуска очистки буфера. Прочтите AN232B-04_DataLatencyFlow.pdf , если вам интересно, или просто перейдите в Диспетчер устройств и измените настройки в свойствах USB-Serial-Port.
Не зная многих деталей (которые я действительно не хочу знать), я бы обвинил адаптер USB-RS-485. У нас была аналогичная проблема с процессором Intel Q7 под управлением Linux с одним из этих адаптеров.
Мы использовали адаптер временно, пока наше специальное оборудование не было готово. Наше специализированное оборудование использует соединение PCIe и FPGA для реализации того же интерфейса RS-485 (и многого другого). Программное обеспечение осталось прежним для адаптера и нашего пользовательского оборудования. Когда мы перешли на нестандартное оборудование, проблема исчезла.
Келленджб
евск
Келленджб
евск