基于ARM的仓储管理系统设计与研究

2013-07-13 06:30高文华罗洪达张震震
电子设计工程 2013年3期
关键词:内核线程仓库

杨 威,高文华,罗洪达,张震震

(太原科技大学 电子信息工程学院,山西 太原 030024)

随着供应链管理的不断发展,仓储管理已成为供应链管理中的重要环节。仓储总是出现在供应链各环节的结合部,例如采购和生产之间,生产的初加工和精加工之间,生产和销售之间,批发和零售之间,不同运输方式转换之间[1]。因而,如何优化仓库的日常管理成为一个重要的研究课题。

传统的仓库管理,一般依赖于以纸张文件为基础的非自动化系统来记录、追踪进出的货物,完全由人工实施仓库内部的管理,因而管理效率低下。目前大多数企业的仓库数据资料管理已经开始采用计算机系统,但仍然采用先纸张记录,再手工输入计算机的方式进行采集和统计整理,造成了大量的人力资源浪费,而且由于人为的因素,数据录入速度慢、准确率低。随着仓库智能化的不断发展,仓库管理的物资种类、数量都在不断增加。出入库频率剧增,仓库管理作业也变得十分复杂和多样化,传统的人工仓库作业模式和数据采集方式难以满足快速、准确的要求,严重影响了仓库的管理质量。

文中的设计融合了物联网技术、嵌入式技术和3G技术,分析了各自的基本特点和所要实现的基本功能。然后,在此基础上提出了基于ARM的仓储管理系统的整体设计方案,实现了仓储管理和控制的智能化,进而提高了仓储管理的效率,降低了人工及维护成本。

1 系统整体分析

1.1 系统功能描述

根据全面感知、可靠传递和智能处理的功能需求,可将仓储管理系统划分为信息采集单元(以下简称为M0)、前端数据处理中心(以下简称为A8)和远程PC服务器3个部分,其整体结构如图1所示。其中,信息采集单元以Cortex-M0为控制芯片,采集温度、湿度和光照强度等信息,并通过ZigBee无线传输[2]至前端数据中心;前端数据处理中心以S5PC100开发板为控制模块,该模块以ARM Cortex-A8控制芯片为核心,基于嵌入式Linux操作系统,利用线程接收信息采集单元发送的数据,控制仓库内部数据的安全,当实时环境异常时,通过GPRS向管理员发送短信息进行报警;远程PC服务器通过网络与A8建立连接,实时更新本地数据库,并且可以查看各节点仓库食品信息和总的食品信息。

1.2 系统环境搭建

1.2.1 U-Boot移植

U-Boot的功能是把内核放到DR AM (Dynamic Random Access Memory,动态随机存取存储器)中运行。网上下载的U-Boot对开发平台只具有通用性代码,不支持和识别特定开发平台上的一些硬件和功能。因此,需要添加对这些硬件的识别、初始化及其相应功能的实现。

图1 系统整体结构图Fig.1 Structure diagram of the warehouse management system

U-Boot的移植过程可以分为2个阶段,其中,第一阶段主要完成基本的硬件设备初始化,准备RAM(Random Access Memory,随机存储器)空间加载第二阶段代码,复制第二阶段代码到RAM中,设置堆栈指针SP,跳转到第二阶段代码的C入口点;第二阶段主要完成使用汇编语言跳转到main()入口函数,初始化本阶段将要使用的硬件设备,检测系统的内存映射,加载内核映像文件和根文件系统映像文件,设置内核启动参数和调用内核。

1.2.2 Linux内核移植

Linux内核是一种源码开放的操作系统,采用模块化的设计。在此只保留了必需的功能模块,删除了冗余的功能模块,并对内核重新编译,从而使系统运行所需的硬件资源显著减少[3]。本设计中内核的移植主要包括:网卡驱动的添加,NAND FLASH驱动的添加,添加对YAFFS2文件系统的支持,添加USB设备驱动,添加LCD设备驱动,添加SD卡设备驱动。

1.2.3 根文件系统制作

如果没有根文件系统,其他的文件系统就不能进行加载。根文件系统包括Linux启动时所必须的目录和关键性文件,以及使其他文件系统得以挂载的必要文件。制作根文件系统主要包括:添加内核菜单选项,建立目录结构,添加命令程序,拷贝C库,编写系统启动文件,配置主机的NFS。

2 系统功能模块设计

本系统是在A8、M0及PC等设备的基础上,基于互联网、物联网、传感器等技术并结合物联网新型概念[4]设计的,使用户能够对仓库内部情况进行实时的掌握和控制。本系统主要由前端数据中心、远程监控终端和服务器端组成。

首先,数据接收模块接收M0通过ZigBee传输上来的实时环境参数(如:温度、湿度、光感数据等),并通过接收端的ZigBee经USB转串口操作把采集到的环境参数发送给A8,由M0的接收请求线程从串口读取消息,并交给数据处理模块。数据处理模块解码接收到的信息后,激活数据库线程以保存数据,激活内存数据刷新线程以更新实时环境信息,并对环境参数进行判断处理,决定是否进行报警。另外,在构建的嵌入式WEB服务器上,用户可以通过网络利用PC机对仓库信息进行监控;通过WEB页面上的控制按钮,监控设备可以识别出用户指令并进行相应的动作。系统各模块进程间关系如图2所示。

图2 系统各模块进程间关系图Fig.2 Diagram of the process with its module in the warehouse management system

3 关键算法设计

3.1 用户图形界面设计

本系统通过A8间接地获取M0的数据,用户图形界面QT[5-6]主要包括登录界面、实时显示界面、设置界面和控制界面,其整体设计流程如图3所示。

图3 Linux下的QT整体设计流程图Fig.3 QT design flowchart under the Linux platform

其中,登录界面提供直接登录模式(即超级用户模式),登录后跳转至实时显示界面;显示界面包括实时显示当前M0所处环境的各种信息,含有温度、湿度、光照以及门禁状态等,通过不同的控制按钮可以分别跳转至控制界面和设置界面,按下退出按钮将退出系统;设置界面包括对温度上下限的设置,报警电话号码的设置等,通过软键盘图标可以调出软键盘,进行相关数据的输入,提交按钮将会把设置好的参数发送到服务器;控制界面主要实现对A8上LED灯和蜂鸣器等的控制,以及控制M0上风扇的停转,LED灯的亮灭,数码管的亮灭,蜂鸣器的响停等,通过返回键可以返回到显示界面,具体界面如图4所示。

图4 设备控制主界面Fig.4 Interface of the device control

3.2 视频流服务器设计

该服务器主要用于将摄像头采集的视频或者图片显示到网页和 LCD(Liquid Crystal Display,液晶显示器)上,这里采用MJPG-streamer作为视频流服务器[7]。MJPG-streamer采用的是V4L2(Video 4 Linux 2)接口,可以通过文件或者是HTTP的方式访问Linux UVC兼容摄像头。视频流服务器将摄像头捕获的图像存入global buffer缓冲区,当客户端有访问请求时,服务器便将global buffer缓冲区中的图像数据连续地发送给客户端。该程序中的server_pthread函数使用多线程技术,为每一个连接请求的客户端创建一个线程。该线程独立地与客户端进行通信,发送图像数据。

此外,MJPG-steamer还用来从网络摄像头采集图像,并将它们以流的形式通过基于IP的网络传输到浏览器的网页上。由于MJPG-steamer可以通过利用网络摄像机的硬件压缩功能来降低服务器CPU的开销,而无需为视频帧压缩浪费大量的资源,因而它为嵌入式设备和一些常规服务器提供了一个轻量级且较少CPU消耗的方案。MJPG-steamer功能强大,但为了符合本项目的需要,仍需对其进行修改,添加我们想要实现的功能。在本设计中,需要向MJPG-steamer视频流服务器中添加LCD输出插件,其代码如下:

4 结束语

本设计的仓储管理系统充分利用了ARM Cortex-A8的硬件功能和处理速度,成功地移植了以Cortex-A8为硬件核心的Linux嵌入式系统,并完成了基于Linux QT的控制程序开发,解决了多项技术难点。经实验表明,系统的控制效果令人满意,验证了该系统的先进性、稳定性和实用性,具有广泛的推广和应用价值。

[1]戴定一.仓储管理与WMS[J].物流技术与应用,2005,10(2):59-61.

DAI Ding-yi.Warehouse management and WMS[J].Logistics and Material Handling,2005,10(2):59-61.

[2]顾瑞红,张宏科.基于ZigBee的无线网络技术及其应用[J].电子技术应用,2005,31(6):1-3.

GU Rui-hong,ZHANG Hong-ke.Wireless network technology and its application based on the ZigBee[J].Application of Electronic Technique,2005,31(6):1-3.

[3]Stevens W R,Rago S A.Advanced programming in the UNIX Environment[M].尤晋元,张亚英,戚正伟,译.北京:人民邮电出版社,2006.

[4]朱仲英.传感网与物联网的进展与趋势[J].微型电脑应用,2010,26(1):1-3.

ZHU Zhong-ying.The progress and trend of internet of things with sensor network[J].Microcomputer Applications,2010,26(1):1-3.

[5]丁林松,黄丽琴.Qt4图形设计与嵌入式开发[M].北京:人民邮电出版社,2009.

[6]许耀锦,祁丹丹.基于Qt的AUV监控系统设计与开发[J].现代电子技术,2011(22):75-76,79.

XU Yao-jin,QI Dan-dan.Design and development of AUV monitoring system based on Qt[J].Modern Electronics Technique,2011(22):75-76,79.

[7]李岗,糜元根.一种支持B/S模式的网络摄像机的实现[J].计算机工程与科学,2012,34(3):108-112.

LI Gang,MI Yuan-gen.Realization of a web camera supporting the B/S pattern[J].Computer Engineering and Science,2012,34(3):108-112.

猜你喜欢
内核线程仓库
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
基于C#线程实验探究
填满仓库的方法
四行仓库的悲壮往事
基于国产化环境的线程池模型研究与实现
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
小猫看仓库
浅谈linux多线程协作