2-WIFI&Bluetooth(ESP32)изменятьCANилиRS485автобус&последовательный портTTLмодуль-CSDK--Введение в шаблоны проектов вторичной разработки(wifiКонфигурация;последовательный порт;CANавтобус,Высокий параллелизмTCPсервер,Многоканальный TCPклиент)
2-WIFI&Bluetooth(ESP32)изменятьCANилиRS485автобус&последовательный портTTLмодуль-CSDK--Введение в шаблоны проектов вторичной разработки(wifiКонфигурация;последовательный порт;CANавтобус,Высокий параллелизмTCPсервер,Многоканальный TCPклиент)
Скопируйте проект в свой собственный каталог IDF.
1. Поместите проект в тот же каталог, что и hello_world, а затем разархивируйте его.
2. Открыть с помощью vscode
Если вы используете его впервые, нажмите эту кнопку, чтобы очистить проект.
Затем нажмите «Компилировать»
намекать: Время первой компиляции немного велико, После компиляции в этот раз она будет быстрее, если вы скомпилируете ее снова позже.
3. Все конфигурации по умолчанию находятся в parameConfig.
Фактически, все конфигурации могут быть настроены динамически, чтобы облегчить будущую настройку с использованием главного компьютера и т. д.
Сначала загрузите конфигурацию по умолчанию во время инициализации.
Позже будет перенастроен из хранилища. На данный момент я просто написал простой тест. По мере постепенного увеличения потребностей пользователей будет добавлена соответствующая динамическая конфигурация.
Тестовый последовательный порт
1. Давайте используем следующие два порта для тестирования.
IO21 и IO22 — это общие входные и выходные порты ввода-вывода, которые можно использовать в качестве входного переключателя (до 24 В), UART, IIC и т. д.
2. Загрузите программу на устройство
Примечание. Поскольку все функции пакета работают, энергопотребление высокое. Лучше всего подключить внешний адаптер питания для питания устройства во время тестирования;
Настроенный IO21 — TX; IO22 — RX, а скорость передачи данных установлена на 9600.
Программа возвращает то, что получает; предусмотрены две формы отправки данных. Рекомендуется использовать следующий метод «задача плюс очередь» (если пользователь хочет использовать xQueueCreate, обратитесь к примеру отправки данных по CAN-шине).
3. Здесь модуль последовательного порта используется для подключения устройства для тестирования. Поскольку пример Espressif Systems заброшен, а базовая обработка написана непосредственно мной, эффективность очень высока.
Здесь сначала используйте помощник по отладке последовательного порта, чтобы отправить 1 байт данных для тестирования. Проверьте задержку отправки и получения. Разница во времени составляет 5 мс.
Фактически, необходимо исключить фактическое время передачи одного байта данных; для отправки одного байта данных со скоростью 9600 бод требуется около 1,04 мс, а затем для возврата требуется около 1,04 мс. задержка составляет менее 3 мс.
Ниже приведен сигнал, снятый с помощью логического анализатора. Реальная задержка составляет около 2,82 мс. Это уже пик при работе операционной системы. Ведь операционная система требует переключения задач.
Затем протестируйте большой объем данных. Здесь используйте помощник по отладке последовательного порта, чтобы отправлять 100 байтов данных каждые 1 мс для тестирования.
Здесь мы используем помощник по отладке последовательного порта для отправки 1000 байт данных каждые 1 мс для тестирования. Обратите внимание, что, поскольку скорость передачи данных составляет 9600 бод, помощнику по отладке требуется более 1 с, чтобы завершить отправку 1000 байт, поэтому мы рассмотрим. карта.
Здесь вы можете изменить размер кэша последовательного порта.
4.Получить данные
При извлечении данных вы можете извлечь любое количество len в конце, что позволяет очень удобно оценивать и обрабатывать липкие и подупаковочные материалы.
RS485 (независимо от того, использует ли пользователь устройство RS485, это также рекомендуется прочитать)
1. CAN и RS485 текущего устройства используют общие контакты. Установите флаг включения CAN на 0 во время тестирования.
2. Программа также возвращает все, что получает.
2. Сюда же подключаем модуль отладки для тестирования.
3. Если во время тестирования запланированный интервал отправки слишком короткий, вы обнаружите, что ответ искажен. На самом деле это связано с высокой эффективностью обработки программы.
Пока обнаружено, что в кэше есть полученные данные, они будут отправлены. Данные по-прежнему поступают по линии 485, поэтому они будут отправлены сюда, поэтому данные в линии 485 испорчены.
Чтобы решить эту проблему, я немного обработал нижний слой. Пользователи могут дополнить свое мнение && NotifyValue<=1 (NotifyValue<=1означает, когдапоследовательный порт Приближается прерывание простоя,Нижний уровень получил один кадр данных)
Время обнаружения простоя также можно изменить. На этот раз определяется количество передаваемых 11 бит.
Теперь скорость передачи данных составляет 9600, что составляет 1/9600≈0,1мс. Передается 1 бит, написанный ниже, это означает, что линия UART превышает 2*0,1*11≈2,2 мс и данные не принимаются. считается, что был получен один кадр данных, генерируется прерывание простоя.
Конечно, время теста не может быть слишком коротким, ведь после передачи данных устройство их получает, а затем возвращает.
Предполагая следующую передачу 10 байтов данных, отправка занимает около 11 мс, а пересылка — 11 мс, поэтому время передачи в любом случае фиксировано и составляет 22 мс.
Программная обработка данных занимает всего 2,2+2,8= 5 мс (обнаружение простоя занимает 2,2 мс, системная обработка занимает около 2,8 мс)
Передача всех данных туда и обратно в идеальном состоянии занимает около 27 мс. Если регулярно отправлять 10 байт данных, это точно не получится. Это появится при одновременной отправке и получении. появятся искаженные символы;
Конечно, идеальное состояние сложно, ведь система работает, поэтому добавляем еще 5 или 6 мс;
намекать: в реальных приложениях каждый хост-компьютер (modbus и т. д. все это знают) автоматически увеличивает время передачи своих данных, чтобы обеспечить стабильность передачи данных, здесь вам просто нужно это понять;
Тест CAN
1. CAN и RS485 текущего устройства имеют общие контакты. При тестировании установите флаг включения RS485 на 0, а флаг включения CAN на 1.
Вы можете изменить скорость передачи данных в соответствии с вашим собственным устройством CAN, текущая настройка — 250 КБ.
2. По умолчанию приведен пример циклической отправки данных CAN.
3. Сюда для тестирования подключается тестер CAN.
4. Откуда CAN получает данные
Тест Wi-Fi
1. Пользователи могут настраивать в соответствии со своими потребностями.
2. Если вам нужно получить статус подключенного маршрутизатора, информацию о подключенном маршрутизаторе или назначенный вами IP-адрес и т. д.
намекать
Модуль по умолчанию может создать максимум 10 сокетов (tcp-сервер + tcp-клиент + udp). Если кучи достаточно, вы можете увеличить ее в зависимости от вашей ситуации;
esp_get_free_heap_size() может получить оставшийся размер кучи в реальном времени (в байтах)
Тестовое устройство в качестве TCP-сервера
1. В настоящее время испытательное оборудование может открывать два TCP-сервера, и каждый сервер может поддерживать 8 клиентов.
Примечание. Из-за указанного выше ограничения в 10 сокетов два TCP-сервера уже заняли два сокета; для двух TCP-серверов еще выделено 8 сокетов;
Номер первого порта прослушивания — 8888, а номер второго порта прослушивания — 8889.
2. Если необходимо несколько каналов, включите их. Обратите внимание, что необходимо настроить разные порты прослушивания.
Примечание. На данный момент написаны только соответствующие функции обратного вызова для двусторонних серверов. Если необходимо несколько путей, их необходимо добавить снова.
Вот пример: возврат данных после получения данных.
3. Существует два метода тестирования.
Одним из них является точка доступа, через которую наш компьютер подключается к устройству. IP-адрес самого устройства по умолчанию: 192.168.4.1.
Другой способ — подключить устройство и наш компьютер к одному маршрутизатору, а IP-адрес устройства назначается маршрутизатором. Опытные пользователи также могут установить статический IP-адрес устройства ниже;
Я подключусь напрямую к точке доступа устройства для тестирования. Если клиент подключается к маршрутизатору для тестирования локальной сети, метод подключения к маршрутизатору также будет описан ниже.
4. Загрузите программу на устройство, а затем откройте помощник по мониторингу последовательного порта.
Если пользователь использует для тестирования маршрутизатор, здесь будет напечатан IP-адрес устройства.
5. Откройте помощник по сетевой отладке.
Моя сторона — это точка доступа подключенного устройства, поэтому указанный IP-адрес — это IP-адрес самого устройства.
Если пользователь использует маршрутизатор для тестирования, введите IP-адрес, назначенный указанным выше устройством, после подключения к маршрутизатору.
6. Вы можете протестировать тренировку вращения, отправив 2000–3000 байт данных за 1 мс, чтобы проверить скорость обработки устройства.
7. Создайте еще несколько клиентов; каждый клиент обучен отправлять 2000–3000 байт данных за 1 мс для проверки высокого уровня параллелизма устройства.
Тестовое устройство как TCP-клиент
1. Для удобства тестирования подключим устройство к роутеру
2. Я использую помощник по отладке для создания сервера.
3. Измените адрес сервера и номер порта в соответствии с вашими настройками. Адрес моего компьютера — 192.168.168.1, а номер порта сервера — 6000.
Обратите внимание: если вам нужно открыть 10 каналов, оно ограничено максимальными 10 сокетами, указанными выше, поэтому не забудьте отключить функцию TCP-сервера, указанную выше. Вы можете сначала попробовать открыть 8 каналов.
4. После компиляции и скачивания помощник отобразит ссылку.
Затем вы можете проверить это за 1 мс.
5. Программа также возвращается после получения данных.
пример GPIO
1. Кнопка сброса обнаружения записана в основной функции.