跳到主要内容

UART 通讯功能使用

UART 通讯协议

  • 波特率:115200
  • 数据位:8bit
  • 停止位:1bit
  • 校验位:无
  • 回复方式:一问一答

UART 通讯协议采用固定的十个字节格式:

设备地址命令字对象地址错误/清除数据区校验
Byte1Byte2Byte3Byte4Byte5Byte6Byte7Byte8Byte9Byte10
IDCMDAddrHAddrLErrRData(MSB)Data(N-1)Data(N-2)Data(LSB)Check
  • ID: 本机地址,默认为 0x01。若 ID 不对,那本机将无响应。
  • CMD: 命令字,分为读命令 0xA0 和写命令 0x51,0x52,0x54。
    命令字具体定义如下:
    • 读命令:主机读取本机相关对象地址的数

      主机发送 CMD本机回复 CMD对应意义
      0xA0By0xA1对象数据是 8 位:[Data(LSB)]
      0xA00xA2对象数据是 16 位:[Data(N-2)~Data(LSB)]
      0xA00xA4对象数据是 32 位:[Data(MSB)~Data(LSB)]
      0xA00x5F对象地址不存在,数据区无效
      0xA00x80校验出错, 数据区无效
    • 写命令:主机往本机相关对象地址写数据

      主机发送 CMD本机回复 CMD对应意义
      0x510x61对象数据是 8 位:[Data4],写成功
      0x50数据类型不匹配,写失败
      0x58对象地址不可写,写失败
      0x5F对象地址不存在,写失败
      0x520x62对象数据是 16 位:[Data3~Data4],写成功
      0x50数据类型不匹配,写失败
      0x58对象地址不可写,写失败
      0x5F对象地址不存在,写失败
      0x540x64对象数据是 32 位:[Data1~Data4],写成功
      0x50数据类型不匹配,写失败
      0x58对象地址不可写,写失败
      0x5F对象地址不存在,写失败
  • AddrH,AddrL: 对象地址高 8 位和低 8 位
  • ErrR:错误报告与清除
    • 主机任何有效读/写帧中,ErrR 若为 0xCE,即清除本机错误。
    • 本机返回的 ErrR 中的数据即代表本机错误信息,8bit 中代表 8 种错误,0 无错误,1 有错误.错误明细如下:
      本机回应的 ErrR错误描述
      bit0: [LSB]保留
      bit1:跟随误差超过允许值
      bit2:编码器错误
      bit3:电机过载
      bit4:驱动器温度过高
      bit5:直流母线电压过高
      bit6:直流母线电压过低
      bit7: [MSB]驱动器输出短路
  • Data(MSB)~Data(LSB): 数据区,高位在前,地位在后。
  • Check:校验和, Check=[Byte1~Byte9]求和取低 8 位。

UART 通讯实例

实例1:读取驱动器实际直流母线电压
通过查阅常用对象列表中的"表 F1-3 测量数据"列表,可知"实际直流母线电压"对象地址为 0x5001,且是个 16 位有符号数。假设当前实际直流母线电压值为 36V。

设备地址命令字对象地址错误/清除数据区校验
主机发送0x010xA00x500x010x000x000x000x000x000xF2
本机回应0x010xA20x500x010x000x000x000x000x240x18

实例2:读取电机编码器实际位置
通过查阅常用对象列表中的"表 F1-3 测量数据"列表,可知"实际位置值"对象地址为 0x7071,且是个 32 位有符号数。

设备地址命令字对象地址错误/清除数据区校验
主机发送0x010xA00x700x710x000x000x000x000x000x82
假设当前电机编码器实际位置 -8237,其十六进制为 0xFFFFDFD3
本机回应0x010xA40x700x710x000xFF0xFF0xDF0xD30x36
如果驱动器有错误发生,假设发生了"跟随误差超过允许值"错误
本机将会回应0x010xA40x700x710x020xFF0xFF0xDF0xD30x38

实例3:写目标速度 rpm
通过查阅常用对象列表中的"表 F1-2 基本模式及控制"列表,可知"目标速度 rpm"对象地址为 0x70B1,且是个 16 位有符号数。假设要写入的数据是 100,即十六进制为 0x0064。

设备地址命令字对象地址错误/清除数据区校验
主机发送0x010x520x700xB10x000x000x000x000x640xD8
本机回应0x010x620x700xB10x000x000x000x000x640xE8

实例4:写目标速度(更精细速度命令)
通过查阅常用对象列表中的"表 F1-2 基本模式及控制"列表,可知"目标速度"对象地址为 0x70B2,且是个 32 位有符号数。
假设要实现是 3.21rpm 速度命令,通过公式
U[y,x]:[DEC]=([rpm] * 512 * [反馈精度])/1875,计算出对应的 DEC 数值,这里[反馈精度]是 4096。
[DEC]=(3.21 * 512 * 4096)/1875=3590,即十六进制为 0x0E06。

设备地址命令字对象地址错误/清除数据区校验
主机发送0x010x540x700xB20x000x000x000x0E0x060x8B
本机回应0x010x640x700xB20x000x000x000x0E0x060x9B