Работа с протоколом Lawicel (CanHacker) по Wi-Fi
Первым шагом в освоении CAN-шины по Wi-Fi стал протокол связи Lawicel, который используют многие популярные программы, например CanHacker. Сам по себе протокол простой и находится в открытом доступе.
Напомню, что аппаратная часть для общения по CAN-шине
описывалась ранее и содержит
ESP8266+MCP2515+
SN65HVD230D. Пришлось
повозиться с регистрами MCP2515 для нормального использования совместно с ESP по SPI.
Эксперимент проводился на блоке М74 (21126-1411020-67) CAN. Скорость 500
Кбит/с.
В ходе теста выяснилось
максимальное количество пакетов, в предложенной мной структуре, которое составило 200 п/с. Это говорит о
времени суммарной задержки в 5 мс (при условии пинга в 1 мс).
Для режима работы без маски, когда выполняется отправка каждого принятого пакета по CAN, это много и MCP2515 регулярно выдает ошибку по "несбросу прерывания". Связано это с тем, что в момент отправки по TCP приходит следующий пакет. В итоге некоторые пакеты теряются. Выход есть — организовать промежуточный буфер, в который по прерыванию складывать пакеты и отправлять их пачками. В настоящий момент в этом необходимости не вижу т.к. при поиске каких-то данных ставится маска пакета и отлавливаются только нужные данные, в таком режиме пакеты успевают отправляться без потерь. Демонстрацию работы CanHacker'а по Wi-Fi на блоке М74 можно посмотреть в видео: