发布网友 发布时间:2022-04-27 11:30
共3个回答
热心网友 时间:2023-09-15 05:49
SDO使用对象字典的索引和子索引访问CAN节点的对象字典,可以读取或写入。
PDO不使用索引和子索引。它是两个can节点之间为传输数据内容而约定的对象字典索引。PDO接收到数据后,直接读写对应的对象字典索引中的值。
因为SDO(general)需要索引和子索引,所以它一次最多可以传输4个字节,而PDO一次最多可以传输8个字节。
例如,通过PDO映射,将0x201(节点ID为1)映射到传输索引为0x6040、子索引为0x00的数据字典对象,可以通过将cobOuID设置为0x201直接向节点1的0x60400x00对象发送数据,而不必使用SDO发送包括索引和子索引的数据。
扩展资料:
CANopen设备之间的通信可以分为以下三种通信模式。
在主/从模型中,CANopen设备是主设备,负责从其他设备(称为从设备)发送或接收数据。NMT协议使用主/从模型。
客户机/服务器模型在SDO契约中定义。SDO客户端将目标字典的索引和子索引发送到SDO服务器,从而生成一个或多个需求数据的SDO包(在目标字典中,索引和子索引的对应内容)。
生产者/消费者模型用于heartbeat和节点保护协议。一个生产者发送给消息制造者的数据,以及来自同一生产者的数据可以发送给多个消息制造者。
它也可以分为两种类型:推送模式:生产者会自动向消费者发送数据。拉模型:消费者需要在生产者发送数据之前发送请求消息。
热心网友 时间:2023-09-15 05:50
SDO使用对象字典的Index和SubIndex来访问CAN节点的对象字典,可以读或者写。
PDO则不使用Index和SubIndex,它是两个CAN节点间约定好传输的数据内容对应哪些对象字典索引,收到数据后就直接读写相应的对象字典索引里的值。
由于SDO(常规)需要用到Index和SubIndex,所以一次最多传输4个字节,而PDO一次最多可以传输8个字节。
通过PDO映射,比如把0x201(Node ID 为 1)映射为发送索引问为 0x6040 子索引为0x00 的数据字典对象,则直接把COB_ID 设置为 0x201就可以直答接发送数据到Node 1 的0x6040 0x00 对象,而不需要使用SDO发送包括索引和子索引在内的数据。
扩展资料:
CANopen 设备间的通讯可分为以下三种通讯模型。
在 master/slave 模型中,一个 CANopen 设备为 master,负责传送或接收其他设备(称为 slave)的数据。NMT 协定就使用了 master/slave 模型。
客户机/服务器(client/server)模型定义在 SDO 协定中,SDO client 将对象字典的索引及子索引传送给 SDO server,因此会产生一个或数个需求数据(对象字典中,索引及子索引对应的内容)的 SDO 封包。
生产者/消费者(procer/consumer)模型用在 Heartbeat and Node Guarding 协定。由一个生产者送出数据给消息者,同一个生产者的数据可能给一个以上的消息者。
又可分为二种: push-model:生产者会自动送出数据给消费者。 pull-model:消费者需送出请求讯息,生产者才会送出数据。
热心网友 时间:2023-09-15 05:50
PDO是过程数据的发送,实时,速度快,