Простой протокол для шины CAN

Ответить
dstrufanov
Сержант
Сообщения: 272
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 68 раз

Простой протокол для шины CAN

Сообщение dstrufanov »

В процессе написания на ассемблере AVR блоков модбас рту для atmega328, а в последствии разработки своего более простого протокола, захотелось реализовать этот протокол на физике CAN, что и было сделано. Протокол достаточно компактный (1444 байта), быстрый (обмен идет на скорости 1Мбит/с) и позволяет реализовать быстрый доступ к шине. Описание протокола:
Протокол BL 1.docx
Рабочий макет, приемо-передатчики использованы tja1051:
IMG_20260120_144102.jpg
Кадр передачи одной переменной:
IMG_20260120_144126.jpg
Для примера 2 проекта, каждый из которых прошивается в свою нанку, один с адресом на шине №1 передает переменную №22, второй с адресом на шине №21 передает переменную №55:
BL_#1.flp
BL_#21.flp
Блоки протокола, входящей и исходящей переменной (номера задаются параметром пользователя):
BL_(Code_-_Basic).ubi
VI_(Code_-_Basic).ubi
VO_(Code_-_Basic).ubi
Для работы блоков нужно добавить библиотечную папку C:\Program Files (x86)\FLProg\ideV8\portable\sketchbook\libraries\BlackLogic с файлами:
BlackLogic.h
BUS_CAPTURE.txt
Файл BUS_CAPTURE.txt нужно переписать с расширением .S (большое)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
dstrufanov
Сержант
Сообщения: 272
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 68 раз

Re: Простой протокол для шины CAN

Сообщение dstrufanov »

Усложнил задачу, подключил на шину 4 контроллера и увеличил частоту посылок, терминальные RC-цепочки оставил только на двух приемопередатчиках. Попались 2 приемопередатчика CAN с неподключенным полигоном GND:
IMG_20260209_104340_edit_58805708390430.jpg
Работает шина, не виснет даже при горячем подключении
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Engineer200
Рядовой
Сообщения: 53
Зарегистрирован: 19 дек 2025, 06:16
Имя: Александр
Благодарил (а): 18 раз
Поблагодарили: 5 раз

Re: Простой протокол для шины CAN

Сообщение Engineer200 »

Руки золотые.
Вот бы кто Bus77 завёл в FLProg...
Люблю делать то, что потом само работает.
dstrufanov
Сержант
Сообщения: 272
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 68 раз

Re: Простой протокол для шины CAN

Сообщение dstrufanov »

Engineer200 писал(а): 09 фев 2026, 12:55 Руки золотые.
Вот бы кто Bus77 завёл в FLProg...
Спасибо! А я даже не слышал о нем. Сейчас почитал - он универсальный и с шифрованием, а значит тяжелый. Здесь же была задача сделать простой протокол в основном для мег48-328
poavel72
Рядовой
Сообщения: 55
Зарегистрирован: 25 ноя 2015, 10:21
Благодарил (а): 10 раз
Поблагодарили: 2 раза

Re: Простой протокол для шины CAN

Сообщение poavel72 »

значение числа больше чем 255 можно как то передать?
Engineer200
Рядовой
Сообщения: 53
Зарегистрирован: 19 дек 2025, 06:16
Имя: Александр
Благодарил (а): 18 раз
Поблагодарили: 5 раз

Re: Простой протокол для шины CAN

Сообщение Engineer200 »

dstrufanov писал(а): 09 фев 2026, 13:01
Engineer200 писал(а): 09 фев 2026, 12:55 Руки золотые.
Вот бы кто Bus77 завёл в FLProg...
Спасибо! А я даже не слышал о нем. Сейчас почитал - он универсальный и с шифрованием, а значит тяжелый. Здесь же была задача сделать простой протокол в основном для мег48-328
Да, он прям крутой. Шифрование скорее заведено в функции или методы, как там правильно. Может не надо будет с нуля программить. Тестовая сборка делалась на STM32.Сильно отличается от ESP32? Написано понятными словами... Но моих мозгов не хватает объять API. Только пользоваться блоками. Вот бы кто-нибудь... :)
Люблю делать то, что потом само работает.
dstrufanov
Сержант
Сообщения: 272
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 68 раз

Re: Простой протокол для шины CAN

Сообщение dstrufanov »

poavel72 писал(а): 10 фев 2026, 09:24 значение числа больше чем 255 можно как то передать?
Конечно, разбиваете штатными блоками FLProg на байтовые переменные и передаете, а на другой стороне опять собираете
dstrufanov
Сержант
Сообщения: 272
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 68 раз

Re: Простой протокол для шины CAN

Сообщение dstrufanov »

Потихоньку рождается модульный контроллер с этой шиной.
На монтажную панель прикручиваются базы. Слева база с блоком питания, драйвером RS-485 и входами/выходами, справа база с входами/выходами. Входы устанавливаются либо цифровые (24В), либо аналоговые (0-10В или 4-20мА), выходы либо цифровые, либо ШИМ - открытый коллектор до 1А 80В (bcx56):
IMG_20260428_091026_edit_75462765101107.jpg
Образовавшееся кроссовое поле на клеммниках разводится, после чего устанавливаются модули контроллеров на atmega48-328pb. Входы/выходы контроллеров универсальные, программируются модули через usbasp. Каждый модуль отвязан от общей шины через изоляторы ca-is3641:
IMG_20260428_092602_edit_76009251512409.jpg
IMG_20260428_091128_edit_75494239498075.jpg
В результате получается законченный модульный прибор со скрытой разводкой. Не напечатал еще крышку блока питания и модуль справа, через который будут выходить провода. Предполагается, что в одной линейке может быть 8 модулей (ограничено мощностью БП 3Вт), для увеличения количества модулей монтируются несколько линеек, которые соединяются CANH, CANL, GND. Позже сделаю модуль с Ethernet на W5500
У вас нет необходимых прав для просмотра вложений в этом сообщении.
dstrufanov
Сержант
Сообщения: 272
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 68 раз

Re: Простой протокол для шины CAN

Сообщение dstrufanov »

Шина can работает на USART0, а для обмена с дисплеем у меня используется USART1 atmega328 и с этим оказалась проблема. FLProg этот последовательный интерфейс для atmega328 не поддерживает, софтовый интерфейс в версии 8.2.3 конфликтует с моими блоками, а в версиях 9 он вообще еще в работе. Пока получилось подключить сенсорную панель со скадой, но и тут танцы с бубном на каждом шагу
Screenshot_20260528_094213.jpg
HnVideoEditor_2026_05_28_092955599.mp4
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «CAN»

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

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