采用LS 通信协议的蠕动泵控制系统设计❋
2014-12-31陶金牛李锡文
陶金牛,李锡文
(1.华中科技大学,湖北 武汉 430074;2.空军第一航空学院,河南 信阳 464000)
0 引言
蠕动泵,又称软管泵,按工作原理属于容积泵。工作时,流体位于密封的软管内,滚轮对软管挤压产生吸力[1],可以传输具有腐蚀性和剪切力敏感的流体[2],因此被广泛应用于制药、食品和化工行业。
目前,小流量蠕动泵使用较多,其传输的流体黏性低,流量以mL3/min计,采用直流调速驱动。而传输大传输流量(超过103L/h)、高黏度流体时应采用变频调速驱动的蠕动泵,但目前这种应用还不完善。为了实现某定量加料系统中的自动运行和远程控制,本文针对采用LS变频器的大流量蠕动泵,基于虚拟仪器技术,完成了其控制系统的开发。
1 蠕动泵控制系统设计方案
1.1 蠕动泵控制系统硬件组成
蠕动泵控制系统硬件组成如图1所示。通过基于LS专用通信协议编写的控制软件,实现上位机与蠕动泵之间的数据交换,实时改变转速并获取当前的运行参数。由于采用的是RS485半双工异步(UART)通信,最大可靠通信距离达到700m,因此上位机和变频器能够布置在不同的场所,实现远程操纵。另外,变频器与蠕动泵之间支持最大电缆长度为500m,也能够实现分开放置。
1.2 控制软件原理
上位机控制软件使用LabVIEW进行编写。Lab-VIEW图形化编程语言具有完善的人机交互控件,并具有丰富的函数库和仪器驱动,可以方便地将各厂商的硬件集成到系统中。本软件各功能主要是对串口通信协议的调用,所以,编程的实质是使用LabVIEW中VISA串口通信模块实现LS通信协议的各种功能。
图1 蠕动泵控制系统硬件组成
2 LS协议分析
系统使用LS公司生产的SV-iG5系列变频器,它支持 Modbus-RTU、Modbus-ASCⅡ通信协议和 LS公司开发的串行通信协议LS-BusASCⅡ。Modbus协议的应用比较常见,而LS协议目前主要应用于LS旗下的变频器、PLC等产品中。
2.1 物理层
LS通信协议支持RS-485接口,允许“两线结构”的点对点和点对多的数据传输,LS两线制拓扑结构如图2所示,图2中S+,S-,CM对应着RS485接口的逻辑1、逻辑0和公共地,最多可以支持16台变频器。
2.2 协议原理
LS-BusASCⅡ是一个主/从协议,变频器作为从机,计算机作为主机。在同一时刻只有一个主站和多个从站连接于通信线路中,信息通信总是由主站发起,从站在没有收到来自主站的请求时不发送数据,从站之间不发生通信。
图2 LS两线制拓扑结构
类似于 Modbus-ASCⅡ协议,LS-BusASCⅡ协议中数据以十六进制ASCⅡ码的形式传输[3]。例如,上位机要发送十进制数值“3000”给变频器,则首先要将其转换为十六进制字符串“0BB8”,然后将每个字符转换为十六进制ASCⅡ码“30h42h43h38h”进行传输。上位机接收变频器的数据时,执行相反的过程。
2.3 报文格式
LS-BusASCⅡ协议报文遵守严格的格式和字符长度限制。协议规定了3种基本报文格式:请求、应答回复和拒绝应答回复。同时还规定了4种功能码,分别是“R”,“W”,“X”和“Y”,代表4种基本操作:读取寄存器、写入寄存器、监控注册和监控读取。这4种基本操作的请求、应答回复和拒绝应答回复报文各不相同,具体包含的字节见表1。
表1 LS-BusASCⅡ协议详细报文格式及长度
表1中,Drive No为仪器编号相当于仪器的地址,在报文中占用2个字节,从站编号从01开始,最大为0F,上位机指定发送的对象需要与变频器I/O-46参数中的字符一致;Address为寄存器地址,变频器中不同地址的寄存器对应着不同的功能,改变或读取其中的值,可以改变或获取蠕动泵的运行状态;协议采用了名为“SUM”的求和校验,SUM值是全部有效字节(不带头尾码)的十六进制ASCⅡ码相加后所得数值的低八位,SUM值首先由发送设备计算,然后将其转换为字符串附在报文中,接收设备再次计算,并将计算结果与实际接收到的SUM值进行比较,如果不相等,则报错。
3 程序编写
3.1 程序流程
系统的程序运行界面如图3所示,主要功能有蠕动泵的正转、反转和停止,以及电压、电流、频率的设定与监控。这些功能按触发条件可以分为3类:按钮触发、旋钮触发和无动作触发。
按钮触发包括蠕动泵的正转、反转和停止,这些指令通过点击前面板上的布尔控件触发,不点击不执行,而且执行时要从程序的其他分支跳出。旋钮触发包括频率和转速的设定,这种设定是实时的,改变了旋钮的位置,蠕动泵的转速就随之改变。电压、电流、频率的监控显示功能属于无动作触发一类,而且需要实时更新,为了简化程序,我们把旋钮触发和无动作触发放在同一个程序分支中。主程序流程如图4所示。
图3 程序运行界面
主程序是一个while循环结构,每一次循环都要监测“正转按钮”、“反转按钮”和“停止按钮”的值,并把这些值赋给一个一维数组,然后利用“搜索数组”函数获取按钮状态变量,用这个变量去触发条件结构的分支。例如,当“正转按钮”被按下,“搜索数组”函数输出的值就为0,程序就执行值为0的条件分支,若无按钮按下,“搜索数组”函数的值为-1。
3.2 程序结构
支持模块化编程是LabVIEW开发环境的一个优点,模块化使得程序更加合理,层次也更加分明。整个程序的VI结构如图5所示。
子程序“正转指令”的程序框图如图6所示,需要说明的是,头码和尾码并不存在于LabVIEW默认的ASCⅡ编码表中,因此,在子程序中直接用十六进制字符串常量05h和06h作为输入。其他命令字符只需要按照表1中所列协议格式编写程序即可生成。
图4 主程序流程图
4 结语
本文分析总结了LS通信协议的规则和原理,在编程中采用了将LS协议字符串生成与串口操作分离的子程序结构,这种结构可以减少串口读写次数,使主程序的结构更加灵活,调试也更方便。所构建的蠕动泵控制程序,实现了对蠕动泵的远程控制和监控,稳定性和实时性较好,已在某定量加料系统中投入了使用。
图5 主程序VI结构
图6 正转指令子VI
[1] 张万成.蠕动泵及其应用[J].化工自动化及仪表,1986(6):69-71.
[2] 刘显军.蠕动泵的结构原理及其应用[J].流体机械,1998(12):38-40.
[3] 机械工业仪器仪表综合技术经济研究所.GB/T 19582.1—2008基于Modbus协议的工业自动化网络规范[S].北京:中国标准出版社,2008:1-48.