0

我想构建一个基于微控制器的 CAN 节点卡,它具有 UART、SPI 和 I²C 等接口,可连接不同的外围设备和接口,例如 EIA-485 计数器或 SPI 数字 I/O 扩展器。我想为卡定义一个足够灵活的配置文件,以适应任何可能的配置,并包括可以连接到此类节点卡的任何设备。由于 CANopen 配置文件似乎相当严格,我研究了 CANopen 虚拟设备,但这似乎也不是答案。

是否有此类功能的标准,或者我在未知水域航行?

4

2 回答 2

0

除非您认为 CANopen 引导加载程序是一种可能的解决方案,否则您将在未知水域航行。没有符合您条件的现有设备配置文件。CANopen 非常灵活,但任意可扩展性超出了它的范围。

您可以通过对象字典 1:1 导出微控制器的寄存器,并通过 PDO 发出中断。如果有点不切实际,这肯定是一个有趣的练习。

于 2015-04-03T04:53:10.010 回答
0

来自自动化网站的 CAN:

CANopen 通用 I/O 模块在CiA 401设备行规规范中进行了标准化。该配置文件支持数字 I/O 的 1、8、16 和 32 位粒度以及模拟 I/O 的 1、2 和 4 字节分辨率。

但是,基于通用 CiA 301 CANopen 应用层和通信配置文件标准,实现自定义设备可能更容易。您可以使用制造商对象(2000h 到 5FFFh)实现一组通用IOCTL函数,并可能使用SDO 块传输将数据“流式传输”到表示连接设备端点的特定 OD 对象。

您需要考虑到,即使物理层的比特率为 1 Mbps,CANopen 协议在流数据方面也永远无法跟上 USB2 HS 设备的速度!还要记住,如果您使用 PDO 进行 OD 值的“实时”交换,将会有明显的滞后,并且 PDO 交换的时间量约为 25 毫秒或更长。

最后的考虑是你打算使用什么 CANopen 主站?如果产品要商业化,那么您需要非常仔细地指定和记录您的 EDS(甚至可能提供 OPC 或类似的 API)。

于 2015-05-19T09:57:32.777 回答