2013-05-16 3 views
5

После прочтения нескольких спецификаций CiA, я все еще испытываю трудности с пониманием PDO-сопоставления, обработки изображения и обмена данными процесса в CANopen.Что такое PDO-сопоставление?

Я знаю SDO используется для настроек конфигурации в предварительном состоянии и имеет служебные данные протокола (поскольку он может передавать более 8 байтов данных).

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

Существует COB-ID из 11 бит, который имеет код функции и номер узла. Поскольку номер узла использует 7 бит, мы можем иметь максимум 127 узлов (для сети CANopen 2.0A).

Но есть четыре TPDOs и четыре RPDOs, которые меня смущают. Зачем вам нужно несколько TPDOs и RPDOs? Также где-то я читаю профили устройств, которые могут использовать записи от 6000h до 6FFFh для описания параметров устройства и функций устройства, и в этом диапазоне можно описать до 8 различных устройств. Но в сети может быть 127 узлов, а что это за 8 устройств?

ответ

5

PDO - это типы сообщений, которые используются для более эффективных и асинхронных сообщений. PDO могут быть отправлены по таймеру в ответ на сообщение SYNC или в ответ на событие (например, изменение цифрового входа). Для ваших данных доступны все 8 байтов полезной нагрузки сообщения шины CAN. Это контрастирует с SDO, где доступно только 4 байта (есть SD-сообщения с несколькими сообщениями, такие как передача блоков).

PDO может передавать только 8 байтов за раз, поскольку это максимальный размер передачи сообщения CAN-шины. Контрастируйте это с SDO, где должен быть отправлен командный байт и 3-байтовый адрес, оставляя максимум 4 байта информации.

По умолчанию устройство имеет 4 RPDOs и 4 TPDOs. 4 - это только номер PDO по умолчанию. Больше можно организовать, но вы несете ответственность за создание «каналов» для них. Это выбор идентификатора арбитража и обеспечение того, чтобы ни одно другое устройство на шине не разговаривало с использованием этого идентификатора. Вы хотите несколько PDO, потому что:

  1. Сообщения имеют разные приоритеты шины. 0x180+$NODEID выигрывает арбитраж в автобусе за 0x280+$NODEID и т. Д.
  2. PDOs получают свою эффективность узлами, соглашаясь с тем, какие данные будут отправлены раньше времени. Это означает, что у них нет ожидаемого запроса на отправку или они не скажут, какие данные они отправляют, например, SDO.
  3. Выбор данных внутри PDO не очень динамичен. Устройства часто должны выводиться из рабочего состояния, чтобы изменить отображение PDO. В некоторых устройствах отображение PDO полностью статично и не может быть изменено вообще.

TPDOs - это сообщения, передаваемые с устройства, в то время как RPDO - это сообщения, которые принимаются и записываются в словарь объектов устройств.

Словарь объектов определяет интерфейс устройства CANopen. Словарь адресуется с использованием 16-битного индекса и 8-битного подиндекса. Словарь делится на диапазоны. 0x6000 - 0x6FFF - диапазон индексов, присвоенных переменным профиля устройства. Профили устройств предоставляют стандартизированные интерфейсы для более специализированных классов устройств.

PDO mapping - это то, как согласована информация, содержащаяся в PDO. PDO-сопоставления - это записи в словаре объектов устройств, как и любой другой.Индекс 3 байта, субиндекс и размер параметра в битах кодируются в UNSIGNED32.

+0

В настоящее время я использую Xenus XTL для управления некоторыми двигателями и, похоже, не могу правильно настроить PDO (на шине не отправляется pdos). Мой главный вопрос, и что-то такое и все другие описания, которые я прочитал, не хватает, как конкретно работает отображение COBID? Например, если я определяю TPDO на одном узле с COBID 0x181, все RPDO на главном и других узлах также должны иметь COBID 0x181 или COBID 0x201 или каждый синтаксический анализ узла идентификатор узла из синтаксиса 0x180 + $ NODEID, который я вижу везде? Благодаря! – daaxix

1

Мне нравится думать о PDO (объекты данных процесса), вроде функций, которые могут быть запрограммированы в узле CANopen.

Недавно я хотел сделать команду, которая двигала двигатель, и сообщила о текущем положении и положении датчика. Я определил PDO-сопоставление с тремя объектами SDO в нем - перемещение (PDO приема) и два PDO передачи (текущий отчет и отчет энкодера).

После того, как они определены и сохранены в узле, я могу отправить одну команду PDO с положением и вернуться назад и положением.

Примечание. PDO выполняется только при отправке команды SYNC на шине. Затем ВСЕ узлы, у которых есть неисполненные PDO, обрабатывают их и одновременно реагируют на них.

Мы используем его для одновременного перемещения 7 двигателей (при установке SYNC).

+2

«Обратите внимание, что PDO выполняется только при отправке команды SYNC на шине». Я полагаю, вы имеете в виду только для вашего конкретного случая. PDO, безусловно, можно использовать без SYNC. –

Смежные вопросы