仓库物联网技术文档.docx
- 文档编号:11191203
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:15
- 大小:184.12KB
仓库物联网技术文档.docx
《仓库物联网技术文档.docx》由会员分享,可在线阅读,更多相关《仓库物联网技术文档.docx(15页珍藏版)》请在冰豆网上搜索。
仓库物联网技术文档
食品物联网仓储系统
软件需求说明书
第1章项目概述
1.1项目背景
随着计算机技术、网络技术和物联网技术快速发展,智能家居、远程控制仓储等都已经进入人们的工作生活。
于是大家对食品物流环境有了更多的想法,希望物流管理智能化,减少人工负担,提高效率,还需要能够防火防盗。
本系统正是融合了物联网技术、嵌入式技术、3G技术这三门技术实现了对仓储管理和控制的智能化,大大提高了仓储管理的效率,降低了人工及维护成本,实现了对仓储系统的远程监控和访问。
应对市场用户的需求,由华清提出、深夜完成开发。
物联网仓储系统使用更方便,操作更简单,用户体验更健康、更人性化。
1.2术语定义
Boa服务器:
是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。
Sqlite:
是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了
CGI(CommonGatewayInterface):
简称CGI。
在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。
Html(HypertextMarkupLanguage):
是用于描述网页文档的一种标记语言。
MJPG-stream(MotionJointPhotographicExpertsGroup):
视频流,MotionJPEG技术常用与闭合电路的电视摄像机的模拟视频信号“翻译”成视频流,并存储在硬盘上。
Zigbee:
是IEEE802.15.4协议的代名词。
根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。
RFID:
射频识别即RFID(RadioFrequencyIDentification)技术,又称电子标签、无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。
A8:
ARMCortex-A8处理器是第一款基于ARMv7架构的应用处理器,并且是有史以来ARM开发的性能最高、最具功率效率的处理器。
M0:
Cortex-M0处理器,是市场上现有的最小、能耗最低、最节能的ARM处理器。
第2章技术方案
2.1系统的总体描述
本系统基于A8、M0平台,实现了M0采集仓库不同地方的信息,通过无线方式发送到A8进行监控、控制。
A8为中央监控服务器设备。
整体分为如下几个模块:
中心服务器模块、前端数据中心、信息采集模块。
信息采集模块使用M0,采集仓库的温度、湿度、光照及进出仓库的货物信息,通过zigbee模块发送到前端数据中心。
前端数据中心通过zigbee接收模块接收M0发送的信息,进行分析、处理、存储。
前端数据中心装有boa服务器,用户通过web访问前端数据中心的信息,可以手动通过网络将数据库的的货物信息发送到中心服务器中。
中心服务器接收信息并存储。
本设计主要采用开发板设计的,开发板有外部接口多的优势,方便模拟测试和软件的调试。
2.2系统软件描述
我们选用稳定灵活的Linux操作系统,优点有以下几点:
1.开放的源码,丰富的软件资源,最适合于学生学习。
2.功能强大的内核,性能高效、稳定,多任务,小巧灵活,易于裁减。
3.支持多种体系结构,如X86、ARM、MIPS、ALPHA、SPARC等。
4.完善的网络通讯、图形、文件管理机制。
5.支持大量的周边硬件设备。
6.Linux秉承Unix的优秀设计思想,非常灵活,各部分的可定制性都很强。
7.良好的开发环境,不断发展的开发工具集,其中很多是免费的,大大降低了开发费用。
8.软件开发者的广泛支持。
9.有效降低产品成本,对成本敏感的嵌入式系统来说至关重要,Linux恰好具有这一特性。
由此,对于我们学生来讲,Linux是我们的最佳选择。
2.3项目功能图
图2.1项目功能图
2.4所涉及的系统、工具
表2.1系统与工具
系统名称
系统版本
备注
linux内核
Linux-2.6.35
Linux文件系统
Busybox-1.17.3
工具链
arm-unknown-linux-gnueabi-gcc
Boa服务器
boa-0.94.13
Sqlite数据库
sqlite-autoconf-3070602
第3章前端数据中心(A8)总体设计
3.1程序设计流程图
图3.1程序设计流程图
3.2线程描述
1.com_collect_thd:
用来采集M0发送的温度、湿度、光照、rfid卡信息。
2.com_cgi_thd:
接收网页传来的指令,并唤醒相应的线程。
3.ctl_light_thd:
当cgi接收到开灯关灯命令时,唤醒该线程。
4.ctl_warlight_thd:
当发生异常时,唤醒该线程让报警灯闪烁。
5.ctl_gsm_thd:
当发生异常时,唤醒该线程发送信息给用户。
6.ctl_beep_thd:
当异常发生时,唤醒该线程打开蜂鸣器报警。
7.ctl_camera_thd:
有非法闯入时,唤醒该线程拍照。
8.ctl_sql_thd:
完成数据库的查找,更新,添加,提取功能。
9.ctl_socket_thd:
完成将数据库中的信息发送给中心服务器。
10.ctl_key_thd:
轮训检测是否有非法闯入。
3.3所用类描述
1.msgbuf,用来存储消息队列的信息。
2.data_buf,用来存储串口采集的温度、湿度、光照信息。
3.rfid_data,存储进入仓库的货物信息。
4.Cgi_Updata,存储发送给cgi的温度等信息。
5.Send_Rfid_Msg,存储发送给中心服务器的数据。
3.4串口采集模块
3.4.1功能描述
采集M0方送的数据,分析、处理、存储。
采集信息为温湿度信息时检测是否超出正常的标准,超出正常标准就唤醒相应的线程,发出相应的报警信息,然后更新数据库。
采集信息为货物信息时,唤醒数据库线程,将货物信息插入数据库。
3.4.2流程图
3.4.3数据类型的详细描述
1.data_buf:
存储温度、湿度、光照等信息
成员
数据类型
说明
dev_no
int
发送数据的设备号
temp
int
温度数据
bum
int
湿度
bright
int
光照
2.rfid_data:
存储货物信息
成员
数据类型
说明
dev_no
Int
发送数据的设备号
Cargo_type
Int
货物类型
Cargo_name
Int
货物名字
Cargo_num
int
货物数量
3.5cgi模块
3.5.1功能描述
Cgi通过消息队列接收信号,通过不同的信号设置不同的标志位,然后唤醒不同的线程。
3.5.2流程图
3.5.3数据类型的详细描述
1.Msgbuf:
消息队列结构体
成员
数据类型
说明
Type
Long
消息类型
Data
Int
消息数据
2.使用的宏定义
名称
定义
说明
MSG_CGI_TYPE
100
消息类型
MAGIC_NUM
‘F’
KEY_FILE
“/home”
Pc端程序设计:
开发工具及运行环境:
Uboot操作系统,Boa服务器;
功能概述及功能框图:
功能概述:
本服务器主要用于存储不同地区仓库中的货物的主要信息,通过Internet在同一时间内查询不同地区货物的存储信息,在复杂的商业环境中快速作出决定。
功能框图:
主程序设计流程图设计及概述:
主程序概述:
在main函数中创建多个线程,并初始化互斥锁、条件变量、最后等待线程结束;
主程序流程图设计:
远程访问设计:
功能实现:
向A8板中移植boa服务器,使用B/S架构,浏览器端采用HTML,CSS,Javascript,等语言,服务器端采用cgi技术对本地数据库进行处理。
总服务器设计:
概述:
采用并发服务器模型:
同一时刻可以相应多个客户端的请求,由于创建子进程的开销比较大,如果多个客户端创建多个子进程会影响服务器效率,因此创建子线程收发数据。
子程序设计流程图:
数据库:
功能描述:
存储不同地区、不同类型的数据的总和。
功能框图及数据哭封装请参照总服务器数据库功能简述。
数据库详细描述:
传送数据的相关结构:
环境信息结构
structmsg_data
{
intdev_no;
inttemp;
inthum;
intbright;
}data_buf;
货物信息结构
structCargo
{
intdev_no;
intCargo_type;
intCargo_name;
intCargo_num;
}rfid_data;
存储记录结构
typedefstruct
{
intncolumn;
structCargobuf[100];
}Send_Rfid_Msg;
本地数据库功能简述:
将货物信息、仓库中不同地区的信息,插入数据库,为远程传输、页面动态显示提供数据
本地数据库的设计:
数据库的操做封装及实现:
货物信息表:
ID
DATAID
Name
Type
Num
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
最新货物信息表
ID
DATAID
Name
Type
Num
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
仓库环境信息表:
ID
BR
WD
SD
INTEGER
INTEGER
INTEGER
INTEGER
数据插入的封装
Insert_Id_Msg(sqlite3*db1,structCargo_rfid_data)//插入货物相关信息
Insert_NodeId_Msg(sqlite3*db1,structmsg_datadata_buf);//插入各节点相关信息
数据删除的封装
Delete_Card_Msg(sqlite3*db1,inttablenum,intid)//删除某张表中的某条记录
Sql_ctl(intflag)//消息控制函数
Send_Socket_Msg(sqlite3*db1);//向远程传输提供数据
Send_Shmget_Msg(sqlite3*db1);//向页面动态显示提供数据
数据库数据数据的流向:
总服务器数据库功能简述:
存储不同地区、不同类型的数据的总和。
总服务器数据的设计:
总货物信息表
ID
Name
Type
Num
INTEGER
INTEGER
INTEGER
INTEGER
数据库的封装操着及实现:
if(recv(connfd,&msgbuf,sizeof(msgbuf),0)>0)
{
intncolumn=msgbuf.ncolumn;
printf("***************%d\n",connfd);
printf("%d\n",ncolumn);
for(i=0;i { sprintf(str,"SELECTCOUNT(*)FROMServerDataWHEREID=%d;",msgbuf.buf[i].id); sqlite3_prepare(db,str,-1,&countstmt,NULL); sqlite3_step(countstmt); flag=sqlite3_column_int(countstmt,0);//閼惧嘲绶眎d閿? sqlite3_finalize(countstmt); if(flag>0) { sprintf(str,"SELECT*FROMServerDataWHEREID=%d;",msgbuf.buf[i].id); sqlite3_prepare(db,str,-1,&countstmt,NULL); sqlite3_step(countstmt); data=sqlite3_column_int(countstmt,3);//閼惧嘲绶? data閿? sqlite3_finalize(countstmt); printf("data1=%d\n",data); msgbuf.buf[i].num+=data; sprintf(str,"UPDATEServerDataSETNum=%dWHEREID=%d;",msgbuf.buf[i].num,msgbuf.buf[i].id); sqlite3_exec(db,str,0,0,NULL); } else { sprintf(str,"INSERTINTO'ServerData'VALUES(%d,%d,%d,%d);", msgbuf.buf[i].id,msgbuf.buf[i].name,msgbuf.buf[i].type, msgbuf.buf[i].num); sqlite3_exec(db,str,0,0,NULL); } printf("%s\n",str); printf("%d,%d,%d,%d,%d\n",connfd,msgbuf.buf[i].id,msgbuf.buf[i].name, msgbuf.buf[i].type,msgbuf.buf[i].num); } } else { printf("out......'\n"); break; } } 数据库中数据的流向:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仓库 联网 技术 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)