Jump to content

    

геннадий75

Участник
  • Content Count

    16
  • Joined

  • Last visited

Community Reputation

0 Обычный

About геннадий75

  • Rank
    Участник
  • Birthday 09/23/1975

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

968 profile views
  1. Насчёт двух моторов в одной машине тоже не видел . А два ,не зависимых друг от друга блока управления двигателя с 2000 года, притеняются в авто . Причём он может быть как master так и scave и иметь разные ID .
  2. Почему , считают что в CAN, все устройства должны постоянно стучать в шину . Можно назначить одно устройство мастером , и оно будет периодически отправлять сообщения например с ID 0x01 , и первый байт данных 01 затем 02 потом 03 итак далее в зависимости от количества узлов . Остальные узлы настроены на приём IDx01 , и соответственно принимают все запросы мастера . После приёма сравнивают первый байт данных со своим уникальным номером , и если он совпадает ,один узел отправляет одно сообщение мастеру с другим ID например 02 и любых 8 байт данных о своём состояний . Мастер принимает эти данные , и решает продолжать обмен с этим узлом или перейти к следующему .
  3. В CDC нужны минимум 4 точки .Две нулевых по ним идёт служебная информация . И две рабочие, одна для приёма и одна для передачи данных.
  4. Когда мониторишь CAN видно битые сообщения , без подтверждения , обрывающиеся на пол пути . Но при этом никогда нет шести нулей подряд . Если какой то узел решил что его обидели , или нет подтверждения его посылки , то он может выставить шесть нулей подряд остановив шину и попытаться опять отправить запрос . Но это критическая ситуация приводящая через несколько таких попыток к остановки обмена другими узлами .
  5. Семь и более единиц подряд окончание пакета . Нулевой бит начало пакета ,дальше не забываем после 5 нулей или единиц про врезки потом подсчёт CRC и бит подтверждения приёма другими узлами.
  6. Как то у вас всё просто . При добавлений двух байт в подсчёт CRC добавляется не одна операция XOR с полиномом а 16 . И нули никогда не получишь . Проверяется легко в онлайн калькуляторах . https://crccalc.com
  7. Последний два байта также участвуют в подсчёте CRC , соответственно 0х0000 не получишь.
  8. 1E1 и есть 11 битный идентификатор . 0х не важно.
  9. Если отправляешь 65 байт должно дойти именно 65 , но в два захода сначала первый пакет 64 байта, затем второй 1 байт . Нулевой или не полный пакет (менее 64 байт ) говорит об окончаний запроса . Если сделаешь размер точки 8 байт , то уйдёт 8 пакетов по 8 байт и 9 пакет 1 байт.
  10. Если интересна работа CAN на физическом уровне , видеть как идёт подсчёт CRC , бит подтверждения , битые сообщения . Собираешь адаптер на PIC18f2550 или PIC24FJ64GB002 . CAN.rar
  11. Многие CAN адаптеры не увидев сигнал подтверждения ACK выставляют на шину шесть нулей , типа перезапуск шины . И на многих машинах это приводит к отключению обмена.
  12. Программа считывает весь идущий поток данных, и уже его пытается собрать в CAN сообщения. Даже одиночный ноль на шине я увижу, также видно битые сообщения , видно правильно посчитан CRC если неверно программа покажет правильный, видно подтвердили другие блоки сообщение или нет ,сколько единиц между пакетами, также если приходят одинаковые CAN сообщения в правом окне программы не появляются . В правом окне видны только новые CAN сообщения, именно это помогало выдернуть из потока нужное CAN сообщение.
  13. Также нужно было увидеть весь поток CAN сообщений (в том числе битые сообщения,шесть нулей на шине) написал программу, которая сохраняет весь поток на диске и потом его можно проанализировать. CAN.rar
  14. Перегонял данные в ПК на скоростях 1 мбод ,2 мбод ,4 мбод с помощью переходника USB-COM собраном на PL2303HX.Для этого в своё время, писалась терминальная программа, для обработки больших объёмов данных.
  15. В дескрипторе задан размер нулевой точки 64 байта.Поэтому на запрос setup GET_DESCRIPTOR( 80 06 00 01 00 00 12 00 )data0 отправляй сразу 18 байт дескриптора data1 и жди следующий запрос.