1 (02-02-2026 13:17:14 отредактировано Roll4Repair)

Тема: Управление компрессором по CAN

Доброго времени суток! Пытаюсь с 'Canny 7.2 MGX RS' управлять автомобильным компрессором. Для начала хотелось бы по кнопке запустить компрессор на минимальных оборотах, а потом выключить.

Сделал программу в соответствии с руководством пользователя (прикладываю скриншоты и проект), в которой шлю сообщение на компрессор согласно документации (прикладываю скриншоты с вырезками из документации).
Меня интересуют только три обведённых красным параметра: Target Speed of Battery Compressor (скорость), Battery Compressor Enable (включение-выключение компрессора), Input Power Limitation of Battery Compressor (ограничение по мощности); по словам изготовителя компрессора, остальные параметры для пуска не нужны .

Нажимаю кнопку с фиксацией на входе №9 контроллера, но компрессор никак не реагирует (при этом светодиод, которым я дублирую отправления сообщений CAN начинает мигать, как положено).

Формат фрейма у компрессора указан как Extended Can, но, как мне сказал изготовитель компрессора, скорость обмена равна 500kb/sec, и интересующее меня сообщение имеет длину в 8 байт, поэтому работа с интерфейсом CAN 2.0 контроллера должна быть возможна.

Линия CAN-High/CAN-Low между контроллером и компрессором вроде в порядке; когда делаю мониторинг при помощи 'CAN/LIN монитор' в режиме "Listen only", получается снимать сообщение с корректной информацией по состоянию компрессора (например, текущее напряжение на нём). Однако почему-то эти данные не обновляются постоянно, т.е. если перестаю запитывать компрессор, то в мониторе соответствующий байт с информацией обновляется только если я перезапускаю контроллер по питанию и включаю монитор заново. Также во время работы монитора "Can/Lin state" внизу постоянно меняется с "OK" на "OVF" и обратно.

Буду очень благодарен за помощь, т.к. в FBD уже всё перепробовал.

Вложений в сообщении

Иконка вложения Compress_4.cfd 3.62 кб, скачивался 7 раз, последний раз 2026-02-02 

Иконка вложения FBD.JPG 219.45 кб, скачивался 1 раз, последний раз 2026-02-02 

Иконка вложения Компрессор.jpg 278.82 кб, файл ещё не скачивался. 

2

Re: Управление компрессором по CAN

Вопросы в подобной формулировке следует задавать в другом разделе форума.
Перед добавлением нового вопроса на форуме прошу еще раз прочесть сообщение по ссылке в последнем пункте принятых вами при регистрации на форуме Правил.

Тем не менее, на первый раз:

1. При применении кнопок всегда добавляйте защиту от дребезга: https://canny.ru/docs/tips_tricks/prote … hattering/

2. Запись ненулевого значения  в Регистр начала передачи CAN в общем случае должна иметь форму единичного импульса, см. Рисунок 4: Пример №1 функциональной диаграммы отправки данных в шину CAN0. здесь: https://canny.ru/docs/c72mgx/can/#sec-- … an-primery
Переполнения в шине у вас возникают именно потому, что вы держите в этом регистре единицу по 250мс подряд.

3. На скриншоте документации видно требование к периоду отправки сообщений 100 мс, а у вас, по замыслу (не по реализации) 500 мс.


Советы по разработке: https://canny.ru/docs/tips_tricks/solut … ents_tips/

3 (02-02-2026 23:05:22 отредактировано Roll4Repair)

Re: Управление компрессором по CAN

Константин, CANNY пишет:

Вопросы в подобной формулировке следует задавать в другом разделе форума.

Не совсем понял, что в треде нарушает правила, слишком много вопросов для одного треда? Я в первый раз работаю с CAN-протоколом и искал тред "для новичков", но к сожалению, не нашёл. Если укажете подходящий раздел форума, то могу продолжить обсуждение там.

В любом случае, спасибо, что не потёрли тред, и за ответы; попробую изменить частоту отправки сообщений, сделаю через 'фронт' и посмотрю, что из этого выйдет.

4

Re: Управление компрессором по CAN

Формулировка, похоже, получилась не вполне деликатной, прошу прощения. Разумеется, о нарушении правил форума речи нет.
Правила упоминались лишь по причине наличия в них этой ссылки: https://forum.canny.ru/viewtopic.php?pid=9810#p9810

5 (04-02-2026 14:10:34 отредактировано Roll4Repair)

Re: Управление компрессором по CAN

Понял, спасибо.

Попробовал поменять на отсылку в виде импульса 1 раз в 100мс; на всякий случай добавил и защиту от дребезга на кнопке, и в сообщении шлю максимально разрешённое значение по ограничению мощности, но это не помогло - компрессор стоит. Прикрепил файл проекта и скриншот.

1). Я ведь правильно оформил формат сообщения на отправку, в 24-ый бит (3-ий байт) придёт "единица"? Это как раз включение компрессора.
2). Насколько я понимаю, в сети CAN нет понятия мастера-слейва, поэтому настраивать в этом плане ничего не нужно?

Вложений в сообщении

Иконка вложения Compress_5.cfd 5.05 кб, скачивался 6 раз, последний раз 2026-02-04 

Иконка вложения FBD_2.JPG 275.58 кб, скачивался 2 раз, последний раз 2026-02-04 

6

Re: Управление компрессором по CAN

Возможно, вашему компрессору необходимы и другие данные/сообщения. Возможно, стоит сначала изучить, используя например CAN монитор, обмен данными между компрессором и его штатным управляющим устройством. Либо запросить более подробную информацию у производителя. Либо поискать форум/группу/сообщество, в котором это оборудование обсуждается. См.сообщение ссылку на которое я давал выше.

1. Это смотря с какого бита считать.
2. На нижнем уровне CAN работает в режиме multimaster. На верхнем уровне никто не мешает организовать и master-slave, как это сделано, например, в UDS. Подробнее о CAN см. BOSCH CAN 2.0 Specification