基于modbus协议的自动加药机系统开发
2015-09-13刘亚梅
刘亚梅,刘 静
(长春工业大学 机电工程学院,长春 130012)
0 引言
在选矿厂浮选系统中,添加药剂作为选别有用矿物其中重要的一个手段,起着重要的作用。合理的加药机制是提高选矿生产能力的重要途径之一[1]。传统的加药方式有两种,一种是人工手动调节开关阀,以药剂自流的形式加药,此种加药方式需要高药位平台,并且加药量不准确,控制室不能实时监控,很难按照确定的最佳药剂配比添加药剂,各种药剂的添加不精确,使浮选产能不能达到最优化。另一种加药方式是利用PLC控制电磁阀调节加药量,电磁阀加药方式系统结构图如图1所示。
图1 电磁阀式加药机原理
在图1中,利用PLC作为控制核心,触摸屏作为加药机的人机接口,输入加药参数,调节加药量。PLC通过自带的I/O接口或扩展的I/O模块控制电磁阀的打开或者断开,实现自动加药。电磁阀式加药机的硬件搭建简单,程序编写较容易,通过扩展的I/O模块可以控制上百个甚至上千个加药点,扩展方式简单。但是电磁阀式加药机的缺点是不能实现连续加药,调节加药量是通过打开和关闭电磁阀的频率实现的。当加药量需求大时,电磁阀打开的时间长,甚至是一直在打开状态;当加药量需求小时,电磁阀打开的时间短,关闭的时间长。电磁阀加药方式无法实现连续性加药,不能使药剂与矿浆均匀溶合。虽然PLC作为工业级控制器在过程控制领域都具有较成熟的应用,但PLC的成本较高,及其附带的I/O扩展模块较贵,对于加药机系统来说,成本较高。因此,本位设计了的基于蠕动泵的自动加药机系统。
因此,本文设计了一种性价比较高的自动加药机系统。自动加药机系统基于STM32芯片编写的modbus协议,通过串口发送读写指令,利用max485芯片进行多地址信号传输,标准modbus协议中定义的从站地址是一个字节,因此一个串口最多可以控制从站数量为255,即255个加药点,通过扩展串口的方式能够满足大型甚至超大型选厂的加药点使用。
1 系统组成与工作原理
自动加药机系统选择触摸屏作为人机交互接口, STM32芯片作为核心控制器,利用串口发送指令至C8051单片机,C8051单片机控制步进电机驱动芯片THB6064,THB6064芯片调节步进电机的启动或转速,实现药剂量调节。自动加药机系统原理图如图2所示。
图2 自动加药机系统原理图
1.1 主控制单元设计
自动加药机的主控制单元选用内核是32位的Cortex™-M3 STM32F103ZET6 CPU,最高工作频率72MHz,单指令运行速度可达14ns[2]。STM32F103ZET6芯片内部具有高达64k字节的SRAM,移植uc/os-II操作系统,其生成的hex文件为8k,能够允许下载大容量的控制程序。
STM32F103ZET6芯片具有13个通信接口,能够将串口信号的接口映射至芯片中普通的输入输出接口,STM32F103ZET6芯片一共具有114个普通的输入输出接口。
STM32F103ZET6芯片内部具有温度传感器,对于系统工作环境及工作时芯片自热进行检测,温度允许范围在-40℃至+105℃,同时,供电电压允许范围为2.0V~3.6V,满足超低功耗的设计要求,能够在常规选矿厂条件下使用。
1.2 执行单元设计
自动加药机的执行单元选择的是基于步进电机驱动的蠕动泵。为了使步进电机的控制参数能与主控制芯片通信,设计了C8051系列单片机作为步进电机的通信单元,在C8051单片机中编写modbus RTU从站程序[3],用于接收主控制器STM32发送的指令。每个步进电机都有一个独立的地址,STM32芯片的1个串口可以控制255个步进电机的启动、停止、转速等参数,从而实现了蠕动泵自动加药可调。
C8051F410系列单片机器件是完全集成的低功耗混合信号片上系统型MCU,具有高速、流水线结构的8051兼容的微控制器核(可达50MIPS),具有12位200ksps的ADC转换接口,无需外接模数转换电路。C8051F410单片机具有24个I/O接口,这24个I/O接口都可以映射到模数转换接口中,即,C8051F410系列单片机最多可以处理24路ADC转换。模拟量采集接口能方便的采集选矿浮选车间的传感器信号。除此之外,C8051F410系列单片机还具有硬件实现的SMBus/I2C、增强型UART和增强型SPI串行接口,4个通用的16位定时器。
THB6064AH是一种大功率、高细分两相混合式步进电机驱动芯片[4]。在THB6064AH芯片内部集成了环形脉冲分配器,因此,无需使用软件进行脉冲分配。在使能开启的情况下,控制芯片只需要将控制信号以脉冲的方式发送至THB6064AH芯片的CLK引脚中,THB6064AH芯片就能够驱动步进电机转动,转动的快慢由发送的脉冲的占空比决定。
2 硬件设计
自动加药机系统的电路设计遵循工业级、抗干扰的原则,利用Atmel Design软件绘制电路图,并利用ISIS 7 Professional 软件对电路进行仿真,STM32电路图如图3所示。
图3 STM32最小系统电路设计原理图
在STM32最小系统电路图中,利用串口Uart1作为与触摸屏的通信接口,波特率为115200bps。利用串口Uart2作为控制蠕动泵的指令下发接口,利用max485芯片将RS232通信标准转换为RS485标准,对多蠕动泵进行寻址。RS485A、RS485B两个接线端子通过普通双绞线进行与每个从站地址相连,可以组成星形连接或链形连接。从站的电路图如图4所示。
图4 执行单元电路设计原理图
C8051芯片利用Uart1接收STM32发送的指令,利用P2口控制步进电机的驱动芯片THB6064,通过调节M1、M2、M3的高低电平,可以设置8种分频,从而调节了步进电机的转速,结合CLK信号的占空比调节,可以使步进电机实现无级调速。
3 软件设计
在ARM芯片中移植uC/OS-Ⅱ操作系统,uC/OS-Ⅱ操作系统建立两个任务,其中一个任务是实时的检测触摸屏的接口指令并向触摸屏实时发送加药点数及加药流量;另一个任务是实时向从站发送控制指令,实现了实时多任务运行。
uC/OS-II操作系统是开源嵌入式OS,内核简单清晰,最多可管理64个任务,任务的优先级必须是不同的,每个任务的执行时间具有可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少[6]。uC/OS-II操作系统的关键函数如下所示:
主函数:
int main(void)
{
BSP_Init();//时钟初始化、硬件初始化函数
OSInit();//uC/OS-II操作系统初始化函数
OSTaskCreate(startup_task,(void
*)0,&startup_task_stk[STARTUP_TASK_STK_SIZE-1],STARTUP_TASK_PRIO);
OSStart();//创建第一个任务(起始函数)
return 0;//返回值
}
主函数的作用是调用时钟初始化函数、硬件初始化函数、uC/OS-II操作系统初始化函数及创建第一个任务。主函数只是一个入口函数,一般情况只建立一个起始函数,多任务时,在起始函数中再进行创建。
起始函数:
static void startup_task(void *p_arg)
{
OSTaskCreate(touch_task,0,& touch _task_stk[TOUCH _TASK_STK_SIZE-1], TOUCH _TASK_PRIO);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_Configuration();
/*模式 地址 端口 波特率 校验位*/
eMBInit( MB_RTU, 0, 0, 9600, MB_PAR_NONE);
eMBEnable( ); /* 使能Modbus协议栈*/
while(1 )
{
( void )eMBPoll( );
}
}
在起始函数中新建立一个touch_task任务用于触摸屏通信检测,同时构建一个while()函数用于modbus驱动函数接收数据和发送指令。eMBInit(MB_RTU, 0, 0, 9600, MB_PAR_NONE);函数用于构造主站和从站,并确定modbus传输模式。
触摸屏选择的是西门子MP277系列触摸屏,是Windows CE系统,支持WinCC、C++、VB等语言的开发。本文自动加药机的触摸屏采用VB编写,控制界面如图5所示。
图5 触摸屏控制界面
图5为VB编写的触摸屏控制界面,功能包含加药流量设置、加药方式设置、历史计量、打印报表及报警显示等功能,画面清晰直观,调节效果较好。
4 报表查询
触摸屏与STM32之间的信号传输是基于RS232硬件,传输距离小于15米。STM32作为modbus主站与从站的传输距离在1200米之内。因此根据选厂要求,将触摸屏与STM32一起放置在控制室内,方便值班人员巡视,modbus从站放置在现场。同时,触摸屏放置在控制室内,可以方便的与打印机通信,将自动加药机的历史记录生成水晶报表打印,如图6所示。
图6 自动加药机生成报表查询
利用化学计量装置对自动加药机的流量进行检测,由于自动加药机刚开始运行时,输药管为空,需要稳定运行1分钟后进行测量,检测结果表明流量控制误差error<0.01ml/min,系统响应时间t<0.5s,系统控制精度高,响应速度快,满足浮选车间使用要求。
5 结论
基于STM32芯片研发的自动加药机系统改变了传统的手动阀门调节的加药方式,同时降低了以PLC为控制核心的加药机成本,为选矿厂浮选车间节省了能源,自动加药机系统控制精度高,响应速度快,满足浮选车间使用要求,提高了浮选效率。同时,系统还具有故障自诊断功能,利用步进电机的工作电流反馈作为检测蠕动泵是否正常工作的标准,形成闭环控制,提高了系统可靠性,保证了选矿厂浮选车间浮选加药能够长期稳定运行。
[1] 张超.基于PLC模糊控制的煤泥水自动加药系统的研究[D].安徽理工大学.2008.
[2] STM3210E-EVALfirmware,03/2008,http://www.st.com.
[3] 王晓忠,时振伟,王启宏.MODBUSRTU通讯协议在STM32F103上的实现[J].机电信息.2010.(36):152-153.
[4] 衡蜓.基于C8051F040单片机的步进电机驱动控制系统设计[D].太原科技大学.2011.
[5] 田振东.基于Modbus协议的矿山供水系统设计[J].机械管理开发.2014.(4):12-14.
[6] 任哲,潘树林,房红征.嵌入式操作系统基础μC/OS-II和Linux[M].北京:北京航空航天大学出版社,2006.