师锦航 ,崔 健
(陕西国防工业职业技术学院,陕西 西安 710300)
在物流仓储单元控制系统中,堆垛机是主要的运输设备,它可以对仓储单元的货物进行取出和存放。在本项目中堆垛机由三台伺服电机来驱动,可以实现堆垛机在空间内的前后、升降和伸缩动作[1]。西门子S7-1200 系列PLC 除了通过高速脉冲输出口控制三台电机运行以外,也要通过RS-485 串行通信接口实时读取电机的转速数据,系统构成如图1所示。
图1 系统构成
S7-1200 PLC 与三台伺服驱动器之间采用了Modbus RTU 协议进行数据传输。Modbus RTU 协议是一种开放的串行通信协议,在农业、工业等控制领域应用较为广泛。该协议一般采用RS-232 或RS-485 串行接口进行数据传输[2]。若采用RS-485 串行接口,可以实现一台Modbus主站设备和多台Modbus从站设备之间的通信,从而形成串行通信网络。在本项目应用实例中,一台西门子S7-1200 系列PLC 作为Modbus RTU 主站,三台伺服驱动器作为从站,PLC实时读取伺服驱动器的转速数据[3]。
在本控制系统中采用了三菱公司的JE 系列伺服驱动器,该驱动器的速度频率响应为2.0 kHz,具有“一键式调谐”功能[4]。JE 系列伺服驱动器支持Modbus RTU 串行通信,主站PLC 可轻易获取驱动器的状态数据[5]。伺服驱动器存储转速数据的Modbus地址如表1 所示,需要注意的是,在使用西门子PLC编程时该地址需要加上偏移量400001 进行指定,即实际的Modbus地址为411011[6]。
表1 Modbus读取地址
JE 系列伺服驱动器进行Modbus 通信时,需要设置的参数如表2所示。
表2 伺服驱动器参数设置
S7-1200 PLC 是西门子公司推出的一款模块化、紧凑型PLC,S7-1200 集成了一个PROFINET 通信接口,通过扩展模块也可实现Modbus 串行通信[7]。在使用Modbus RTU 通信协议读取从站设备数据时,需要用到MB_COMM_LOAD 和MB_MASTER 指令[8],如图2所示。
图2 MB_COMM_LOAD与MB_MASTER指令
1)MB_COMM_LOAD 指令。MB_COMM_LOAD 指令用于配置串口参数,以进行Modbus通信,指令各参数含义如表3所示。
表3 MB_COMM_LOAD指令各参数含义
2)MB_MASTER 指令。MB_MASTER 指令用于使串口作为主站访问一个或多个从站的数据,指令各参数含义如表4所示。
表4 MB_MASTER 指令各参数含义
轮询控制策略的基本原理:PLC 依次循环执行多条通信指令,且保证同一时刻只有一条指令在执行,并能根据逻辑条件进行轮询跳转。采用轮询控制策略的流程示例如图3 所示,该示例包含了n条读写指令MB_MASTER,每条MB_MASTER 指令读写一台从站设备,这n条指令将依次循环执行,运行过程如下。
图3 采用轮询策略的程序控制流程
1)PLC 启动时M1.0 接通一个扫描周期,使“初始步标志位”置位,指令MB_COMM_LOAD 被执行一次,配置串口参数,使用MB_COMM_LOAD 的DONE完成信号置位“步1标志位”。
2)“步1 标志位”置位后执行MB_MASTER 指令1,读写第1 个从站寄存器,执行完成后使用MB_MASTER指令1的DONE完成信号置位“步2标志位”。
3)“步2 标志位”置位后程序又执行M B_MASTER 指令2,读写第2 个从站寄存器,完成后使用MB_MASTER 指令2 的DONE 信号置位下一步的标志位。直到MB_MASTER 指令n被执行后,使用MB_MASTER 指令n的DONE 信号置位“步1 标志位”,再次执行MB_MASTER指令1,如此循环运行。
在本项目中仓储单元的堆垛机通信程序设计采用了轮询控制策略,在图4 所示的程序段1 中M1.0为PLC 运行后接通一个扫描周期的系统存储器,利用该地址可以进行程序初始化,例如本程序中置位M2.0,M2.0 置位后开始执行MB_COMM_LOAD 指令,进行串行通信端口组态。在程序段2 中,当MB_COMM_LOAD 指令执行完成后,其DONE 参数输出信号使M2.1 接通。在程序段3 中,M2.1 接通后置位M2.2、复位M2.0,轮询开始,首先执行第一条MB_MASTER指令。
图4 通信程序1
如图5 所示,在程序段4 中执行第一条M B_MASTER 指令,读取堆垛机中升降电机的转速数据,站地址为1,若指令执行完成则其DONE 参数输出信号使位地址M2.3 接通。在程序段5 中,M2.3 接通后置位M2.4、复位M2.2,开始轮询第二条MB_MASTER指令。
图5 通信程序2
如图6 所示,在程序段6 中执行第二条M B_MASTER 指令,读取堆垛机中前后电机的转速数据,站地址为2,读取完成后其DONE 参数输出信号使M2.5 接通。在程序段7 中,M2.5 接通后置位M2.6、复位M2.4,开始执行第三条MB_MASTER指令。
图6 通信程序3
如图7 所示,在程序段8 中执行第三条M B_MASTER 指令,读取堆垛机中伸缩电机的转速数据,站地址为3,读取完成后其DONE 参数输出信号使M2.7 接通。在程序段9 中,M2.7 接通后置位M2.2、复位M2.6,程序则返回第一条MB_MASTER 指令循环执行。
图7 通信程序4
现阶段我国仓储领域的发展已经推动了自动化、智能化仓库的发展进程。工业控制技术的有效融合也为新经济时代背景下的企业仓储控制提供有力的技术保障,仓储智能化是工业智能制造技术在仓储控制系统中的主要应用[9]。智能仓储控制系统由多种模块组建而成,主要包括网络通信模块、PLC 模块、伺服运动控制模块以及检测识别模块等[10]。在本项目的农产品物流仓储单元控制系统中,通过使用轮询控制策略编写的Modbus RTU 通信程序实现了PLC与多台伺服驱动器之间的实时数据传输,一台S7-1200 系列PLC 作为Modbus 主站,三台伺服驱动器作为Modbus 从站,PLC 可稳定地读取每台伺服电机的转速数据。此外,轮询控制策略也可应用于其他通信控制场景,如PLC 与变频器之间的通信控制、机器人与视觉检测设备之间的通信控制等。总之,凡是涉及多台设备之间的串行通信,都可采用轮询策略编写程序,不仅可以提高程序运行的稳定性、可靠性,还可以提高数据传输的效率,为实现机械装备的智能化、信息化奠定了基础。