MCP2515 CAN Bus Модуль

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

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

#41

Сообщение ElectroMechaniC » 04.04.2018{, 12:35}

Sancho, ГОДИТСЯ!

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

Аватара пользователя
diman27
Сержант
Сообщения: 235
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 2
Откуда: Белово

MCP2515 CAN Bus Модуль

#42

Сообщение diman27 » 27.08.2018{, 17:58}

Привет всем. Может кто нибудь показать, на примере, как производить чтение шины. Например мне надо прочитать вот эти данные: HV Battery Temp 1,"HV Batt T1","21CF","(256 * 9 / 500) * K + (9 / 500) * L - 557.824","-558","622","F","7E3" Это из pid для торка.

autoelectronica
Рядовой
Сообщения: 41
Зарегистрирован: 18.10.2016{, 21:46}
Репутация: 2
Откуда: Москва

MCP2515 CAN Bus Модуль

#43

Сообщение autoelectronica » 06.10.2018{, 23:26}

Вопрос вот какой, мы получаем информацию с блока в формате hex ? А в каком формате должны записать в блоке сравнения ? Ну например адрес 130, id0-f0, id1-ff.
Для скачивания вложений Вы должны быть зарегистрированы.

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

MCP2515 CAN Bus Модуль

#44

Сообщение Sancho » 07.10.2018{, 08:09}

autoelectronica писал(а):
06.10.2018{, 23:26}
мы получаем информацию с блока в формате hex ? А в каком формате должны записать в блоке сравнения ?
Все, абсолютно все данные, хранятся в виде нулей и единиц. Как мы их интерпретируем - наше желание. Можем сказать, что это чар, байт, и т.д. Поэтому, при сравнении должны соблюсти только размерность и привести к равнозначному типу- чтобы у компилятора крыша не поехала, сравнивая "ты чего" и 543. Поэтому, положив данные вида hex 0хСА в байтовые ячейки сравнивайте с 0-255, 0хСА7А с 0-65535( -32768 - 32767) и т.д. Будут сравниваться биты данных( 0,1) - вуаля.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

autoelectronica
Рядовой
Сообщения: 41
Зарегистрирован: 18.10.2016{, 21:46}
Репутация: 2
Откуда: Москва

MCP2515 CAN Bus Модуль

#45

Сообщение autoelectronica » 07.10.2018{, 23:24}

Александр, спасибо за быстрый ответ. Вы не могли бы показать на примере в прикрепленном файле с адресом 130, id0-f0, id1-ff.

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

MCP2515 CAN Bus Модуль

#46

Сообщение Sancho » 08.10.2018{, 08:57}

autoelectronica, Берёшь каркулятор Win - включаешь режим "программист"( сверху - "Вид"), нажимаешь Нех, вводишь ожидаемое значение, нажимаешь Dec - получаешь его десятичное значение, вводишь в программе типом байт на блоке сравнения.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

autoelectronica
Рядовой
Сообщения: 41
Зарегистрирован: 18.10.2016{, 21:46}
Репутация: 2
Откуда: Москва

MCP2515 CAN Bus Модуль

#47

Сообщение autoelectronica » 08.10.2018{, 21:41}

Sancho, еще раз спасибо за помощь .

Отправлено спустя 31 минуту 42 секунды:
А что делать если адрес 130 при переводе в Dec превышает предел 255 ?

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

MCP2515 CAN Bus Модуль

#48

Сообщение Sancho » 09.10.2018{, 08:47}

autoelectronica, Адреса идут изначально в integer (dec) :)
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

autoelectronica
Рядовой
Сообщения: 41
Зарегистрирован: 18.10.2016{, 21:46}
Репутация: 2
Откуда: Москва

MCP2515 CAN Bus Модуль

#49

Сообщение autoelectronica » 09.10.2018{, 22:59}

Аааааа :shok:

Turb0user
Рядовой
Сообщения: 44
Зарегистрирован: 20.03.2017{, 19:33}
Репутация: 7
Имя: Евгений

MCP2515 CAN Bus Модуль

#50

Сообщение Turb0user » 30.01.2019{, 09:34}

autoelectronica писал(а):
06.10.2018{, 23:26}
Вопрос вот какой, мы получаем информацию с блока в формате hex ? А в каком формате должны записать в блоке сравнения ? Ну например адрес 130, id0-f0, id1-ff.
Здравствуйте
autoelectronica а что это за блок такой интересный (можно выбрать кварц-круто) не редактируется, не добавляется в библиотеку?
Что такое выход New Data?
Что такое выход Size?

УПС сорри. это стандартный блок

Turb0user
Рядовой
Сообщения: 44
Зарегистрирован: 20.03.2017{, 19:33}
Репутация: 7
Имя: Евгений

MCP2515 CAN Bus Модуль

#51

Сообщение Turb0user » 02.02.2019{, 11:36}

Привет Sancho.
Помоги пожалуйста сделать блок для самодельного CanHackre адаптера. для того что бы к нему можно было подключить блюус модуль или WIFI. Проблема в том что если подключить HC-05 на прямую к TX RX ардуино то устройство не работает. Думаю потому что надо подкючать не железному Serial а к Softsrial. Сам к коде слабо разбираюсь, пробовал в FlProg сделать програмный ком порт и вставить код в оригинального скетча, но не заработало. В оригинале же работает отлично связка Arduino Uno и шилд МСР-2515.
Вот оригинал кода CanHackre адаптера.

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

#include <can.h>
#include <mcp2515.h>

#include <CanHacker.h>
#include <CanHackerLineReader.h>
#include <lib.h>

#include <SPI.h>
#include <SoftwareSerial.h>

const int SPI_CS_PIN = 10;
const int INT_PIN = 2;

const int SS_RX_PIN = 3;
const int SS_TX_PIN = 4;

CanHackerLineReader *lineReader = NULL;
CanHacker *canHacker = NULL;

SoftwareSerial softwareSerial(SS_RX_PIN, SS_TX_PIN);

void setup() {
    Serial.begin(115200);
    while (!Serial);
    SPI.begin();
    softwareSerial.begin(115200);

    Stream *interfaceStream = &Serial;
    Stream *debugStream = &softwareSerial;
    
    
    canHacker = new CanHacker(interfaceStream, debugStream, SPI_CS_PIN);
    //canHacker->enableLoopback(); // uncomment this for loopback
    lineReader = new CanHackerLineReader(canHacker);
    
    pinMode(INT_PIN, INPUT);
}

void loop() {
    CanHacker::ERROR error;
  
    if (digitalRead(INT_PIN) == LOW) {
        error = canHacker->processInterrupt();
        handleError(error);
    }

    error = lineReader->process();
    handleError(error);
}

void handleError(const CanHacker::ERROR error) {

    switch (error) {
        case CanHacker::ERROR_OK:
        case CanHacker::ERROR_UNKNOWN_COMMAND:
        case CanHacker::ERROR_NOT_CONNECTED:
        case CanHacker::ERROR_MCP2515_ERRIF:
        case CanHacker::ERROR_INVALID_COMMAND:
            return;

        default:
            break;
    }
  
    softwareSerial.print("Failure (code ");
    softwareSerial.print((int)error);
    softwareSerial.println(")");

    digitalWrite(SPI_CS_PIN, HIGH);
    pinMode(LED_BUILTIN, OUTPUT);
  
    while (1) {
        int c = (int)error;
        for (int i=0; i<c; i++) {
            digitalWrite(LED_BUILTIN, HIGH);
            delay(500);
            digitalWrite(LED_BUILTIN, LOW);
            delay(500);
        }
        
        delay(2000);
    } ;
}
Надеюсь для знающего человека это не составит труда

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

MCP2515 CAN Bus Модуль

#52

Сообщение Sancho » 02.02.2019{, 13:53}

Turb0user писал(а):
02.02.2019{, 11:36}
В оригинале же работает отлично связка Arduino Uno и шилд МСР-2515.
Turb0user писал(а):
02.02.2019{, 11:36}
Stream *interfaceStream = &Serial;
Stream *debugStream = &softwareSerial;
Как я понимаю, Вы смотрите в мониторе порта Serial?
Значится данные туда поступают.
Подключите блютуз, в мониторе порта выберите вход с блютуз-модуля компа - должно тоже присутствовать.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Turb0user
Рядовой
Сообщения: 44
Зарегистрирован: 20.03.2017{, 19:33}
Репутация: 7
Имя: Евгений

MCP2515 CAN Bus Модуль

#53

Сообщение Turb0user » 02.02.2019{, 21:40}

Я видимо не точно выразился. При подключении ВТ к TX RX (pin 1,0) плата не стартует и не соединяется с CAN машины. Программа CanHacher пишет что интерфейс не доступен, после отключения ВТ все работает.

hard3d
Рядовой
Сообщения: 4
Зарегистрирован: 29.01.2018{, 00:11}
Репутация: 0
Имя: Виталий

MCP2515 CAN Bus Модуль

#54

Сообщение hard3d » 03.02.2019{, 02:13}

Всем привет. Для одного из моих проектов необходимо читать данные из шины CAN. Очень порадовало, что появился штатный блок на MCP2515. Вопрос в следующем:
Авто Chevrolet Cruze, хочу прочитать статус педали тормоза. В сети нашел ID пакета 10250040
программе поставил блоки таким образом
2019-02-03_02-08-05.png
При чтении COM-порта получаю такие сообщения
2019-02-03_02-10-10.png
Сообщения ни как не похожи на то, что мне нужно. Каким образом вычислить ID из полученного мусора?
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
benic
Сержант
Сообщения: 175
Зарегистрирован: 07.01.2018{, 13:47}
Репутация: 4

MCP2515 CAN Bus Модуль

#55

Сообщение benic » 03.02.2019{, 11:16}

Turb0user писал(а):
02.02.2019{, 21:40}
Я видимо не точно выразился. При подключении ВТ к TX RX (pin 1,0) плата не стартует и не соединяется с CAN машины. Программа CanHacher пишет что интерфейс не доступен, после отключения ВТ все работает.
:umnik:

https://www.drive2.ru/b/508723415402676325/

Turb0user
Рядовой
Сообщения: 44
Зарегистрирован: 20.03.2017{, 19:33}
Репутация: 7
Имя: Евгений

MCP2515 CAN Bus Модуль

#56

Сообщение Turb0user » 03.02.2019{, 18:05}

этот скетч как раз от туда. я хотел услышать что ВТ наверно надо на 3 и 4 пины подключать. правильно я понимаю?

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

const int SS_RX_PIN = 3;
const int SS_TX_PIN = 4;

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

SoftwareSerial softwareSerial(SS_RX_PIN, SS_TX_PIN);

Аватара пользователя
benic
Сержант
Сообщения: 175
Зарегистрирован: 07.01.2018{, 13:47}
Репутация: 4

MCP2515 CAN Bus Модуль

#57

Сообщение benic » 03.02.2019{, 19:18}

По всей видимости верно.
Если да, то вместо usb-to-com блютуз.
RX-TX местами попробуй поменять.
На его схеме штатно нарисовано.

Отправлено спустя 21 минуту 36 секунд:
Turb0user писал(а):
02.02.2019{, 11:36}
... В оригинале же работает отлично связка Arduino Uno и шилд МСР-2515...
Через что ?

Turb0user
Рядовой
Сообщения: 44
Зарегистрирован: 20.03.2017{, 19:33}
Репутация: 7
Имя: Евгений

MCP2515 CAN Bus Модуль

#58

Сообщение Turb0user » 14.02.2019{, 15:36}

Через USB и CanHackeer на РС

Аватара пользователя
benic
Сержант
Сообщения: 175
Зарегистрирован: 07.01.2018{, 13:47}
Репутация: 4

MCP2515 CAN Bus Модуль

#59

Сообщение benic » 14.02.2019{, 19:19}

Turb0user писал(а):
14.02.2019{, 15:36}
Через USB и CanHackeer на РС
https://www.mictronics.de/projects/usb-can-bus/

DmitriyL
Рядовой
Сообщения: 32
Зарегистрирован: 07.01.2017{, 11:24}
Репутация: 1
Откуда: Находка

MCP2515 CAN Bus Модуль

#60

Сообщение DmitriyL » 09.01.2020{, 18:24}

Добрый день. Кто-нибудь пробовал считывать данные о скорости и пройденном пути при помощи блоков FLProg? Пытаюсь разобраться с чтением и записью этих параметров в CAN-протоколе SAE J1939. Сразу возникли вопросы: есть, грубо говоря, адрес и данные под каждые значения. Но для чего служит выход “Size” - размер полученного пакета? Как и зачем его определять, если таблицы содержат как два параметра: адрес и данные?

Ответить

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