Emm_V5.0步进闭环驱动说明书Rev1.2

2023-10-15 03:20

本文主要是介绍Emm_V5.0步进闭环驱动说明书Rev1.2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Emm42_V5.0步进闭环驱动说明书Rev1.2

 一、产品介绍

1.1 产品简介

        Emm42_V5.0是张大头闭环伺服全新推出的基于Emm42_V4.2的升级版本,它对闭环算法进行了升级改造,并融合了ZDT_X42_V1.2的软硬件框架,使它具有更高的转速和更快的打印速度,并拥有诸如单圈/多圈回零、多机通讯同步控制、实时转速、到位输出/到位返回命令、相对/绝对位置模式控制等更多强大的功能,此外它还支持内置串口/RS232/RS485/CAN总线模块、支持限制电机堵转电流等,具有更高的安全性和可靠性,满足更广大用户的需求,适合3D打印、写字机、雕刻机、PLC控制、机械臂、小车比赛等用户使用,欢迎大家使用。

 1.2 硬件介绍

 1.3 产品特点

  • Emm42_V5.0采用先进的FOC矢量闭环控制算法,力矩、速度、位置三环控制;
  • 板载工业级高精度16384线磁编码器、板载精密电流传感器;
  • 最大电流3000mA,最高转速3000RPM+(每个电机参数不同最高转速不同);
  • 支持脉冲控制、支持串口/RS232/RS485/CAN通讯控制,支持二者混合控制;
  • 支持多机通讯和多机同步控制,支持最多255个地址的电机进行通讯同步控制;
  • 支持速度模式、位置模式控制,支持曲线加减速,支持立即停止,每个位置指令都支持绝对位置模式和相对位置模式;
  • 开环模式也支持通讯控制,最高转速200-400RPM,也支持曲线加减速和同步控制;
  • 支持单圈就近回零、单圈方向回零、多圈无限位碰撞回零、多圈有限位开关回零;
  • 支持通讯控制到位输出/到位返回命令、支持脉冲控制报警输出;
  • 支持实时转速RPM、相电流Ma、总线电压mV的显示和读取;
  • 具有堵转保护功能,可设置堵转保护的检测电流、转速和持续时间 ,可发送命令解除堵转保护,不需要重新上电;
  • 可支持共阳/共阴信号输入,可支持PLC的24V信号输入,可选光耦隔离输入;
  • 继承ZDT_X42_V1.2硬件,支持内置串口/RS232/RS485/CAN总线模块;
  • 支持1-256任意细分,支持细分插补功能,电机运行更加平滑和静音;
  • 板载小屏幕实时显示系统信息,板载按键一键修改参数,自动保存,立即生效;
  • 电机转速和位置实时更新(使能不使能都可以),可发送命令清零位置;
  • 具有编码器自校准、线序错误识别、自动熄屏、一键恢复出厂设置等众多功能;

1.4 产品参数

主板型号

Emm42_V5.0

主控芯片

高性能32位ARM处理器

驱动电路

8个高品质MOS管组成双H桥驱动

传感器

工业级高精度16384线磁编码器、精密电流传感器

供电电压

7-32V

工作电流

0-3000mA任意电流

信号输入

3.3-28V支持共阳/共阴输入、支持PLC的NPN/PNP的24V信号输入

闭环反馈频率

力矩环20KHz+

速度环20KHz+

位置环20KHz+

最大脉冲频率

160KHz以上

最高转速

3000RPM+,每个电机参数不一样最高转速可能不同

控制精度

小于0.08°

细分支持

1-256任意细分,支持细分插补功能

控制方式

支持脉冲控制,支持串口/RS232/RS485/CAN总线多机通讯同步控制

通讯控制

支持速度模式、位置模式控制,支持曲线加减速,支持立即停止

保护措施

具有堵转保护、欠压警告等功能

静音/震动

低速超静音、超低震动,高速运行平稳,不抖动

其他功能

编码器自校准、电机线序错误识别、自动熄屏、恢复出厂设置等

制动/换向

支持高速3000RPM+立即停止,立即切换方向

回零模式

单圈就近/方向回零、多圈无/有限位开关回零(3D打印不支持)

输出类型支持

支持通讯控制到位输出/到位返回命令、支持脉冲控制报警输出

1.5 版本对比 

品名

Emm42_V5.0

上一代Emm42_V4.2

外观

发布时间

2023年8月

2022年5月

处理器

Cortex-M4F内核,主频120MHz

Cortex-M0内核,主频72MHz

闭环反馈频率

力矩、速度、位置环都是20KHz+

力矩20KHz+、速度、位置10KHz+

最高转速

3000RPM+

2200RPM+

最大打印速度

250mm/s以上

180-220mm/s

控制支持

CAN/485/232/串口/脉冲

485/232/串口/脉冲

电机参数辨识

自动测量电机相电阻、相电感

堵转检测和保护

可设置堵转检测电流、转速、时间

可设置堵转检测误差角度、阈值

堵转电流限制

可限制0-3000Ma堵转电流

回零模式支持

单圈回零、多圈无/有限位回零

仅支持单圈回零

回零触发方式

上电自动触发、发送命令触发

仅支持上电自动触发

通讯控制

速度模式、位置模式、实时转速

速度模式、位置模式

通讯位置模式

支持绝对位置和相对位置模式

仅支持相对位置模式

曲线加减速

0-255加速度档位,加减速更平滑

0-255加速度档位

速度档位

0 - 5000RPM(转/分钟)

1279个非线性速度档位

PID参数

可修改PID参数

不可修改

 1.6 套餐说明

1.7 产品尺寸

 二、闭环PCBA安装

2.1 硬件清单

序号

品名

数量

1

42步进电机

1

2

ZDT_X42_V1.2闭环PCBA

1

3

M3*7mm螺丝

4

4

5*3mm径向磁铁

1

5

尼龙垫片

4

6

3M胶水/超能胶水

1

8

螺丝刀

1

9

1米通讯线

1

         硬件清单如下图所示:

        

        注意:

  1. 胶水尽量选择3M胶水、超能胶水、AB胶等有粘稠状、对金属和磁铁都有较强粘性的胶水,尽量不选择502等低粘稠状的胶水,此类胶水比较容易渗透到电机内部,造成电机的损坏。
  2. 建议选用本店的42磁柱步进电机。

 2.2 安装步骤

三、第一次上电校准

3.1 模块供电接线

        闭环驱动模块的V+和Gnd之间接7-32V电源进行供电,供电接线如下图所示:

3.2 上电自检提示说明

        接好V+和Gnd供电线后上电,ZDT_X42_V1.2闭环驱动板第一次上电会进行自检,可能会出现以下几种情况的提示,请按照相应的步骤进行操作:

       (1)提示1秒“Not Cal”,然后进入校准菜单(此时只有6个菜单项,含Exit项)

  • 错误类型:这是正常现象,只是提示编码器未进行校准;
  • 错误原因:未进行编码器校准;
  • 操作步骤:请参考下面3.4章节的“上电校准编码器”进行操作;

        (2)提示“Phase A+ A- Error!”或“Phase B+ B- Error!”或“Phase AA BB Error!”

  • 错误类型:电机线序错误;
  • 错误原因:A+A-或B+B-的电机线序不对:
  • 操作步骤:42步进的电机线序一般为黑色和绿色是一组,红色和蓝色是一组,分别接到A+A-和B+B-,如果颜色分不出来,可以用万用表的蜂鸣档测一下电机线的任意两根,导通发出声响的两根线为一组,另外两根为一组。

        (3)提提示“Waiting V+ Power”

  • 错误类型:电源供电电压太低;
  • 错误原因:电源电压V+和Gnd的电压不足;
  • 操作步骤:请提供12-32V的电压给驱动器进行供电,推荐24V供电,动力足;

        (4)提提示“Magnet Loss! Enter..”

  • 错误类型:驱动器上的编码器没检测到磁铁;
  • 错误原因:没粘磁铁到电机轴上,没把驱动板固定到电机背后;
  • 操作步骤:按照2.2章节安装步骤进行磁铁的安装和驱动板的固定;

        (5)提提示“Ref Voltage Error!”或者“Bus Current Error!”

  • 错误类型:基准电压芯片故障、电流传感器芯片故障;
  • 错误原因:基准电压芯片故障、电流传感器芯片故障;
  • 操作步骤:请联系客服进行处理;

3.3 按键操作说明

请参考下面4.1章节的“参数显示说明”熟悉使用ZDT_X42_V1.2闭环电机的按键操作和参数显示;

3.4 上电校准编码器

1. 没进行过编码器校准的闭环电机只有6个菜单项,分别是“Cal”、“MotType”、“P_Pul”、“P_Serial”、“Restore”、“Exit”;

2. 没进行过编码器校准的需要先进行编码器校准,操作步骤如下:

(1)上电后选中Cal菜单,按Enter键确认选择,电机开始校准编码器;

(2)电机在“哔”的一声后会慢慢的正转一圈,然后再慢慢的反转一圈;

3. 注意事项:

(1)校准前,请先按照上面2.2章节的“安装步骤”正确安装好磁铁和板子;

(2)请尽量确保电机是空载校准,也可以带轻载进行校准;

(3)电机在校准编码器的过程中,会测量和纠正相关参数,如下:

  1. 测量磁铁安装的偏心位置,并进行线性化纠正;
  2. 测量电机的相电阻和相电感,建立该电机的数学模型;

(4)板子如果从电机上拆卸下来后,磁铁与编码器的相对位置会发生改变,请恢复出厂设置(Restore菜单),再重新上电空载校准编码器;

四、OLED显示与菜单功能介绍

4.1 参数显示说明

4.2 菜单选项说明

  • 菜单项目:Cal

        菜单功能:校准编码器

        菜单选项:

        菜单作用:闭环模式下对编码器进行线性化插值和电角度对齐,可以提高编码器的线性精度,校准前请确保电机类型(MotType菜单)选择正确,并且确保电机空载校准;

  • 菜单项目:MotType

        菜单功能:步进电机类型选择

        菜单选项:0.9°、1.8°

        菜单作用:选择你的42步进电机类型,是0.9°步进电机,还是1.8°步进电机;

  • 菜单项目:P_Pul

        菜单功能:脉冲输入端口控制模式选择

        菜单选项:PUL_OFF、PUL_OPEN、PUL_FOC、ESI_RCO

        菜单作用:脉冲端口控制模式选择:

  1. PUL_OFF:关闭脉冲输入端口,脉冲输入控制无效;
  2. PUL_OPEN:开环模式,不需要编码器就能工作,最高转速约200-400RPM;
  3. PUL_FOC:FOC矢量闭环模式,默认工作模式,电流实时调节,最高转速约3000RPM+(转/每分钟),每个电机参数不一样最高转速不同;
  4. ESI_RCO:复用为限位输入和到位输出,请参考第七和八章节说明进行操作;

  • 菜单项目: P_Serial

        菜单功能:通讯端口复用选择

        菜单选项:RxTx_OFF、ESI_ALO、UART_FUN、CAN1_MAP

        菜单作用:选择通讯端口复用为哪种通讯方式:

  1. RxTx_OFF:关闭通讯端口,通讯控制无效;
  2. ESI_ALO:将R/A/H复用为限位开关输入,将T/B/L端口复用为报警输出;
  3. UART_FUN:将R/A/H和T/B/L端口复用为串口/RS232/RS485通讯控制功能;
  4. CAN1_MAP:将R/A/H和T/B/L端口复用为CAN通讯控制功能,可用CAN通讯控制;

  • 菜单项目:En

        菜单功能:设置En端口的有效电平

        菜单选项:L、H、Hold

        菜单作用:选择En端口的有效电平:

  1.  L: En端口低电平有效,即En端口控制到低电平电机使能,高电平不使能;
  2.  H: En端口高电平有效,即En端口控制到高电平电机使能,低电平不使能;
  3. Hold:En端口一直有效,即无论En端口是高电平还是低电平,电机一直使能;

        注意:En端口在不接线情况下,En端口默认是Hold模式,即一直使能状态;

  • 菜单项目:Dir

        菜单功能:设置脉冲控制下,电机旋转的正方向

        菜单选项:CW、CCW

        菜单作用:设置Dir端口的有效方向,即设置脉冲输入控制下,电机旋转的正方向;

  • 菜单项目:MStep

        菜单功能:设置细分步数

        菜单选项:1、2、4、8、16、32、64、128、256

        菜单作用:设置闭环驱动脉冲输入的细分步数,此值要与你的主板设置的细分步数要保持一样,默认16细分。如果需要用到其他细分,可以通过串口发送命令进行修改;

  • 菜单项目:MPlyer

        菜单功能:设置脉冲输入控制下,内部的细分插补功能

        菜单选项:Disable、Enable

        菜单作用:使能(Enable)该选项后,驱动器会将你设置的当前细分值,如16细分,内部自动插补到最高细分去运行,这将有效的减少电机低速运动时的震动和噪音;

  • 菜单项目:AutoSDD

        菜单功能:设置自动熄屏功能菜单选项:Disable、Enable

        菜单作用:使能(Enable)该选项后,在7秒内无任何按键操作时,屏幕会自动关闭显示,需要点亮时,可以按任意按键进行重新点亮。

  • 菜单项目:Ma

        菜单功能:设置开环模式的工作电流(电机相电流)

        菜单选项:200、400、...、3000(其他电流可用串口进行修改,范围0-3000Ma)

        菜单作用:设置开环模式的实际运行时的工作电流,默认是1000Ma。

  • 菜单项目:Ma_Limit

        菜单功能:设置FOC矢量闭环控制模式下电机堵转时的最大电流(电机相电流)

        菜单选项:200、400、...、3000(其他电流可用串口进行修改,范围0-3000Ma)

        菜单作用:设置FOC矢量闭环控制模式下电机堵转时的最大电流,默认是3000Ma。

  • 菜单项目:Op_Limit

        菜单功能:设置FOC矢量闭环模式下的最大输出电压(可限制最大输出电流和转速)

        菜单选项:200、400、...、5000(单位:mV)

        菜单作用:设置FOC矢量闭环控制模式下的最大输出电压,默认是(5000 * 2)mV,该选项通过限制驱动的最大输出电压,可以近似的限制电机的最大电流和最高转速。

  • 菜单项目:UartBaud

        菜单功能:设置串口/RS232/RS485通讯的波特率

        菜单选项:9600、19200、25000、38400、57600、115200、256000、512000、921600

        菜单作用:设置串口/RS232/RS485通讯的波特率,默认是115200;

  • 菜单项目:CAN_Baud

        菜单功能:设置CAN通讯的速率

        菜单选项:10000、20000、50000、83333、100000、125000、250000、500000、800000、1000000

        菜单作用:设置CAN通讯的速率,默认是500000,即500KHz;

  • 菜单项目:ID_Addr

        菜单功能:设置串口/RS232/RS485/CAN多机通讯时的本机的地址

        菜单选项:1、2、...、10(其他地址可用串口进行修改,范围1-255)

        菜单作用:设置串口/RS232/RS485/CAN多机通讯时本机的地址,0为广播地址;

  • 菜单项目:Checksum

        菜单功能:设置串口/RS232/RS485/CAN多机通讯时的校验方式

        菜单选项:0x6B、XOR、CRC-8

        菜单作用:默认为0x6B,即通讯时每条命令最后一个字节都固定为0x6B,其他校验的计算方式请查看“通讯控制”章节;

  • 菜单项目:Response  

        菜单功能:设置串口TTL/RS232/RS485/CAN通讯控制时控制动作命令列表是否回复

        菜单选项:None、Receive、Reached、Both、Other

        菜单作用:设置串口/RS232/RS485/CAN总线通讯控制时,主机发送控制动作命令列表中的命令时,从机收到命令后,是否返回确认收到命令,以及是否返回到位命令;

  1. None: 不返回确认收到命令,在发送位置模式命令时也不返回到位命令;
  2. Receive:只返回确认收到命令(默认值);
  3. Reached:只在发送位置模式命令时返回到位命令(地址 + FD + 9F + 6B);
  4. Both: 既返回确认收到命令,也在发送位置模式命令时返回到位命令;
  5. Other: 位置模式下只返回到位命令,其他控制动作命令返回确认收到命令;

  • 菜单项目:Clog_Pro

        菜单功能:设置堵转保护功能

        菜单选项:Disable、Enable

        菜单作用:电机发生堵转时,不管该选项是否使能,LED都会点亮提示;如果使能(Enable)该选项后,堵转时电机将自动关闭驱动器,可以保护电机和驱动器不受堵转大电流的损坏;如果P_Serial设置为ESI_ALM选项时,那么在触发了堵转保护功能后,T/B/L端口将输出3.3V高电平信号;

(堵转保护触发条件:电机实际转速 < 设置的堵转检测转速阈值 + 电机实际相电流 >

设置的堵转检测相电流阈值 + 持续时间 > 设置的堵转检测时间阈值)

  • 菜单项目:Clog_Rpm

        菜单功能:设置堵转检测的转速阈值

        菜单选项:8、16、...、112(单位:RPM,即转/每分钟)

(如果需要设置为其他值,则需要通过通讯的方式发送命令进行修改)

        菜单作用:堵转检测判定条件之一:电机实际转速 < 堵转检测转速阈值。

  • 菜单项目:Clog_Ma

        菜单功能:设置堵转检测的相电流阈值

        菜单选项:1800、3000、...、3000(单位:Ma)

(如果需要设置为其他值,则需要通过通讯的方式发送命令进行修改)

        菜单作用:堵转检测判定条件之二:电机实际相电流 > 堵转检测相电流阈值 。

  • 菜单项目:Clog_Ms

        菜单功能:设置堵转检测的时间阈值

        菜单选项:1000、2000、...、12000(单位:Ms)

(如果需要设置为其他值,则需要通过通讯的方式发送命令进行修改)

        菜单作用:堵转检测判定条件之三:持续时间 > 堵转检测时间阈值。

  • 菜单项目:O_Mode

        菜单功能:设置回零模式

        菜单选项:Nearest、Dir、Senless、EndStop

        菜单作用:设置上电自动触发回零的回零模式,分别是单圈就近回零、单圈方向回

零、多圈无限位碰撞回零、多圈有限位开关回零。原点回零操作说明请参考第七章节

  • 菜单项目:O_Dir

        菜单功能:设置回零方向

        菜单选项:CW、CCW

        菜单作用:设置单圈方向回零、多圈无限位碰撞回零、多圈有限位开关回零的方向。

  • 菜单项目:O_Vel

        菜单功能:设置回零转速

        菜单选项:30、60、...、300(单位:RPM)

        菜单作用:设置回零的速度。

  • 菜单项目:O_Tmo_Ms

        菜单功能:设置回零超时时间

        菜单选项:2000、4000、...、20000(单位:毫秒)

        菜单作用:回零超过这个时间就自动中断并退出回零,并置位回零失败标志位。

  • 菜单项目:O_Set

        菜单功能:设置单圈就近/方向回零的零点位置

        菜单选项:Set O、Clear O、Exit

        菜单作用:设置单圈就近/方向回零的零点位置。

(无限位碰撞回零触发条件:电机实际转速 < 设置的碰撞回零转速阈值 + 电机实际相电流 > 设置的碰撞回零相电流阈值 + 持续时间 > 设置的碰撞回零时间阈值)

  • 菜单项目:O_SL_Rpm

        菜单功能:设置无限位碰撞回零的检测转速

        菜单选项:30、60、...、300(单位:RPM)

        菜单作用:碰撞回零检测判定条件之一:电机实际转速 < 碰撞回零检测转速。

  • 菜单项目:O_SL_Ma

        菜单功能:设置无限位碰撞回零的检测电流

        菜单选项:400、600、...、3000(单位:Ma)

        菜单作用:碰撞回零检测判定条件之二:电机实际电流 > 碰撞回零检测电流。

  • 菜单项目:O_SL_Ms

        菜单功能:设置无限位碰撞回零的检测时间

        菜单选项:20、40、...、200(单位:毫秒)

        菜单作用:碰撞回零检测判定条件之三:持续时间 > 碰撞回零检测时间。

  • 菜单项目:O_POT_En

        菜单功能:设置上电自动触发回零操作

        菜单选项:Disable、Enable

        菜单作用:设置上电自动触发回零操作。

  • 菜单项目:Restore

        菜单功能:恢复出厂设置

        菜单选项:Yes、No

        菜单作用:恢复出厂设置,需要断电重新上电,重新校准编码器。

五、脉冲控制

5.1 脉冲控制接线

5.1.1 STM32脉冲控制接线

 5.1.2 Arduino脉冲控制接线

 5.1.3 51单片机脉冲控制接线

 5.1.4 PLC脉冲控制接线

 5.1.5 EN+/EN-/PUL+/PUL-/DIR+/DIR-差分脉冲控制接线

 5.1.6 3D打印主板接线

5.2 脉冲控制说明

1.什么是脉冲?

控制器控制某一个IO端口输出一个0(低电平)和一个1(高电平),就是一个脉冲,相当于一个IO端口取反两次,下图是控制器IO端口输出2个脉冲,如图所示:

2.如何发脉冲去控制ZDT_X42_V1.2闭环驱动器?

按照前面章节安装并校准完成编码器后,用控制器一个IO端口向ZDT_X42_V1.2闭环驱动器的Stp端口发送脉冲过去,就可以控制电机进行旋转。

3.如何控制旋转的角度?

以1.8°步进电机、16细分为例,就是

发送3200个脉冲,电机就旋转一圈360°,如果是32细分,那就是发送6400个脉冲,电机旋转一圈,其他细分或角度可以类推。

4.如何控制旋转的方向?

用控制器另外一个IO端口控制ZDT_X42_V1.2闭环驱动器的Dir端口,输出0为一个方向旋转,输出1为另外一个方向旋转。

5.如何控制旋转的速度?

控制器输出0和1的时间加快,就能加快电机旋转的速度,也就是加快脉冲频率。

六、通讯控制

6.1 通讯控制接线

6.1.1串口TTL通讯控制接线

串口TTL单机通讯控制接线:

 串口TTL多机通讯控制接线:

注意:每个ZDT_X42_V1.2闭环驱动的插针上左边都需要插入两个跳线帽,是横着插)

6.1.2 RS232通讯控制接线

RS232单机通讯控制接线:

 RS232多机通讯控制接线:

注意:每个ZDT_X42_V1.2闭环驱动的插针上都需要插入一个ZDT_RS232模块)

6.1.3 RS485通讯控制接线

RS485单机通讯控制接线:

 RS485多机通讯控制接线:

注意:每个ZDT_X42_V1.2闭环驱动的插针上都需要插入一个ZDT_RS485模块)

6.1.4 CAN通讯控制接线

CAN单机通讯控制接线:

 CAN多机通讯控制接线:

注意:每个ZDT_X42_V1.2闭环驱动的插针上都需要插入一个ZDT_CAN模块)

6.2 通讯控制设置

6.2.1 命令格式说明

Emm42_V5.0闭环驱动通讯控制命令格式,发送和接收都按照以下格式:

地址

功能码

指令数据

校验字节

ID_Addr

Func_Code

CheckSum

1)地址(ID_Addr)默认为1,可设置范围为1-255,0为广播地址 。

  1. 485总线的负载能力理论上最多能够挂载256个从机。
  2. CAN总线的负载能力理论上最多能够连接110个节点。
  3. 地址1-10可以在菜单ID_Addr上进行选择修改,大于10的地址通过串口/CAN通讯发送命令进行修改。
  4. 0为广播地址,上位机以0地址发送命令,则所有的闭环电机都会执行这条命令。
  5. 0为广播地址发送命令时,则只有地址为1的电机会回复命令,其他地址不回复。

2)不同的命令对应不同的功能码和指令数据,详见下一章节“通讯控制命令列表”。

3) 校验字节(CheckSum)可选0x6B、XOR校验、CRC-8校验三种默认为0x6B。

  1. 可在菜单Checksum上进行选择修改通讯校验方式;
  2. 选择0x6B,意思就是每条命令的最后一个字节都是0x6B作为校验;
  3. 选择XOR校验,意思就是每条命令最后一个字节都是将前面全部的字节进行异或作为校验,比如命令01 06 45 42,最后一个字节0x42 = 0x01 ^ 0x06 ^ 0x45;
  4. 选择CRC-8校验,意思就是每条命令最后一个字节都是将前面全部的字节进行CRC-8计算作为校验;

6.2.2 上位机和串口助手设置

 (勾选16进制发送和16进制显示,取消勾选发送新行,波特率默认是115200)

6.3 通讯控制命令列表

6.3.1 控制动作命令列表

  • 命令功能:电机使能控制

        命令格式:地址 + 0xF3 + 0xAB + 使能状态 + 多机同步标志 + 校验字节

        命令返回:地址 + 0xF3 + 命令状态 + 校验字节

        命令示例:发送01 F3 AB 01 00 6B,正确返回01 F3 02 6B,条件不满足返回01 F3 E2 6B,错误命令返回01 00 EE 6B

        数据解析:控制电机使能发送01 F3 AB 01 00 6B;不使能发送01 F3 AB 00 00 6B

  •  命令功能:速度模式控制

        命令格式:地址 + 0xF6 + 方向 + 速度 + 加速度 + 多机同步标志 + 校验字节

        命令返回:地址 + 0xF6 + 命令状态 + 校验字节

        命令示例:发送01 F6 01 05 DC 0A 00 6B,命令正确返回01 F6 02 6B,条件不满足返回01 F6 E2 6B,错误命令返回01 00 EE 6B

(条件不满足情况:触发了堵转保护、电机没使能)

        数据解析:01表示旋转方向为CCW(00表示CW),05 DC表示速度为0x05DC = 1500(RPM),0A表示加速度档位为0x0A = 10,00表示不启用多机同步(01表示启用),如果需要多个电机同步开始运动,请参考“多机通讯及同步控制”章节;

        注意:加速度档位为0表示不使用曲线加减速,直接按照设定的速度运行。曲线加减速时间计算公式:t2 - t1 = (256 - acc) * 50(us),Vt2 = Vt1 + 1(RPM);

(注:acc为加速度档位,Vt1为t1时刻的转速,,Vt2为t2时刻的转速)

  • 命令功能:位置模式控制

        命令格式:地址 + 0xFD + 方向 + 速度+ 加速度 + 脉冲数 + 相对/绝对模式标志 + 多机同步标志 + 校验字节

        命令返回:地址 + 0xFD + 命令状态 + 校验字节

        命令示例:发送01 FD 01 05 DC 00 00 00 7D 00 00 00 6B,正确返回01 FD 02 6B,条件不满足返回01 FD E2 6B,错误命令返回01 00 EE 6B

(条件不满足情况:触发了堵转保护、电机没使能)

        数据解析:01表示旋转方向为CCW(00表示CW),05 DC表示速度为0x05DC = 1500(RPM),00表示加速度档位为0x00 = 0,00 00 7D 00表示脉冲数为0x00007D00 = 32000个,00表示相对位置模式(01表示绝对位置模式),00表示不启用多机同步(01表示启用),如果需要多个电机同步开始运动,请参考“多机通讯及同步控制”章节;

(16细分下发送3200个脉冲电机旋转一圈,32000个脉冲表示转10圈)

        注意:加速度档位为0表示不使用曲线加减速,直接按照设定的速度运行。曲线加减速时间计算公式:t2 - t1 = (256 - acc) * 50(us),Vt2 = Vt1 + 1(RPM);

(注:acc为加速度档位,Vt1为t1时刻的转速,,Vt2为t2时刻的转速)

  • 命令功能:立即停止

        命令格式:地址 + 0xFE + 0x98 + 多机同步标志 + 校验字节

        命令返回:地址 + 0xFE + 命令状态 + 校验字节

        命令示例:发送01 FE 98 00 6B,正确返回01 FE 02 6B,条件不满足返回01 FE E2 6B,错误命令返回01 00 EE 6B

(条件不满足情况:触发了堵转保护、电机没使能)

        数据解析:让电机立即停止转动(紧急刹车),可用于速度模式和位置模式都可以。

  • 命令功能:多机同步运动

        命令格式:地址 + 0xFF + 0x66 + 校验字节

        命令返回:地址 + 0xFF + 命令状态 + 校验字节

        命令示例:发送01 FF 66 6B,正确返回01 FF 02 6B,条件不满足返回01 FF E2 6B,错误命令返回01 00 EE 6B

(条件不满足情况:触发了堵转保护、电机没使能)

        数据解析:让多个电机同步开始运动,请参考“多机通讯及同步控制”章节

6.3.2 原点回零命令列表

  • 命令功能:设置单圈回零的零点位置

        命令格式:地址 + 0x93 + 0x88 + 是否存储标志 + 校验字节

        命令返回:地址 + 0x93 + 命令状态 + 校验字节

        命令示例:发送01 93 88 01 6B,正确返回01 93 02 6B,错误命令返回01 00 EE 6B

        数据解析:可以让电机转到想要的位置,然后发送该命令设置单圈回零的零点位置。

  • 命令功能:触发回零

        命令格式:地址 + 0x9A + 回零模式 + 多机同步标志 + 校验字节

        命令返回:地址 + 0x9A + 命令状态 + 校验字节

        命令示例:发送01 9A 00 00 6B,正 确返回01 9A 02 6B,条件不满足返回01 9A E2 6B,错误命令返回01 00 EE 6B

(条件不满足情况:触发了堵转保护、电机没使能、单圈回零的零点位置值无效)

        数据解析:设置完原点回零参数后,可以发送该命令触发原点回零功能。其中,00表示触发单圈就近回零,01表示触发单圈方向回零,02表示触发多圈无限位碰撞回零,03表示触发多圈有限位开关回零

  • 命令功能:强制中断并退出回零操作

        命令格式:地址 + 0x9C + 0x48 + 校验字节

        命令返回:地址 + 0x9C + 命令状态 + 校验字节

        命令示例:发送01 9C 0x48 6B,正 确返回01 9C 02 6B,条件不满足返回01 9C E2 6B,错误命令返回01 00 EE 6B

(条件不满足的情况有:当前没有触发回零操作)

        数据解析:正在回零的过程中,可以使用该命令强制中断并退出回零操作。

  • 命令功能:读取原点回零参数

        命令格式:地址 + 0x22 + 校验字节

        命令返回:地址 + 0x22 + 原点回零参数 + 校验字节

        命令示例:发送01 22 6B,正确返回01 22 00 00 00 1E 00 00 27 10 0F A0 03 20 00 3C 00 6B ,错误命令返回01 00 EE 6B

        数据解析:返回的原点回零参数,它将按照下面的数据格式进行排列和数据的转换:

        回零模式     = 0x00 = Nearest = 单圈就近回零模式

        回零方向     = 0x00 = CW

        回零转速            = 0x001E = 30(RPM)

        回零超时时间              = 0x00002710 = 10000(ms)

        无限位碰撞回零检测转速   = 0x012C = 300(RPM)

        无限位碰撞回零检测电流   = 0x0320 = 800(Ma)

        无限位碰撞回零检测时间   = 0x003C = 60(ms)

        是否使能上电自动触发回零功能 = 0x00 = 不使能

(无限位碰撞回零检测判定条件:电机转速 < 碰撞回零检测转速 + 电机相电流 >

碰撞回零检测电流 + 持续时间 > 碰撞回零检测时间)

  • 命令功能:修改原点回零参数

        命令格式:地址 + 0x4C + 0xAE + 是否存储标志 + 原点回零参数 + 校验字节

        命令返回:地址 + 0x4C + 命令状态 + 校验字节

        命令示例:发送01 4C AE 01 原点回零参数 6B,正确返回01 4C 02 6B,

错误命令返回01 00 EE 6B

        数据解析:修改原点回零参数需要按照下面的数据格式进行排列和数据的转换:

        比如,发送如下数据对原点回零参数进行修改:

        01 4C AE 01 00 00 00 1E 00 00 27 10 01 2C 03 20 00 3C 00 6B

        0x01 = 保存本次修改的配置参数;

        0x00 = 回零模式为Nearest(单圈就近回零模式);

        0x00 = 回零方向为CW;

        0x001E = 回零速度为30(RPM);

        0x00002710 = 回零超时时间为10000(ms);

        0x012C = 无限位碰撞回零检测转速为300(RPM);

        0x0320 = 无限位碰撞回零检测电流为800(Ma);

        0x003C = 无限位碰撞回零检测时间为60(ms);

        0x00 = 不使能上电自动触发回零功能;

  • 命令功能:读取回零状态标志位

        命令格式:地址 + 0x3B + 校验字节

        命令返回:地址 + 0x3B + 回零状态标志+ 校验字节

        命令示例:发送01 3B 6B,正确返回01 3B 回零状态标志字节 6B,错误命令返回01 00 EE     6B

        数据解析:返回的回零状态标志字节的每一位都代表一种状态,比如返回的回零状态标志字节为0x03,它将按照下面的数据格式进行排列和数据的转换:

        编码器就绪状态标志位     = 0x03 & 0x01 = 0x01

        校准表就绪状态标志位     = 0x03 & 0x02 = 0x01

        正在回零标志位            = 0x03 & 0x04 = 0x00

        回零失败标志位               = 0x03 & 0x08 = 0x00

6.3.3 触发动作命令列表

  • 命令功能:触发编码器校准

        命令格式:地址 + 0x06 + 0x45 + 校验字节

        命令返回:地址 + 0x06 + 状态码 + 校验字节

        命令示例:发送01 06 45 6B,正确返回01 06 02 6B,条件不满足返回01 06 E2 6B,错误命令返回01 00 EE 6B

(条件不满足的情况有:当前是开环模式、触发了堵转保护)

        数据解析:触发编码器校准,对应屏幕上的“Cal” 菜单

  • 命令功能:将当前的位置角度清零

        命令格式:地址 + 0x0A + 0x6D + 校验字节

        命令返回:地址 + 0x0A + 状态码 + 校验字节

        命令示例:发送01 0A 6D 6B,正确返回01 0A 02 6B,错误命令返回01 00 EE 6B

        数据解析:将当前位置角度、位置误差、脉冲数等全部清零。

  • 命令功能:解除堵转保护

        命令格式:地址 + 0x0E + 0x52 + 校验字节

        命令返回:地址 + 0x0E + 状态码 + 校验字节

        命令示例:发送01 0E 52 6B,正确返回01 0E 02 6B,条件不满足返回01 0E E2 6B,错误命令返回01 00 EE 6B

(条件不满足的情况有:没有触发到堵转保护)

        数据解析:电机发生堵转后,发送该命令可以解除堵转保护。

  • 命令功能:恢复出厂设置

        命令格式:地址 + 0x0F + 0x5F + 校验字节

        命令返回:地址 + 0x0F + 状态码 + 校验字节

        命令示例:发送01 0F 5F 6B,正确返回01 0F 02 6B,错误命令返回01 00 EE 6B,触发恢复出厂设置后,蓝灯亮起,需要断电重新上电校准编码器。

        数据解析:发送该命令可以恢复出厂设置,恢复出厂设置后需要重新上电,重新空载校准编码器 。

6.3.4 读取参数命令列表

  • 命令功能:读取固件版本和对应的硬件版本

        命令格式:地址 + 0x1F + 校验字节

        命令返回:地址 + 0x1F + 固件版本号 + 对应的硬件版本号 + 校验字节

        命令示例:发送01 1F 6B,正确返回01 1F 7D 6F 6B,错误命令返回01 00 EE 6B

        数据解析:固件版本 = 0xF4 = Emm42_V5.0.0,对应的硬件版本 = 0x78 = 120 = ZDT_X42_V1.2版本

  • 命令功能:读取相电阻和相电感

        命令格式:地址 + 0x20 + 校验字节

        命令返回:地址 + 0x20 + 相电阻 + 相电感 + 校验字节

        命令示例:发送01 20 6B,正确返回01 20 04 7A 0D 28 6B,错误命令返回01 00 EE 6B

        数据解析:相电阻 = 0x047A = 1146mΩ,相电感 = 0x0D28 = 3368uH(注意单位)

  • 命令功能:读取位置环PID参数

        命令格式:地址 + 0x21 + 校验字节

        命令返回:地址 + 0x21 + 位置环PID参数 + 校验字节

        命令示例:发送01 21 6B,正确返回01 21 00 00 F2 30 00 00 00 64 00 00 F2 30 6B ,错误命令返回01 00 EE 6B

        数据解析:

                Kp = 0x0000F230 = 62000,Ki = 0x00000064 = 100,Kd = 0x0000F230 = 62000;

  • 命令功能:读取总线电压

        命令格式:地址 + 0x24 + 校验字节

        命令返回:地址 + 0x24 + 总线电压 + 校验字节

        命令示例:发送01 24 6B,正确返回01 24 5C 6A 6B,错误命令返回01 00 EE 6B

        数据解析:总线电压 = 0x5C6A = 23658mV(输入电压经过反接二极管后会有压降)

  • 命令功能:读取相电流

        命令格式:地址 + 0x27 + 校验字节

        命令返回:地址 + 0x27 + 总线相电流 + 校验字节

        命令示例:发送01 27 6B,正确返回01 27 02 73 6B,错误命令返回01 00 EE 6B

        数据解析:相电流 = 0x0273 = 627Ma

  • 命令功能:读取经过线性化校准后的编码器值

        命令格式:地址 + 0x31 + 校验字节

        命令返回:地址 + 0x31 + 读取经过线性化校准后的编码器值 + 校验字节

        命令示例:发送01 31 6B,正确返回01 31 8D 9E 6B,错误返回01 00 EE 6B

        数据解析:经过线性化校准后的编码器值 = 0x8D9E = 36254

        (注意:经过线性化校准后,内部对编码器值进行了4倍频,一圈的数值是0-65535)

  • 命令功能:读取电机目标位置

        命令格式:地址 + 0x33 + 校验字节

        命令返回:地址 + 0x33 + 符号 + 电机目标位置 + 校验字节

   命令示例:发送01 33 6B,正确返回01 33 01 00 01 00 00 6B,错误命令返回01 00 EE 6B

        数据解析:01表示负数(00表示正数),00 01 00 00表示电机目标位置值(0-65535表示一圈),如果要转换成角度,可以这样计算:

电机目标位置角度 = -0x00010000 = (-65536 * 360) / 65536 = -360.0°

  • 命令功能:读取电机实时转速

        命令格式:地址 + 0x35 + 校验字节

        命令返回:地址 + 0x35 + 符号 + 电机实时转速 + 校验字节

        命令示例:发送01 35 6B,正确返回01 35 01 05 DC 6B,错误命令返回01 00 EE 6B

        数据解析:01表示负数(00表示正数),05 DC表示电机实时转速

电机实时转速 = -0x05DC = -1500RPM(转/每分钟)

  • 命令功能:读取电机实时位置

        命令格式:地址 + 0x36 + 校验字节

        命令返回:地址 + 0x36 + 符号 + 电机实时位置 + 校验字节

        命令示例:发送01 36 6B,正确返回01 36 01 00 01 00 00 6B,错误命令返回01 00 EE 6B

        数据解析:01表示负数(00表示正数),00 01 00 00表示电机实时位置值(0-65535表示一圈),如果要转换成角度,可以这样计算:

电机实时位置角度 = -0x00010000 = (-65536 * 360) / 65536 = -360.0°

  • 命令功能:读取电机位置误差

        命令格式:地址 + 0x37 + 校验字节

        命令返回:地址 + 0x37 + 符号 + 电机位置误差 + 校验字节

        命令示例:发送01 37 6B,正确返回01 37 01 00 00 00 08 6B,错误命令返回01 00 EE 6B

        数据解析:01表示负数(00表示正数),00 00 00 08表示电机位置误差值(0-65535表示一圈),如果要转换成角度,可以这样计算:

电机实时位置角度 = -0x00000008 = (-8 * 360) / 65536 = -0.0439453125°

  • 命令功能:读取电机状态标志位

        命令格式:地址 + 0x3A + 校验字节

        命令返回:地址 + 0x3A + 状态标志+ 校验字节

        命令示例:发送01 3A 6B,正确返回01 3A 电机状态标志字节 6B,错误命令返回01 00 EE 6B

        数据解析:比如返回01 3A 03 6B,可以这样进行电机状态的判断:

电机使能状态标志位 = 0x03 & 0x01 = 0x01 = true

电机到位标志位 = 0x03 & 0x02 = 0x01 = true

电机堵转标志位 =  0x03 & 0x04 = 0x00 = false

电机堵转保护标志 =  0x03 & 0x08 = 0x00 = false

  • 命令功能:读取驱动配置参数

        命令格式:地址 + 0x42 + 0x6C + 校验字节

        命令返回:地址 + 0x42 + 驱动配置参数 + 校验字节

        命令示例:发送01 42 6C 6B,正确返回01 42 驱动配置参数 6B,错误命令返回01 00 EE 6B

        数据解析:命令正确返回01 42后面的字节就是驱动的配置参数,它将按照下面的数据格式进行排列和数据的转换:

        比如,发送读取驱动配置参数01 42 6C 6B命令后,返回如下数据:

        01 42 21 15 19 02 02 02 00 10 01 00 03 E8 0B B8 0F A0 05 07 01 00 01 01 00 28 09 60 0F A0 00 01 6B

        返回命令所包含的字节数 = 0x21 = 33个;

        返回命令的配置参数个数 = 0x15 = 21个;

        电机类型 = 0x19 = 25 = 1.8°电机(0.9°电机为50);

        脉冲端口控制模式 = 0x02 = PUL_FOC = FOC矢量闭环模式(对应屏幕选项顺序);

        通讯端口复用模式 = 0x02 = UART_FUN = 串口/RS232/RS485通讯;

        En引脚的有效电平 = 0x02 = Hold = 一直有效;

        Dir引脚的有效方向 = 0x00 = CW = 顺时针方向;

        细分 = 0x10 = 16(如果返回0x00,则为256细分);

        细分插补功能 = 0x01 = Enable = 使能;

        自动熄屏功能 = 0x00 = Disable = 不使能;

        开环模式工作电流 = 0x03E8 = 1000Ma;

        闭环模式堵转时的最大电流 = 0x0BB8 = 3000Ma;

        闭环模式最大输出电压 = 0x0FA0 = 4000mV;

        串口波特率 = 0x05 = 115200(对应屏幕选项顺序:0x00为9600,...);

        CAN通讯速率 = 0x07 = 500000(对应屏幕选项顺序:0x00为10000,...);

        ID地址(串口/RS232/RS485/CAN通用) = 0x01 = 1;

        通讯校验方式 = 0x00 = 通讯校验方式固定为0x6B;

        控制命令应答 = 0x01 = 控制命令列表只回复确认收到命令;

        堵转保护功能 = 0x01 = 使能;

        堵转保护转速阈值 = 0x0028 = 40RPM(转/每分钟);

        堵转保护电流阈值 = 0x0960 = 2400Ma;

        堵转保护检测时间阈值 = 0x0FA0 = 4000ms;

(堵转检测判定条件:电机实际转速 < 设置的堵转检测转速阈值 + 电机实际相电流 >

设置的堵转检测相电流阈值 + 持续时间 > 设置的堵转检测时间阈值)

        位置到达窗口 = 0x0001 = 1 = 0.1°;

(表示当目标位置(你发送的位置角度)与传感器实际位置(传感器读取的位置角度)相差小于0.1°时,认为电机已经到达设定的位置,将置位位置到达标志位,如果控制命令应答设置为返回到位命令,则到位后将返回到位命令:地址 + FD + 9F + 6B)

  • 命令功能:读取系统状态参数

        命令格式:地址 + 0x43 + 0x7A + 校验字节

        命令返回:地址 + 0x43 + 系统状态参数 + 校验字节

        命令示例:发送01 43 7A 6B,正确返回01 43 系统状态参数 6B,错误命令返回01 00 EE 6B

        数据解析:命令正确返回01 43后面的字节就是系统的状态参数,它将按照下面的数据格式进行排列和数据的转换:

        比如,发送读取系统状态参数01 43 7A 6B命令后,返回如下数据:

        01 43 1F 09 5C 67 00 03 43 EB 01 00 01 00 00 00 00 00 01 00 01 00 00 01 00 00 00 08 03 03 6B

        返回命令所包含的字节数 = 0x1F = 31个;

        返回命令的配置参数个数 = 0x09 = 9个;

        总线电压 = 0x5C67 = 23655mV;

        总线相电流 = 0x0003 = 3Ma;

        校准后编码器值 = 0x43EB = 17387;

        电机目标位置 = -0x00010000 = -(65536 * 360)/65536 = -360°(01表示符号);

        电机实时转速 = 0x0000 = 0RPM(00表示符号);

        电机实时位置 = -0x00010000 = -(65536 * 360)/65536 = -360°(01表示符号);

        电机位置误差 = -0x00000001 = -(8 * 360)/65536 ≈ -0.044°(01表示符号);

        就绪状态标志 = 0x03

  1. 编码器就绪状态标志位 = 0x03 & 0x01 = 就绪;
  2. 校准表就绪状态标志位 = 0x03 & 0x02 = 就绪;
  3. 正在回零标志位  = 0x03 & 0x04 = 当前没有回零;
  4. 回零失败标志位  = 0x03 & 0x08 = 没有回零失败;

        电机状态标志 = 0x03

  1. 使能状态标志位 = 0x03 & 0x01 = 电机处于使能状态;
  2. 堵转保护标志位 = 0x03 & 0x08 = 没触发堵转保护;
  3. 电机堵转标志位 = 0x03 & 0x04 = 没触发堵转;
  4. 电机到位标志位 = 0x03 & 0x02 = 电机已经到位;

6.3.5 修改参数命令列表

  • 命令功能:修改任意细分

        命令格式:地址 + 0x84 + 0x8A + 是否存储标志 + 细分值 + 校验字节

        命令返回:地址 + 0x84 + 命令状态 + 校验字节

        命令示例:发送01 84 8A 01 07 6B,正确返回01 84 02 6B,错误命令返回01 00

EE 6B

        数据解析:修改细分为0x07 = 7细分,并存储到芯片上;(注:00表示256细分)

  • 命令功能:修改任意ID地址

        命令格式:地址 + 0xAE + 0x4B + 是否存储标志 + ID地址 + 校验字节

        命令返回:地址 + 0xAE + 命令状态 + 校验字节

        命令示例:发送01 AE 4B 01 10 6B,正确返回01 AE 02 6B,错误命令返回01 00

EE 6B

        数据解析:修改ID地址为0x10 = 16,并存储到芯片上;

  • 命令功能:修改开环/闭环模式(P_Pul菜单的值)

        命令格式:地址 + 0x46 + 0x69 + 是否存储标志 + 开环/闭环模式 + 校验字节

        命令返回:地址 + 0x46 + 命令状态 + 校验字节

        命令示例:发送01 46 69 01 01 6B,正确返回01 46 02 6B,错误命令返回01 00 EE 6B

        数据解析:发送01 46 69 01 01 6B修改为开环模式,发送01 46 69 01 02 6B修改为闭环模式

  • 命令功能:修改驱动配置参数

        命令格式:地址 + 0x48 + 0xD1 + 是否存储标志 + 驱动配置参数 + 校验字节

        命令返回:地址 + 0x48 + 命令状态 + 校验字节

        命令示例:发送01 48 D1 01 驱动参数 6B,正确返回01 48 02 6B,错误命令返回01 00 EE     6B

        数据解析:修改驱动配置参数需要按照下面的数据格式进行排列和数据的转换:

        比如,发送如下数据对驱动的配置参数进行修改:

01 48 D1 01 19 02 02 02 00 10 01 00 03 E8 0B B8 0F A0 05 07 01 00 01 01 00 28 09 60 0F A0 00 01 6B

0x01 = 保存本次修改的配置参数;

0x19 = 修改电机类型为1.8°电机;

0x02 = 修改脉冲端口控制模式为PUL_FOC,即FOC矢量闭环模式;

0x02 = 修改通讯端口复用模式为UART_FUN,即串口/RS232/RS485通讯;

0x02 = 修改En引脚的有效电平为Hold,即一直有效;

0x00 = 修改Dir引脚的有效方向为CW,即顺时针方向;

0x10 = 修改细分为16细分(注意:256细分用00表示);

0x01 = 修改细分插补功能为Enable,即使能细分插补;

0x00 = 修改自动熄屏功能为Disable,即不使能自动熄屏功能;

0x03E8 = 修改开环模式工作电流为1000Ma;

0x0BB8 = 修改闭环模式堵转时的最大电流为3000Ma;

0x0FA0 = 修改闭环模式最大输出为4000mV;

0x05 = 修改串口波特率为115200(对应屏幕选项顺序:0x00为9600,...);

0x07 = 修改CAN通讯速率为500000(对应屏幕选项顺序:0x00为10000,...);

0x01 = 该值原为修改ID地址为1,现取消,使得可用广播地址批量修改驱动参数;

0x00 = 修改通讯校验方式为0x6B;

0x01 = 修改控制命令应答为Receive,即只回复确认收到命令;

0x01 = 修改堵转保护功能为Enable,即使能堵转保护;

0x0028 = 修改堵转保护转速阈值为40RPM(转/每分钟);

0x0960 = 修改堵转保护电流阈值为2400Ma;

0x0FA0 = 修改堵转保护检测时间阈值为4000ms;

0x0001 = 修改位置到达窗口为0.1°;

(表示当目标位置(你发送的位置角度)与传感器实际位置(传感器读取的位置角度)相差小于0.1°时,认为电机已经到达设定的位置,将置位位置到达标志位)

  • 命令功能:修改位置环PID参数

        命令格式:地址 + 0x4A + 0xC3 + 是否存储标志 + 位置环PID参数 + 校验字节

        命令返回:地址 + 0x4A + 命令状态 + 校验字节

        命令示例:发送01 4A C3 01 位置环PID参数 6B,正确返回01 4A 02 6B,

错误命令返回01 00 EE 6B

        数据解析:修改位置环PID参数需要按照下面的数据格式进行排列和数据的转换:

比如,发送如下数据对位置环的PID参数进行修改:

01 4A C3 00 00 00 F2 30 00 00 00 64 00 00 F2 30 6B

0x00 = 不保存本次修改的配置参数;

0x0000F230 = 修改Kp = 62000;

0x00000064 = 修改Ki = 100;

0x0000F230 = 修改Kd = 62000;

(注意:如果不懂PID原理,可以不用理会,按默认值)

6.4 CAN通讯控制说明

  1. 设置P_Serial菜单选项,需要选择为CAN1_MAP通讯模式。
  2. CAN通讯帧类型固定为扩展帧类型。
  3. CAN通讯与串口/RS232/RS485通讯发送的命令格式一样,只是ID地址上和大于8字节的命令上有所不同。
  4. CAN通讯的帧ID在菜单ID_Addr中设置,默认为1,但发送命令时,需要左移8位,低8位表示第几包数据,如果小于8字节命令,则低8位保持为00即可。
  5. 大于8字节的命令,需要拆包分包发送,功能码都要有,请参考下面的示例。

        小于8字节命令(速度模式:01 F6 01 05 DC 01 00 6B)

        大于8字节命令(位置模式:01 FD 01 0F A0 00 00 01 FA 00 00 00 6B

        1. 先发送FD 01 0F A0 00 00 01 FA注意:帧ID为0100,表示第0包数据

         2. 再发送FD 00 00 00 6B注意:帧ID为0101,表示第1包数据

6.5 多机通讯及同步控制

一、多机通讯:

1)多机通讯的接线见6.1章节“通讯控制接线”。

2) 修改每个电机的ID地址唯一,在菜单ID_Addr中进行选择修改,详细操作见 6.2章节“通讯控制命令格式说明”。

3)按电机ID地址发送命令,控制电机运动,比如有地址1和地址2两个电机:

  1. 发送01 F6 01 05 DC 01 00 6B,则1地址电机执行这条命令运动;
  2. 发送02 F6 01 05 DC 01 00 6B,则2地址电机执行这条命令运动;
  3. 发送00 F6 01 05 DC 01 00 6B,则1和2地址电机都执行这条命令运动(广播);

二、同步控制:

比如有地址1、地址2两个电机,假设需要:

  • 1地址电机速度1500RPM,加速度档位为8,相对运动-3600.0°;
  • 1和2地址电机要同步开始运动(同时开始运动);
  • 2地址电机速度1000RPM,加速度档位为10,绝对运动7200.0°;

则,可以按照以下操作进行两者的同步控制:

  1. 先发送1地址电机命令01 FD 01 05 DC 08 00 00 7D 00 00 01 6B,正确返回01 FD 02 6B,此时1地址电机先不会运动,因为多机同步标志为01
  2. 再发送2地址电机命令01 FD 00 03 E8 0A 00 00 FA 00 01 01 6B,正确返回02 FD 02 6B,此时2地址电机先不会运动,因为多机同步标志为01
  3. 再发送多机同步运动命令00 FF 66 6B,此时1和2地址电机开始同步运动;

七、原点回零操作说明

7.1 单圈就近/方向回零操作说明

单圈回零模式有两种:单圈就近回零单圈方向回零,顾名思义,单圈就近回零就是往靠近零点位置的方向回零,而单圈方向回零就是根据O_Dir选项设定的方向回零, 单圈就近/方向回零操作步骤如下:

  1. 断电状态将电机轴移动到指定位置、或上电状态下将电机轴运动到指定位置;
  2. 点击菜单O_Set中的Set O选项,或者发送单圈零点设置命令 01 93 88 01 6B设置单圈回零的零点位置;
  3. 设置完成后,根据自身需求,可以选择使能上电自动触发回零功能(O_POT_En选项设置为Enable),也可以通讯发送“触发回零”命令进行回零。

7.2 多圈无限位碰撞回零操作说明

原理:利用电机运动过程中,碰撞到机器结构边缘时,电流会瞬间变大,转速会瞬间变小,这一特点,类似堵转检测的原理,简而言之,就是让电机碰一下进行回零。

前提条件:电机带的负载固定

检测判定条件:电机转速 < 碰撞回零检测转速 + 电机相电流 > 碰撞回零检测电流 + 持续时间 > 碰撞回零检测时间(注意:检测阈值可在上位机或屏幕中进行修改)

多圈无限位碰撞回零操作步骤如下:

  1. 先用上位机用直通位置限速模式控制电机带着“固定负载”,以“回零速度”正常运动,并观察小屏幕此时的相电流大概是多少,比如大约637Ma;
  2. 修改“无限位碰撞回零检测电流”比637Ma略大一些,比如设置为800Ma;
  3. 修改“无限位碰撞回零检测转速”可以设置为300RPM;
  4. 修改“无限位碰撞回零检测时间”可以设置为60ms;
  5. 根据自身需求,可以将“上电自动触发回零功能”进行使能(Enable);
  6. 如果上电自动触发无限位回零的方向不对,可在菜单O_Dir修改回零方向;

7.3 多圈有限位开关回零操作说明

多圈有限位开关回零根据自身使用的控制模式按照下图进行接线和设置:

脉冲模式控制-上电自动回零限位开关接线

串口/232/485/CAN通讯控制-上电自动回零限位开关接线 

八、到位输出和报警输出

8.1 通讯控制模式到位输出/到位返回命令

1.到位输出

菜单P_Pul选择为ESI_RCO,当电机到位,即输入位置角度 - 电机实时位置角度 <  位置到达窗口(默认0.3°,可在上位机上修改)时,Dir引脚会输出高电平。(注意:如果Com不接或者接3.3V,则到位后Dir引脚到位输出3.3V;如果Com接5V,则到位后Dir引脚到位输出5V;如果Com接24V,则到位后Dir引脚到位输出24V;到位输出仅适用于非工业套餐,也就是不带光耦隔离的套餐。)

2.到位返回命令(地址 + FD + 9F + 6B)

Ø菜单Response可设置串口/RS232/RS485/CAN总线通讯控制时,主机发送控制动作命令列表中的命令时,从机收到命令后,是否返回确认收到命令,以及是否返回到位命令;

nNone: 不返回确认收到命令,在发送位置模式命令时也不返回到位命令;

nReceive: 只返回确认收到命令(默认值);

nReached: 只在发送位置模式命令时返回到位命令(地址 + FD + 9F + 6B);

nBoth: 既返回确认收到命令,也在发送位置模式命令时返回到位命令;

nOther: 位置模式下只返回到位命令,其他控制动作命令返回确认收到命令;

8.2 脉冲控制模式报警输出

菜单P_Serial选择为ESI_ALO,当闭环电机发生堵转、欠压等异常情况时,T/B/L引脚会输出3.3V高电平,正常情况下默认是0V低电平,脉冲模式控制下可以利用该引脚的输出电平状态知道电机是否发生故障;

九、常见问题及注意事项

9.1 常见问题

序号

问题

解决方法

1

Waiting V+ Power!

供电电压不足,V+和Gnd需要12-32V进行供电

2

Not Cal

未校准编码器,可以点击Cal进行编码器校准

3

Phase AABB Error!

电机线序A+ A-和B+ B-错误,请检查电机线序

4

 Magnet Loss! Enter..

检测不到磁铁,未安装磁铁或驱动到电机上

5

Encoder Error! Enter..

磁编码器通讯失败,可能编码器芯片已经损坏

6

Ref Voltage Error!

基准电压错误,可能基准电压芯片已经损坏

7

Bus Current Error!

上电瞬间总线电流过大,请检查是否短路

8

Origin Set Done!

单圈回零的零点位置设置成功

9

Origin Set Fail!

单圈回零的零点位置设置失败,检查是否校准编码器

10

Going to Origin..

正在执行回零操作

11

Go to Origin Fail!

上电自动回零失败,请检查电机力矩是否足够

12

Restore Done! Reboot!

恢复出厂设置成功,请重新上电校准编码器

9.2 注意事项

  1. 请勿带电拔插供电接口线和电机线,以免造成电气损坏;
  2. 建议搭配本店42磁柱步进电机;
  3. 到店一起购买42步进电机,会安装并校准好整套发货;

十、修改记录

日期

版本

内容

2023/8/21

Rev1.0

初版

2023/9/2

Rev1.1

修正文档中的一些说明纰漏、增加一些细节描述

2023/9/6

Rev1.2

增加和上一代版本Emm_V4.2的参数对比和新增功能

这篇关于Emm_V5.0步进闭环驱动说明书Rev1.2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/215020

相关文章

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

驱动(RK3588S)第七课时:单节点设备树

目录 需求一、设备树的概念1、设备树的后缀名:2、设备树的语法格式3、设备树的属性(重要)4、设备树格式举例 二、设备树所用函数1、如何在内核层种获取设备树节点:2、从设备树上获取 gpio 口的属性3、获取节点上的属性只针对于字符串属性的4、函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的

驱动安装注册表指令

HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINE HKU: HEKY_USER HER: 相对根键

UMDF驱动安装

VS2013 + WDF8.1,UMDF驱动选择User Mode Driver,不要选User Mode Driver 2.0,否则Win7安装有问题,如图 另外,在驱动安装时不要忘记WUDFUpdate_<主版本号><次版本号>.dll文件,具体文件名在INF中查找。此文件可在WDF的安装目录中找到。注意:在WDF的安装目录中会有3个WUDFUpdate_xxx.dll文件,x86,x6

电脑驱动分类

电脑驱动程序(驱动程序)是操作系统与硬件设备之间的桥梁,用于使操作系统能够识别并与硬件设备进行通信。以下是常见的驱动分类: 1. 设备驱动程序 显示驱动程序:控制显卡和显示器的显示功能,负责图形渲染和屏幕显示。 示例:NVIDIA、AMD 显示驱动程序。打印机驱动程序:允许操作系统与打印机通信,控制打印任务。 示例:HP、Canon 打印机驱动程序。声卡驱动程序:管理音频输入和输出,与声卡硬件

麒麟系统安装GPU驱动

1.nvidia 1.1显卡驱动 本机显卡型号:nvidia rtx 3090 1.1.1下载驱动 打开 https://www.nvidia.cn/geforce/drivers/ 也可以直接使用下面这个地址下载 https://www.nvidia.com/download/driverResults.aspx/205464/en-us/ 1.1.3安装驱动 右击,

windows10 卸载网络驱动以及重新安装

右键桌面此电脑的图标,点击管理,设备管理器—网络适配器,找到下图中的驱动(不同的系统或者显卡会导致网卡驱动名称与下图不一样,多为Realtek开头),右键选择卸载设备,然后重启电脑,系统会自动重新安装驱动 新电脑首次安装驱动: 根据主板厂家,比如华硕,进入华硕官网,点击服务支持,点击下载中心,选择型号,点击右侧驱动程序和工具软件,选择windows版本,下载相应的驱动,下载完之后在对应文件中找

笔记整理—内核!启动!—kernel部分(1)驱动与内核的关系

首先,恭喜完成了uboot部分的内容整理,其次补充一点,uboot第一部分和第二部分的工作不是一定的,在不同的版本中,可能这个初始化早一点,那个的又放在了第二部分,版本不同,造成的工作顺序不同,但终归是要完成基本内容初始化并传参给kernel的。         那么至于驱动与内核的关系,用一张图来说明最适合不过:         驱动位于OS层的中下层与硬件相接。驱动是内

读源码笔记--文件过滤驱动FileSpy第1篇 -- DriverEntry

今天只读FileSpy的DriverEntry,位于源文件:filespy.c。 // // 全局变量. // ULONG gFileSpyDebugLevel = DEFAULT_FILESPY_DEBUG_LEVEL; #if WINVER >= 0x0501 ULONG gFileSpyAttachMode = FILESPY_ATTACH_ALL_VOLUMES; #else ULON

Circuit Design 三极管驱动蜂鸣器电路 及 蜂鸣器两端电压正确但是不响的解决方案

利用三极管进行电流放大的蜂鸣器驱动电路图: (百度图片找的) 我用有源蜂鸣器实现的这个电路,但是蜂鸣器不响。 details: 1. VCC =5V 蜂鸣器两端的直接电压约为4.5V, 但是蜂鸣器不响。 2. 将蜂鸣器直接接在4.5V的电源两端,蜂鸣器响。(说明蜂鸣器是好的) 3. 测了三极管各个管脚的电压, 和理论上的是一致的。 情况很奇怪,换了好几个三极管结果都是一样的,