问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

CANopen总线初始化配置详解

创作时间:
作者:
@小白创作中心

CANopen总线初始化配置详解

引用
CSDN
1.
https://blog.csdn.net/majingming123/article/details/136700453

CANopen是一种广泛应用于工业自动化领域的现场总线通信协议,它定义了设备如何在嵌入式网络中通信。本文将详细介绍CANopen总线的初始化配置过程,包括各个寄存器的功能和具体配置步骤。

CANopen总线关键寄存器详解

在CANopen总线的配置中,有几个关键的寄存器需要特别关注:

  • 0x1001: 表示当前的错误状态,该寄存器是8bit的,每一个位表示一类错误。通过读取0x1001索引,可以快速了解设备的错误状态和错误类型。设备发生错误后就设置0x1001对应的位。以便主站读取。因为每个位表示一类错误。所以我认为通过0x1001只能了解到设备的大概故障方向。

  • 0x1003: 是预定义错误字段,是设备在运行过程中检测到错误后把错误代码放到0x1003索引中。0x1003是一个数组,可以存储历史错误。该索引存储的是较为详细的错误代码。最新的错误代码放到数组0,原来数据0的错误代码滚动到数据1的位置,依此类推。

  • 0x1005: 设置SYNC报文的COB-ID。Bit30(次高位)为1使能SYNC,为0失能SYNC。通常把0x1005索引的值设置为0x40000080。

  • 0x1006: 通信循环周期,设置同步报文的发送周期,单位us。

  • 0x1007: 同步窗口时间,约束了同步帧发送后从节点发送PDO的有效时间,即在这个时间内发送的PDO才有效,超时后的PDO将被丢弃。主站和从站都可以发送SYNC报文,但一般由主站发送同步报文。

  • 0x1017: 设置自身节点心跳时间周期,单位ms。主站和从站都可以发送心跳报文。

  • 0x1016: 设置心跳消费节点和时间。高16位表示消费节点ID,低16位表示消费超时周期,单位ms。例如设置为:0x000203E8,表示对第二个节点消费,消费超时时间是1000ms。该功能主要作用是用来监视其它节点的状态。主站和从站都可以消费监视其它节点的心跳报文。

  • 0x100C: 设置节点守护的时间。该索引的值决定了多长时间发送一次节点守护报文。单位ms。

  • 0x100D: 设置节点守护的次数。该索引值要与0x100C搭配使用,可以把该值看做一个因子n,节点守护超时时间 = n * 节点守护时间。比如主站中设置0x100C的守护时间是1000,0x100D中的守护次数是3,那么被守护节点只要在3000ms内应答一次节点守护报文就不算超时。这两个索引的作用就是通过发送节点守护报文的方式获取其它节点状态。主站和从站都都可以发送节点守护报文,但一般是主站发送。

  • 0x1014: 该索引设置紧急报文的COB-ID

PDO配置详解

PDO(Process Data Object)是CANopen中用于传输过程数据的对象。在配置PDO时,需要关注以下几个参数:

  • 00h: 入口数目->sub有几个;

  • 01h: COB_ID

  • 02h:

  • 对于TDO而言,为0时表示,映射数据变化并且收到一个同步帧,才会发送TPDO。为1~240时表示,收到相应个数的同步帧时就发送PDO,和映射数据是否变化没有关系。为254、255时表示,映射数据改变或事件计时器到,就会发送PDO。我这里测试为254或者255的情况下,如果映射数据改变的时候,不会发送PDO,只有事件计时器到才会发送PDO

  • 对于RPDO而言,为0~240时表示,只要收到一个同步帧,则将RPDO的数据更新到应用。为254、255时表示,将接收到的数据直接更新到应用。

  • 03h: Inhibit time 生产禁止约束时间(1/10ms):约束 PDO 发送的最小间隔,避免导致总线负载剧烈增加,比如数字量输入过快,导致状态改变发送的 TPDO 频繁发送,总线负载加大,所以需要一个约束时间来进行“滤波”,这个时间单位为 0.1ms;

  • 05h: Event timer 事件定时器触发的时间(单位 ms):定时发送的 PDO,它的定时时间,如果这个时间为 0,则这个 PDO 为事件改变发送。

  • 06h: SYNC start value 同步起始值:同步传输的 PDO,收到诺干个同步包后,才进行发送,这个同步起始值就是同步包数量。比如设置为 2,即收到 2 个同步包后才进行发送。

  • PDO映射关系

  • 1800配置PDO发送关系

  • 1A00配置PDO映射字典指定地址

  • 最终PDO按照1800配置发送指定地址的数据

CANopen发送初始化配置

以下是具体的CANopen发送初始化配置过程:

针对ID===2;

报文采样:

停止所有节点:

000        DATA    STANDARD    2      82 00

读取设备类型:

602        DATA    STANDARD    8      40 00 10 00 00 00 00 00

配置PDO发送关系:

602        DATA    STANDARD    8      23 00 18 01 82 01 00 00
602        DATA    STANDARD    8      23 01 18 01 82 02 00 00
602        DATA    STANDARD    8      23 02 18 01 82 03 00 00
602        DATA    STANDARD    8      23 03 18 01 82 04 00 00

配置RPDO COB-ID:

602        DATA    STANDARD    8      23 00 14 01 02 02 00 00
602        DATA    STANDARD    8      23 01 14 01 03 02 00 00

配置同步类型同步周期:

602        DATA    STANDARD    8      2F 00 18 02 14 00 00 00
602        DATA    STANDARD    8      2F 01 18 02 14 00 00 00
602        DATA    STANDARD    8      2F 02 18 02 14 00 00 00
602        DATA    STANDARD    8      2F 03 18 02 14 00 00 00

配置异步类型:

602        DATA    STANDARD    8      2F 00 14 02 FF 00 00 00
602        DATA    STANDARD    8      2F 01 14 02 FF 00 00 00

配置心跳时间周期:

602        DATA    STANDARD    8      2B 17 10 00 64 00 00 00

配置心跳消费节点和时间:

602        DATA    STANDARD    8      23 16 10 01 2C 01 7F 00

配置PDO映射字典:

602        DATA    STANDARD    8      2F 00 1A 00 00 00 00 00
602        DATA    STANDARD    8      23 00 1A 01 20 00 64 60
602        DATA    STANDARD    8      23 00 1A 02 20 00 69 60
602        DATA    STANDARD    8      2F 00 1A 00 02 00 00 00

配置1A01:

602        DATA    STANDARD    8      2F 01 1A 00 00 00 00 00
602        DATA    STANDARD    8      23 01 1A 01 10 00 1C 22
602        DATA    STANDARD    8      23 01 1A 02 10 00 41 60
602        DATA    STANDARD    8      2F 01 1A 00 02 00 00 00

配置1A02:

602        DATA    STANDARD    8      2F 02 1A 00 00 00 00 00
602        DATA    STANDARD    8      23 02 1A 01 08 00 61 60
602        DATA    STANDARD    8      23 02 1A 02 20 00 83 21
602        DATA    STANDARD    8      2F 02 1A 00 02 00 00 00

配置1A03:

602        DATA    STANDARD    8      2F 03 1A 00 00 00 00 00
602        DATA    STANDARD    8      23 03 1A 01 10 00 01 22
602        DATA    STANDARD    8      2F 03 1A 00 01 00 00 00

配置1600:

602        DATA    STANDARD    8      2F 00 16 00 00 00 00 00
602        DATA    STANDARD    8      23 00 16 01 08 00 60 60
602        DATA    STANDARD    8      23 00 16 02 10 00 40 60
602        DATA    STANDARD    8      2F 00 16 00 02 00 00 00

配置1601:

602        DATA    STANDARD    8      2F 01 16 00 00 00 00 00
602        DATA    STANDARD    8      23 01 16 01 20 00 FF 60
602        DATA    STANDARD    8      23 01 16 02 20 00 7A 60
602        DATA    STANDARD    8      2F 01 16 00 02 00 00 00

启动节点:

000        DATA    STANDARD    2      01 02

结合实际配置

实际配置中,需要根据具体的应用场景和需求来调整上述参数。例如,通信循环周期、同步窗口时间、心跳时间周期等参数都需要根据系统的实时性和可靠性要求来设定。

通过本文的介绍,读者应该能够对CANopen总线的初始化配置过程有更深入的理解。对于从事工业自动化和总线通信技术的工程师来说,这些知识是非常重要的,可以帮助他们更好地设计和维护基于CANopen的系统。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号