【CANopen】 CAN 接口上位机的电机调试

1 CAN 基本框架

请添加图片描述

2 CAN 上位机

via.ZQWL-USB-CANFD-Tool 使用手册 V1.0.4

2.1 发送接收界面介绍

请添加图片描述

  1. 发送方式
  • 正常发送:在 ID 仲裁丢失或发送出现错误时,CAN 控制器会自动重发,直到发送成功,或发送超时(超时时间 1 秒),或总线关闭。
  • 单次发送:在一些应用中,允许部分数据丢失,但不能出现传输延迟时,自动重发就没有意义了。在这些应用中,一般会以固定的时间间隔发送数据,自动重发会导致后面的数据无法发送,出现传输延迟。使用单次发送,仲裁丢失或发送错误,CAN 控制器不会重发报文。
  • 自发自收:产生一次带自接收特性的正常发送,在发送完成后,可以从接收缓冲区中读到已发送的报文。
  • 单次自发自收:产生一次带自接收特性的单次发送,在发送出错或仲裁丢失不会执行重发。在发送完成后,可以从接收缓冲区中读到已发送的报文。
  1. 帧类型

帧类型分为【标准帧】和【扩展帧】。选择标准帧时,帧 ID 有效位 11 位;选择扩展帧时,帧 ID 有效位为 29 位。

  1. 帧格式

帧格式分为【数据帧】和【远程帧】。

由于远程帧无数据、CANFD 不支持远程帧,故当您选择【远程帧】时,发送将不携带数据;当您勾选【CANFD】时,帧格式只能选择【数据帧】。

  1. 帧 ID

当帧类型选择【标准帧】时,帧 ID 有效范围为 0x0~0x7FF;ZQWL-USB-CANFD-Tool 使用手册 V1.0.4

当帧类型选择【扩展帧】时,帧 ID 有效范围为 0x0~0x1FFFFFFF。

  1. 数据长度

当不勾选【CANFD】时,数据长度取值范围为 0~8

当勾选【CANFD】时,数据长度取值范围为 0~64;在数据长度大于 8 时,数据长度非线性增长。

  1. 数据

数据一栏允许填入数据个数,与【数据长度】一栏填入长度对应。若填入数据个数小于数据长度,则发送时将自动补 0。例如,您填写数据长度为 6,数据应填入 6 个字节,若填入 5 个字节,则最后一个字节为 0。

  1. 发送总帧数

该栏表示发送次数,当填入-1 时,点击发送后,会按照设置好的参数持续发送。

  1. 发送周期

循环发送的时间,当填 0 时,全速发送。

  1. ID 递增

使能后,在发送总帧数不为 1 的情况下,每发一帧,将 ID 增加 1(标准帧最大 0x7FF,扩展帧最大 0x1FFFFFFF);

  1. 数据递增

使能后,在发送总帧数不为 1 的情况下,每发一帧,数据增加 1(低位在前),注意,递增的数据长度最大为 8。

  1. 保存

用于将当前界面的数据保存到文档。

  1. 实时保存

用于实时保存总线报文。

  1. 合并相同 ID

将收发界面的相同的 ID 合并为一条(注意当方向不同时,不合并)。

  1. 总线收发速率

通过主界面的发送速率和接收速率,可以很方便的看出当前 CAN(FD)总线的负荷情况。

  1. 清空和暂停

清空指将当前界面数据清空;暂停指将当前界面保持不变。

2.2 中继器功能

在这里插入图片描述


3 CAN 二次开发注意事项

via.ZQWL-USBCANFD 二次开发通讯协议 V1.05

3.1 USB 硬件描述符

在这里插入图片描述
例子

3.2 参数配置

3.2.1 参数含义

每帧数据长度为 22 字节,十六进制格式:包括 2 个字节帧头(0x49,0x3B)、1 个字节功能码、1 个字节读/写标志、16 个字节数据和 2 个字节帧尾(0x45,0x2E):
在这里插入图片描述

[!attention]

  1. 读/写:当需要读参数,填 0x52;当需要写参数时,填 0x57
    其中,“设备信息”和“设备序列号”命令只支持读命令(0x52
  2. CAN 通道号:取值为 0x00~0x01,分别对应 CAN0~CAN1
  3. 自定义波特率标志0x00 为采用“常用波特率码”
  4. 常用波特率码
    在这里插入图片描述
    ![[attachments/CAN 接口上位机的电机调试_image_8.png|325]]
  5. 系统控制命令
    可以通过这个命令实现将设置好的参数写入到设备里(即断电不丢失)。
  6. 生效参数
    • 0x00 为不生效(断电参数丢失)
    • 0x01 为生效(保存到 flash 中,断电不丢失)
  7. 系统复位
    • 0x00 为系统不复位
    • 0x01 为系统复位
  8. CAN 0 开关
    • 0x00 为关闭 CAN 0
    • 0x01 为开启 CAN 0;
  9. CAN 1 开关
    • 0x00 为关闭 CAN 1
    • 0x01 为开启 CAN 1;
3.2.2 串口助手举例
3.2.2.1 读取设备信息

上位机发送(Hex 格式):49 3B 40 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E

在这里插入图片描述

3.2.2.2 读取设备序列号

上位机发送(Hex 格式):49 3B 41 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E

在这里插入图片描述

3.2.2.3 设置 CAN 参数

设置 CAN0 参数:仲裁域波特率 250kbps,数据域波特率 500kbps

上位机发送(Hex 格式):49 3B 42 57 00 00 45 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E

![[attachments/CAN 接口上位机的电机调试_image_10.png|550]]

3.2.2.4 发送生效参数并开启 CAN 0 命令

注意,设置完后,还要发送生效参数并开启 CAN0 命令:
开启任一 CAN 通道后,设备开始向上位机发心跳包。

上位机发送(Hex 格式):49 3B 44 57 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E

![[attachments/CAN 接口上位机的电机调试_image_12.png|550]]

3.3 心跳包

[!info]
我们购买的的设备为 CAN 单双通道
故心跳包选择格式:单双通道设备心跳包

3.3.1 单双通道设备心跳包格式

单双通道心跳包为设备向上位机发送的数据包
![[attachments/CAN 接口上位机的电机调试_image_13.png]]

  • 功能码为 0xFF(注意 4 通道功能码是 0xFE)。
  • 设备状态:1 个字节,定义如下:

![[attachments/CAN 接口上位机的电机调试_image_14.png|800]]

3.3.2 心跳包参数含义
  • 发送速率:每秒发送的 CAN(FD)报文个数。
  • 接收速率:每秒接收的 CAN(FD)报文个数。
  • 错误计数器
    包括发送错误计数器和接收错误计数器,这些状态直接反映了总线的通畅情况,当接收错误计数器值大于 127 时,总线几乎已经瘫痪。当出现错误值较高的情况(40 以上),表示总线的通讯出现比较严重的阻塞,此时就有必要调整 CAN (FD) 网络的波特率值或增加CAN (FD) 网桥,以提高 CAN (FD) 总线质量。当总线通信良好时,错误计数器一般都能维持在 0。

在没有数据向 CAN(FD)发送时,心跳包每隔 1 秒向上位机发送一次,当有数据向CAN (FD) 发送时,设备立即向上位机发送一条心跳包。

3.4 CAN数据收发指令

通过该命令可以实现 CAN(FD)报文的发送和接收(BYTE:字节),报文格式如下:

![[attachments/CAN 接口上位机的电机调试_image_15.png]]

  1. BYTE0: 帧头固定为 0x5A;
  2. BYTE1:帧信息 1,包含 CAN 通道和 CAN(FD)报文数据长度 DLC;
    BYTE1字节的每个 bit 位的含义
    当为 CAN 帧时,DLC 的取值范围是 0~8

[!caution]
BYTE 1 为 0 xFF 或 0 XFE 时为设备发向上位机的心跳包,接收数据时需要注意。

  1. BYTE2:帧信息 2,包含发送类型帧格式帧类型是否加速等信息
    BYTE2含义定义

[!caution]
CAN 通道号有 3 个 bit 构成,从高位到低位分别是:BYTE2 的 Bit4、Bit3、BYTE1的 Bit7。取值为 0x00 ~~ 0x07,分别对应 CAN0 ~~ CAN7 通道。

  • 正常发送:在 ID 仲裁丢失或发送出现错误时,CAN 控制器会自动重发,直到发送成功,或发送超时(超时时间 1 秒),或总线关闭。
  • 单次发送:在一些应用中,允许部分数据丢失,但不能出现传输延迟时,自动重发就没有意义了。在这些应用中,一般会以固定的时间间隔发送数据,自动重发会导致后面的数据无法发送,出现传输延迟。使用单次发送,仲裁丢失或发送错误,CAN控制器不会重发报文。
  1. BYTE3~6:CAN(FD)帧 ID,一共 4 个字节。标准帧时,只有 BYTE5~6 的低 11bit 有效;扩展帧时,29bit 有效。

[!caution]
BYTE3 的最高位(Bit7)是 CAN 协议类型标志:0 为CAN 帧;1 为CANFD 帧;

  1. 帧数据:长度为 DLC。

  2. 帧尾:一个字节,固定为 0xA5

[!attention]
当上位机向设备发送 CAN(FD)数据包时,设备收到后会立即返回一条心跳包。


4 CANopen 协议

4.1 SDO 报文

发送一条指令, 如果成功就会返回 60 开头的报文

在这里插入图片描述

sdo有是会因为种种原因导致通信不正常.

在这里插入图片描述

4.2 PDO 报文

4.2.1 PDO 相关含义

进行 pdo 通信, 需要配置两个部分:通讯参数映射参数.
在这里插入图片描述
![[attachments/CAN 接口上位机的电机调试_image_22.png]]

的指令是 181h, 281h, 381h, 481h. 见到这几个开头的报文, 就知道它是驱动器发送的 TPDO
RPDO 的指令是 201h, 301h, 401h, 501h. 见到这几个开头的报文, 就知道它是驱动器接收的 RPDO

![[attachments/CAN 接口上位机的电机调试_image_23.png]]

4.2.2 CanOpen–PDO配置方法

通信参数配置参数映射参数配置参数

  1. 失能(设置201为PDO的ID,8000应该表示失能)
    601,22 00 14 01 01 02 00 80

  2. 设置类型等相关参数(收到同步帧,并有事件发生)
    601,22 00 14 02 00 00 00 00

  3. 对映射对象的子索引0x00写入0;清除原有映射内容
    601,22 00 16 00 00 00 00 00

  4. 写入映射对象数据(数据长度(1)+ 数值(1)+OD(2)= 4)
    601, 22 00 16 01 10 00 40 60
    601, 22 00 16 02 20 00 7a 60
    601, 22 00 16 03 08 00 60 60

  5. 映射对象的子索引0x00写入3,说明有3个映射对象
    601, 22 00 16 00 03 00 00 00

  6. 使能(设置201为PDO指令的ID,0000应该表示使能)
    601, 22 00 14 01 01 02 00 00

  7. 在进行pdo操作之前,要输入 NMT 命令先让can总线进入操作模式
    000,01 01

4.3 NMT 命令

NMT(Network Management Tool)命令在 CANopen 协议中用于管理网络中的节点。NMT 命令允许上位机或网络管理者控制节点的状态,例如启动、停止或重置节点。以下是设定 NMT 命令的基本步骤:

4.3.1 确定 NMT 命令类型

CANopen 定义了几种 NMT 命令,包括:

  • NMT_Start:启动节点
  • NMT_Stop:停止节点
  • NMT_PreOperational:将节点置于预操作模式
  • NMT_Reset_Node:重置节点
  • NMT_Reset_Communication:重置通信
4.3.2 构造 NMT 报文

NMT 报文是一个标准的 CAN 报文,具有固定的格式。构造 NMT 报文需要以下信息:

  • COB-ID:NMT 报文的 CAN 标识符,通常是 0x000
  • Command:NMT 命令代码,根据所选命令(Start, Stop 等)而定。
  • Node ID:目标节点的 ID。
4.3.3 发送 NMT 报文

使用 CAN 接口将构造好的 NMT 报文发送到 CAN 总线上。

4.3.4 示例 NMT 报文构造:
4.3.4.1 NMT Start 命令:
COB-ID: 0x000
Byte 0: 0x01 (NMT Start command)
Byte 1: 目标节点的Node ID
Byte 2: 0x00 (保留字段)
Byte 3: 0x00 (保留字段)
Byte 4: 0x00 (保留字段)
Byte 5: 0x00 (保留字段)
Byte 6: 0x00 (保留字段)
Byte 7: 0x00 (保留字段)

在这个示例中,如果你想启动节点 ID 为 1 的设备,那么 Byte 1 将是 0 x 01。

4.3.4.2 NMT Stop 命令:
COB-ID: 0x000
Byte 0: 0x02 (NMT Stop command)
Byte 1: 目标节点的Node ID

其他字节为保留字段,通常设置为 0 x 00。

4.3.4.3 NMT Reset Node 命令:
COB-ID: 0x000
Byte 0: 0x03 (NMT Reset Node command)
Byte 1: 目标节点的Node ID

同样,其他字节为保留字段。

4.3.4.4 等待响应

在发送 NMT 命令后,目标节点应该根据命令改变其状态。某些 NMT 命令可能会从节点收到响应,例如心跳或状态变化。

4.4 台达电机操作模式设定

4.4.1 速度模式
  1. 设置为速度模式
    601,22 60 60 00 03 00 00 00

  2. 速度设置为0
    601,23 ff 60 00 00 00 00 00// 发送速度00 即停下来

  3. 使能
    601,2b 40 60 00 06 00 00 00 // 配置驱动器(固定流程)
    601,2b 40 60 00 07 00 00 00// 配置驱动器(固定流程)
    601,2b 40 60 00 0f 00 00 00// 配置驱动器(固定流程)

  4. 设置速度
    601,23 ff 60 00 e8 03 00 00 // 发送速度e8 03,是小端模式正确顺序为03e8即十进制1000

4.4.2 位置规划模式
  1. 设定模式
    601,2b 60 60 00 01 00 00 00
  2. 设定目标位置
    601,2b 7a 60 00 30 75 00 00 // 30000 PUU
  3. 设定速度命令
    601,2b 81 60 00 08 bb 00 00 // 3000PUU/s

    此处应该将电机需要的四个参数都设定好

  4. 使能
    601,2b 40 60 00 06 00 00 00
    601,2b 40 60 00 07 00 00 00
    601,2b 40 60 00 0f 00 00 00
    601,2b 40 60 00 1f 00 00 00
  5. 获得回授信息
    601,40 64 60 00 00 00 00 00
    601,40 41 60 00 10 00 00 00
4.4.3 补间位置模式
  1. 设置为补间位置模式
    601,22 60 60 00 07 00 00 00

  2. 设定补间周期
    601,23 c2 60 00 05 00 00 00 // 设定需与通讯周期 OD 1006h 相同,1-10ms之间,暂定5ms

  3. 配置 PDO

    1. 失能(设置 201 为 PDO 的 ID,8000 应该表示失能)
      601,22 00 14 01 01 02 00 80
    2. 设置类型等相关参数(收到同步帧,并有事件发生)
      601,22 00 14 02 00 00 00 00
    3. 对映射对象的子索引 0 x 00 写入 0;清除原有映射内容
      601,22 00 16 00 00 00 00 00
    4. 写入映射对象数据(数据长度(1)+ 数值(1)+OD(2)= 4)
      601, 22 00 16 08 20 00 c1 60
    5. 映射对象的子索引 0 x 00 写入 1, 说明有 1 个映射对象
      601, 22 00 16 00 01 00 00 00
    6. 使能(设置 201 为 PDO 指令的 ID,0000 应该表示使能)
      601, 22 00 14 01 01 02 00 00
    7. 在进行 pdo 操作之前, 要先让 can 总线进入操作模式
      000,01 01
  4. 使能

    601,2b 40 60 00 06 00 00 00 // 配置驱动器 (固定流程)
    601,2b 40 60 00 07 00 00 00 // 配置驱动器 (固定流程)
    601,2b 40 60 00 0f 00 00 00 // 配置驱动器 (固定流程)

  5. 设置补间位置
    201,e8 03 00 00 // 发送速度 e8 03, 是小端模式正确顺序为 03 e8 即十进制 1000,数据位数取决于映射对象数据设定的数据长度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值