跳转至

CAN2.0A转FTSCS1.0 协议

本文为官方《CAN2.0A转FTSCS1.0 协议》文档的转录。FTSCS1.0 即 通信协议 中各系列共用的 FT-SCS 自定义协议(指令帧与应答帧框架),见 FT-SCS 自定义协议;各系列内存表见 内存表参数。

1、 协议概述

本协议是基于CAN2.0A标准数据帧,自定义通信指令转换成FTSCS1.0自定义协议,以便于FEETECH 所有自定义协议总线舵机与CAN总线设备配合使用。

使用CAN2.0A标准数据帧通信,出厂CAN默认波特率为1M,波特率可配置范围100K~1M,出厂默认通信CAN站号配置为1,CAN波特率、通信站号地址可通过CAN指令进行设置。由于FTSCS1.0协议基于485/TTL,所以CAN转换器需要遵守一问一答的通信规则否则会导致485/TTL总线出现数据冲突情况。

本转换协议需基于FEETECH 特定转换模块(如CAN2.0A 转TTL 单总线模块)来配合使用实现通讯转换功能。

2、 CAN2.0A帧格式

CAN-ID DLC 数据1 数据2 ... 数据n
11位CAN-ID 数据长度,取值范围0~8 每个数据1字节,n<=8

CAN-ID结构:

CAN-ID BIT10 ... BIT6 BIT5 ... BIT0
CAN指令码 CAN站点地址
  • BIT5 ~ BIT0: CAN站号,范围0~63,其中0为广播地址,1~63为单播地址
  • BIT10 ~ BIT6: CAN指令码,用来表示接下来发送的CAN报文功能作用

CAN指令码:

指令码 功能解释 CAN-ID 说明
0x01 内存表读指令 0x080+CAN站号
0x02 内存表写指令 0x100+CAN站号
0x03 位置控制指令 0x180+CAN站号
0x04 同步读指令 0x200+CAN站号
0x05 异步控制指令 0x280+CAN站号
0x06 异步执行指令 0x300+CAN站号
0x07 同步控制指令 0x380+CAN站号
0x08 同步执行指令 0x400+CAN站号
0x09 舵机应答指令 0x480+CAN站号 用到表示舵机应答的数据
0x0A CAN配置指令 0x500+CAN站号
0x0B 舵机校准指令 0x580+CAN站号

2.1 内存表读指令(0x01)

使用内存表读指令对舵机内存表进行读查询,一次最多能读6字节数据。

CAN-ID DLC 数据
发送 0x080+CAN站号 3 舵机ID(1字节)、内存表地址(1字节)、内存表长度N(1字节,N<=6)
应答 0x480+CAN站号 N+2 舵机ID(1字节)、舵机状态(1字节)、内存表数据1(1字节) ... 内存表数据N(1字节)

2.2 内存表写指令(0x02)

使用内存表写指令对舵机内存表进行写数据,一次最多能写6字节数据。

CAN-ID DLC 数据
发送 0x100+CAN站号 N+2 舵机ID(1字节)、内存表地址(1字节)、内存表数据1(1字节) ... 内存表数据N(1字节,N<=6)
应答 0x480+CAN站号 2 舵机ID(1字节)、舵机状态(1字节)

2.3 位置控制指令(0x03)

位置控制指令控制舵机位置,输入指令包括:舵机ID(1字节)、位置(2字节)、加速度(1字节)、速度(2字节)与运行电流(2字节)。

CAN-ID DLC 数据
发送 0x180+CAN站号 8 舵机ID(1字节)、目标位置(2字节)、运行加速度(1字节)、运行速度(2字节)、运行电流(2字节)
应答 0x480+CAN站号 2 舵机ID(1字节)、舵机状态(1字节)

2.4 同步读指令(0x04)

同步读指令,可用于最多同时读取6个舵机的内存表数据。

CAN-ID DLC 数据
发送 0x200+CAN站号 n+2 内存表地址(1字节)、内存表长度N(1字节,N<=6)、舵机ID1(1字节) ... 舵机IDn(1字节,n<=6)
应答 0x480+CAN站号 N+2 舵机ID(1字节)、舵机状态(1字节)、内存表数据1(1字节) ... 内存表数据N(1字节)

2.5 异步控制指令(0x05)

异步控制指令用于异步控制舵机位置,输入指令包括:舵机ID(1字节)、输入指令包括位置(2字节)、加速度(1字节)、速度(2字节)与运行电流(2字节)。

CAN-ID DLC 数据
发送 0x280+CAN站号 8 舵机ID(1字节)、目标位置(2字节)、运行加速度(1字节)、运行速度(2字节)、运行电流(2字节)
应答 0x480+CAN站号 2 舵机ID(1字节)、舵机状态(1字节)

2.6 异步执行指令(0x06)

异步执行指令用于执行缓存的异步控制指令。

CAN-ID DLC 数据
发送 0x300+CAN站号 0 无

2.7 同步控制指令(0x07)

同步控制指令用于同步控制舵机位置,输入指令包括:舵机ID(1字节)、输入指令包括位置(2字节)、加速度(1字节)、速度(2字节)与运行电流(2字节),输入指令先缓存在于CAN转换器中,接收同步执行指令后再转换成舵机同步控制指令输出。

CAN-ID DLC 数据
发送 0x380+CAN站号 8 舵机ID(1字节)、目标位置(2字节)、运行加速度(1字节)、运行速度(2字节)、运行电流(2字节)

2.8 同步执行指令(0x08)

CAN转换器接收同步执行后,将缓存的同步控制指令转换成舵机同步控制指令输出。

执行指令:

CAN-ID DLC 数据
发送 0x400+CAN站号 0 无

清除指令:

CAN-ID DLC 数据
发送 0x400+CAN站号 1 0

查询指令:

CAN-ID DLC 数据
发送 0x400+CAN站号 1 1
应答 0x400+CAN站号 1 缓存指令数量(1字节)

2.9 CAN配置指令(0x0A)

CAN配置指令:

CAN-ID DLC 数据
发送 0x500+CAN站号 3 CAN波特率(1字节)、CAN站号(1字节)、舵机波特率(1字节)
应答 0x500+CAN站号 8 波特率(1字节)、CAN站号(1字节)、舵机波特率(1字节)、预留(1字节)、固件版本(1字节)、固件发布年(1字节)、固件分布月(1字节)、固件发布日(1字节)
  • CAN站号:1~63
  • 舵机波特率:0~3,0表示1M、1表示500k、2表示250k、3表示115200
  • CAN波特率:0~3,0表示1M、1表示500k、2表示250k、3表示100k

返回CAN配置信息:

CAN-ID DLC 数据
发送 0x500+CAN站号 0 无
应答 0x500+CAN站号 8 波特率(1字节)、CAN站号(1字节)、舵机波特率(1字节)、预留(1字节)、固件版本(1字节)、固件发布年(1字节)、固件分布月(1字节)、固件发布日(1字节)

备注:配置修改后重启生效

2.10 舵机校准指令(0x0B)

当前位置重校准为设定值:

CAN-ID DLC 数据
发送 0x580+CAN站号 3 舵机ID(1字节)、校准位置(2字节)
应答 0x480+CAN站号 2 舵机ID(1字节)、舵机状态(1字节)

当前位置校准为中位:

CAN-ID DLC 数据
发送 0x580+CAN站号 1 舵机ID(1字节)
应答 0x480+CAN站号 2 舵机ID(1字节)、舵机状态(1字节)