当前位置:  开发笔记 > 编程语言 > 正文

CANopen PDO使用串行端口

如何解决《CANopenPDO使用串行端口》经验,为你挑选了1个好方法。

我想了解CANopen协议.

目前,我没有任何CAN硬件或CANopen堆栈可供试验.

我想知道如何编写Java程序来简单地解释在RS-232端口接收的CANopen消息.

是否有作为串口安装的CAN接口?

我能写一个程序来处理CANopen消息吗?我只希望能够接收和解释消息.是否像为输入流创建缓冲区那样简单,然后根据SOF和EOF将传输分解为单独的消息?我怎么知道什么是SOF/EOF,因为它只有1位长?

为什么CAN节点的PDO数量有限制?

如何处理PDO以识别发送它的节点以及数据类型和值?PDO是标准CAN框架吗?

matli.. 5

我不知道任何连接到串口的CAN接口(基于带CAN和串口的微控制器创建一个不太难).但是,标准串行端口速度太慢,无法支持CAN中可用的更高速度.

通常,在将API用于CAN接口时,您将能够读取包含ID,长度和最多八个字节数据的消息.你不需要关心SOF/EOF.即使直接在低级别与CAN控制器接口(也就是说,如果您有一个CAN接口,您需要自己编写驱动程序/ API),您仍然不需要关心这些细节.而且你根本不想在不使用CAN控制器的情况下尝试访问CAN总线......

如果你想假装你有一个CAN接口,你可以创建一个存根函数,它返回这三个项目:一个ID,一个数据长度和一个64位数据缓冲区.这基本上是所有CAN接口API将为您提供的.在传输CAN消息时,您将使用相同的参数(ID,长度数据).

PDO由其使用CAN ID字段定义.理论上,设备的PDO数量实际上并不是那么有限,但预定义的连接集仅为每个节点分配了少量(四个)PDO.

PDO是标准CAN帧.如上所述,CAN ID标识PDO.在预定义的连接集(大多数设备遵循)中,所有消息的CAN ID由功能部分和模块ID部分组成(模块ID可以为设备硬编码,或者可以通过拨码开关配置).CAN ID的第10-7位是功能代码,位6-0是模块编号.例如,来自模块ID为0x10的设备的TxPDO1将具有CAN ID 0x190.11位CAN ID的高4位((CAN_ID & 0x780) >> 7)为您提供功能代码(TxPDO1 = 3),其余位(CAN_ID & 0x7f)给出模块ID(在本例中为0x10).因此,如果您在CAN总线上读取CAN ID为0x190的消息,您就会知道这是来自模块ID为0x10的设备的PDO.

(更简单的表达方式可能是说TxPDO1的CAN ID设置为0x180 + ,TxPDO2的CAN ID设置为0x280 + ,等等)

如何解释PDO中的数据取决于您的设备.

我建议你找一个好的CANopen教程.不幸的是,他们中的大多数都让一切听起来都比实际上复杂得多.所以环顾四周,直到找到一个看似可以理解的东西.



1> matli..:

我不知道任何连接到串口的CAN接口(基于带CAN和串口的微控制器创建一个不太难).但是,标准串行端口速度太慢,无法支持CAN中可用的更高速度.

通常,在将API用于CAN接口时,您将能够读取包含ID,长度和最多八个字节数据的消息.你不需要关心SOF/EOF.即使直接在低级别与CAN控制器接口(也就是说,如果您有一个CAN接口,您需要自己编写驱动程序/ API),您仍然不需要关心这些细节.而且你根本不想在不使用CAN控制器的情况下尝试访问CAN总线......

如果你想假装你有一个CAN接口,你可以创建一个存根函数,它返回这三个项目:一个ID,一个数据长度和一个64位数据缓冲区.这基本上是所有CAN接口API将为您提供的.在传输CAN消息时,您将使用相同的参数(ID,长度数据).

PDO由其使用CAN ID字段定义.理论上,设备的PDO数量实际上并不是那么有限,但预定义的连接集仅为每个节点分配了少量(四个)PDO.

PDO是标准CAN帧.如上所述,CAN ID标识PDO.在预定义的连接集(大多数设备遵循)中,所有消息的CAN ID由功能部分和模块ID部分组成(模块ID可以为设备硬编码,或者可以通过拨码开关配置).CAN ID的第10-7位是功能代码,位6-0是模块编号.例如,来自模块ID为0x10的设备的TxPDO1将具有CAN ID 0x190.11位CAN ID的高4位((CAN_ID & 0x780) >> 7)为您提供功能代码(TxPDO1 = 3),其余位(CAN_ID & 0x7f)给出模块ID(在本例中为0x10).因此,如果您在CAN总线上读取CAN ID为0x190的消息,您就会知道这是来自模块ID为0x10的设备的PDO.

(更简单的表达方式可能是说TxPDO1的CAN ID设置为0x180 + ,TxPDO2的CAN ID设置为0x280 + ,等等)

如何解释PDO中的数据取决于您的设备.

我建议你找一个好的CANopen教程.不幸的是,他们中的大多数都让一切听起来都比实际上复杂得多.所以环顾四周,直到找到一个看似可以理解的东西.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有