专业的微特电机产品发布平台
用户名: 密码: 注册
设为首页 加入收藏 联系我们
免费注册 企业免费建站
新技术论坛 会员产品发布
TB6600QQ群:70241714   步进电机论文   六轴工业机器人解决方案  
步进电机     驱动器     控制器     马达IC     伺服电机     无刷直流电动机     微特电机文献     工控器件     运动控制新产品     六轴工业机器人    
  六轴工业机器人应用案例  
  混合式步进电机选型手册  
  步进电机配套行星减速器  
  步进电机应用网  
  三轴桌面机械臂参数介绍  
  六轴工业机器人应用参数  
  东芝TB6600HQ/HG芯片  
  tb6600hq步进驱动芯片  
  论坛热帖  
  步进电机应用资料  
  价格****的86步进电机  
  60W无刷直流电机  
  100W无刷直流电机  
  48V,250W无刷直流电机  
  48V,550W无刷直流电机  
  步进驱动器芯片LV8731V  
  42/57直线T型滚珠丝杆电机  
  有霍尔直流无刷控制器  
  3相2轴步进驱动器  
  步进电机论坛  
  ZM-6618直流无刷驱动器  
  无刷直流电机选型  
  SCM6716MF直流无刷驱动芯片  
  86步进驱动器2HD8080  
  北京时代超群公司  
  稀土永磁直流力矩电机  
  永磁直流力矩电机  
  86双出轴电机  
  伺服电机知识  
  关于步进电机转速  
  步进电机转矩与功率换算  
  关于步进电机控制  
  关于步进电动机驱动  
  tb62209fg的开发应用  
  tb6588fg的应用资料  
  ET-DS100C型取断锥机  
  五自由度取断锥机  
  步进驱动器及产品  
  步进控制器产品  
  ****马达IC产品  
  无刷直流电机及控制器  
  微特电机论文  
  马达IC应用论文  
  步进电机网工控企业会员  
  步进电机网数控企业会员  
  步进电机网新闻动态  
  步进电机网会员产品信息  
  现货销售TB62214FG  
  现货销售三洋芯片LV8731  
  2轴步进驱动器ZD-8731-D  
  57步进驱动器外壳  
  时代超群无刷直流电机  
  步进电动机制造****技术  
  减速步进电机  
  无刷直流电机  
  无刷直流减速电机  
  35减速步进电机  
  减速步进电机系列产品  
  单轴步进电机控制器  
  多轴步进电机控制器  
  ******的步进控制器  
  信浓步进电机  
  电机联轴器  
  更多>>  
 
Modbus 控制方式(ZHM)
 
 

Modbus 控制方式

1.寄存器说明

    驱动器可以通过 modbus(RTU 模式)来控制驱动器。主机可以

通过 modbus 的读写寄存器功能来设置驱动器参数和控制运行。驱

动器支持的功能码为0x3(读寄存器)、0x6(写寄存器)、0x78(写

目标位置)、0x7a(修改设备地址)。

寄存器列表如下:

blob.png

blob.png

2.Modbus 通信格式

a.modbus 主机读取数据及从机应答格式 (功能码 03)

blob.png

串口接收到的数据都是无符号数,如果寄存器是有符号数,

发送的则是二进制补码的格式,转换成有符号数的算法如下(VB

代码):

    If modbus.data(11) > 32767 Then

    disp_modbus_data.PU = (modbus.data(11) - 32768) * 65536

+ modbus.data(10)

    disp_modbus_data.PU = -((&H7FFFFFFF - disp_modbus_data.

PU) + 1)

    Else

    disp_modbus_data.PU = dmodbus.data(11) * 65536 + modbus.

data(10)

    End If

    注 : modbus.data(11) 为目标位置高 16 位 modbus.data(10)

为目标位置低 16 位

   b.modbus 主机写数据及从机应答格式 ( 功能码 06)

blob.png

    c.modbus 主机写脉冲数 (功能码 0x10)

blob.png

    脉冲数是有符号数,一个负数 ( 假设此数为 X) 转换成 32 位

16 进制数的算法如下 (vb 代码 ):

    If X < 0 Then

        X = &H7FFFFFFF + (X + 1)

        PU24_31 = Fix(X / (256 * 65536)) + &H80

Else

        PU24_31 = Fix(X / (256 * 65536))

End If

   PU16_23 = Fix(X / 65536) mod 256

    PU8_15 = Fix(X / 256) mod 256

    PU0_7 = X mod 256

    注:fix() 为取整函数

blob.png

    d.modbus 主机写脉冲数 (特殊功能码 0x78)

blob.png

3.CRC 校验示例代码

unsigned short CRC16(puchMsg, usDataLen)

unsigned char *puchMsg ; /* 要进行 CRC 校验的消息 */

unsigned short usDataLen ; /* 消息中字节数 */

{

unsigned char uchCRCHi = 0xFF ; /* 高 CRC 字节初始化 */

unsigned char uchCRCLo = 0xFF ; /* 低 CRC 字节初始化 */

unsigned uIndex ; /* CRC 循环中的索引 */

while (usDataLen--) /* 传输消息缓冲区 */

{

uIndex = uchCRCHi ^ *puchMsgg++ ; /* 计算 CRC */

uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;

uchCRCLo = auchCRCLo[uIndex] ;

}

return (uchCRCHi << 8 | uchCRCLo) ;

}

    /* CRC 高位字节值表 */

    static unsigned char auchCRCHi[] = {

    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0,

    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,

0xC0, 0x80, 0x41,

    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00,

0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,

0x41, 0x01, 0xC0,

    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,

0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40,

    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0,

    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01,

0xC0, 0x80, 0x41,

    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,

0x40, 0x01, 0xC0,

    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,

0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,

0xC0, 0x80, 0x41,

    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00,

0xC1, 0x81, 0x40

    } ;

    /* CRC 低位字节值表 */

    static char auchCRCLo[] = {

0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5,

0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9,

0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F,

0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13,

0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6,

0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA,

0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA,

0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6,

0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3,

0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF,

0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79,

0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75,

0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90,

0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C,

0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98,

0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C,

0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81,

0x80, 0x40 }

4.modbus 方式主机控制过程

a:位置模式

(1)写 设备 1(功能码 0x06 地址 0 Modbus 使能) 1

(2)读 设备 1(功能码 0x03 地址 16 报警代码) (读

到 0 时为运行正常)

(3)写 设备 1(功能码 0x06 地址 3 电机目标速度)2000

(4)写 设备 1(功能码 0x78 电机目标位置)1000

(5)读 设备 1(功能码 0x03 地址 10 目标位置低 16 位)

(6)读 设备 1(功能码 0x03 地址 11 目标位置高 16 位)

以上两个寄存器都为 0 时代表已经到了目标位置

(7)重复(4)(5)(6)过程,控制电机位置。

注:电机的目标速度为电机运行的****速度,如果目标位置

较小,电机可能达不到****速度即停止。加速过程写入的电机目标

位置是在原剩余的位置上加上新的数值。例如,第一次写入 1024

代表运行一圈,运行到还剩 256,代表还有 1/4 圈要运行,但此时

又写入一个 1024,此时电机的目标位置变成 1024+256 而不是 1024

替代 256。这样不会因为还没到位又写入一个数值而导致出现错误。

也可以自己定义误差范围,例如到了>-2且<2,就立刻写入新的数,

这样在有些定位精度要求低的场合提高定位的速度。

b:速度模式

(1)写 设备 1(功能码 0x06 地址 0 Modbus 使能) 1

(2)读 设备 1(功能码 0x03 地址 14 报警代码) (读到

0 时为运行正常)

(3)写 设备 1(功能码 0x06 地址 3 电机加速度) 6000

(4)写 设备 1(功能码 0x06 地址 2 电机目标速度) 2000

(5)重复(4)过程,控制电机转速。

5. modbus 方式主机控制多个从机

a:位置模式 控制多个从机不同时开始运动

(1)写 设备 1(功能码 0x06 地址 0 Modbus 使能) 1

(2)读 设备 1(功能码 0x03 地址 14 报警代码) (读到

0 时为运行正常)

(3)写 设备 2(功能码 0x06 地址 0 Modbus 使能) 1

(4)读 设备 2(功能码 0x03 地址 14 报警代码) (读

到 0 时为运行正常)

(5)写 设备 1(功能码 0x06 地址 3 电机目标速度) 2000

(6)写 设备 1(功能码 0x78 电机目标位置) 1000

(7)读 设备 1(功能码 0x03 地址 12 目标位置低 16 位)

8)读 设备 1(功能码 0x03 地址 13 目标位置高 16 位)

以上两个寄存器都为 0 时代表已经到了目标位置

(9)写 设备 2(功能码 0x06 地址 3 电机目标速度 2000

(10)写 设备 2(功能码 0x78 电机目标位置) 1000

(11)读 设备2(功能码0x03 地址12 目标位置低16位)

(12)读 设备2(功能码0x03 地址13 目标位置高16位)

以上两个寄存器都为 0 时代表已经到了目标位置

(13)重复(5)~(12)过程,控制电机位置。

注:驱动器的地址需要先设置,可以通过提供的上位机设置

驱动器地址。由于以上方式在写了目标位置后驱动器会立刻控制电

机运动,而写入地址 2 的控制数据需要一定时间,所以地址 1 和地

址 2 的电机不会同时运动。如果下一次的运行速度不变,可以不必

多次写入电机目标速度。

b:位置模式 控制多个从机同时开始运动

(1)写 设备 1(功能码 0x06 地址 0 Modbus 使能) 1

(2)读 设备1(功能码0x03 地址14 报警代码) (读

到 0 时为运行正常)

(3)写 设备 2(功能码 0x06 地址 0 Modbus 使能) 1

(4)读 设备 2(功能码 0x03 地址 14 报警代码) (读

到 0 时为运行正常)

(5)写 设备 1(功能码 0x06 地址 2 电机目标速度) 2000

(6)写 设备 1(功能码 0x06 地址 3 目标位置缓存) 1000

(7)写 设备 2 (功能码 0x06 地址 2 电机目标速度)2000

(8)写 设备 2 (功能码 0x06 地址 3 目标位置缓存) 1000

(9)写 设备 0(广播)(功能码 0x06 地址 1 使能) 1

(10)读 设备 1(功能码 0x03 地址 12 目标位置低 16 位)

(11)读 设备 1(功能码 0x03 地址 13 目标位置高 16 位)

以上两个寄存器都为 0 时代表已经到了目标位置

(12)读 设备 2(功能码 0x03 地址 12 目标位置低 16 位)

(23)读 设备 2(功能码 0x03 地址 13 目标位置高 16 位)

以上两个寄存器都为 0 时代表已经到了目标位置

(13)重复(5)~(13)过程,控制电机位置。

上位机软件使用说明

本驱动器提供一个上位机软件,用于监测和测试驱动器。可

以通过软件查看和设置驱动器内部参数。

blob.png

如上图所示,软件分为波形显示,电机运行参数等几个部分。

下面介绍一下各个部分的功能和作用。

波形显示:一共有 4 个通道,分别用 4 种颜色表示。颜色和

电机运行参数 内的字体颜、色相同。即:蓝表示电流,绿表示输

出的脉宽,红表示当前转速,黑表示电压。

电机运行参数:表示电机运行的实时数据。

驱动器设置参数:显示驱动器的拨码开关,和方向使能设置。

如果是 modbus 模式,此栏无效。

驱动器运行状态:此栏会显示驱动器的报警状态,如果没有

报警会显示运行正常。

Modbus 控制参数:此栏内的参数是驱动器内部的参数,如果

要修改这些参数,必须先对 modbus 使能写 1。具体的参数含义参考

寄存器说明。

Modbus 读取:此栏可设定驱动器的地址,读取驱动器数据的

周期,和是否读取。

Modbus发送:此栏用于修改驱动器参数,首先选定参数类型,

再设定好参数数据,然后点发送即可。

上位机测试如何开始

1. 连接需要的信号

1. 插上电机动力线和编码器线

2. 驱动器上+VDC 和 GND接上电源,电源根据电机的额定电压来,

电机额定电压 36V 就接 36V.

3 插入附带的 USB 转 485 线在电脑的 485 接口上,另外一端插驱动

器上

2. 安装驱动和上位机软件

1. 安装 USB 线驱动程序,在光盘中,blob.png 。安装好后,插入

附带的 USB 转 485 线在电脑的 485 接口上,另外一端插驱动器上,

然后在电脑中的设备管理器中查看分配的 COM 口号。如下图所示为

COM2

blob.png

2. 安装电脑上位机软件,blob.png

安装好后打开。在驱动

器运行状态中选择刚刚在设备管理器中看到的 COM 口号,这个是

COM2。正常的话可以读到数据。如下图所示:

blob.png

3. 试运行

重新上电,然后在上位机中如操作

选择 modbus 使能 参数数据输入 1 点发送

选择 PU 步数 参数数据输入 4000 点发送

(1000 线编码器,经过内部倍频后有 4000 脉冲一圈)上面发送

4000 电机会转一圈,发送 -4000 发转一圈。 这个是试运行,具体

需要什么控制方式,可以查看说明书。

 常见问题处理

1. 如果脉冲控制端口 DIR 导通方向和我所需要的方向不同怎

么改?

答:可以通过上位机来设置 DIR 的极性,接上上位机后,

modbus 使能写 1 , DIR 极性 写 0. 最后参数保存标志写 1. 重新

上电即可。

2. 上电驱动器不报警,给运行脉冲后驱动器报警,怎么回事?

答:检查接插件是否松动,电机 UVW 和编码器线任何一根断

或顺序交换都会无法正常运行。

3. 怎么通过上位机控制运行

答:连接好电机,驱动器上电,通过提供的 USB 线连接驱动

器和电脑,根据“上位机使用说明”设置好,使得上位机能读取到

数据后。 Modbus 使能 发送 1。然后 PU 步数 发送需要走的距离。


 
高精线性模组 上海生化培养箱 大容量恒温摇床 振动筛网 计价秤 液压剪板机 孵化机 箱式炉
物联网设备 步进电机 除氧器 造纸设备 步进驱动器 深圳机械加盟 带式干燥机 硫酸泵
直流屏 激光打标机 机械论文 中国控制阀网-调节阀 移动式升降机 食品机械网 电机 电子称
酷刻刻字机 中国电动滚筒网 北京时代超群 中国数控机床维修网 超声波裥棉机 步进电机论坛
设为首页  |  加入收藏  |  关于我们  |  站长留言  |  广告服务  |  友情链接申请  |  网站介绍
网站实名:步进电机网 步进电机驱动器网 微特电机网 网站地图 新闻中心
版权所有:北京时代四维科技有限公司 © Copyright By www.zgbjdj.com
京ICP备11042559号-1