Перейти к содержанию
    

Протокол CAN, его варианты и преобразование

Добрый день. 

С CAN столкнулся в первый раз.

Год назад выдали задание на сборку и программирование шкафа управления. В процессе работы надо забирать из стороннего оборудования сигнал по шине CAN и заводить в свой ПЛК М221.. Год назад не было никакой другой информации, поэтому купили конвертер I-7530A-MR из CAN в Modbus. Этот конвертер необходимо настраивать как со стороны CAN, так и со стороны Modbus. Причём настройка возможна только при наличии конвертора, а он уехал в собранному шкафу и доступ появился только сейчас.
Сейчас, находясь на объекте, узнаю, что внутри стороннего оборудования используется J1939, а для внешних подключений протокол Canopen. Судя по каталогу производителя конвертеров - для каждого варианта протокола свой отдельный конвертер, а не один для всех.

В итоге вопрос: CAN, Canopen, J1939 - это действительно разные протоколы и для работы с ними нужны разные устройства? Или как?
Вот фото протокола стороннего устройства:

FgdlmmuMCck.thumb.jpg.0ed5302a6fdde24fb058352433f35882.jpg


Протокол - понятен. Скорость - понятно. Размер 11 бит - понятно. CAN ID - не понятно. Точнее я не могу вбить такой адрес при настройке своего конвертора I-7530A-MR. 1Е1 могу, а 0х1Е1 нет. 0х важная составляющая или нет? Или проблема в неправильной модели конвертора?
И как потом этот адрес преобразуется в регистр Модбас?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, геннадий75 сказал:

1E1 и есть 11 битный идентификатор . 0х не важно.

Спасибо.

А по различиям протоколов можете пояснить? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CAN это physical layer и data link layer, а CAN OPEN, J1939 это application layer. В Вашем случае, полагаю, достаточно распатронить CAN ID и данные. 0х1Е1 это и есть CAN ID, 0х это стандартная форма написания чисел в 16-тиричном виде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, многие устройства, работающие на CanOpen, не требуют полноценного CanOpen. Все от настройки и желания разработчика зависит.

Скажем, у нас на крупных телескопах используются SEW'овские приводы, так там один раз настроили формат PDO, и работаем из самописного софта напрямую, без дурацкой canopen'овской обертки. А вот мне коллеги притащили компактные шаговики с приводами от pusirobot, так я с ними на уровне SDO работаю (лень было писать полноценный конфигуратор для PDO), сделал небольшую софтовую обертку, и при помощи самопального CAN<>USB все работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю, как в J1939, но в CANopen есть два варианта обмена данными. Они называются SDO и PDO.

SDO - это сложный вид обмена клиент-сервер с подтверждением и служит для доступа ко всем параметрам устройства, его настройки и т.д. Возможны многопакетные передачи и т.д.После настройки не нужен

PDO - это простой вид обмена, когда устройство просто шлет или принимает сообщения с определенным CAN-ID. Один пакет обычно содержит одну или несколько переменных. Многопакетных сообщений нет. Но его нужно предварительно настроить через SDO.

Судя по инструкции у вас уже все настроено и CAN-Id у вас уже есть - то есть можете принимать данные и использовать и для этого никакой CANopen не нужен.

НО! Есть один нюанс - устройство с CANopen должно перейти в Operational State, чтобы отсылать и принимать PDO. А делает оно только после получения NMT команды (CAN сообщения) от мастера. Иначе оно будет молчать. NMT команда содержит Node-ID этого устройства и тоже может быть сгененрирована вручную, но к сожалению я ее не помню.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

J1939 - тоже можно по CAN-ID с масками отлавливать. там ID 27 бит (extended или как там), но в ID там адреса приемника и передатчика, поэтому теоретически маска нужна, но на практике обычно у каждого типа сообщений фиксированый источник и приемник  

также там есть многопакетные сообщения, когда больше 8 байт данных

ну а вообще, там главное PGN - то есть некая таблица идентификаторов (той самой части CAN ID, см выше), но протокол разрешает назначать новые PGN-ы для нестандартных сообщений, поэтому какие-то универсальные J1939 парсеры ничего интересного не показывают (ну или нужно добавлять эти пропиентарные PGN-ы) - по крайней мере всегда с таким сталкивался.

то есть опять же какую-то часть сообщений принять|передать можно, но полностью J1939 поддержать достаточно трудоемко

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...