CANopen通讯
发布网友
发布时间:2024-10-24 02:51
我来回答
共1个回答
热心网友
时间:2小时前
通讯对象CANopen的物理层CANbus每次传送的数据量不大,包括11位元的ID、远端传输请求(RTR)位元及大小不超过8位元的资料。CANopen将CANbus的11位元ID分为4位元的功能码及7位元的CANopen节点ID。7位元的ID共有128种不同的组合,其中ID0不使用,因此一个CANopen网络上最多允许127台设备。若配合CAN2.0B使用,CANopen网络上可以超过127台设备,但实际运用中,大多数的CANopen网络上设备数量均低于此数值。
CANopen将CANbus的11位元ID称为通讯对象ID(COB-ID)。当传输数据发生冲突时,CANbus的仲裁机制会使COB-ID最小的讯息继续传送,无需等待或重传。COB-ID的前4个位元是CANopen的功能码,因此数值小的功能码表示对应的功能重要,允许的延迟时间较短。
以下是一个标准的CANopen页框:功能码、节点ID、RTR、资料长度、资料。在CANopen标准中,部份COB-ID被保留作网络管理及SDO通讯用。在设备初始化后,有些功能码和COB-ID会对应到标准的功能,但后续仍可以规划为其他用途。
通讯模型CANopen设备间的通讯可分为三种模型:master/slave模型、主从(client/server)模型及生产者/消费者(producer/consumer)模型。在master/slave模型中,一个CANopen设备为master,负责传送或接收其他设备(称为slave)的数据。NMT协定即使用了master/slave模型。在主从(client/server)模型中,SDOclient将对象字典的索引及子索引传送给SDOserver,产生一个或数个需求数据(对象字典中,索引及子索引对应的内容)的SDO封包。在生产者/消费者(producer/consumer)模型中,由一个生产者送出数据给消息者,同一个生产者的数据可能给一个以上的消息者。此模型又可分为二种:push-model(生产者自动送出数据给消费者)及pull-model(消费者需送出请求讯息,生产者才会送出数据)。