APP下载

基于移动互联的冷库远程监控系统设计与实现

2018-01-18倪晓霜

制造业自动化 2017年11期
关键词:服务器端冷库客户端

倪晓霜,邹 鲲

(东华大学 机械工程学院,上海 201620)

0 引言

医疗事业的进步、对药品的储存提出了更高的要求。现阶段的医药存储方式主要是冷库存储。同时,随着计算机技术、虚拟仪器技术以及物联网技术的快速发展,将网络技术和虚拟仪器技术结合以实现远程数据监控和查询已经成为当今研究的热点。传统的通讯方式具有成本高,传输效率低,抗干扰能力差等缺陷,为了打破传统通信方式的限制[1],利用LabVIEW可视化编程语言和动态网页开发语言PHP设计了药品冷库实时监控系统,其优点在于能够准确地反映当前的仓位余量,药品数量,批次和温度等信息,便于及时调整,且不限于特定的软件,用户只需要在计算机或者其他移动设备上浏览指定的网页或者直接登录微信平台就可以查询更改当前信息,随时随地,方便快捷。同时,此套系统的通用性和可移植性强,能够很好地适应其他工业设备,以实现工业数据监控的网络化。

1 系统构架设计

本文介绍了基于移动互联技术的远程信息访问系统设计,系统构架如图1所示。

图1 系统网络构架

利用网络端口socket将LabVIEW采集的各项信息发送给由PHP语言编写的数据交换服务器并存入MySQL数据库,再利用WEB服务器发布到WEB页面进行显示,同时SAE实现部分数据信息的云存储,微信服务器实现与微信公众平台的交互。为了实现LabVIEW和PHP之间有效的通信,创建了一个PHP服务器端和两个客户端以及两个LabVIEW服务器端和一个客户端,它们一一对应,共组成三层“C/S”通信[2],每层采用不同的端口号,每一层中的服务器端都充当数据发送端,客户端充当数据接收端,两端应用基于TCP/IP协议的socket通讯技术通过网络实现数据的收发。为了防止数据被恶意入侵,在本地采用Access数据库储存温度传感器检测到的温度信息及入库时人工扫描或输入的数据信息;采用LabVIEW中的Database Connectivity Toolkit工具包编写信息提取程序,将实时信息从数据库中读出,以字符串的形式实现信息的发送,并根据服务器端和客户端数据的收发特点,使用条件结构实现VI之间的层次调用,控制各个子VI运行顺序和启停;采用PHP语言在同一个程序中集成了数据接收端和发送端,其间调用延时函数使其有序执行,并结合Javascript、HTML5和CSS编写了用户注册、登录和操作界面;采用微信公众开发平台建立了用于查询,更新,录入,失温报警和物流上传的服务公众号,并为不同用户群体提供了不同的操作界面,其中本地Access数据库与WEB服务器端的MySQL数据库同步更新。从而,实现了PC机或者移动终端远程监控冷库中各药品的信息。

2 数据交互机制设计

2.1 基于LabVIEW的数据发送端

LabVIEW由National Instrument公司研制开发,使用图形化编程模块代替传统的文本编程语言,流程化编程思路使程序结构更为清晰,大幅提高了编程的效率[3]。LabVIEW有三种实现网络通信的方法,分别是Datasocket技术、邮件传输、TCP/IP协议[4],本文采用的是第三种通信技术,因为TCP/IP协议是如今使用最为广泛的通信标准,其编译的环境相对开放,对于传输过程中丢失的信息可以实现智能回访,保证系统的安全性,具体传输过程如下:发送端发送连接请求→接收端监听到请求→建立连接→传输数据→关闭连接[5]。

在本系统中,利用LabVIEW中的TCP通信协议模块建立了两个数据发送端和一个数据接收端,分别命名为LabVIEWserver1、LabVIEWserver2和LabVIEWclient1,下面具体介绍各部分程序的作用。

2.1.1 数据库和数据库读取程序

该系统的数据库主要包括以下9个数据表:库存表、出库表、入库表、盘点表、仓库字典表、产品字典表、供应商字典表、客户字典表和用户信息表。根据需求的不同,查询不同的数据表或多表联合查询,具体地说,利用LabVIEW和数据库的接口技术,实现了LabVIEW和Access数据库之间的联通。利用 Database Connectivity Toolkit工具包和SQL基本查询语句将数据表中某一药品的当前信息整行读出,然后整合成一条具有固定格式的字符串发送给后续的处理程序。

2.1.2 数据发送程序

LabVIEW中的TCP函数包最大程度地简化了网络通信[6,7],对其的充分利用实现了信息的发送和对程序运行流程的间接控制,数据发送流程如图2所示。

图2 信息发送流程图

首先,为了保证用户能随时查询或更改冷库各药品的信息,除了关机整修外LabVIEW程序必须始终处于运行状态,便于读取最新的信息并及时监听到连接请求,所以当没有请求到达时LabVIEW server1一直处于监听状态。当用户在浏览器中打开连接网页后,WEB端向LabVIEW端提出连接请求,一旦监听到连接请求,TCP监听函数会输出WEB端的计算机名,从而进入条件结构的指定分支,同时数据库查询子VI就会读出数据表中的相应信息发送给启停子VI。

当收到相应的计算机名后,开始运行启停子VI,用于控制LabVIEW client1的启停。具体地说,因为WEB服务器端一旦被开启后将会一直工作直到手动关闭Apache服务器,所以要保证与之相连的LabVIEW客户端程序在有查询请求时自动运行,在成功接收到数据后自动停止。程序后端的局部变量是用于清空传送过的数据信息,避免将上一次查询到的数据重复发送给WEB端。

最后运行收发综合子VI,通过“打开TCP连接”函数设定服务器端的IP地址和端口号,再用”读取TCP数据”函数得到WEB端发送的“111”指令,从而构建了LabVIEW client1并使程序进入条件结构的“111”分支中运行,使LabVIEW server2开始监听并选择要发送的信息,当接收到连接请求之后,数据信息通过“TCP写入数据”函数发送到WEB端。若整个发送过程没有出错,WEB端接收到的数据会被实时的存入或更新MySQL数据库中,并且循坏运行以上的步骤;若出现错误,则LabVIEW发送程序会停止运行,网页上会提示相应的错误。

2.2 基于PHP的数据接收端

PHP是一种通用的开源脚本语言,主要应用于WEB开发领域,其混合了C,Java,Perl等多种语言,可以实现动态网页的快速开发。本文选用Appserv作为PHP的运行环境,选用DreamWeaver作为网页编辑器。基于socket通讯技术,设计了一套服务器端和客户端程序[8~10],即把三个独立的客户端和服务器子程序整合到一个程序当中,并用延时控制它们的执行的顺序。

2.2.1 创建服务器端程序

为了使MySQL数据库能及时的存入或更新LabVIEW端发送来信息,必须保证WEB端服务器始终运行,对网络端口保持监听。在编程时,首先要建立两个变量用于设置服务器的IP和端口号并用“create”函数对socket进行初始化。其次,使用“bind”函数绑定到指定的IP地址和端口并对端口创建监听。一旦一个客户端的连接被收到,“accept”函数就会将客户端发来的信息进行读取打包,生成一个新的子socket,用于后续信息的处理,也即用“read”和“write”函数真正实现客户端和服务器端的通信。最后,用“close”函数将父子socket都终止。

2.2.2 创建客户端程序

正常运行情况下,在客户端运行之前,指定的端口已经处于监听的状态,等待着客户端的连接,只要客服端程序一运行即可连接上。在编程时,首先也要通过两个变量和“create”函数初始化,然后用“connect”函数向服务器端程序中指定的IP地址和端口提出连接请求,并用“write”向服务器发送命令用于选取用户需要的温度信息。最后,用“read”函数接收服务器传回的数据,也即用户需要的信息。

在每个服务器端和客户端程序创建过程中,使用do while语句使程序的“读”、“写”可以循环进行,便于发送不同的命令和数据。同时,将三个子程序整合到了一起,使一个程序中既包含服务器端程序,也包含客户端程序,它们分别与用LabVIEW创建的服务器端和客户端相对应,其间采用“sleep”函数进行延时,使程序有序运行。

3 微信公众平台开发

3.1 需求分析

针对冷库的远程监控,不同工作岗位的用户会有不用的需求,主要分为三类用户。第一类为冷库管理员,对冷库有直接操作的权利,需要了解冷库中药品的各项信息,所以为其设计了完整的监控界面,即包括查询药品、仓位、温度等信息,更新和录入数据信息,实时现场图片查看。这里,要特别提出的是在查询的同时,本文还设计了温度报警,药品过期预警和余量不足预警[11]的功能。第二类为采购员,会较为频繁地查询冷库中各类药品的供应商,数量,失效日期等信息,所以为采购员设计了一个简洁明了的操作界面。第三类用户为系统维护员,会对使用此套系统的用户信息进行定期审核和统计,或当用户登录、注册等账户服务出现故障时及时处理,故为其设计了专门用于用户信息操作界面。

此外,对于稀缺的或者危险性较高的药品设计了药品跟踪功能,即从供应商发货到本地收货,再到冷库储存,最后到药品使用途径都进行了详细的跟踪记录,当有相关医疗问题产生时,可以方便的查询到出错的环节并避免问题的再次发生。此部分运用到了微信的图片上传和位置上传功能,

通过微信服务器打包后发送到SAE上,并进行进一步解析,把实时图片和位置信息存入SAE的共享数据库中。

3.2 公众号的建立

现阶段的远程终端系统一般采用PC机,性价比低,结构笨重,不便于携带与转移,微信用户范围广且微信公众平台具有跨平台,开发体系完善,使用方法简单等优势,故设计开发了一个微信公众服务号,为不同手机平台的用户提供了方便快捷的监控方式[12,13]。通过微信公众平台可以在线为注册登录后的用户提供冷库中药品的各项实时信息,具体的建立方法是在登录微信公众平台后,选择开发者模式,通过URL和Token与SAE建立连接,并通过自定义菜单接口编写实现了如图3的主界面,分别为“信息查询”、“产品跟踪”、“账户服务”,其中“信息查询”下设置了四个子菜单项,分别对应三类用户和图片查看,“产品跟踪”对应物流信息上传和查看两项功能,“账户服务”下也设置了三个子菜单项,分别对应对账户信息的三中操作,子菜单项采用点击回复文本和跳转网页两种模式。若后续有新的用户需求,可以直接在此公众号上添加新的菜单项对应新的用户需求。

图3 主界面图

3.3 具体操作页面

为了使信息易读易懂,设计了人性化的操作界面。用户只需要输入某药品的两项特征即药品名称和产品批号,就可以查看此药品相应的数据信息。具体方法是首先建立用户注册界面,将用户输入的信息存入用户信息表,注册成功后用户便可以通过登录进入各自的操作界面。

冷库管理员界面主要运用“select from”语句对指定产品进行查询,运用“update set”语句对指定产品的更新,运用“insert into ”语句添加新的产品信息。同时,余量预警和失效预警均在查询过程中实现,结果采用不同的颜色警示。

物流信息上传功能主要应用了微信公众平台自带的位置上传功能,当点击“产品跟踪”下“物流上传”的子菜单时,会有相应的文本提示,然后上传位置和现场图片,SAE通过对数据包的解析将相应的数据存入SAE共享数据库对应的数据表中,并把要回复的信息整合成一个新的XML返回微信服务器,从而使用户收到返回信息。具体实现如图4(a)所示。

图4 系统新增功能图

此外,报警功能的实现是通过微信平台的客服接口,不同于现有的邮件报警、短信报警等报警方式,而直接微信内部实现循环报警,这里的循环是指当温度超过规定值后,微信平台每5秒主动推送一次报警信息,直到温度被恢复到规定值以下。报警信息如图4(b)所示。

3.4 控制功能的实现

此公众号的控制功能主要体现在当冷库中发生失温现象的,冷库管理员可以向公众号发送规定的指令从而解决失温问题。指令信息实现控制的具体过程如图4所示,移动终端发送的信息通过WEB服务器解析处理后存入MySQL数据库中,而数据交换服务器会不断查询控制标志位是否置位,当置位时,在查询具体的控制数据,送给LabVIEW端,进而发送到控制硬件实现温度的调节。

4 结束语

本文首先阐述了基于计算机网络技术的远程信息监控系统设计方案,利用网络接口socket实现以LabVIEW应用程序作为客户端,以PHP网页程序作为服务器端的数据通信。接着,介绍了LabVIEW程序具体的开发过程,基于TCP/IP协议采用TCP函数模块实现与WEB端的连接,并使用条件结构控制子程序是否运行和运行的顺序。其次,介绍了服务器端程序的开发过程,基于“C/S”机制,使用PHP语言中的“create”、“listen”、“bind”、“connect”等函数完成了服务器和客户端的搭建。通过两个应用程序之间的网络通信实现了远程数据的传输,远程用户可以通过浏览器访问相应的网页查询到所需的信息。同时,建立了不受系统平台限制的微信服务号,使用户可以随时随地更新或查询所需信息。此外,设置了用户注册和登录界面,并利用Session防止用户直接输入地址而不通过登录访问信息页面,提高系统了的安全性。物流信息上传与查询,现场图片查看和报警预警功能的实现提高了此远程监控平台综合性和实用性。未来还可将多地的冷库药品信息发送到同一个MySQL数据库中,形成监控网络,方便统一管理和状态分析。当然,此套系统在网络安全方面仍存在一些问题,需要进行进一步的优化处理。

[1]蔺佳哲,王茜,张沿磊.某型空空导弹远程故障检测系统的设计[A].第十届全国信号和智能信息处理与应用学术会议, 中国湖北襄阳,F,2016[C]:381-2.

[2]鲍雪亚,赵强,顾德英.基于B/S和C/S混合架构的远程监控系统[J].仪器仪表学报,2004,S2):591-2.

[3]李翼.基于LabVIEW的实验管理系统[D].浙江大学,2005:35-44.

[4]盛世岳.室内环境多参数无线测量系统的研究与设计[D].厦门大学,2014:47-56.

[5]赵军伟,刘勋,董浩.基于TCP协议的远程监控系统的实现[J].中国测试,2010,01):78-81.

[6]黄晨,李茂奎,贾帅,等.一种LabVIEW与AVRDAQ间的远程通信模式及应用[J].实验室研究与探索,2010,(10):49-51,64.

[7]刘佳.基于LabVIEW的大麦生长远程监控系统的设计与实现[D].甘肃农业大学,2016.

[8]汪娟.基于WEB的工业远程监控系统研究与实现[D].武汉理工大学,2008:37-46.

[9]王洪猛.基于Web的远程监控系统开发技术研究[D].武汉大学,2005:22-26,38.

[10]杨桄.基于互联网服务器架构的物联网平台研究[D].北京邮电大学,2014:33-39.

[11]王一帆,龚垒.校园网机房智能监控预报警系统界面设计与实现[J].电子技术与软件工程,2016,(16):54.

[12]蒋丽丽,姜大庆,沈美.基于微信的农业专家在线服务系统的设计与开发[J].电子技术与软件工程,2016,(21):55-56.

[13]战腾.微信公众平台的研发与在医疗方面的应用实践[D].山东大学,2015:21-45.

猜你喜欢

服务器端冷库客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
冷库上“云端” 共享促共富
Linux环境下基于Socket的数据传输软件设计
四十余家肉类企业被暂停进口
如何看待传统媒体新闻客户端的“断舍离”?
善良不会被辜负
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用