引言
印花机俗称万能打印机,可用于塑料、金属木制品等材料表面打印专业的影像,在当今社会中有较高的市场价值。印花机的工作原理主要是通过操作命令控制辊筒和皮带电机的转动。皮带电机转动时带动需要印刷的物体(俗称“砖块”)的运动,辊筒则在砖块的上方印刷图案[1]。
目前,印花机控制电路系统多采用单片机实现,系统功能单一、稳定性差,同时缺少直观的数据显示和命令操作界面,因此在生产中给操作人员带来极大的不便,容易发生人为的操作失误,造成不可弥补的损失。
针对当前印花机控制电路系统的缺陷,本文提出一种基于上下位机模式的可视化印花机控制方案,结合嵌入式技术和网络通信技术,通过远端图形界面的操作,可实现对多台印花机电机机组的控制与维护。该方案不仅提高了印花机系统的可靠性以及操作的简易性和直观性,而且统一了生产车间印花机组的管理和规划,有利于系统的进一步扩展与升级,实现工业生产的合理化、安全化和高效化,对大型工业电机控制系统有着重要的意义和应用价值。
1 系统设计方案
在本文设计方案中,根据功能需求可将系统划分为两部分:控制台和电机机组控制模块,如图1所示。
图1 可视化印花机控制系统总体框架图
(1) 控制台
控制台是印花机系统的控制中心,用于响应人机交互指令,并对下位机反馈的数据进行分析和处理。控制台采用图形界面库Qt[2]设计人机交互图形界面。Qt是一个跨平台的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。由于Qt具有优良的跨平台特性,因此本系统的控制台人机交互界面可运行在PC电脑、平板电脑、智能手机或其他嵌入式设备上,适用范围广泛。
(2) 电机机组控制模块
电机机组控制模块主要负责控制电机的运行与监控,是印花机控制系统的核心部分。该模块以恩智浦公司的LPC11C14处理器为核心,通过伺服电机驱动器控制辊筒和皮带电机的转动,实现砖块印花功能。模块采用嵌入式实时操作系统RTThread进行任务调度,用于执行上位机操控命令和监控电机的运行状态。RTThread是一个由国内开发人员主创的开源实时操作系统,具有高度可裁剪性,支持全抢占优先级调度和时间片轮转调度。该系统内核简洁、高效、稳定,除基本内核外,该系统还包括许多嵌入式软件组件[3],可为印花机控制系统提供高效的任务调度,大大增强系统的实时性和可靠性。
控制台和印花电机机组控制模块之间以CAN总线方式连接成直线型(或者接为环形)。CAN总线的通信距离长、速度快,是一种价格低廉、适用于多种工业环境下进行通信的现场总线[4],可对印花机机组控制模块进行多级级联,有利于电机机组的扩展与升级。
2 系统工作状态建模
系统采用有限状态机的设计思想对印花机的运行状态进行建模,表示出印花机系统各个工作状态以及在这些状态之间的转移和动作等行为。印花机各状态的切换模型图如图2所示。
图2 印花机各状态切换模型图
当电机控制模块接收到来自控制台的启动命令时,开启皮带电机转动,从而带动砖块运动。
当模块接收到印花命令时,切换至“开始印花”工作状态,并根据印花方式启动辊筒电机。在印花机控制系统中,印花方式分为随机印花和对位印花。随机印花的工作方式为辊筒连续转动,砖块的花纹随机印刷。对位印花的工作方式为当检测砖块运行到固定位置时,再启动辊筒对砖块进行印刷,因此砖块的花纹是固定的。
当模块接收到停止印花命令时,停止运行辊筒电机。
当模块接收到停止命令时,停止运行皮带电机,系统进入空闲状态。
3 电机机组控制模块设计
3.1 硬件组成
在电机机组控制模块的硬件设计中,采用了以LPC11C14微控制器为核心的开发平台作为印花机电机控制。LPC11C14微控制器是恩智浦半导体(NXP)公司推出的LPC1100系列微控制器中的一款低功耗、高性能、针对控制局域网(CAN)2.0B标准研制的微控制器[56]。该微控制器基于ARM CortexM0架构,最高主频能达到50 MHz,可以满足工业和嵌入式网络应用需求[6]。同时,在该电路板上还接入了LM75A数字温度传感器、蜂鸣器、转速传感器、位置传感器、角度传感器等外接设备,用于采集电机工作温度、转速、位置、角度等数据并进行分析。同时,在板上还有伺服电机驱动电路,用于驱动伺服电机的转动。硬件结构图如图3所示。
图3 印花机机组控制模块硬件结构图
3.2 软件设计
电机机组控制模块主要负责控制电机的运行与监控,是印花机控制系统的核心部分。它一方面通过接收上位机传输过来的命令对伺服电机进行控制,同时通过分析自身采集的传感器数据进行定位校准,确保砖块的准确印花;另一方面通过LM75A温度传感器对整个控制模块进行实时温度监控,并反馈到上位机,若模块的温度超过界定值,蜂鸣器就会报警,并停止步进机工作,从而确保该模块正常工作。
系统引入了RTThread嵌入式实时操作系统进行电机机组控制模块的软件设计,目的是让程序的执行以任务的方式运行,可以有效地解决多任务并行问题,在任务的切换过程中减少延时等待,增强系统实时性和鲁棒性。
3.2.1 CAN驱动移植
在设计中使用CAN总线作为上下位机数据的传输,因此需要在RT-Thread操作系统中移植CAN设备驱动。在RTThread中提供了I/ O设备管理模块,设备被认为是一类对象,每个设备对象都是由基对象派生而来,继承了父对象的属性,同时派生出自己的私有属性[4]。CAN设备结构体如下:
struct rt_can_lpc{
struct rt_device parent;//设备基对象环形数据存储缓冲区定义
rt_uint8_t *read_index, *write_index;
rt_uint32_tuse_num;
rt_uint8_t rx_buffer[RT_CAN_RX_BUFFER_SIZE];
}can_device;
rt_device结构体定义了RTThread设备驱动的模型,实现设备的驱动过程就是实现该结构体内接口函数的过程。具体接口函数为:
static rt_err_t rt_can_init (rt_device_t dev); //CAN设备初始化
static rt_err_t rt_can_open(rt_device_t dev, rt_uint16_t oflag); //打开CAN设备
static rt_err_t rt_can_close(rt_device_t dev); //关闭CAN设备
static rt_size_t rt_can_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size); //读取CAN接收的数据
static rt_size_t rt_can_write(rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size); //CAN发送数据
通过实现以上接口函数,可对CAN设备进行读写操作。由于CAN设备为异步设备,因此还需要编写相应的中断服务函数进行数据接收,在硬件初始化的时候挂接中断向量表与中断服务程序。
3.2.2 数据缓存
由于上下位机之间时钟不同步及处理器速度存在差异,为了使通信过程不会因此受到影响而造成大量数据块丢失,本系统采用环形缓冲区结构存储上位机或相邻下位机发送的数据,保证数据接收完整。环形缓冲区的结构示意图如图4所示。
图4 环形缓冲区结构示意图
在CAN中断服务接收到数据后,将数据帧存放在write_intex指向的区域,并将可读数据区域增加相应的存储字节数量。若可读数据区域不为0,系统可用read_intex指针调出存储的数据。
图5 任务启动流程图
3.2.3 任务调度
每个功能模块采用任务的方式加入,任务启动流程图如图5所示。系统中共设置了4个任务,数据处理任务负责与上位机的数据通信及指令处理;皮带控制任务和辊筒控制任务负责皮带及辊筒电机的启动与速度控制;警报任务将定时采集及存储主板温度传感器的温度数据,并进行温度阈值判断及高温报警和断电,确保下位机正常工作,防止高温烧毁主板和芯片。每个任务都通过系统线程调度严格限定执行时间,若超出时间阈值,则强行切换任务,防止程序锁死在某个任务上。
4 上下位机之间的通信协议
上位机与下位机之间根据自拟的通信协议完成印花机系统工作。在协议中,为了符合CAN总线数据帧的数据场字符数,便于上下位机之间的数据通信,定义每个控制字符串为8个字节。第1个字节为字符“S”,为控制字符串起始标志。第2个字节为功能字节,该字节代表了控制字符串的功能类别。第3个字节为机组参数,下位机或上位机根据该字节判断控制字符串发送到哪个机组。第4~6个字节为功能参数字节。第7个字节为校验和,用于校验第2~6字节是否正确,其数值为这5个字节的异或和校验。最后一个字节为“N”,为控制字符串结束标志。格式如表1所列。
表1 通信控制字符串格式
表2列出了部分功能的控制字符串功能字节和参数1/2/3的数值。
表2 控制字符串功能字节与参数数值
5 控制台设计和系统测试
控制台是印花机系统的控制中心,采用跨平台的C++图形界面库Qt设计人机交互图形界面,负责当前电机的状态显示与数据输入,发送控制命令,以及接收并显示下位机发送过来的温度与运行信息。
本文开发的图形界面运行在以三星公司S3C2440处理器为核心的ARM9嵌入式平台上,如图6(a)所示。在启动上位机的印花机控制系统后,系统进入主界面,如图6(b)所示。主界面上显示下位机的工作状态,包括电机运行状态及当前温度。在启动印花前,需要先设置下位机的印花方式及运行速度。在随机印花和对位印花的设置界面中,都有一个软键盘用于输入印花机运行速度,同时在上方可选择相应的下位机,如图6(c)、(d)所示。
当完成下位机的印花方式及运行速度设置后,点击主界面的“启动印花”则发送启动命令启动下位机的电机工作。在印花过程中,可点击1号机启动/停止印花,或2号机启动/停止印花来单独停止或启动1号机或2号机辊筒的运动。若点击“停止印花”按钮,则停止所有电机的运行,包括皮带和辊筒电机。
图6 印花机控制系统操作界面
在系统实际测试中,皮带电机和辊筒能够按预期要求进行实时控制及状态反馈,连续开启10个小时无异常,表现出良好的稳定性和可靠性。软件可根据实际需求扩展印花机机组的数量,具有良好的扩展性。
结语
本文设计的可视化印花机系统,采用上下位机模式实现人机交互,达到精确控制电机工作的目的。系统采用Qt图形用户界面框架设计人机交互界面应用程序,界面友善、操作简易。同时利用NXP LPC11C14微控制器设计电机控制电路,采用嵌入式实时操作系统RTThread进行任务调度,增强系统的实时性、鲁棒性和可扩展性。上下位机之间通过CAN总线接入,具有突出的可靠性和实时性,同时可扩展多台下位机。在以后的研究中,将进一步拓展和完善印花机的功能,以适应更复杂的工作环境。