Skip to content

使用示例

1. 环境配置

  • 仲裁域波特率:1Mbps 80%。
  • 数据与波特率:5Mbps 75%。

2. 基础示例

读取 ID 为 1 的当前位置

指令 = CMD_RD;当前位置低 16 位地址 = 0x14,读取两个寄存器的数据;

指令包:

CAN-IDDLCByte1Byte2Byte3
0x010x030x010x140x02
当前位置查询

应答包:

CAN-IDDLCByte1Byte2Byte3Byte4Byte5Byte6
0x1010x060x010x140x100x270x000x00
当前位置

当前位置为:position = 0x00002710/10000 = 1°

设置 ID 为 1 的模块目标位置为 1°

指令 = CMD_WR;地址 = 0x36; 数据 = 10000 = 0x00002710;

(1)正常模式:

指令包:

CAN-IDDLCByte1Byte2Byte3Byte4Byte5Byte6
0x010x060x020x360x100x270x000x00
设置目标位置

应答包:

CAN-IDDLCByte1Byte2Byte3
0x1010x030x020x360x01
目标位置设置成功

(2)伺服模式:

指令包:

CAN-IDDLCByte1Byte2Byte3Byte4
0x2010x040x100x270x000x00
设置目标位置

应答包:

CAN-IDDLC123456789101112
0x5010x100x640x000x000x000x000x000x000x000x100x200x000x00
当前电流(100mA)当前速度(0)当前位置
13141515
0x010x000x000x00
使能状态(上使能状态)错误代码(无错误)

3. 常用指令包示例

位置伺服指令包

当关节处于位置伺服模式下,关节进入周期性位置伺服控制阶段,控制器向各个关节模块发送位置指令帧,各个关节模块在收到指令帧之后进行相应的位置伺服控制,并将当前的位置信息、电流信息、速度信息、使能状态和错误代码通过一帧反馈帧发送给控制器。
如果一个总线上有 7 个模块参与周期性伺服控制,那么一个控制周期之内,总线上将会产生 14 帧的通讯,以此降低总线负载。

位置伺服指令帧

仲裁域控制域数据域CRC及其他域
STID/11R1IDEFDFR0BRSESIDLC/4Data(4Byte)CRCACKEOFIFS
ID+0x200001010LengthD0D1D2D3
4目前位置

伺服反馈帧:

仲裁域控制域数据域CRC及其他域
STID/11R1......DLC/4Data(16Byte)......
ID+0x5000......LengthD0~D3D4~D7D8~D11D12~D13D14~D15......
16当前电流当前速度当前位置使能状态错误代码......

速度伺服指令包

当关节处于速度伺服模式下,关节进入周期性速度伺服控制阶段,控制器向各个关节模块发送速度指令帧,各个关节模块在收到指令帧之后进行相应的速度伺服控制,并将当前的位置信息、电流信息、速度信息、使能状态和错误代码通过一帧反馈帧发送给控制器。

速度伺服指令帧

仲裁域控制域数据域CRC及其他域
STID/11R1IDEFDFR0BRSESIDLC/4Data(4Byte)CRCACKEOFIFS
ID+0x300001010LengthD0D1D2D3
4目标速度

伺服反馈帧:

仲裁域控制域数据域CRC及其他域
STID/11R1......DLC/4Data(16Byte)......
ID+0x5000......LengthD0~D3D4~D7D8~D11D12~D13D14~D15......
16当前电流当前速度当前位置使能状态错误代码......

电流伺服指令包

控制关节的电流,每下发一帧电流伺服指令帧,返回一帧伺服反馈帧。

电流伺服指令帧

仲裁域控制域数据域CRC及其他域
STID/11R1IDEFDFR0BRSESIDLC/4Data(4Byte)CRCACKEOFIFS
ID+0x400001010LengthD0D1D2D3
4目标速度

伺服反馈帧:

仲裁域控制域数据域CRC及其他域
STID/11R1......DLC/4Data(16Byte)......
ID+0x5000......LengthD0~D3D4~D7D8~D11D12~D13D14~D15......
16当前电流当前速度当前位置使能状态错误代码......

关节状态查询指令包

周期性的查询关节的状态,为了提高总线利用率,将常用的关节数据通过一帧指令进行查询,关节收到该指令帧后,将错误代码、系统电压、系统温度、使能状态和当前位置放到一帧关节状态反馈帧内进行反馈。

关节状态查询指令帧

仲裁域控制域数据域CRC及其他域
STID/11R1IDEFDFR0BRSESIDLC/4Data(0Byte)CRCACKEOFIFS
ID+0x600001010Length
0

关节状态反馈帧:

仲裁域控制域数据域CRC及其他域
STID/11R1......DLC/4Data(16Byte)......
ID+0x7000.......LengthD0~D1D2~D3D4~D5D6~D7D8~D11D12~D15.......
12错误代码系统电压系统温度D6使能状态
D7抱闸状态
当前位置当前电流......

4. 使用示例

IAP 在线更新标志位(必要操作)

指令包:

CAN-IDDLCCMDINDEXDATA
0x010x030x020x490x00

应答包:

CAN-IDDLCCMDINDEXDATA
0x1010x030x020x490x01

获取当前关节状态

指令包:

CAN-IDDLC
0x6010x00

应答包:

CAN-IDDLCD0D1D2D3D4D5D6D7
0x7010x100x000x000xFC0x080xEA0x010x010x00
错误代码系统电压系统温度使能状态抱闸状态
D8D9D10D11D12D13D14D15
0x610x0D0x030x000xFA0xFF0xFF0xFF
当前位置当前电流

位置模式控制

(1)设置工作模式为位置模式

指令包:

CAN-IDDLCCMDINDEXDATA
0x010x030x020x300x03

应答包:

CAN-IDDLCCMDINDEXDATA
0x1010x030x020x300x01

(2)关节通过位置伺服指令运动

通过关节状态查询指令查询到当前角度后,发送位置伺服指令,使关节运动±10°以内。例如当前角度为20°,关节运动到30°。

指令包:

CAN-IDDLCDATADATADATADATA
0x2010x040xE00x930x040x00

应答包:

CAN-IDDLCD0D1D2D3D4D5D6D7
0x5010x100xC00xFF0xFF0xFF0x000x000x000x00
当前电流当前速度
D8D9D10D11D12D13D14D15
0x400x0D0x030x000x010x000x000x00
当前位置(运动开始之前的位置)使能状态错误代码

再次获取关节状态,当前关节角度相交于开始前的位置±10°。

电流模式控制

(1)设置工作模式为电流模式

指令包:

CAN-IDDLCCMDINDEXDATA
0x010x030x020x300x01

应答包:

CAN-IDDLCCMDINDEXDATA
0x1010x030x020x300x01

(2)关节通过电流伺服指令运动

发送电流伺服指令,关节根据电流值,正向或反向运动(数据为负值时关节反向运动,数据为正值时,关节正向运动),例如电流为500MA。

指令包:

CAN-IDDLCDATADATADATADATA
0x4010x040xF40x010x000x00

应答包:

CAN-IDDLCD0D1D2D3D4D5D6D7
0x5010x100xF30xFF0xFF0xFF0x020x000x000x00
当前电流当前速度
D8D9D10D11D12D13D14D15
0xBB0xB00x090x000x010x000x000x00
当前位置(运动开始之前的位置)使能状态错误代码

速度模式控制

(1)设置工作模式为速度模式

指令包:

CAN-IDDLCCMDINDEXDATA
0x010x030x020x300x02

应答包:

CAN-IDDLCCMDINDEXDATA
0x1010x030x020x300x01

(2)关节通过速度伺服指令运动

发送速度伺服指令,关节根据速度值,正向或反向运动(数据为负值时关节反向运动,数据为正值时,关节正向运动),例如速度为:5RPM。

指令包:

CAN-IDDLCDATADATADATADATA
0x3010x040xC40x090x000x00

应答包:

CAN-IDDLCD0D1D2D3D4D5D6D7
0x5010x100xC00xFF0xFF0xFF0x000x000x000x00
当前电流当前速度
D8D9D10D11D12D13D14D15
0x760x140x030x000x010x000x000x00
当前位置(运动开始之前的位置)使能状态错误代码

清除关节错误

指令包:

CAN-IDDLCCMDINDEXDATA
0x010x030x020x0F0x01

应答包:

CAN-IDDLCCMDINDEXDATA
0x1010x030x020x0F0x01

注意

清除关节错误后,将工作模式切换到位置伺服模式,发送使能指令,关节使能成功。

设置关节零位

指令包:

CAN-IDDLCCMDINDEXDATA
0x010x030x020x0E0x01

应答包:

CAN-IDDLCCMDINDEXDATA
0x1010x030x020x0E0x01

设置使能状态

上使能

指令包:

CAN-IDDLCCMDINDEXDATA
0x010x030x020x0A0x01

应答包:

CAN-IDDLCCMDINDEXDATA
0x1010x030x020x0A0x01

禁使能

指令包:

CAN-IDDLCCMDINDEXDATA
0x010x030x020x0A0x00

应答包:

CAN-IDDLCCMDINDEXDATA
0x1010x030x020x0A0x01

低功耗模式说明

低功耗模式开启后,每个关节的单个关节功耗最大不超过80W,当给内存向量表地址0x69写标志位为1时开始低功耗模式,写0时关闭低功耗模式进入正常关节状态。

说明

仅支持关节WHJ10N/WHJ30/WHJ60固件版本519及后续版本。

末端板模式说明

末端板模式,当内存向量表地址0x79为0时,表示末端板为非关节,当内存向量表地址0x79为1时,表示末端板为关节模式,此模式下末端板为关节。

说明

仅支持关节WHJ10N/WHJ30/WHJ60固件版本519及后续版本。

分时上电模式说明

关节分时模式,当内存向量表地址0x1f为0时,表示关节上电延时,当内存向量表地址0x1f为1时,表示表示关节上电无延时。

说明

仅支持关节WHJ10N/WHJ30/WHJ60固件版本519及后续版本。