0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解CANOPEN总线:最大长度和节点最多个数

工程师邓生 来源:老陈说事 作者:老陈说事 2021-02-10 10:33 次阅读

CANopen是一个基于CAN(控制局域网)串行总线系统和CAL(CAN应用层)的高层协议。CANopen通讯协议CiADS-301包括周期和事件驱动型通讯,不仅能够将总线负载减少到最低限度,而且还能确保极短的反应时间。它可以在较低的波特率下实现较高的通讯性能,从而减少了电磁兼容性问题,并降低了电缆成本。

CANopen所用的物理介质是符合ISO11898标准,采用分驱动机制和公共反馈的双线总线。总线的最大长度取决于通讯速度,具体规定如下:

pIYBAGAKMOiAUvq7AAB8g458pbE937.png

从理论上来说,最多可以有127个节点。不过,在实际应用中,最大节点数量取决于所用CAN收发器的性能。CAN总线线路必须用在CAN-L和CAN-H线之间每端连接的120欧姆(1%,1/4W)电阻来终接,如下所示。

o4YBAGAKMO-AYIBzAACra6mJQhw397.png

总线电缆选用有两对双绞线的带屏蔽层电缆:一对双绞线分别接CAN-L和CAN-H,另外一对双绞线直接接GND。

CANopen的核心概念是设备对象字典(OD:ObjectDicTIonary),在其它现场总线(Profibus,Interbus-S)系统中也使用这种设备描述形式。CANopen通讯通过对象字典(OD)能够访问设备的所有参数

o4YBAGAKMPSAMwgKAAEEfPaeRHc268.png

CAN标识符分配表

pIYBAGAKMPuAXLKNAAFfY-a1qJM352.png

注意:

1、PDO/SDO的发送/接受是由(slave)CAN节点观察的。

2、一般的器件的CANopen支持4个发送PDO,4个接受PDO。

服务数据对象SDO

SDO用来访问一个设备的对象字典。访问者被称作客户(client),对象字典被访问且提供所请求服务的CANopen设备被称作服务器(server)。客户的CAN报文和服务器的应答CAN报文总是包含8字节数据(尽管不是所有的数据字节都一定有意义)。一个客户的请求一定有来自服务器的应答。

过程数据对象PDO

PDO用来传输实时数据,数据从一个生产者传到一个或多个消费者。数据传送限制在1到8个字节。PDO通讯没有协议约束(意味着数据内容已预先定义),因此消费者可以在很短的时间内处理完接受到的数据。PDO数据内容只由它的CANID定义,假定生产者和消费者知道这个PDO的数据内容。

PDO消息的内容是预定义的(或者在网络启动时配置的),映射应用对象到PDO中是在设备对象字典中描述的。如果设备(生产者和消费者)支持动态映射,那么使用SDO报文可以配置PDO映射参数。PDO映射必须遵守以下2个规则:

1、每个PDO最多可映射4个对象;

2、每个PDO的长度必须不超过64位。

PDO映射流程:

1、设置PDO对应映射参数(如1600h或1A00h)子索引0的内容为0;

2、修改PDO对应映射参数(如1600h或1A00h)子索引1~4的内容,映射数据;

3、设置PDO对应映射参数(如1600h或1A00h)子索引0的内容为合法的数字(该PDO映射的对象数)。

4、PDO映射完成。

SYNC报文

同步对象用于控制数据在网络设备间的同步传输,例如同步启动多个轴。同步报文的传输是基于生产者—消费者模型的,所有支持同步PDO的节点都可以作为消费者(同时)接收到此报文,并使用该对象与其他节点进行同步。

一般应用方式为SYNC主节点定时发送SYNC对象,SYNC从节点收到后同步执行任务。

CANopen建议用一个最高优先级的COB-ID以保证同步信号正常传送。SYNC报文可以不传送数据以使报文尽可能短。

Emergency报文

设备发生报警时,CANopen会启动一条Emergency报文,告知消费者当前设备类型以及错误代码。

责任编辑:PSY

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 节点
    +关注

    关注

    0

    文章

    208

    浏览量

    24073
  • CANopen
    +关注

    关注

    6

    文章

    200

    浏览量

    42822
  • 长度
    +关注

    关注

    0

    文章

    3

    浏览量

    7203
收藏 人收藏

    评论

    相关推荐

    【米尔-瑞萨RZ/G2UL开发板】5.CAN通讯进阶CANopen

    参数。 1.4 SDO SDO 主要用于 CANopen 主站对从节点的参数配置。服务确认是 SDO 的最大的特点, 为每个消息都生成一个应答,确保数据传输的准确性。 1.5 紧急对象 紧急事件对象
    发表于 03-31 16:19

    请问PSOC 5LP CAN总线如何接收所有节点的数据?

    总线上一般有100多个节点, PSOC 5LP 上的CAN如何设定才能接收总线上所有节点的数据?
    发表于 02-22 06:38

    请问一下CAN总线最大能够带多少节点呢?

    一般来说,大部分CAN总线连接的节点数量在10个到100个之间。
    的头像 发表于 02-19 14:27 759次阅读

    CAN总线最大能够带多少节点?CANFD相对于CAN2.0有哪些差异呢?

    CAN总线最大能够带多少节点?CANFD相对于CAN2.0有哪些差异呢? CAN总线最大能够带多少节点
    的头像 发表于 01-31 14:08 740次阅读

    canfd通信tdcv实测值受总线长度影响吗

    canfd通信tdcv实测值受总线长度影响吗  当涉及到CAN FD通信和总线长度的讨论时,总线长度可以对实测值产生一定的影响。在本文中,我将详细讨论CAN FD通信和总线长度之间的关
    的头像 发表于 01-31 13:46 345次阅读

    Modbus转CANopen协议相互转换在工业中的作用

    根据CANopen协议的规范进行实现。通常需要定义一个数据结构来表示CANopen协议的消息,然后将原始数据填充到这个数据结构中。 4. 发送消息:将转换得到的
    发表于 12-08 17:02

    python如何输入多个数

    在Python中,输入多个数据可以通过以下几种方式实现:使用input函数、使用sys模块的argv参数、使用文件输入等等。下面将详细介绍这些方法。 使用input函数: 使用input函数可以
    的头像 发表于 11-23 15:29 2677次阅读

    CANOPEN总线编码器的优点有哪些?

    CANOPEN总线编码器的优点
    的头像 发表于 11-08 14:36 376次阅读

    CANOPEN总线编码器在车辆技术中的应用

    CANopen总线编码器是一种常用于车辆电子系统的编码器,它可以将各种传感器和执行器发送的数据进行编码,以便在车辆内部进行通信。在车辆技术中,CANopen总线编码器可以用于以下应用:
    的头像 发表于 10-24 15:52 836次阅读
    <b class='flag-5'>CANOPEN</b><b class='flag-5'>总线</b>编码器在车辆技术中的应用

    iic总线最多可以挂多少个从设备?

    iic总线最多可以挂多少个从设备?  IIC总线,也被称为I2C总线,是一种串行通信协议,广泛使用于数字电路和电脑内部件之间的通讯。该协议允许多个
    的头像 发表于 09-12 11:36 3663次阅读

    小疆智控CANOpen转PROFINET网关连接EA180C CANOPEN总线型伺服配置案例

    1、首先新建一个工程,在 CanOpen转Profinet 网关配置软件中添加主站设备,如下图;   2、在 CanOpen转Profinet 网关设备点击导入 EA180C CANOPEN
    的头像 发表于 09-02 19:23 829次阅读
    小疆智控<b class='flag-5'>CANOpen</b>转PROFINET网关连接EA180C <b class='flag-5'>CANOPEN</b><b class='flag-5'>总线</b>型伺服配置案例

    为什么CAN总线最多可接110个子设备?这个数字是怎么来的?

    在很多的CAN总线介绍的文章中说明:CAN总线最多支持挂接的设备(如下图中展示的CAN Device的数量最大值)是110个。但是可能很多人并不清楚为何是110?“110”这
    发表于 08-28 09:56 4833次阅读
    为什么CAN<b class='flag-5'>总线</b><b class='flag-5'>最多</b>可接110个子设备?这<b class='flag-5'>个数</b>字是怎么来的?

    C语言的函数如何返回多个数

    C语言的函数如何返回多个数据?这个操作在写代码的时候还经常遇到。
    发表于 07-25 10:53 587次阅读

    如何计算RS-485总线上的最大节点数?

    RS-485是一种多点差分总线,因此总线上的所有节点共用一个传输介质。随着节点总数的增加,每个驱动器上的负载也会增加。
    发表于 07-04 11:20 531次阅读
    如何计算RS-485<b class='flag-5'>总线</b>上的<b class='flag-5'>最大节点</b>数?

    一个CANopen的应用样例(上)

    ,模拟一个接入CAN总线CANopen主站设备节点。在运行演示项目时,可以使用PCAN-View软件,通过CAN总线发现运行了CANopen
    的头像 发表于 06-23 15:57 1411次阅读
    一个<b class='flag-5'>CANopen</b>的应用样例(上)