Программист, пытающийся понять CANopen

  1. Будет ли интерфейсная карта CAN установлена ​​в качестве COM-порта?

  2. Как разбить сообщение на отдельные кадры? Как насчет объединения данных из нескольких кадров, полученных в одно сообщение? Это действительная проблема?

  3. Что такое стек CANopen? Если у меня уже есть API для связи с последовательными портами, могу ли я иметь мою программу для чтения / отправки сообщений CANopen без стека CANopen? Что конкретно должна делать моя программа?

  4. Каков идеальный / правильный способ реализации объектного словаря (OD) в программном обеспечении?

(Текущая ситуация: мне нужно написать программу на Java для интерпретации сообщений CANopen. Из-за определенных обстоятельств я не могу достать аппаратное обеспечение CAN.)

(Это продолжение серии вопросов о переполнении стека, которые я опубликовал на прошлой неделе на Java и CANopen.)

2 ответа

Решение
  1. Это зависит от вашей интерфейсной карты. Но, скорее всего, это не будет COM-порт, но вы получите файл DLL с экспортированными функциями для доступа к карте (большинство доступных CAN-интерфейсов подключены через USB-порт к вашему ПК). Но не волнуйтесь: даже если это не официальный стандарт, большинство из этих DLL-файлов используют те же функции, так что вы можете без проблем обменять свой CAN-интерфейс с другим от другого производителя.

  2. Очень редко отправлять столько данных по шине CAN, что приходится разбивать их на несколько кадров. Но если вам абсолютно необходимо, то вы должны сделать это сами.

  3. Стек CANopen - это библиотека, предоставляющая вам функции более высокого уровня. Он заботится обо всем, что требует CANopen (например, сердцебиение), поэтому вам не придется делать это самостоятельно. Хороший стек также заботится о нескольких кадрах (2). К сожалению, такие стеки не доступны по дешевке, но ИМХО они того стоят.

  4. В большинстве реализаций используется структура, как в ПЗУ, так и в ОЗУ, в зависимости от того, можно ли изменить OD или нет. Но хороший стек CANopen уже позаботится об этом за вас.

3) Хотя коммерческий стек CANopen, безусловно, является хорошей идеей, все же можно читать / отправлять сообщения CANopen без их использования.

Мы не знаем, какова цель вашего заявления. Но пример, когда вам, вероятно, будет хорошо без стека CANopen, если у вас уже есть работающая шина CANopen с главным и подчиненным узлами, и вы просто хотите прослушать определенное сообщение. Другим примером может быть, если вы пишете небольшую конфигурационную или тестовую утилиту с небольшим и четко определенным набором используемых сообщений. В таких случаях полноценный коммерческий стек CANopen может быть слишком излишним.

Другие вопросы по тегам