履带车配置
AQMDBLS-Ax/Bx/Mx/T 系列无刷电机驱动器使用大致需要以下几个步骤。
- 1) 阅读用户使用说明书、了解驱动器的性能、明确控制目的;
- 2) 根据电机和驱动器的接线原理,正确接线;
- 3) 使用 485 通讯控制,连接上位机软件,通讯成功后读取默认参数;
- 4) 根据电机的实际参数配置电机参数、系统参数;
- 5) 电机学习(注:可通过上位机软件或通过拨码开关内置程序);
- 6) 可用上位机软件“电机控制”测试基本功能;
- 7) 对于-Mx/T 款,在通电状态下,通过按键配置实际应用需要的工作模式;
- 8) 对于-Ax/Bx 款,断电后,将拨码开关,拨至实际应用工作模式,然后上电进行调试;
- 9) 正常使用。
demo配置
-
RS485通讯 波特率9600 偶校验+1停止位
-
demo配的参数:只有电机控制界面不保存,其他断电都保存
-
电机额定电流 14A 最大负载电流 14A
-
最大换向频率 3276.7 默认换向频率 0Hz 电机转速(RPM) = 20 × 换向频率 / 极个数。
-
电机极个数2个 电机减速比37:1
-
根据自身电机的实际参数配置好相关参数后,单击“开始学习”,驱动器每测试一相,将会“嘀”的短鸣一声;学习完毕后,若到听到“嘀——”的一声长鸣,表示学习成功。若听到连续 “嘀嘀嘀”三声短鸣,则表示学习失败。如果学习失败,请检查电机霍尔信号接线是否正确,是否接牢,或电机是否是驱动器支持的类型。
电机额定电流 (0x006A)
- 作用:用于配置电机的额定电流,应与电机实际额定电流相匹配或略高。
- 注意:额定电流配置过小可能导致调速不稳定或驱动器损坏;配置过大可能响应缓慢。
最大负载电流 (0x006B)
- 作用:配置驱动器最大输出电流,限制电机启动、过载和堵转时的最大电流,通常与额定电流相同。
- 目的:限制最大负载电流/堵转力矩。
制动补偿电流 (0x006C)
- 作用:配置电机最大制动(刹车)电流,用于调节刹车时间和平稳程度。
- 注意:制动电流越大,刹车时间越短,但冲击力越大,平稳性变差。
常态自锁电流 (0x0078)
- 作用:配置电机停转后保持位置的电流,适用于速度闭环和位置控制模式。
- 建议:最大电流不超过电机额定电流的1/2,以避免电机过热或损坏。设置为0时禁用自锁功能。
最大换向频率和默认换向频率 (0x0066、0x0067)
- 定义:换向频率决定电机线圈电流方向切换的频率,与电机转速成正比。
- 公式:电机转速(RPM) = 20 × 换向频率 / 极个数。
- 用途:配置速度闭环和位置闭环控制的最大和默认速度。
加速度和减速度 (0x0062、0x0063、0x0064、0x0065)
- 加速加速度:配置电机加速时的加速度大小,上电时以默认加速度加速。
- 减速加速度:配置电机减速时的加速度大小,上电时以默认减速度减速。
稳速控制算法 (0x0070)
- 速度闭环方式:基于速度反馈的闭环控制,特点是超调量小,高速时调速平稳,但极低速时可能不均匀。
- 时间-位置闭环控制方式:基于位置反馈的闭环控制,适合多驱动器同步控制和极低速控制,高速时超调量较大。
- 时间-位置速率:解决时间位置控制算法电机堵转释放后速度飙升的问题。
电机极个数和减速器减速比 (0x0073、0x0074)
- 电机极个数:通过电机技术手册或询问电机制造商获得,配置于寄存器0x0073。
- 减速器减速比:如果电机配有减速器,则应配置其实际减速比于寄存器0x0074;无减速器时,配置为1。
- 作用:配置这些参数后,驱动器可以计算电机经减速器后的实际转速。
- 公式:电机转速(RPM) = 20×换向频率 / 极个数 / 减速比。
加速度、速度量程、最大负载电流 (0x0062、0x0063、0x0064、0x0065、0x0077、0x0079、0x007A)
- 速度量程×10:勾选后,换向频率相关参数的分辨率由0.1Hz提高至1Hz,范围增大10倍。
- 允许X倍最大负载电流输出X秒:配置允许输出的最大负载电流倍数及时间,配置为0时禁用此功能。
电机学习状态、电机相序数据、禁用电机学习 (0x0075、0x006D-0x006F、0x0076)
- 电机学习状态:记录电机的相序学习状态,需要通过特定学习操作从“未学习”改为“已学习”。
- 电机相序数据:存储电机学习后的霍尔数据,仅当电机学习状态为“未学习”时可写。
- 禁用电机学习:防止意外或误操作改变已学习电机的状态,勾选后将保护电机学习状态不被意外修改。
开始学习 (0x00E1)
- 操作:配置好电机参数后,进行电机学习操作。成功学习的标志是听到一声长鸣;失败则是连续三声短鸣。
- 注意:学习失败时,应检查霍尔信号接线、电机类型等是否符合要求。
这段描述关注于电机控制中的速度闭环控制,特别是如何通过配置PID参数来实现稳定的速度控制。PID控制是一种常用的反馈控制方法,它通过比例(P)、积分(I)、和微分(D)三个参数来调整控制器输出,以达到预定的控制目标。以下是关于速度PID参数配置的归纳:
速度PID参数 (0x00C0-0x00C5)
-
用途:这些参数用于配置速度闭环控制中的PID控制器,以实现电机速度的精确控制。
-
参数分配:
- 比例(P)参数:配置在寄存器0x00C0-0x00C1。
- 积分(I)参数:配置在寄存器0x00C2-0x00C3。
- 微分(D)参数:配置在寄存器0x00C4-0x00C5。
-
比例(P):决定控制器响应的速度和力度。比例项太大可能导致系统过冲和震荡,太小则响应缓慢。
-
积分(I):消除稳态误差,增强系统的稳定性和精度。积分项过大可能导致系统反应过慢和超调。
-
微分(D):预测系统未来的行为,改善系统的瞬态响应和稳定性。微分项过大可能使系统响应过度,产生高频震荡。
接口定义
-
电机接口
- 接口定义:电机接口包括U、V、W三个端口,分别与电机的U、V、W相线相连。
- 接线注意事项:
- 电机的相线顺序(U、V、W)可以不按顺序连接。
- 如果电机相线的顺序发生改变,同样需要重新对电机进行学习,以确保电机能够正确运行。
-
霍尔信号接口
- 接口定义:霍尔信号接口包括COM、5VO、HW、HV、HU端口。
- COM端接霍尔传感器的负极。
- 5VO端接霍尔传感器的正极。
- HW、HV、HU端分别接霍尔传感器的三个霍尔信号线。
- 接线注意事项:
- 霍尔传感器的电源正负极必须接正确。
- 霍尔位置信号线(HW、HV、HU)可以不按顺序连接。
- 如果霍尔位置信号接线顺序改变,需要重新对电机进行学习,以确保电机能正确识别霍尔信号的位置信息。
- 接口定义:霍尔信号接口包括COM、5VO、HW、HV、HU端口。
通讯模式的转换
通过0x0120寄存器配置通讯方式
-
485通讯方式:
- 若要启用485通讯,将0x0120寄存器设置为0。
- 在此设置下,若使用CAN通讯,则不支持CANopen协议。
-
CANopen协议:
- 若要使用CAN通讯并启用CANopen协议,将0x0120寄存器设置为1。
- 此设置不支持485通讯方式。
-
通讯方式启用:
- 修改0x0120寄存器值并保存后,必须重新上电设备以启用新配置的通讯方式。
通过拨码开关配置通讯方式
第 1-7 位 | 第 8 位 | 控制方式 |
---|---|---|
全为 ON | ON | 默认通讯参数控制方式 |
从站地址/节点 ID | ON | RS485/CAN 通讯控制方式 |
第 1 位 | 第 2 位 | 第 3 位 | 第 4 位 | 第 5 位 | 第 6 位 | 第 7 位 | 译码值 |
---|---|---|---|---|---|---|---|
OFF | OFF | OFF | OFF | OFF | OFF | OFF | 0x01 |
ON | OFF | OFF | OFF | OFF | OFF | OFF | 0x02 |
OFF | ON | OFF | OFF | OFF | OFF | OFF | 0x03 |
ON | ON | OFF | OFF | OFF | OFF | OFF | 0x04 |
OFF | OFF | ON | OFF | OFF | OFF | OFF | 0x05 |
ON | OFF | ON | OFF | OFF | OFF | OFF | 0x06 |
OFF | ON | ON | OFF | OFF | OFF | OFF | 0x07 |
…… | …… | …… | …… | …… | …… | …… | …… |
OFF | ON | ON | ON | ON | ON | ON | 0x7F |
- 默认通讯参数:
- 无论0x0120寄存器设置为何值,将拨码开关的1-8位全拨到ON,可切换设备至默认通讯参数模式。
- 在默认通讯参数模式下,485通讯和CAN通讯均可用,但不支持CANopen协议。
通讯模式的设置
- 寄存器0x0120用于指定驱动器的通讯模式:RS485/CAN模式或CANopen模式。
- 在RS485/CAN模式下:
- 驱动器根据上电后接收到的第一帧数据的类型自动选择485通讯方式或CAN通讯方式。
- 如果首帧为Modbus通讯帧,选择485通讯方式;如果首帧为CAN通讯帧,选择CAN通讯方式。
- 在CANopen模式下:
- 驱动器只能使用CAN通讯方式。
- 在RS485/CAN模式下:
电通讯模式设置
- 寄存器0x0120用于指定驱动器的通讯模式:RS485/CAN模式或CANopen模式。
- 在RS485/CAN模式下:
- 驱动器根据上电后接收到的第一帧数据的类型自动选择485通讯方式或CAN通讯方式。
- 如果首帧为Modbus通讯帧,选择485通讯方式;如果首帧为CAN通讯帧,选择CAN通讯方式。
- 在CANopen模式下:
- 驱动器只能使用CAN通讯方式。
- 在RS485/CAN模式下:
电机学习
-
准备阶段:确保电机处于空载状态,这需要先断开驱动器的电源。
-
接线步骤:
- 将电机的三相线(U、V、W)分别接到驱动器相应的接口。
- 连接电机的霍尔电源正负极到驱动器的5VO和COM接口。
- 将电机霍尔传感器的信号线(HU、HV、HW)接到驱动器的对应信号接口。
-
配置额定电流:通过调整驱动器的拨码开关(SW1至SW3),设置与电机实际额定电流一致的值。如果不清楚电机的额定电流,可以将这些拨码开关都设为ON。
第 1 位 第 2 位 第 3 位 第 8 位 电机额定电流值 OFF OFF OFF OFF 使用 485/CAN 配置的额定电流,默认 14A ON OFF OFF OFF 8A OFF ON OFF OFF 10A ON ON OFF OFF 12A OFF OFF ON OFF 14A ON OFF ON OFF 16A OFF ON ON OFF 18A ON ON ON OFF 20A -
设置工作模式为电机学习:通过将驱动器的拨码开关SW4至SW5设为ON,以及SW6至SW8设为OFF,配置信号源为内置程序,工作模式为电机学习。
第 4 位 第 5 位 第 8 位 信号源 OFF OFF OFF 电位器 ON OFF OFF 模拟信号 OFF ON OFF PWM/频率/脉冲 ON ON OFF 内置程序 -
执行相序学习:
- 通电后,等待电机相序学习自动完成。
- 在学习过程中,工作指示灯和故障指示灯会交替闪烁。每测试一相时,驱动器会发出短鸣声。
- 学习成功时会听到一声长鸣,表示学习成功;连续三声短鸣则表示学习失败。
-
后续步骤:
- 完成电机学习后,首先要关闭驱动器的电源。
- 在电源关闭的状态下,根据需要通过拨码开关重新配置驱动器所需的工作参数和工作模式。
- 如果需要通过485通讯来配置参数,应先将拨码开关设置为485通讯模式。
- 然后,通电并在485通讯模式下配置所需参数。
- 配置完成后,再次断开驱动器电源。
- 在完成485通讯配置(如果进行了此步骤)后,应使用拨码开关最后一次设置所需的工作模式。
485/CAN通讯控制方式下的使用方法
通讯控制配置
-
拨码开关设置:
- 设置拨码开关第1至第7位为OFF(上方)。
- 设置拨码开关第8位为ON(下方)。
- 驱动器被配置为通讯控制方式。
- 默认情况下,寄存器0x009c、0x0120和0x0121使用默认值0。
- 从站地址/节点ID配置为0x01。
第 1-7 位 第 8 位 控制方式 全为 ON ON 默认通讯参数控制方式 从站地址/节点 ID ON RS485/CAN 通讯控制方式 -
注:
- 1)默认通讯参数控制方式不支持 CANopen 协议;
- 2)须 0x009c 和 0x0121 寄存器值为 0 时拨码开关配置的从站地址/节点 ID 才有效。
-
设备从站地址译码表如下表
第 1 位 第 2 位 第 3 位 第 4 位 第 5 位 第 6 位 第 7 位 译码值 OFF OFF OFF OFF OFF OFF OFF 0x01 ON OFF OFF OFF OFF OFF OFF 0x02 OFF ON OFF OFF OFF OFF OFF 0x03 ON ON OFF OFF OFF OFF OFF 0x04 OFF OFF ON OFF OFF OFF OFF 0x05 ON OFF ON OFF OFF OFF OFF 0x06 OFF ON ON OFF OFF OFF OFF 0x07 …… …… …… …… …… …… …… …… OFF ON ON ON ON ON ON 0x7F -
电源连接:
- 将电源的正极连接到驱动器的V+接口。
- 将电源的负极连接到驱动器的V-接口。
485通讯控制:
-
RS485连接与参数:
- 若主站为485设备,连接方式是485主站与驱动器的485/CAN接口A对A、B对B。
- 建议将驱动器的COM与主站的信号地相连,以增强信号稳定性。
- 使用Modbus-RTU通讯协议,通讯默认波特率9600bps。
- 检验方式为偶校验,有1位停止位。
- 如果通讯参数被更改,需使用新的参数进行通讯。
CAN通讯控制:
-
CAN连接与参数:
- 若主站为CAN设备,连接方式是CAN主站/客户端的CANH对CANH、CANL对CANL。
- 必须至少在CAN总线上并联一个120Ω的终止电阻。
- CAN通讯默认波特率为500kbps。
- 如果通讯参数被更改,需使用新的参数进行通讯。
- 使用CANopen协议时,0x0120寄存器必须配置为1。
-
CAN总线访问:
- 通过CAN可访问CANopen对象字典和Modbus寄存器。
- 关于如何通过CAN访问Modbus寄存器的详细信息,请参阅文档的第7.4节。
通过Demo程序配置驱动器参数(RS485通讯)
- 在使用RS485与驱动器进行通讯时,需要确保通讯参数和设备地址与驱动器设置一致。
- 通讯参数:
- 默认设置:驱动器默认的通讯参数设置为波特率9600bps,偶校验,以及1个停止位。
- 波特率配置:可以通过寄存器0x0090和0x0091来配置驱动器的波特率,支持的范围是1200bps到115200bps。
- 校验方式和停止位:校验方式和停止位的配置通过寄存器0x0092进行,支持偶校验或奇校验加1个停止位,以及无校验加2个停止位。
- 设备地址:
- 拨码开关配置:Modbus从站设备地址可以通过设置拨码开关的第1到第7位来配置,具体的地址设置可以参照驱动器的文档中的译码表。
- 寄存器配置:也可以通过寄存器0x009c来指定设备地址。
- 控制方式位:当使用485/CAN通讯控制时,拨码开关的第8位应该拨到ON位置。
- 可能需要通过Demo配置的参数
寄存器地址 | 寄存器作用 | 值 | 描述 |
---|---|---|---|
0x0043 | 设定速度闭环控制目标速度 | -32768~32767 | 数值乘以 0.1 为目标换向频率,单位为 Hz |
0x006a | 配置电机额定电流 | 0~2000 | 数值乘以 0.01 为电流值,单位为 A。 |
0x006b | 配置电机最大负载电流 | 0~2000 | 数值乘以 0.01 为电流值,单位为 A。 |
0x0070 | 配置速度闭环控制算法 | 0, 1 | 0:速度闭环控制 1:时间-位置闭环控制 |
0x0073 | 配置电机极个数 | 0~65535 | 设定电机极个数,电机极个数通常为 3 的 倍数 |
0x0074 | 配置电机减速比 | 0~65535 | |
0x0022 | 实时电机换向频率 | -32768~32767 | 当 0x0035 寄存器为 1 时, 数值即为换向频率; 当 0x0035 寄存器为 0 时,数值乘以 0.1 为换向频率,单位为 Hz; 换向频率除以电机极个数再乘以 20 为电机转速,单位RPM。 |
0x0034 | 电机实时转速 | 0~65535 | 当 0x0035 寄存器为 1 时,数值乘以 10 为 转速; 当 0x0035 寄存器为 0 时,数值即为转速,单位为 RPM。 注:需先通过 0x0073 和 0x0074 寄存器配置正确的电机极个数和减速比,读取的转速才正确。 |
0x0035 | 转速是否需要乘 以 10 | 0, 1 | 0:数值即转速; 1:数值乘以 10 为转速 |
- 电机转速=换向频率/电机极个数*20
通过STM32 CAN通讯配置驱动器参数(CAN通讯)
硬件连接
- 连接方式:CAN通讯线(CANH和CANL)按照CANH对CANH、CANL对CANL的方式,连接CAN主站(如PLC、单片机或PC机等)与电机驱动器的485/CAN通讯接口。
- 控制目的:通过CAN通讯,主站可以对电机进行调速、方向控制和位置控制等操作。
数据访问方式
- CANopen对象字典和Modbus寄存器:通过CAN通讯,既可以访问CANopen对象字典,也可以访问Modbus寄存器,实现对电机的详细控制。
- 访问规则:
- 对于地址在0x0000~0x0FFF范围内的Modbus寄存器,通过CANOpen索引号0x4000加上寄存器地址来访问。
- 对于地址在0x7000~0x7FFF范围内的Modbus寄存器,通过寄存器地址减去0x2000来访问。
- 子索引号固定为0。
- 使用0x2B和0x23命令分别对双字节和四字节数据的寄存器进行写操作;使用0x40命令进行读操作。
CAN节点ID配置
- 驱动器支持多节点通讯,节点ID可通过拨码开关、寄存器0x0121或对象字典索引0x2201配置,支持最多127个节点ID。
- 节点ID的配置规则:
- 当0x0121寄存器和0x2201索引的数据为默认值0时,CAN节点ID由拨码开关设定。
- 当这些参数设定为1~127范围内的值时,无论是通讯控制方式还是数字/模拟信号控制方式,CAN节点ID都会被设定为此值。
CAN波特率配置
- 通过寄存器0x0122或对象字典索引0x2202配置CAN波特率。
- 默认波特率为500kbps,可配置范围从10kbps到1Mbps。
CANopen协议启用和配置
- 通过将寄存器0x0120的值设定为1来启用CANopen协议。
- 可通过寄存器0x0128设定值为1来启用CANopen自启动,使得驱动器在上电节点初始化后直接进入Operational状态。
- 心跳周期可通过寄存器0x0129或对象字典的0x1017索引进行配置。
通讯参数配置
- 波特率和节点ID:在使用CAN通讯时,必须确保波特率及节点ID与驱动器设置一致。
- 默认波特率为500kbps,可通过0x0122寄存器配置,支持范围为10kbps~1Mbps。
- 节点ID可通过拨码开关的第1~7位配置,或通过0x0121寄存器指定。
- 当使用485/CAN通讯控制时,拨码开关的第8位应拨到ON。
默认通讯参数
- 当拨码开关的第1~8位全为ON时,驱动器使用默认通讯参数,此时CAN波特率设为500kbps,CAN节点ID为0x01,并且不支持CANopen通讯协议,即使0x0120寄存器的值被配置为1。
CAN消息语法
主站/客户端发送消息格式
- 在RS485/CAN通讯模式或CANopen通讯模式,我们可通过如下CAN消息格式(对应于
CANopen的SDO加速传送报文)来访问对象字典。
CAN 标识符 | 数据字节 0 | 数据字节 1-2 | 数据字节 3 | 数据字节 4-7 |
---|---|---|---|---|
0x600+节点 ID | 命令 | 索引号 | 子索引号 | 数据 |
- CAN 标识符:0x600加上节点ID,用于标识消息的目的地。节点ID范围从0x01到0x7F,保证每个CAN设备的节点ID唯一。
- 数据字节0(命令字节):
- 写命令分别为0x2F(单字节数据)、0x2B(双字节数据)、0x27(三字节数据)、0x23(四字节数据)。
- 读命令为0x40。
- 数据字节1-2(对象字典索引号):表示要访问的对象字典项的索引号,低字节在前。
- 数据字节3(子索引号):表示对象字典项内部的子项。
- 数据字节4-7(数据):要写入的数据,低字节在前,无效字节用0x00填充。对于读取操作,这些字节均为无效。
命令与数据字节有效性对应关系
状态码 | 描述 | 数据字节 4-7 中有效字节 |
---|---|---|
0x4F | 数据长度为 1 字节 | 前 1 字节 |
0x4B | 数据长度为 2 字节 | 前 2 字节 |
0x47 | 数据长度为 3 字节 | 前 3 字节 |
0x43 | 数据长度为 4 字节 | 全有效 |
0x60 | 传送成功 | 均无效 |
0x80 | 传送中止 | 4 个字节为中止代码 |
- 0x2F(写单字节):数据字节4中的前1字节有效。
- 0x2B(写双字节):数据字节4-5中的前2字节有效。
- 0x27(写三字节):数据字节4-6中的前3字节有效。
- 0x23(写四字节):数据字节4-7全部有效。
- 0x40(读取数据):所有数据字节均无效。
限制
- 在RS485/CAN通讯模式下,无法访问数据长度大于4字节的对象。若需要访问这类对象,必须在CANopen通讯模式下进行,这时应参照CANopen协议的相关文档来执行。
从站/服务器应答消息格式
- 相应 CAN 节点接收到消息后的应答格式如下:
CAN 标识符 | 数据字节 0 | 数据字节 1-2 | 数据字节 3 | 数据字节 4-7 |
---|---|---|---|---|
0x580+节点 ID | 状态 | 索引号 | 子索引号 | 数据/中止代码 |
- CAN 标识符:0x580加上节点ID,用于标识应答消息的源头。节点ID范围从0x01到0x7F,确保每个CAN设备的节点ID唯一。
- 数据字节0(状态码):用于表示应答的状态或操作结果。
- 数据字节1-2(对象字典索引号):表示被访问的对象字典项的索引号,低字节在前。
- 数据字节3(子索引号):表示对象字典项内部的子项。
- 数据字节4-7(数据/中止代码):根据状态码,这部分可以是读取操作返回的数据,或者操作失败时的中止代码,低字节在前。
状态码与数据有效性对应关系
状态码 | 描述 | 数据字节 4-7 中有效字节 |
---|---|---|
0x4F | 数据长度为 1 字节 | 前 1 字节 |
0x4B | 数据长度为 2 字节 | 前 2 字节 |
0x47 | 数据长度为 3 字节 | 前 3 字节 |
0x43 | 数据长度为 4 字节 | 全有效 |
0x60 | 传送成功 | 均无效 |
0x80 | 传送中止 | 4 个字节为中止代码 |
- 0x4F:数据长度为1字节,数据字节4中的前1字节有效。
- 0x4B:数据长度为2字节,数据字节4-5中的前2字节有效。
- 0x47:数据长度为3字节,数据字节4-6中的前3字节有效。
- 0x43:数据长度为4字节,数据字节4-7全部有效。
- 0x60:传送成功,所有数据字节均无效。
- 0x80:传送中止,数据字节4-7中包含4个字节的中止代码。
通过这些规则,从站在接收到主站的请求后,能够根据操作的结果和数据的长度,返回一个格式化的应答消息。这种应答机制不仅允许主站了解操作是否成功,还能获取操作结果的详细数据或失败的原因。这一过程是CANopen和类似基于CAN的通讯协议中设备间交互的基础。
通过CAN访问MODBUS寄存器
Modbus寄存器地址与CANopen索引号的转换关系
MODBUS 寄存器地址( REG_ADDR) | 对象字典索引号( INDEX) | 对象字典子索引号( SUB-INDEX) |
---|---|---|
0x0000~0x0FFF | 0x4000 + REG_ADDR | 0 |
0x7000~0x7FFF | REG_ADDR - 0x2000 | 0 |
- 对于Modbus寄存器地址范围在0x0000~0x0FFF内的,对象字典索引号为0x4000 + REG_ADDR,并且对象字典子索引号固定为0。
- 对于Modbus寄存器地址范围在0x7000~0x7FFF内的,对象字典索引号为REG_ADDR - 0x2000,同样对象字典子索引号固定为0。
读写操作命令
- 读取操作:使用0x40命令对Modbus寄存器进行读取。
- 写入操作:
- 对于16位数据长度的寄存器,通过0x2B命令进行写入。
- 对于32位数据长度的寄存器(例如:设定目标位置的寄存器0x0046),通过0x23命令进行写入。
实例解释
假设我们需要通过CAN通讯方式,向一个位于地址0x0088的Modbus寄存器写入一个16位的值(例如,0x1234),然后从该寄存器读取数据。设备的CAN节点ID为0x05。以下是如何实现这一过程的示例及其解释。
写入操作
-
计算索引号:首先,根据Modbus寄存器地址转换规则,我们需要将Modbus寄存器地址0x0088转换为CANopen对象字典索引号。
- 因为0x0088属于0x0000~0x0FFF范围,转换后的索引号为
0x4000 + 0x0088 = 0x4088
。
- 因为0x0088属于0x0000~0x0FFF范围,转换后的索引号为
-
构建CAN消息:
CAN 标识符 数据字节 0 (命令) 数据字节 1-2 (索引号) 数据字节 3 (子索引号) 数据字节 4-7 (数据) 0x605 0x2B 0x88, 0x40 0x00 0x34, 0x12, 0x00, 0x00 - CAN标识符:0x600 + 节点ID = 0x600 + 0x05 = 0x605。
- 命令字节(数据字节0):因为我们要写入一个16位(双字节)的值,使用命令
0x2B
。 - 索引号(数据字节1-2):0x4088,低字节在前,所以数据字节1为0x88,数据字节2为0x40。
- 子索引号(数据字节3):0,因为大多数操作的子索引号默认为0。
- 数据(数据字节4-7):要写入的值为0x1234,低字节在前,所以数据字节4为0x34,数据字节5为0x12,数据字节6和7为0x00(无效字节填充)。
读取操作
-
构建CAN消息(为了请求数据):
CAN 标识符 数据字节 0 (命令) 数据字节 1-2 (索引号) 数据字节 3 (子索引号) 数据字节 4-7 (无效字节) 0x605 0x40 0x88, 0x40 0x00 0x00, 0x00, 0x00, 0x00 - CAN标识符:仍然是0x605。
- 命令字节(数据字节0):使用读取命令
0x40
。 - 索引号(数据字节1-2)、子索引号(数据字节3):同写操作。
-
从站应答消息:
CAN 标识符 数据字节 0 (状态) 数据字节 1-2 (索引号) 数据字节 3 (子索引号) 数据字节 4-7 (数据/中止代码) 0x585 0x4B 0x88, 0x40 0x00 0x34, 0x12, 0x00, 0x00 - 如果读取成功,从站会发送一个应答消息,其CAN标识符将是
0x580 + 节点ID = 0x585
。 - 状态码(数据字节0):传送成功,一般为
0x60
,或者根据读取数据长度使用0x4B
(对于双字节数据)。 - 索引号(数据字节1-2)和子索引号(数据字节3):与请求消息相同。
- 数据(数据字节4-7):包含请求的数据,对于成功读取的双字节数据,数据字节4-5将包含值,字节6-7为0x00。
- 如果读取成功,从站会发送一个应答消息,其CAN标识符将是
格式解释
- 在CAN通讯中,消息的具体内容通过数据字节来传递,每一部分的字节都有其特定的含义,如命令字节决定操作类型,索引号和子索引号指定要操作的具体对象,数据字节承载实际要写入或读取的数据。
- 通过适当的命令和数据格式,可以在CAN网络中实现复杂的数据交换和设备控制操作,使得基于CAN的系统不仅能够支持简单的数据传输,也能实现复杂的控制逻辑和设备间的高效通信。
需要配置或读取的modbus寄存器
寄存器地址 | 寄存器作用 | 值 | 描述 |
---|---|---|---|
0x0043 | 设定速度闭环控制目标速度 | -32768~32767 | 数值乘以 0.1 为目标换向频率,单位为 Hz |
0x006a | 配置电机额定电流 | 0~2000 | 数值乘以 0.01 为电流值,单位为 A。 |
0x006b | 配置电机最大负载电流 | 0~2000 | 数值乘以 0.01 为电流值,单位为 A。 |
0x0070 | 配置速度闭环控制算法 | 0, 1 | 0:速度闭环控制 1:时间-位置闭环控制 |
0x0073 | 配置电机极个数 | 0~65535 | 设定电机极个数,电机极个数通常为 3 的 倍数 |
0x0074 | 配置电机减速比 | 0~65535 | |
0x0022 | 实时电机换向频率 | -32768~32767 | 当 0x0035 寄存器为 1 时, 数值即为换向频率; 当 0x0035 寄存器为 0 时,数值乘以 0.1 为换向频率,单位为 Hz; 换向频率除以电机极个数再乘以 20 为电机转速,单位RPM。 |
0x0034 | 电机实时转速 | 0~65535 | 当 0x0035 寄存器为 1 时,数值乘以 10 为 转速; 当 0x0035 寄存器为 0 时,数值即为转速,单位为 RPM。 注:需先通过 0x0073 和 0x0074 寄存器配置正确的电机极个数和减速比,读取的转速才正确。 |
0x0035 | 转速是否需要乘 以 10 | 0, 1 | 0:数值即转速; 1:数值乘以 10 为转速 |