MCP2515 CAN Bus Модуль

Использование протоколов Modbus, SPI, I2c и прочих, проблемы и решения
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 54

MCP2515 CAN Bus Модуль

#21

Сообщение AVGN » 19.04.2017{, 13:36}

stapmoff, модуль пока жду. Железа нет проверить не могу.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 335
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 3

MCP2515 CAN Bus Модуль

#22

Сообщение stapmoff » 19.04.2017{, 13:44}

AVGN писал(а):Железа нет проверить не могу.
Просто я взял железяку под названием CAN-LOG она для переворачивания протоколов спец.техники в протокол понятный нашему оборудованию! Так вот в ней есть постоянная попылка статических данных в кан шину, я прочитал их и взял первую попавшеюся строку ID: 18FEC101 Data: EA 80 00 00 FF FF FF FF
Нааше оборудование определяет это как уровень топлива в баке, попытался сделать на дуине, не вышло оборудование данных не видит

Аватара пользователя
DrMario
Сержант
Сообщения: 246
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 29
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

MCP2515 CAN Bus Модуль

#23

Сообщение DrMario » 20.04.2017{, 09:08}

stapmoff писал(а):Попробывал этот проэкт, прием работает данные читаетБ только подскажите как переделать скейтч чтоб ID был 18FEC101 а данные вот такие к примеру EA 80 00 00 FF FF FF FF
Пока не приехал модуль, для меня эти данные не понятны, что такое ID: 18FEC101 ?
У любого устройства есть адрес, на который нужно отсылать запросы. Для CAN 11_500 выглядит примерно так:
Req:08 07 DF 02 01 00 FF FF FF FF FF
Ans:08 07 E8 06 41 00 90 07 E0 11 00

Расшифровывается так:
1 строка (отправляемые данные)
7DF - запрос по адресу (в данном случае общий протокол)
02 - количество отправляемых байт
01 00 - непосредственно данные (общий протокол, OBD-II PIDs (0-20))
FF FF FF FF FF - заполнение пустоты

2 строка (принимаемые данные)
7E8 - физический адрес ЭБУ
06 - кол-во байт данных в строке
41 - зеркальный байт + 40
00 - зеркальный байт
90 07 E0 11 - непосредственно данные о поддерживаемых PIDs

после определение поддерживаемых параметров (сравнив ответ с таблицей) можно делать запросы непосредственно самих параметров.
К примеру запрос температуры ОЖ будет таким:

Req:08 07 DF 02 01 05 FF FF FF FF FF
Ans:08 07 E8 03 41 05 28 00 00 00 00

7E8 - физический адрес ЭБУ
03 - кол-во байт данных в строке
41 05 - зеркальные байты команды запроса (01 05)
28 - непосредственно байт информации о температуре ОЖ
Подставив 0x28 в формулу расчета температуры (A-40), получаем результат 0 °C
Вот как то так
Последний раз редактировалось DrMario 20.04.2017{, 10:46}, всего редактировалось 1 раз.

omich66
Рядовой
Сообщения: 33
Зарегистрирован: 17.12.2015{, 19:37}
Репутация: 0

MCP2515 CAN Bus Модуль

#24

Сообщение omich66 » 20.04.2017{, 15:51}

DrMario писал(а):для меня эти данные не понятны, что такое ID: 18FEC101 ?
Посмотрите здесь п. 10.5.3 29-битные заголовки сообщений CAN

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 335
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 3

MCP2515 CAN Bus Модуль

#25

Сообщение stapmoff » 20.04.2017{, 19:30}

DrMario писал(а):что такое ID: 18FEC101 ?
Это выдает сам модуль при чтении данных из устройства которое их шлет
Последний раз редактировалось stapmoff 20.04.2017{, 19:30}, всего редактировалось 1 раз.

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

MCP2515 CAN Bus Модуль

#26

Сообщение ElectroMechaniC » 19.10.2017{, 08:25}

Вопрос к 
support писал(а):Ребята, у меня пришли такие платки, к следующей версии постараюсь сделать блоки.
Не подскажете, платки пришли? И скиньте ссылочку на блок готовый? А то уже версий с апреля вышло много, а блока всё нет и нет!!!!
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

MCP2515 CAN Bus Модуль

#27

Сообщение ElectroMechaniC » 03.03.2018{, 20:03}

Что то тема заглохла? Кто то сможет блок запилить для MCP 2515?
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

Помогите по выводу информации

#28

Сообщение ElectroMechaniC » 03.04.2018{, 17:03}

Доброго времени. Есть код, который читает из кан-шины автомобиля данные и печатает их в ком-порт! Всё работает прекрасно,но по задумке нужно проводить операции над этими данными, а не тупо читать их. Вопрос в том, как правильно и вообще как их перевести в переменные... может не корректно выражаюсь...
Нужно в общем что бы содержимое буфера( это 8 байт информации) и ID можно было дальше в программе умножать, делить, конвертировать, перекладывать отправлять в ком порт....ну в общем сделать их работо-пригодными а не просто читать их в терминалке....Помогите...Братья...
Файлы проекта приложил...

Код: Выделить всё

if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming
    {
        CAN.readMsgBuf(&len, buf);    // read data,  len: data length, buf: data buf

        unsigned int canId = CAN.getCanId();
        
        Serial.print("ID: ");
        Serial.print(canId, HEX);

        for(int i = 0; i<len; i++)    // print the data
        {
            Serial.print(buf[i], HEX);
            Serial.print("\t");
        }
        Serial.println();
    }
Вложения
САN-BUS.flp
(246.69 КБ) 119 скачиваний
CAN_to_Serial_____________03.04_(CODE).ubi
(472.48 КБ) 101 скачивание
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Deuce
Сержант
Сообщения: 170
Зарегистрирован: 20.07.2017{, 17:35}
Репутация: 8

Помогите по выводу информации

#29

Сообщение Deuce » 03.04.2018{, 17:15}

ElectroMechaniC писал(а):
03.04.2018{, 17:03}
Нужно в общем что бы содержимое буфера( это 8 байт информации) и ID можно было дальше в программе умножать, делить, конвертировать, перекладывать отправлять в ком порт
А где это должно производиться и каким образом? В ардуине? или допускается использование компьютера для всех этих операций?
"У меня достаточно хлопот с собственными недостатками, чтобы ещё раздражаться из-за того, что Бог не позаботился равномерно распределить между людьми умственные способности" (Дейл Карнеги)

Аватара пользователя
nalnik
Майор
Сообщения: 1171
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 80
Откуда: Кисловодск
Имя: Александр

Помогите по выводу информации

#30

Сообщение nalnik » 03.04.2018{, 17:28}

Сколько можно?
НЕ потянет ардуино!
кУПИТЕ себе БК - их много, есть дешевле - дороже. Не экономьте и не экспериментируйте на своих и чужих жизнях.
Девять лет у меня работает (старый - голосом не говорит -- зато все в реальном времени на экране и по Русски - все коды и их описание).
Пример - не реклама.
Прочтите его возможность -- дешевле Вы даже при помощи всех форумов НЕ сделаете.
http://microline.ru/products/Car-Comput ... -CAN-Plus/
Я хочу быть добрее, но люди сами нарываются.

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

Помогите по выводу информации

#31

Сообщение ElectroMechaniC » 03.04.2018{, 19:19}

Deuce, нет нужно средствами ардуино!

Отправлено спустя 2 минуты 56 секунд:
nalnik, спасибо за ссылочку, обязательно прочту! Но я ведь задал вполне конкретный вопрос! Как вместо написания информации в порт запихнуть её в переменные!? Если не можете помочь, лучше не пишите...

Отправлено спустя 3 минуты 15 секунд:
nalnik, и что по вашему не сможет Atmega328, перевести 4е переменные из hex в dec и передать их по последовательному соединению? Если не знаете то не пишите...повторюсь.
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
Sancho
Полковник
Сообщения: 3714
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 503
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Помогите по выводу информации

#32

Сообщение Sancho » 03.04.2018{, 20:38}

Так Вы же их получили в виде массива (buf[]) и canId - делайте, что хотите.

Отправлено спустя 34 секунды:
сейчас гляну проекты...

Отправлено спустя 3 минуты 13 секунд:
Если я правильно понимаю, речь о блоке в САN-BUS.flp ?
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

Помогите по выводу информации

#33

Сообщение ElectroMechaniC » 03.04.2018{, 21:08}

Sancho, так точно! Об этом блоке! Мне бы из него грамотно хвостики(выходы)сделать! Дело в том что данные обновляются очень быстро и их много! Мне их прийдётся ещё как то сортировать и выборочно обрабатывать. Вот и нужно разделить их. Я сейчас выложу ссылочку на видео, что прилетает в ком порт. Для ясности! Так вот например в кадре с ID:318(прим), в 3м и 4м байтах лежит инфо об оборотах мне нужно сначала выделить ID из потока, затем прочитать то что записано в 3м и 4м байта этого ID, после сложить эти 2 байта и перевести в dec. Полученное число(обороты) отправить дальше по серийному порту уже в виде переменной! Но если с последними операциями я споконенько разберусь средствами flprog, то с выводами блока на "Cи" туго туго)))

Отправлено спустя 3 минуты 14 секунд:
вот!
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
Sancho
Полковник
Сообщения: 3714
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 503
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Помогите по выводу информации

#34

Сообщение Sancho » 03.04.2018{, 21:18}

Ок, если никто не поможет сегодня - завтра обязательно сделаю.
Сегодня пока всё - танки зовут...
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

Помогите по выводу информации

#35

Сообщение ElectroMechaniC » 04.04.2018{, 00:17}

Sancho, Спасибо! С надеждой буду ждать вестей!
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
Sancho
Полковник
Сообщения: 3714
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 503
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Помогите по выводу информации

#36

Сообщение Sancho » 04.04.2018{, 10:13}

ElectroMechaniC,
Проба 1
Вложения
САN-BUS_no_Serial_v1.flp
(281.21 КБ) 135 скачиваний
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

Помогите по выводу информации

#37

Сообщение ElectroMechaniC » 04.04.2018{, 10:18}

Sancho, пробую)

Отправлено спустя 33 минуты 27 секунд:
Sancho, все работает, огроменное спасибо! Для проверки повесил на выходы конвертацию в строки и отправил в порт. Получил начальный результат! ))) То есть всё верно. И я могу теперь управлять этим потоком.
Возник вопрос. Как лучше разделить данные? Если мне нужно считывать определённый ID и его буфер, мне нужно повесить на выход ID блок сравнения? И если пришел нужный ID - разрешить считывать байты? Так?
А можно сделать один общий блок для инициализации модуля, а к нему дочерние блоки, что бы считывать разные ID? так можно? что бы в дочерних стояли фильтры только на приём нужного ID?

Отправлено спустя 1 минуту 19 секунд:
Нужного ID и его буфера...
Вложения
САN-BUS_hex.flp
(380.51 КБ) 125 скачиваний
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
Sancho
Полковник
Сообщения: 3714
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 503
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Помогите по выводу информации

#38

Сообщение Sancho » 04.04.2018{, 10:56}

ElectroMechaniC писал(а):
04.04.2018{, 10:52}
А можно сделать один общий блок для инициализации модуля, а к нему дочерние блоки, что бы считывать разные ID? так можно? что бы в дочерних стояли фильтры только на приём нужного ID?
Это самое простое, что можно сделать!
Нужны номера ID и алгоритмы сборки данных из байтов по нему - наверняка разные!
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

Помогите по выводу информации

#39

Сообщение ElectroMechaniC » 04.04.2018{, 11:24}

Алгоритмы сборки, если я Вас правильно понял, для меня не составляют препятствий...
Главное что я могу понимать и читать нужную мне информацию... Мне для понимания нужно получать информацию в .hex и по ID и по байтам...
Приведу пример того что понятно мне...
К примеру: у нас получен (.hex)
ID= 0x217
и его буфер (.hex)
FF FF A0 00 00 00 00 38
Я знаю что 4й, 5й, 6й байты это скорость автомобиля
С этими данными я уже понимаю как работать.
Я эти байты сложу, переведу в десятичное число и умножу по формуле...
Соответственно мне нужно получать такой формат данных ID и его 8мь байт полезной информации, раздельно, как в вашем примере.... только таких блоков по задумке может быть несколько... Обороты, скорость, концевики дверей, всё что можно достать из кана...
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
Sancho
Полковник
Сообщения: 3714
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 503
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Помогите по выводу информации

#40

Сообщение Sancho » 04.04.2018{, 11:44}

Тогда так, пока особо мыслей других нет.
Просто пример
СпойлерПоказать
Пример Алгоритма V1.png
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Ответить

Вернуться в «Протоколы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей