DIMZAY 0 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба Добрый день. С CAN столкнулся в первый раз. Год назад выдали задание на сборку и программирование шкафа управления. В процессе работы надо забирать из стороннего оборудования сигнал по шине CAN и заводить в свой ПЛК М221.. Год назад не было никакой другой информации, поэтому купили конвертер I-7530A-MR из CAN в Modbus. Этот конвертер необходимо настраивать как со стороны CAN, так и со стороны Modbus. Причём настройка возможна только при наличии конвертора, а он уехал в собранному шкафу и доступ появился только сейчас. Сейчас, находясь на объекте, узнаю, что внутри стороннего оборудования используется J1939, а для внешних подключений протокол Canopen. Судя по каталогу производителя конвертеров - для каждого варианта протокола свой отдельный конвертер, а не один для всех. В итоге вопрос: CAN, Canopen, J1939 - это действительно разные протоколы и для работы с ними нужны разные устройства? Или как? Вот фото протокола стороннего устройства: Протокол - понятен. Скорость - понятно. Размер 11 бит - понятно. CAN ID - не понятно. Точнее я не могу вбить такой адрес при настройке своего конвертора I-7530A-MR. 1Е1 могу, а 0х1Е1 нет. 0х важная составляющая или нет? Или проблема в неправильной модели конвертора? И как потом этот адрес преобразуется в регистр Модбас? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
геннадий75 1 1 июля, 2020 Опубликовано 1 июля, 2020 · Жалоба 1E1 и есть 11 битный идентификатор . 0х не важно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DIMZAY 0 1 июля, 2020 Опубликовано 1 июля, 2020 · Жалоба 3 часа назад, геннадий75 сказал: 1E1 и есть 11 битный идентификатор . 0х не важно. Спасибо. А по различиям протоколов можете пояснить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew_Q 0 2 июля, 2020 Опубликовано 2 июля, 2020 · Жалоба CAN это physical layer и data link layer, а CAN OPEN, J1939 это application layer. В Вашем случае, полагаю, достаточно распатронить CAN ID и данные. 0х1Е1 это и есть CAN ID, 0х это стандартная форма написания чисел в 16-тиричном виде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 2 июля, 2020 Опубликовано 2 июля, 2020 · Жалоба Кстати, многие устройства, работающие на CanOpen, не требуют полноценного CanOpen. Все от настройки и желания разработчика зависит. Скажем, у нас на крупных телескопах используются SEW'овские приводы, так там один раз настроили формат PDO, и работаем из самописного софта напрямую, без дурацкой canopen'овской обертки. А вот мне коллеги притащили компактные шаговики с приводами от pusirobot, так я с ними на уровне SDO работаю (лень было писать полноценный конфигуратор для PDO), сделал небольшую софтовую обертку, и при помощи самопального CAN<>USB все работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 2 июля, 2020 Опубликовано 2 июля, 2020 · Жалоба Не знаю, как в J1939, но в CANopen есть два варианта обмена данными. Они называются SDO и PDO. SDO - это сложный вид обмена клиент-сервер с подтверждением и служит для доступа ко всем параметрам устройства, его настройки и т.д. Возможны многопакетные передачи и т.д.После настройки не нужен PDO - это простой вид обмена, когда устройство просто шлет или принимает сообщения с определенным CAN-ID. Один пакет обычно содержит одну или несколько переменных. Многопакетных сообщений нет. Но его нужно предварительно настроить через SDO. Судя по инструкции у вас уже все настроено и CAN-Id у вас уже есть - то есть можете принимать данные и использовать и для этого никакой CANopen не нужен. НО! Есть один нюанс - устройство с CANopen должно перейти в Operational State, чтобы отсылать и принимать PDO. А делает оно только после получения NMT команды (CAN сообщения) от мастера. Иначе оно будет молчать. NMT команда содержит Node-ID этого устройства и тоже может быть сгененрирована вручную, но к сожалению я ее не помню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 2 июля, 2020 Опубликовано 2 июля, 2020 · Жалоба J1939 - тоже можно по CAN-ID с масками отлавливать. там ID 27 бит (extended или как там), но в ID там адреса приемника и передатчика, поэтому теоретически маска нужна, но на практике обычно у каждого типа сообщений фиксированый источник и приемник также там есть многопакетные сообщения, когда больше 8 байт данных ну а вообще, там главное PGN - то есть некая таблица идентификаторов (той самой части CAN ID, см выше), но протокол разрешает назначать новые PGN-ы для нестандартных сообщений, поэтому какие-то универсальные J1939 парсеры ничего интересного не показывают (ну или нужно добавлять эти пропиентарные PGN-ы) - по крайней мере всегда с таким сталкивался. то есть опять же какую-то часть сообщений принять|передать можно, но полностью J1939 поддержать достаточно трудоемко Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DIMZAY 0 4 июля, 2020 Опубликовано 4 июля, 2020 · Жалоба Спасибо за пояснения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 45 4 июля, 2020 Опубликовано 4 июля, 2020 · Жалоба 02.07.2020 в 15:46, yes сказал: там ID 27 бит 29. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться