canopen pdo通信c语言,CANopen通信之PDO通信

过程数据对象(Process Data Object,PDO)是用来传输实时数据的,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权。PDO 传输的数据必须少于或等于 8 个字节,PDO 的 CAN 报文数据域中每个字节都用作数据传输,因此,在应用层上不包含传输控制信息,报文利用率极高。

PDO 通信是基于生产者/消费者的通讯模式[13],如图 3-3 所示,每个 PDO 有一个唯一的标识符且可以通过一个节点发送,但有多个节点可以接收。由生产者发送的 PDO称为发送 PDO(TPDO),同样消费者接收的 PDO 称为接收 PDO(即 RPDO)。PDO 的接收不需要消费者的确认。

00cdc6b4b348c034d469164efdd57c9b.png

生产者/消费者通讯模型

每个 PDO 在对象字典中由两个对象描述:通信参数和映射参数。PDO 通信参数指明使用哪个 COB-ID,传输类型,禁用时间和定时时间;PDO 映射参数用于设定 PDO报文中的数据的映射关系,确定要传输的数据在 CAN 报文数据域中的定位。该参数允许 PDO 的生产者和消费者知道正在传输什么信息,而不需要在 CAN 报文中增加额外的协议控制信息,使传输的效率达到最高。一个 PDO 最多可以映射 64 个对象[7]。

PDO 通讯具有三种触发模式:内部事件驱动或内部定时器触发、同步触发、远程请求触发。

1) 内部事件驱动或内部定时器触发。通讯由某一事件触发。例如数字 I/O 口状态改变,超过预先设定的值、定时器中断等都会触发节点发送一个 PDO。这种模式可使总线负载达到最小,在相对低的波特率下获得比较高的通讯特性。

2)同步触发。同步触发 PDO 是指 CANopen 节点收到由管理节点发出的同步报文(同步对象 Sync)之后,根据触发报文条件向总线发出 PDO 报文。同步传输又分为周期性和非周期性,周期性是指 CANopen 节点接收到一定数量的同步报文之后才开始发送;非周期性 PDO 是指 PDO 触发条件成立之后,当收到下一个同步对象后马上发送PDO。

3) 远程请求触发。PDO 消费者可以给 PDO 生产者发送远程 PDO 请求,相应 PDO 生产者将对远程帧做出响应,向总线上发送相应的 PDO 数据。

PDO 通讯时的触发模式由 PDO 通信参数中的传输类型来确定,传输类型是一个 8位无符号整数,这个传输类型值的大小与 PDO 触发方式的对应关系如下表所示。

PDO 传输类型与 PDO 触发模式对应表

fb673ecdffcc9de8562f60e0cc7459df.png

上表中的 SYNC 代表接收到同步对象,RTR 代表接收到远程帧,Event 代表事件发生,如数值改变或定时时间到了等。B 代表两个触发条件均满足时触发 PDO 传输,而 O代表一个或者两个触发条件满足时均可触发 PDO 传输。

作为一个例子,假定第二个 transmit-PDO 映射如下(在 CANopen 中用对象字典索引 0x1A01 描述):

2ac4d1af82e55a82caedb5ea0bf10ba9.png

在 CANopen I/O 模块的设备子协议( CiA DSP-401) 定义中, 对象 0x6000 子索引 2 是节点的第 2 组 8位数字量输入,对象 0x6401 子索引 0x01 是节点的第 1 组 16 位模拟量输入。

这个 PDO 报文如果被发送(可能由输入改变,定时器中断或者远程请求帧等方式触发,和 PDO 的传输类型相一致,可以在对象 0x

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值