基于Linux及Qt_Embedded的压铸车间数据采集系统设计

2016-01-18 03:39鲁遥遥胡战虎王志平
自动化与仪表 2016年10期
关键词:窗体驱动程序应用程序

鲁遥遥 ,胡战虎 ,汪 暾 ,王志平

(1.广东工业大学 自动化学院,广州 510006;2.广东省自动化研究所,广州 510070)

我国压铸工业与国际先进水平相比,在设计、技术、管理等方面均存在较大差距,还处于向先进国家跟踪学习的阶段,目前国内许多压铸企业主要存在生产数据繁多且难以实时采集、生产人员的效率难以评价、设备生产效果及稼动率难以精确计算等问题。这些问题严重制约了企业进一步发展,使得压铸企业不能满足当前信息化发展的需求。

传统的数据采集系统大多采用单片机作为主控制器,存在维护困难、信息处理能力有限、交互功能差等不足。本文针对压铸行业的特点和存在的问题,利用嵌入式技术和人机交互技术,设计出一种基于嵌入式Linux系统及Qt_Embedded应用程序的数据采集监控系统,对压铸机相关数据自动采集,通过车间的无线WiFi网络,将采集数据发送到上位机进行分析、处理、存储;当有新的生产信息发送过来时,电子看板同步更新,方便企业的管理人员及时掌握车间的生产状况并调整生产作业计划,实现了企业管控一体化、数据传递信息化的要求,大大提高了压铸企业的车间管理水平。

1 系统总体设计

结合压铸企业的生产特点和数据采集的功能要求,本系统分为硬件设计与软件设计两大部分。硬件设计部分包括以CPU模块为核心的硬件电路及其各种外设的接口,软件设计则包括设备驱动程序的编写和图形界面应用程序的编写。压铸车间系统架构如图1所示。

图1 压铸车间系统架构Fig.1 System architecture of die casting workshop

2 系统硬件设计

系统的硬件平台主要由核心板和底板电路组成,核心板是由CPU微处理器、64 M的SDRAM、256 M的NAND FLASH、2 M的NOR FLASH以及复位电路等组成的ARM最小系统。底板是核心板的扩展,底板集成了UART接口、USB接口、以太网接口、JTAG接口、LCD接口、4路输入接口等,这种设计提高了系统设计的灵活性,底板和核心板分开设计,核心板可以多次使用[1]。其硬件功能框图如图2所示。

图2 系统硬件功能框图Fig.2 Functional block diagram of system hardware

2.1 CPU微处理器

CPU是整个系统的核心单元,是使整个系统正常工作的关键所在。本文所用到的CPU微处理器是三星公司生产的ARM9系列芯片S3C2440,该芯片同时满足低价格、低功耗、高性能的设计要求,而且支持Linux系统的移植。

2.2 RFID采集技术

本系统采用2种RFID阅读器分别作为读取模具条码与员工条码的设备,其中一种为C236023超高频RFID阅读器,如图3所示,该RFID阅读器与RFID电子标签搭配使用,需预先将模具条码信息写入该电子标签中,然后将其嵌入到相应的模具中,再通过安置在模具上方的超高频阅读器读取出电子标签里面的模具条码信息。另一种为专供员工打卡使用的EM系列的125 kHz非接触式射频ID读卡器,如图4所示。这2种RFID阅读器都带有RS232接口,将其与主控制器上的串口连接,再通过相应的软件编程即可实现二者的通信。

图3 超高频RFID阅读器Fig.3 UHF RFID reader

图4 低频ID读卡器Fig.4 Low frequency ID reader

2.3 开关量采集电路

压铸机的控制系统主要以PLC为核心,针对压铸机的设备特点,本系统通过捕获压铸机控制板上的PLC脉冲信号来实时监控压铸机的运行状况,共设有4路直流开关量采集输入通道。硬件电路如图5所示(以其中一路为例)。其中,TLP627光耦具有良好的隔离作用,可以使采集信号更加稳定,二极管IN4007用来防止反向电流击穿光耦。

图5 开关量采集电路Fig.5 Switch quantity acquisition circuit

3 系统软件设计

软件设计部分着重介绍开关量采集驱动程序设计和Qt_Embedded图形应用程序设计。

3.1 开关量采集驱动程序设计

如图6所示,应用程序和Linux内核之间的接口是通过系统调用来实现的,Linux内核和硬件设备之间的接口是通过设备驱动程序来实现的,设备驱动程序作为Linux内核重要的组成部分,它的作用是弥补应用程序不能直接操作硬件设备的缺陷,搭建应用程序与硬件设备之间的桥梁,使应用程序以操作文件的方式访问硬件设备。

图6 Linux设备驱动与软硬件系统的关系Fig.6 Relationship between Linux device driver and software and hardware system

Linux支持的设备分为3类:字符设备、块设备和网络设备[2],三者中最简单最通用的是字符设备,具有可以直接读写无需缓存的特点。开关量采集驱动所对应的设备属于字符设备。file_operations数据结构是字符设备驱动的核心,当应用程序操作设备文件时, 所调用的 open、write、read、close 等函数最终会调用这个结构中指定的 open、write、read、close等函数,此结构体具体代码如下:

mydrv_open函数主要作用是使能4路开关量通路所对应的 4个中断引脚 EINT8、EINT11、EINT13、EINT14。释放设备由 release()函数来完成,其作用与open相反。本驱动程序中引入了poll机制,poll()函数将当前进程自动加入到等待队列中,这时还未进入休眠,根据mydrv_read函数所获取的引脚状态来判断休眠与否,如果输入引脚电平发生变化,则不会进入休眠,反之则进入休眠;在休眠过程中,如果发生中断的话,就会唤醒进程,返回应用程序继续执行。4路中断引脚的电平变化与返回值对应关系如表1所示。以其中一路为例,EINT8引脚遇到上升沿,中断处理函数返回数值0x01,遇到下降沿,返回数值0x81。将中断引脚的电平变化以数值的形式直观表达,方便后续的应用程序调用。

表1 中断引脚电平变化与返回值对应关系Tab.1 Correspondences of interrupt pin change and the return value

在进行驱动程序设计的时候,由于用户空间与Linux内核空间不能直接相互访问,Linux内核提供了一个copy_to_user函数,借助该函数可以完成内核空间到用户空间的数据传递。

3.2 Qt_Embedded图形界面应用程序开发

压铸机在正常工作情况下具有唯一占有性,即从工人打卡开始到工人打卡结束,每台压铸机只能配有1个工人在岗,具体操作流程如图7所示。从应用程序启动开始,现场的LCD触摸屏实时显示数据采集系统主界面,在员工打卡以前,需要做出相应的判断才能往下执行。如果当前存在员工条码,又接收到了新的员工打卡请求,对应在实际的生产过程中,即是上一个员工下班的时候忘记打卡,新的员工来上班。在这种情况下,不能直接把上一个员工的信息覆盖掉,必须将上一个员工的模具计数、在岗时间等相关信息保存好,并通过无线网络发给服务器,再进行下一个员工上班的操作。

图7 员工上下班打卡处理流程Fig.7 Flow chart of employees clocking in and out

3.2.1 建立窗体

Qt Designer是强大的跨平台GUI布局和格式构建器[3],可以把设计好的Qt应用程序界面以ui文件格式存储下来。本应用程序利用designer工具开发了7个窗体,分别为数据采集系统主窗体mainwindow、员工上岗工种选择窗体dialog_1a、碑工下岗原因选择窗体dialog_1ba、非生产人员下岗原因选择窗体dialog_1bb、碑工岗位选择窗体dialog_2a、QC检查输入窗体dialog_2b、非生产人员岗位选择窗体dialog_2c。根据实际需求选择控件加入到各窗体中,设置属性并且调整大小和位置。

3.2.2 信号与槽机制

Qt的窗口部件有多个预定义的槽,当一个特定事件发生的时候,一个信号被发射,对应感兴趣的槽就会调用对应的相应函数[4]。当用户点击触摸屏上的一个按钮时,应用程序执行相应的代码。一般使用的信号和槽都是一对一的,其实还需要考虑一些其他的关联方式,比如一个信号可以连接多个槽,多个信号可以连接到同一个槽,一个信号可以与另一个信号相连接[5]。

3.2.3 编写主函数

Qt_Embedded图形界面应用程序包含1个主函数,是整个应用程序的入口。首先需要创建1个QApplication的对象,用于管理整个应用程序的资源,然后定义窗口类对象并把它作为程序的主窗体,最后调用 show()和 exec()函数,使程序进入消息循环。

3.2.4 编译生成可执行文件

完成了相应的应用程序设计之后,需要使用交叉编译工具对源程序进行编译,生成可执行文件。在命令行键入如下指令:

qmake-project//生成工程项目文件

qmake //生成Makefile文件

make //生成可执行文件

4 应用结果

应用程序编译成功后,把可执行文件放在/work/nfs_root/fs_mini根文件系统下,要想烧进开发板,还要将这个根文件系统制作为一个jffs2映象文件,再烧入ARM开发板,然后启动应用程序,即可看到所开发的Qt_Embedded图形界面应用程序的实际效果,如图8所示。

图8 实际应用效果Fig.8 Actual application effect chart

5 结语

本文提出的基于Linux系统及Qt_Embedded的数据采集监控系统已经投入使用,实现了Linux设备驱动程序开发与Qt_Embedded应用程序开发的结合。通过实际应用表明,本系统使得压铸车间的相关信息实现了透明化,提高了企业管理水平,降低了人工成本;同时得到了车间主管和工人的认可,极大提高了企业的生产效益,具有较高的实际应用价值。

[1]赵君杰.MES终端的嵌入式Linux软件平台技术研究[D].重庆:重庆大学,2010.

[2]韦东山.嵌入式Linux应用开发[M].北京:人民邮电出版社,2008.

[3]霍亚飞.Qt Creator快速入门[M].2版.北京:北京航空航天大学出版社,2014.

[4]倪继利.QT及Linux操作系统窗口设计[M].北京:电子工业出版社,2006.

[5]Jasmin Blanchette,Mark Summerfield.C++GUI QT4 编程[M].2版.北京:电子工业出版社,2008.

猜你喜欢
窗体驱动程序应用程序
删除Win10中自带的应用程序
阻止Windows Update更新驱动程序
试谈Access 2007数据库在林业档案管理中的应用
基于Qt的多窗体快速并行图形绘制方法研究
谷歌禁止加密货币应用程序
计算机硬件设备驱动程序分析
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序
妙用鼠标驱动
驱动程序更新与推荐