CANopen в вопросах и ответах

Модераторы: Brokh, SaniOK

CANopen в вопросах и ответах

Сообщение san » 12 фев 2013, 18:53

CAN и CANopen - это разные вещи.
CAN - это протокол, определяющий правила обмена кадрами между узлами. Он описан в стандарте BOSH CAN 2.0 A/B. В этом стандарте описан канальный уровень передачи: правила построения кадра; правила доставки кадров адресатам (фильтрация); определение ошибок при передаче; доступ к шине для передачи.
Также там описаны требования к физическому уровню: наличию двух логических уровней сигналов "доминатного" и "рецесивного"; синхронизация.
Следует отметить, что там нет правил, определяющих физический уровень сигнала, количество узлов, длины линий передачи и т.д.. То есть чипу, реализующему CAN не хватает: приёмопередатчика (интерфейса физического уровня) и протокола обмена между приложениями (протокола прикладного уровня).
Один из популярных интерфейсов физического уровня описан в ISO11898-2. То есть ISO11898= CAN (ISO11898-1) + ISO11898-2. Обычно когда говорят CAN, имеют в виду именно ISO11898, а не чистый CAN.

-----------физический уровень ISO 11898------------------------
- используется 2-х проводная передача
- количестов узлов на сегмент - 64
- длина сегмента - 1 км
- битовая скорость - от 10 кбит/с до 1 Мбит/с (20 кбит/с - обязательна)
- в концах сегмента обязательно 2 терминатора по 120 Ом
- два уровня сигнала: "доминатный" и "рецессивный", при появлении обох уровней на шине, доминатный перебивает рецессивный

-----------канальный уровень ISO 11898 (BOSH CAN 2.0 A)------------------------
- доступ к общей шине осуществляется узлами произвольно: когда узел хочет, тогда и передаёт кадр
- кадр содержит 11-битный идентификатор и 8 байт данных (а ткаже много полезных полей :-) )
- идентификатор у каждого кадра уникальный, то есть два кадра в одной сети с одинаковыми идентификтаорами появиться не могут
- когда два узла пытаются одновременно передать кадры, перестаёт передавать тот, у которого раньше пойдёт рецессивный бит в арбитражном поле (идентификатор+бит RTR)
- каждый узел настраивает свои фильтры на приём кадров, таким образом кадры будут приняты теми узлами, которые настроили свои фильтры на соответсвующий набор идентификаторов; иными словами доставка кадров производится не по адресу узла (адресации узлов в CAN нет!) а по идентификатору кадра

---------- чего не хватает ISO 11898 ?---------------------
BOSH CAN и ISO11898 оперирует кадрами, и ему абсолютно без разницы какие данные они передают. Количество этих данных не превышает 8 байт на один кадр. Промышленные сети типа CanOpen, DeviceNet, SDS, CanKingdom и др. дополняют CAN или ISO11898 дополнительным протоколом прикладного уровня, чтоб облегчить пользователю жизнь.

------- Основы CanOpen -------------------------------
Идея такая: каждый узел в сети имеет собственную базу даных реального времени, называемую Словарь Объектов (ObjectDictionary). Словарь включает все объекты CanOpen: переменные, конфигурационные данные для работы сети, конфигурационные данные для работы устройства и т.д. То есть Словарь Объектов вместе с протоколом CanOpen DS301 абсолютно самодостаточны с точки зрения сетевого обмена и не требует участия приложения.
Таким образом обмен осуществялется между Словарями Объектов разных узлов. Каждый объект в Словаре имеет свой уникальный номер, состоящий из Индекса (Index) и Подиндекса (SubIndex). Обмен Объектами Словаря можно сделать двумя разными способами: PDO или SDO.


------- PDO (основы) -------------------------------
PDO - это сервис CANopen, с помощью которого можно передать от одного узла другИМ узлам до 8 байт данных.
Данные, которые нужно передать, автоматически вынимаются из объектов Словаря отправителя и пакуются в один CAN-кадр (помним, что кадр может содрежать до 8 байт). Этот кадр-носитель называется T-PDO (Transmitt PDO). Каждый T-PDO в сети должен иметь уникальный COB-ID, иными словами каждый кадр-носитель PDO должен иметь уникальный идентифкатор (COB-ID и идентификатор кадра CAN это одно и то же).
Узел, который хочет принять данные этого T-PDO, должен иметь R-PDO (ReceivePDO) с таким же COB-ID. Иными словами COB-ID связывает (linking) T-PDO отправителя и R-PDO получателЕЙ. Данные полученные в R-PDO копируются в Словарь Объектов получателей.
Конфигурирация, согласно которой данные пакуются из Словаря отправителя в T-PDO и из R-PDO в Словарь получателя называется PDO-Mapping (я называю PDO-отображение да простят меня филологи и профессора).
Резюмируем: T-PDO переносят до 8 байт данных из Объекта Словаря. Какие данные будут передаваться вместе с T-PDO и в какие объекты попадать из R-PDO определяется при конифгурации путём PDO-оотображения. Данные T-PDO попадают в те R-PDO, какие имеют такой же COB-ID (PDO-связывание). Таким образом осуществляется автоматический обмен данными между Словарями Объектов разных узлов.
Изображение

------- SDO (основы) -------------------------------
SDO - это сервис CANopen, с помощью которого можно прочитать или записать значение объектов Словаря по их Индексу и Подиндексу. Один узел при этом является Клиентом (просящий), а другой - Сервером (выполняющий просьбу).
Для такого обмена нужна двухсторонняя связь: один CAN-кадр бежит в одну сторону, другой - в другую. Кадр отправителя является T-SDO (Transmitt SDO) а получателя - R-SDO(RecieveSDO). T-SDO и R-SDO связывает (догадайтесь :-) ) ... правильно, COB-ID.
Таким образом, чтоб обменятся данными используя SDO, между двумя узлами должны быть настроены две пары:
T-SDO->R-SDO
R-SDO<-T-SDO
Клиент будет формировать запрос типа: "хочу прочитать объект с индексом/подинд 6000:1", помещает его в нужный T-SDO (нужность определяется значением COB-ID). После этого кадр T-SDO вылетает в сеть, и нужный узел (имеющий R-SDO с тем же COB-ID) получает этот запрос. Получатель (в этом обмене он Сервер) достаёт из Словаря Объектов объект "6000:1" и помещает в ответный T-SDO. Отправляет по сети кадр, который принимает узел с нужным R-SDO (в этом обмене он Клиент). Вот и весь обмен. Инициирует обмен приложение в нужный момент времени. Хоть связь между SDO конифгурируемая, их наполнение определяется в момент заупска SDO (вспомним что в PDO всё работает автоматически).
Изображение

тему продолжу на сайте: https://sites.google.com/site/fieldbusb ... -i-canopen
обсуждения и вопросы в этом топике
Последний раз редактировалось san 13 фев 2013, 13:27, всего редактировалось 13 раз(а).
Аватар пользователя
san
 
Сообщений: 883
Зарегистрирован: 05 мар 2012, 11:59
Откуда: Киев, Национальный университет пищевых технологий, каф.ИАСУ
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 21

Re: CANopen в вопросах и ответах

Сообщение yayura » 12 фев 2013, 19:00

У меня есть BOSH CAN 2.0 A/B на русском + на русском Словарь
Что-то еще появилось за последнее время ?
Честно говоря, по поводу теории в рунете не был
yayura
 
Сообщений: 77
Зарегистрирован: 09 фев 2013, 13:22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Re: CANopen в вопросах и ответах

Сообщение yayura » 12 фев 2013, 19:01

В смысле не был давно
yayura
 
Сообщений: 77
Зарегистрирован: 09 фев 2013, 13:22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Re: CANopen в вопросах и ответах

Сообщение san » 12 фев 2013, 19:33

пользуюсь только англоязычной
Аватар пользователя
san
 
Сообщений: 883
Зарегистрирован: 05 мар 2012, 11:59
Откуда: Киев, Национальный университет пищевых технологий, каф.ИАСУ
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 21

Re: CANopen в вопросах и ответах

Сообщение yayura » 12 фев 2013, 19:36

C English'ым - полный порядок. No problem !
yayura
 
Сообщений: 77
Зарегистрирован: 09 фев 2013, 13:22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Re: CANopen в вопросах и ответах

Сообщение yayura » 12 фев 2013, 19:41

San - Александр,
А Вы - преподаватель Киевского университета ?
yayura
 
Сообщений: 77
Зарегистрирован: 09 фев 2013, 13:22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Re: CANopen в вопросах и ответах

Сообщение san » 12 фев 2013, 20:00

yayura писал(а):San - Александр,
А Вы - преподаватель Киевского университета ?

Да, Национального университета пищевых технологий. У меня ж в профиле вроде это написано.
Аватар пользователя
san
 
Сообщений: 883
Зарегистрирован: 05 мар 2012, 11:59
Откуда: Киев, Национальный университет пищевых технологий, каф.ИАСУ
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 21

Re: CANopen в вопросах и ответах

Сообщение san » 12 фев 2013, 20:03

yayura писал(а):C English'ым - полный порядок. No problem !

Ссылочка http://www.canopensolutions.com/index.html
Кузьмич тоже ссылочку хорошую дал viewtopic.php?f=18&t=120#p805
Аватар пользователя
san
 
Сообщений: 883
Зарегистрирован: 05 мар 2012, 11:59
Откуда: Киев, Национальный университет пищевых технологий, каф.ИАСУ
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 21

Re: CANopen в вопросах и ответах

Сообщение yayura » 12 фев 2013, 20:12

Александр !
Я рад тому, что встретил на своём тернистом пути не-дилетанта.
Уверен, что наберусь у Вас ума-разума, да и для других пользователей CANopen Ваша акция будет результативной.
LONG LIVE FIELDBUS !
yayura
 
Сообщений: 77
Зарегистрирован: 09 фев 2013, 13:22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Re: CANopen в вопросах и ответах

Сообщение san » 31 июл 2013, 11:40

тему продолжу на сайте: https://sites.google.com/site/fieldbusb ... -i-canopen
кому интересно - обновил
Аватар пользователя
san
 
Сообщений: 883
Зарегистрирован: 05 мар 2012, 11:59
Откуда: Киев, Национальный университет пищевых технологий, каф.ИАСУ
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 21


Вернуться в Промышленные сети - Ethernet, Modbus, CANopen, RFID

Кто сейчас на форуме

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

cron