Emm42_V5.0步进闭环驱动说明书Rev1.3
一、产品介绍
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通讯控制,支持二者混合控制;
- 支持Modbus-RTU协议、自定义协议;
- 支持多机通讯和多机同步控制,支持最多255个地址的电机进行通讯同步控制;
- 支持速度模式、位置模式控制,支持曲线加减速,支持立即停止,每个位置指令都支持绝对位置模式和相对位置模式;
- 开环模式也支持通讯控制,最高转速200-400RPM,也支持曲线加减速和同步控制;
- 支持0.1RPM转速,支持存储方向、速度和加速度参数上电自动运行,IO控制启停;
- 支持单圈就近回零和方向回零、多圈无限位碰撞回零和有限位开关回零;
- 支持通讯控制到位输出/到位返回命令、支持脉冲控制报警输出和复位堵转保护;
- 支持实时转速RPM、相电流Ma、总线电压mV的显示和读取;
- 具有堵转保护功能,支持IO控制低电平或发送命令解除堵转保护,不需要重新上电;
- 可支持共阳/共阴信号输入,可支持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以上 |
最高转速 | 0.1RPM-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+ |
最高转速 | 0.1RPM-3000RPM+ | 2200RPM+ |
最大打印速度 | 250mm/s以上 | 180-220mm/s |
控制支持 | CAN/485/232/串口/脉冲 | 485/232/串口/脉冲 |
电机参数辨识 | 自动测量电机相电阻、相电感 | 无 |
堵转检测和保护 | 可设置堵转检测电流、转速、时间 | 可设置堵转检测误差角度、阈值 |
堵转电流限制 | 可限制0-3000Ma堵转电流 | 无 |
回零模式支持 | 单圈回零、多圈无/有限位回零 | 仅支持单圈回零 |
回零触发方式 | 上电自动触发、发送命令触发 | 仅支持上电自动触发 |
通讯控制 | 速度模式、位置模式、实时转速 | 速度模式、位置模式 |
通讯位置模式 | 支持绝对位置和相对位置模式 | 仅支持相对位置模式 |
曲线加减速 | 0-255加速度档位,加减速更平滑 | 0-255加速度档位 |
速度档位 | 0.0 - 3000.0RPM(转/分钟) | 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 |
硬件清单如下图所示:
注意:
- 胶水尽量选择3M胶水、超能胶水、AB胶等有粘稠状、对金属和磁铁都有较强粘性的胶水,尽量不选择502等低粘稠状的胶水,此类胶水比较容易渗透到电机内部,造成电机的损坏。
- 建议选用本店的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)电机在校准编码器的过程中,会测量和纠正相关参数,如下:
- 测量磁铁安装的偏心位置,并进行线性化纠正;
- 测量电机的相电阻和相电感,建立该电机的数学模型;
(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
菜单作用:脉冲端口控制模式选择:
- PUL_OFF:关闭脉冲输入端口,脉冲输入控制无效;
- PUL_OPEN:开环模式,不需要编码器就能工作,最高转速约200-400RPM;
- PUL_FOC:FOC矢量闭环模式,默认工作模式,电流实时调节,最高转速约3000RPM+(转/每分钟),每个电机参数不一样最高转速不同;
- ESI_RCO:复用为限位输入和到位输出,请参考第七和八章节说明进行操作;
- 菜单项目: P_Serial
菜单功能:通讯端口复用选择
菜单选项:RxTx_OFF、ESI_ALO、UART_FUN、CAN1_MAP
菜单作用:选择通讯端口复用为哪种通讯方式:
- RxTx_OFF:关闭通讯端口,通讯控制无效;
- ESI_ALO:将R/A/H复用为限位开关输入,将T/B/L端口复用为报警输出;
- UART_FUN:将R/A/H和T/B/L端口复用为串口/RS232/RS485通讯控制功能;
- CAN1_MAP:将R/A/H和T/B/L端口复用为CAN通讯控制功能,可用CAN通讯控制;
- 菜单项目:En
菜单功能:设置En端口的有效电平
菜单选项:L、H、Hold
菜单作用:选择En端口的有效电平:
- L: En端口低电平有效,即En端口控制到低电平电机使能,高电平不使能;
- H: En端口高电平有效,即En端口控制到高电平电机使能,低电平不使能;
- 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、...、16(其他地址可用串口进行修改,范围1-255)
菜单作用:设置串口/RS232/RS485/CAN多机通讯时本机的地址,0为广播地址;
- 菜单项目:Checksum
菜单功能:设置串口/RS232/RS485/CAN多机通讯时的校验方式
菜单选项:0x6B、XOR、CRC-8、Modbus
菜单作用:默认为0x6B,即通讯时每条命令最后一个字节都固定为0x6B,其他校验的计算方式请查看“通讯控制”章节;Modbus请查看“Modbus-RTU指令说明”文档;
- 菜单项目:Response
菜单功能:设置串口TTL/RS232/RS485/CAN通讯控制时控制动作命令列表是否回复
菜单选项:None、Receive、Reached、Both、Other
菜单作用:设置串口/RS232/RS485/CAN总线通讯控制时,主机发送控制动作命令列表中的命令时,从机收到命令后,是否返回确认收到命令,以及是否返回到位命令;
- None: 不返回确认收到命令,在发送位置模式命令时也不返回到位命令;
- Receive:只返回确认收到命令(默认值);
- Reached:只在发送位置模式命令时返回到位命令(地址 + FD + 9F + 6B);
- Both: 既返回确认收到命令,也在发送位置模式命令时返回到位命令;
- Other: 位置模式下只返回到位命令,其他控制动作命令返回确认收到命令;
- 菜单项目:S_Vel_IS
菜单功能:修改通讯控制的输入速度是否缩小10倍输入(精确到0.1RPM输入)
菜单选项:Disable、Enable
菜单作用:默认通讯控制输入转速最低为1RPM,将S_Vel_IS设置为Enable后,则输入的转速会缩小10倍,比如发送1RPM的转速,但电机实际是以0.1RPM的转速运行;
- 菜单项目:Clog_Pro
菜单功能:设置堵转保护功能
菜单选项:Disable、Enable
菜单作用:电机发生堵转时,不管该选项是否使能,LED都会点亮提示;如果使能(Enable)该选项后,堵转时电机将自动关闭驱动器,可以保护电机和驱动器不受堵转大电流的损坏;如果P_Serial设置为ESI_ALM时,则在触发了堵转保护后,T/B/L端口将输出3.3V高电平,将R/A/H引脚接Gnd(0V)可以复位堵转保护,不需要重新上电;
(堵转保护触发条件:电机实际转速 < 设置的堵转检测转速阈值 + 电机实际相电流 >
设置的堵转检测相电流阈值 + 持续时间 > 设置的堵转检测时间阈值)
- 菜单项目: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)
- 命令功能:读取输入脉冲数
命令格式:地址 + 0x32 + 校验字节
命令返回:地址 + 0x32 + 符号 + 输入脉冲数 + 校验字节
命令示例:发送01 32 6B,正确返回01 32 01 00 00 0C 80 6B,错误命令返回01 00 EE 6B
数据解析:01表示负数(00表示正数),00 00 0C 80表示输入脉冲数
输入脉冲数 = -0x0C80 = -3200个
- 命令功能:读取电机目标位置
命令格式:地址 + 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°
- 命令功能:读取电机实时设定的目标位置(开环模式的实时位置)
命令格式:地址 + 0x34 + 校验字节
命令返回:地址 + 0x34 + 符号 + 电机目标位置 + 校验字节
命令示例:发送01 34 6B,正确返回01 34 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;
- 编码器就绪状态标志位 = 0x03 & 0x01 = 就绪;
- 校准表就绪状态标志位 = 0x03 & 0x02 = 就绪;
- 正在回零标志位 = 0x03 & 0x04 = 当前没有回零;
- 回零失败标志位 = 0x03 & 0x08 = 没有回零失败;
电机状态标志 = 0x03;
- 使能状态标志位 = 0x03 & 0x01 = 电机处于使能状态;
- 电机到位标志位 = 0x03 & 0x02 = 电机已经到位;
- 电机堵转标志位 = 0x03 & 0x04 = 没触发堵转;
- 堵转保护标志位 = 0x03 & 0x08 = 没触发堵转保护;
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修改为闭环模式
- 命令功能:修改开环模式的工作电流
命令格式:地址 + 0x44 + 0x33 + 是否存储标志 + 开环模式电流 + 校验字节
命令返回:地址 + 0x44 + 命令状态 + 校验字节
命令示例:发送01 44 33 00 03 E8 6B,正确返回01 44 02 6B,错误命令返回01 00 EE 6B
数据解析:修改开环模式电流为0x03E8 = 1000(Ma),不存储(断电丢失);
- 命令功能:修改驱动配置参数
命令格式:地址 + 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;
- 命令功能:存储一组速度模式参数(方向、速度、加速度),上电自动运行
命令格式:地址 + 0xF7 + 0x1C + 存储/清除标志 + 方向 + 速度 + 加速度 + 是否使能En引脚控制启停标志 + 校验字节
命令返回:地址 + 0xF7 + 命令状态 + 校验字节
命令示例:发送01 F7 1C 01 01 05 DC 0A 01 6B,正确返回01 F7 02 6B,错误命令返回01 00 EE 6B
数据解析:01表示方向为CCW(00表示CW),05 DC表示速度为0x05DC = 1500(RPM),0A表示加速度档位为0x0A = 10,01表示启用En引脚控制电机启停(00表示不启用);(发送命令01 F7 1C 01 01 05 DC 0A 01 6B后,每次上电,电机都会自动以加速度10加速到-1500RPM的速度运行,并可以通过En引脚进行控制启动和停止,其中,En引脚控制电机启动的有效电平可在菜单En中选择,选H为高电平启动,低电平停止)
- 命令功能:修改通讯控制的输入速度是否缩小10倍输入(S_Vel_IS菜单选项)
命令格式:地址 + 0x4F + 0x71 + 是否存储标志 + 通讯控制输入速度是否缩小10倍标志 + 校验字节
命令返回:地址 + 0x4F + 命令状态 + 校验字节
命令示例:发送01 4F 71 01 01 6B,正确返回01 4F 02 6B,错误命令返回01 00 EE 6B
数据解析:01为使能(00为不使能),使能后,通讯控制发送的速度值会缩小10倍,比如发送1RPM的速度,但电机实际是以0.1RPM的速度去运行;
(速度模式控制指令、位置模式控制指令、存储速度模式参数指令都有效)
6.4 CAN通讯控制说明
- 设置P_Serial菜单选项,需要选择为CAN1_MAP通讯模式。
- CAN通讯帧类型固定为扩展帧类型。
- CAN通讯与串口/RS232/RS485通讯发送的命令格式一样,只是ID地址上和大于8字节的命令上有所不同。
- CAN通讯的帧ID在菜单ID_Addr中设置,默认为1,但发送命令时,需要左移8位,低8位表示第几包数据,如果小于8字节命令,则低8位保持为00即可。
- 大于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两个电机:
- 发送01 F6 01 05 DC 01 00 6B,则1地址电机执行这条命令运动;
- 发送02 F6 01 05 DC 01 00 6B,则2地址电机执行这条命令运动;
- 发送00 F6 01 05 DC 01 00 6B,则1和2地址电机都执行这条命令运动(广播);
二、同步控制:
比如有地址1、地址2两个电机,假设需要:
- 1地址电机速度1500RPM,加速度档位为8,相对运动-3600.0°;
- 2地址电机速度1000RPM,加速度档位为10,绝对运动7200.0°;
- 1和2地址电机要同步开始运动(同时开始运动);
则,可以按照以下操作进行两者的同步控制:
- 先发送1地址电机命令01 FD 01 05 DC 08 00 00 7D 00 00 01 6B,正确返回01 FD 02 6B,此时1地址电机先不会运动,因为多机同步标志为01;
- 再发送2地址电机命令02 FD 00 03 E8 0A 00 00 FA 00 01 01 6B,正确返回02 FD 02 6B,此时2地址电机先不会运动,因为多机同步标志为01;
- 再发送多机同步运动命令00 FF 66 6B,此时1和2地址电机开始同步运动;
七、原点回零操作说明
7.1 单圈就近/方向回零操作说明
单圈回零模式有两种:单圈就近回零和单圈方向回零,顾名思义,单圈就近回零就是往靠近零点位置的方向回零,而单圈方向回零就是根据O_Dir选项设定的方向回零, 单圈就近/方向回零操作步骤如下:
- 断电状态将电机轴移动到指定位置、或上电状态下将电机轴运动到指定位置;
- 点击菜单O_Set中的Set O选项,或者发送单圈零点设置命令 01 93 88 01 6B设置单圈回零的零点位置;
- 设置完成后,根据自身需求,可以选择使能上电自动触发回零功能(O_POT_En选项设置为Enable),也可以通讯发送“触发回零”命令进行回零。
7.2 多圈无限位碰撞回零操作说明
原理:利用电机运动过程中,碰撞到机器结构边缘时,电流会瞬间变大,转速会瞬间变小,这一特点,类似堵转检测的原理,简而言之,就是让电机碰一下进行回零。
前提条件:电机带的负载固定;
检测判定条件:电机转速 < 碰撞回零检测转速 + 电机相电流 > 碰撞回零检测电流 + 持续时间 > 碰撞回零检测时间(注意:检测阈值可在上位机或屏幕中进行修改)
多圈无限位碰撞回零操作步骤如下:
- 先用上位机用直通位置限速模式控制电机带着“固定负载”,以“回零速度”正常运动,并观察小屏幕此时的相电流大概是多少,比如大约637Ma;
- 修改“无限位碰撞回零检测电流”比637Ma略大一些,比如设置为800Ma;
- 修改“无限位碰撞回零检测转速”可以设置为300RPM;
- 修改“无限位碰撞回零检测时间”可以设置为60ms;
- 根据自身需求,可以将“上电自动触发回零功能”进行使能(Enable);
- 如果上电自动触发无限位回零的方向不对,可在菜单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低电平;发生堵转后,将R/A/H引脚接Gnd(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 注意事项
- 请勿带电拔插供电接口线和电机线,以免造成电气损坏;
- 建议搭配本店42磁柱步进电机;
- 到店一起购买42步进电机,会安装并校准好整套发货;
十、修改记录
日期 | 版本 | 内容 |
2023/8/21 | Rev1.0 | 初版 |
2023/9/2 | Rev1.1 | 修正文档中的一些说明纰漏、增加一些细节描述 |
2023/9/6 | Rev1.2 | 增加和上一代版本Emm_V4.2的参数对比和新增功能 |
2023/11/20 | Rev1.3 | 增加5.1.0版本新固件新增功能说明 |