张晓昶,许 金,胡鸿志,3,管 芳,3
(1.桂林电子科技大学电子工程与自动化学院,广西桂林 541004; 2.桂林电子科技大学教学实践部,广西桂林 541004;3.广西自动检测技术与仪器重点实验室,广西桂林 541004)
蠕动泵是一种通过泵头挤压胶管输送液体的软管泵,具有无污染的特点,被广泛应用于生化分析、医疗救护、水质监测等领域[1]。蠕动泵主要由步进电机、连接轴、压辊子、进样软管、软管卡紧装置组成,在步进电机的带动下压辊子挤压软管内液体流动[2]。
在流动注射分析系统(FIA)中需要精确控制样品和化学试剂的流量,常使用蠕动泵作动力装置,但蠕动泵的构成原理使其运动时易产生脉动,影响系统测量精度[3]。在以分光光度计为检测手段的FIA中,不同泵速的改变常会引入Schlieren效应,形成“假峰”,干扰测定[4]。另外,在野外现场、船载或原位时,工作环境比较复杂,以RS232为通信接口的传统蠕动泵常会受到环境的干扰,导致系统不稳定。
本文主要针对蠕动泵存在的上述问题,提出了基于CANopen的蠕动泵软硬件解决方案。以嵌入式ARM处理器和DRV8711步进电机控制器为核心设计蠕动泵硬件电路驱动系统,优化了细分驱动参数和电流衰减模式,实现蠕动泵平滑稳定的运动。系统采用梯形加减速运动曲线,研究了加减速过程,实现不同泵速间平缓切换,有效抑制了Schlieren效应。软件方案以RT-Thread实时操作系统为基础,采用CANopen构建CAN总线应用层协议,实现了通信子协议CiA 301、驱动和运动控制子协议CiA 402,完成了标准运动控制子设备的通信设计。
本方案基于DRV8711步进电机控制器,以STM32F103C8T6嵌入式微控制器为核心,使用步进电机作为执行机构设计蠕动泵驱动系统,如图1所示。系统使用STM32F103C8T6内部集成的bxCAN控制器,结合CAN总线收发器芯片PCA82C250,构建CAN总线控制网络。为防止共模电压超过CAN驱动器的接收电压时损坏芯片和设备,设计了数字隔离电路,对主控制器电路进行电气隔离保护。蠕动泵机械执行选用双极性步进电机,驱动电路由集成电路DRV8711和N沟道MOSFET搭建的功率H全桥构成,DRV8711和控制器之间使用SPI协议实现通信。
图1 系统结构框图
为实现蠕动泵转速和位置的精密控制,以细分控制理论为基础,通过斩波恒流、电流衰减模式与加减速运动曲线等技术,精确控制步进电机。
DRV8711内部集成微步分度器,能实现最高256细分,通过斩波恒流的方式将两相绕组电流细分成相位相差90°的正弦波电流。斩波电流以比较器为基础,实时硬件反馈电压VISENSE与内部细分表参考电压进行比较,由此控制H桥导通状态,实现斩波恒流。VISENSE由电流检测电阻RISENSE上的电压与电流检测放大器的增益ISGAIN相乘得到。参考电压通过正弦查找表的输出SINDAC乘以TORQUE寄存器中低8位的值得到,计算公式见式(1),其中SINDAC最大输出电压为2.75 V。
(1)
在电流斩波期间H桥使能,电机绕组电流根据如图2中①所示方向开始上升,当电流达到斩波阈值后,H桥切换工作状态进行电流衰减,防止角度过冲。图2中②、③项分别为快速衰减模式和慢衰减模式下的电流方向,快速衰减模式下绕组电流通过两个二极管和电源形成续流回路,电流迅速衰减;慢衰减模式下绕组电流通过下桥臂续流,电流缓慢衰减。慢衰减方式由于电流变化缓慢可以得到较小的电流纹波,然而当步进电机高速运行时,慢衰减不能及时降低绕组电流,无法保证电流的精确调节[5];使用快速衰减模式可以克服慢衰减的劣势,但易造成较大的电流纹波。本文电流衰减使用自动混合衰减模式,电流高于阈值时立即进入快速衰减模式,更快的响应电流的变化,随后进入慢衰减模式,使平均电流准确的跟踪峰值电流,降低了单独使用快速衰减模式产生的电流纹波。
图2 电流衰减模式
常见的电机加减速控制方案有梯形加减速、指数型加减速和S型加减速,其中梯形加减速具有加减速快的特点。蠕动泵切换泵速时需要快速响应速度的变化,因此本系统采用梯形加减速方案控制蠕动泵转速。梯形加减速运动曲线在步进电机加速过程中,加速度保持恒定不变,速度根据加速度线性增加到目标速度,减速过程与此相同[6]。运动曲线如图3所示,运动过程包括了恒加速段T1、均速段T2和恒减速段T3,Vs、Ve分别为起止速度,Vc为目标速度,L为目标位置,a为加速度。
图3 梯形加减速运动曲线
本系统蠕动泵设有速度模式和位置模式两种运行模式,速度模式下蠕动泵接收到停止指令后根据运动曲线减速至停止状态;位置模式下步进电机旋转至目标位置L,实现蠕动泵定量功能,梯形加减速曲线减速点的准确性决定了蠕动泵定量的精度,因此需精确计算出减速点L1+L2和减速点时间T1+T2。
根据梯形加减速算法推导公式,得速度函数:
(2)
由速度位移公式可得位移函数:
(3)
梯形加减速曲线中Vs=Ve,且加速段与减速段所用时间相同T1=T3,代入式(2)、式(3)进一步化简得T1、T2、T3:
(4)
(5)
加速段与减速段的位移为
(6)
均速段的位移为
(7)
本系统采用CAN总线作为通信接口,移植RT-Thread实时操作系统,嵌入CANopen协议开发通信应用层软件,将蠕动泵设计为标准的CANopen子设备。利用操作系统的任务调度和管理,将复杂的功能封装成各个任务,实现系统的稳定运行。通信方案总体架构如图4所示,包含通信子协议CiA 301、驱动和运动控制子协议CiA 402两部分。CiA 301核心是对象字典(OD)及多种通信对象,其中通信对象包括网络管理(NMT)、过程数据对象(PDO)、服务数据对象(SDO)和特殊功能对象[7];CiA 402定义了驱动器状态机和蠕动泵的两种运行模式。通过建立蠕动泵对象字典完成通信参数和运行参数的配置,创建NMT服务管理节点状态,设计PDO实现运行参数的实时传输。
图4 通信方案总体架构
对象字典是所有数据结构的集合,CANopen通过对象字典对设备功能进行描述。系统设计蠕动泵运行状态的所有参数对象,每个对象由16位索引值和8位子索引值来识别,通过索引定位和子索引确定对象的方法实现蠕动泵对象字典的访问。蠕动泵对象字典中索引和子索引使用结构体定义来创建,根据subindex类型创建对象字典中每个对象条目,利用indextable类型以静态数组的形式构建整个对象字典。
对象字典中对象索引的结构体定义如下:
typedefstructtd_indextable
{
subindex* Subindex;
UNS8 SubCount;
UNS16 index;
}indextable;
对象索引结构体成员Subindex为指向对象子索引的指针;SubCount为对象子索引数目;index为对象的索引值。对象子索引的结构体定义如下:
typedef struct td_subindex
{
UNS8 AccessType;
UNS8 DataType;
UNS32 size;
Void*Object;
}subindex;
对象子索引结构体成员AccessType为对象访问权限,包括只读(RO)、只写(WO)和读写(RW);DataType为对象数据类型;size为对象数据大小;Object为指向对象数据的指针。
对象字典是通信程序与应用程序之间的接口,通信程序设计了数据交换(PDO、SDO)、报文监控(心跳、启动报文)和状态控制功能。通过NMT服务实现蠕动泵网络节点通信状态的转换,过程如图5所示。蠕动泵上电后对CAN底层驱动进行初始化,初始化完成后节点发送CAN标识符(CAN-ID)为700H+Node-ID(节点号)的上线报文(Boot-up),提示主站该节点已加入通信网络,并自动进入预操作状态。其它状态间的转换根据转换条件,由主站NMT报文触发。NMT报文CAN-ID为000H,数据长度为两字节,Byte0为图5中的CS命令符、Byte1为Node-ID。为便于主站确认节点的状态,蠕动泵根据对象字典1017H的参数定义发送CAN-ID为700H+Node-ID的心跳报文。
1—上电或复位;2—初始化后自动转换;3、6—CS为01H进入操作状态;4、7—CS为80H进入预操作状态;5、8—CS为02H进入停止状态;9、10、11—CS为81H复位应用层;12、13、14—CS为82H复位节点通信。图5 蠕动泵状态转换框图
在预操作状态下,通过SDO设置蠕动泵通信参数和配置信息。进入操作状态后,利用PDO通信完成蠕动泵运行参数的实时交互。如表1所示,设计蠕动泵对象字典中PDO通信参数,位置模式下根据运行速度、加速度和减速度3个参数,步进电机按梯形加减速曲线运行至目标位置;速度模式下根据加减速参数,蠕动泵按梯形加减速曲线运行在恒定的目标速度。RPDO1由主站发送的同步报文触发,确认蠕动泵操作模式,通过控制字切换运行状态;RPDO2由不同的操作模式确定,当目标位置或目标速度改变时触发RPDO2;RPDO3用来传输梯形加减速曲线的加速度值和减速度值;蠕动泵运行状态改变后触发TPDO1,向主站反馈当前状态;TPDO2由同步报文触发,实时反馈蠕动泵当前位置和速度。
表1 蠕动泵PDO参数
测试方法:使用CAN总线分析仪CANScope对蠕动泵进行CANopen通信测试,通信波特率设置为1 Mbps,蠕动泵设备节点ID为2,心跳周期为3 s。
测试结果:如图6所示,蠕动泵上电后自动发送Boot-up报文(帧数据:00 H),启动心跳报文上传节点状态,利用NMT服务发送节点启动报文(帧数据:01 02H)控制节点状态切换,节点由预操作状态(帧数据:7F H)成功转换为操作状态(帧数据:05H),满足CANopen通信要求,表明蠕动泵是一个标准CANopen子设备。
图6 CANScope解析报文
测试方法:使用兰格BT100-1L蠕动泵与本文设计的蠕动泵进行比对实验,分别在不同泵速条件下,采用分光光度法对罗丹明溶液的吸光度进行一组实验测量,计算每一泵速条件下吸光度的相对标准偏差(RSD),以此反应该泵速条件下蠕动泵的脉动情况。
测试结果:RSD与转速的关系曲线如图7所示,由图中数据可以看出BT100-1L蠕动泵在低转速时脉动较大,高转速时脉动减小;本文设计的蠕动泵脉动整体较小且不同转速条件下变化较平稳。
图7 RSD与蠕动泵转速关系曲线
测试方法:使用蠕动泵将间甲酚紫溶液与氢氧化钠溶液泵送至混合三通,经过化学反应后使用分光光度法测量吸光度。在实验过程中人为改变泵速产生Schlieren效应,验证在相同条件下,加减速曲线对Schlieren效应的影响。
测试结果:设置蠕动泵转速在30 rpm~15 rpm~30 rpm和15 rpm~7.5 rpm~15 rpm条件下,不使用加减速模式直接切换泵速,分别得到如图8(a)、(c)所示吸光度变化波形,由于Schlieren效应,在速度突变点形成明显“假峰”。蠕动泵根据本文设计的梯形加减速方案运行时,在相同泵速变换条件下进行实验,分别得如图8(b)、(d)所示波形。对比梯形加减速方案和直接变换泵速所得的波形,可知梯形加减速方案在高速、低速间变换泵速均可有效抑制“假峰”的形成。
(a)
(b)
(c)
(d)
针对分析仪器蠕动泵存在的问题,本文设计了一种基于CANopen的高精度蠕动泵系统。系统设计为标准CANopen运动控制子设备,满足通信子协议CiA 301、驱动和运动控制子协议CiA 402的通信要求,实现位置模式和速度模式两种运行模式。硬件采用ARM微处理器结合DRV8711步进电机控制器的方案,具有结构简单、控制方便的特点,最高可设置256细分并支持电流自动混合衰减模式,实现了蠕动泵的平稳运行,降低了蠕动泵的脉动。实践表明,所设计的梯形加减速方案可有效抑制Schlieren效应,提高分析精度,具有广泛的应用前景。