前文《使用USB转RS485+Stepper Suite控制步进电机转动》中使用的上位机软件为鸣志的Stepper Suite。在本文中,使用Python程序代替上位机软件,使用PyCharm运行Python程序,通过交互式输入加减速、转速、时间等参数,控制步进电机正反转。本例所用硬件及连接形式同前一篇《使用USB转RS485+Stepper Suite控制步进电机转动》。
准备工作:
1、下载《Modbus用户手册》;
2、了解Modbus RTU配置;
3、了解Modbus SCL指令;
4、了解Modbus寄存器的地址及值。
Part-1 步进电机控制系统组成
借用前文的图。系统硬件组成包括:AC电源(220V)、计算机、步进电机(42H247-1684A)、USB转RS485串口、AC转DC电源、驱动器。每个硬件的接口、编号见图中端口名称。

上图中各硬件端口间的连线如下ibd图所示。

Part-2 认识常用SCL命令、寄存器地址及其值
《Host-Command-Reference-MOONS》手册中,可以查看SCL命令,部分命令如下图所示。

鸣志STF系列驱动器的Modbus寄存器表如下图所示,注意下图中描述一列括号内为SCL命令名,与上图表格中命令一致。

寄存器地址转换为16进制的方法如下图所示。注意下图中,速度、加速度在寄存器内设定的单位。

电机转速要设为10rps,则寄存器参数要设置为2400,即10×240=2400。
电机加减速要设为5rps/s,则寄存器参数要设置为30,即5×6=30。
Part 3 Python程序
只需1个Python文件即可,使用PyCharm运行,交互式输入加速度、减速度、速度、时间,步进电机即可按照输入参数转动。
下图为程序头部。

注意:
第16行端口号可查询计算机设备管理器。Win+X,设备管理器,端口(COM 和 LPT)下查看USB转RS485对应的串口号。
第18行,设置波特率,与驱动器保持一致。
第25~31行,常用寄存器地址。
下图定义电机的使能、失能方法。

下图定义加速、减速、速度设置方法。
★★★特别提醒★★★:第89行,有符号数据转为无符号16进制数字,实现电机正转、反转。

下图定义电机启动点动、停止点动的方法,以及读取状态。

下图定义主方法,电机使能、读取状态、设置运动参数、启动、连续运动制定时间、停止运动、电机失能、关闭通信客户端。

运行程序,输入加速度(rps/s)、减速度(rps/s)、速度(rps)、时间(s)逗号隔开,回车,电机转动。若输入任意字符串(小于7个字符),回车退出。
