Профиль CANopen для карты с несколькими интерфейсами

Я хочу построить карту узла CAN на основе микроконтроллера, которая имеет интерфейсы, такие как UART, SPI и I²C, к которым подключаются различные периферийные устройства и интерфейсы, например, счетчик EIA-485 или расширитель цифрового ввода-вывода SPI. Я хотел бы определить профиль для карты, который достаточно гибок, чтобы адаптироваться к любой возможной конфигурации и включать любое устройство, которое может быть подключено к такой плате узла. Поскольку профили CANopen кажутся довольно жесткими, я исследовал виртуальные устройства CANopen, но, похоже, это тоже не ответ.

Есть ли стандарт для такой функциональности или я плыву по неизвестным водам?

2 ответа

С сайта CAN in Automation:

Общие модули ввода / вывода CANopen стандартизированы в спецификации профиля устройства CiA 401. Профиль поддерживает гранулярность 1, 8, 16 и 32 бита для цифровых входов / выходов и разрешение 1, 2 и 4 байта для аналоговых входов и выходов.

Однако может быть проще реализовать пользовательское устройство на основе общего прикладного уровня CiA 301 CANopen и стандарта профиля связи. Вы можете реализовать набор функций IOCTL общего назначения с использованием объектов Manucturer (от 2000h до 5FFFh) и, возможно, использовать SDO Block Transfer для "потоковой передачи" данных в конкретные объекты OD, представляющие конечные точки подключенных устройств.

Вам необходимо учитывать, что даже при скорости передачи данных 1 Мбит / с на физическом уровне протокол CANopen никогда не сможет справиться с устройством USB2 HS, когда дело доходит до потоковой передачи данных! Также имейте в виду, что если вы используете PDO для обмена значениями OD в режиме реального времени, будет существенное отставание и что временной интервал для обмена PDO составляет порядка 25 мс или более.

И последнее, какой мастер CANopen вы собираетесь использовать? Если продукт должен быть коммерчески доступным, вам нужно будет очень тщательно указать и документировать свою ЭЦП (возможно, даже предоставив OPC или аналогичный API).

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

Вы можете экспортировать регистры вашего микроконтроллера 1:1 через объектный словарь и выдавать прерывания через PDO. Это было бы забавное упражнение, хотя бы непрактичное.

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