基于Java C/S模式的工业数据在线监测软件设计

2017-01-19 07:26童耀南廖学文
关键词:下位线程字节

童耀南, 廖学文, 李 豪, 杨 拓

(湖南理工学院 信息与通信工程学院, 湖南 岳阳 414006)

基于Java C/S模式的工业数据在线监测软件设计

童耀南, 廖学文, 李 豪, 杨 拓

(湖南理工学院 信息与通信工程学院, 湖南 岳阳 414006)

基于C/S模式和ZigBee网络, 采用Java编程语言设计了一款工业生产信息在线采集和管理软件系统. 编制了串行数据通信协议, 分别采用五线程和三线程设计了服务器和客户端软件. 系统具有跨平台的特点, 不受操作系统的限制,安全性较高.

数据采集; 监测; ZigBee; Java; C/S模式

引言

随着信息技术的发展和普及, 工业生产企业通过信息化升级改造, 提升了现代化管理水平, 也取得了较好的经济效益[1,2]. 信息化技术手段的不断进步, 也使得如低压功耗的ZigBee无线通信网络[3]和功能强大且简单易用的Java编程语言[4]通常应用于现代物联网技术产品开发. 现有的一些生产信息化系统通常需要多种服务器支持, 且多种通讯协议和架构模式并存, 这意味着需要更高的部署和运行成本, 数据交互过程较为繁琐. 如文[5]基于混合模式设计了一种车间生产管理信息系统, 文[6]提出了一种机电设备远程监测系统. 这些系统的数据采集部分采用C/S模式, 而数据传输和数据库访问部分采用B/S模式, 造成数据采集、传输和访问模式较为复杂, 服务器成本高. 为解决这些现实问题, 本文基于C/S模式和ZigBee技术, 采用Java编程语言设计了一款工业生产信息在线采集和管理软件系统.

1 系统设计

1.1 总体结构

系统总体架构如图1所示. 系统自下而上分为三部分, 包括下位机终端采集、串口数据交互、上位机位机软件监测. 系统工作流程为: 上位机发送数据采集命令, 服务器将命令打包并通过串口发送给协调器,协调器解析命令后通过ZigBee局域网发往下位机数据采集终端; 相反, 安装在机床上的下位机终端将采集的数据通过ZigBee网络发送至协调器, 封装数据后依据协议发往服务器, 服务器将接收到的数据存储到数据库, 等收到客户端命令后, 将其所需数据从数据库取出, 并依据TCP/IP网络通信协议发送至客户端. 采集和管理软件系统采用C/S模式架构, C/S架构建立于专用网络上, 对信息的控制能力强, 安全性高.软件采用Java语言编写, 程序完全运行在Java虚拟机(Java Virtual Machine)之上, 可实现跨平台操作, 不受操作系统限制. 服务器开发和维护成本低; 采用多线程设计方案, 程序运行效率高.

图1 系统架构框图

1.2 系统关键问题及解决方案

要实现系统功能, 需有效处理好两大问题. 其一是如何接收、发送数据. 一方面是串口数据交互协议,解决从串口发数据和收数据的问题, 另一方面服务器与监测客户端交互协议, 目的是解决客户端命令下发和服务器数据上传问题. 其二是怎样进行数据解析、存储和管理. 同样利用服务器与客户端协议按照格式解析数据, 这个数据一方面是采集到的数据, 一方面是用户主动管理的数据, 例如: 人员信息、节点信息等.

对于服务器与协调器交互问题, 基于Java提供的Rxtx串口通信包, 为Java程序从RS-232串口读写数据提供支持, 系统通过接收和发送拟定好的协议命令, 对下位机的数据进行采集和监测. 将基于TCP/IP协议的Socket网络编程技术应用于客户端与服务器的信息交互中, 服务器通过拟定好的命令协议识别客户端请求. 此外, 通过访问数据库实现信息管理, 通过控制串口与协调器通信实现信息采集. 服务器是数据处理和接收的核心, 客户端只做数据的实时显示.

2 通信协议和软件功能设计

2.1 串行数据通信协议

上位机与下位机拟定的串行通信协议, 包括联网探测、产量数据采集开始与终止、接收确认等, 用于命令和数据交互, 参照文[8]制定通信协议如下.

(1) 探测联网命令: 上位机通过协调器下发命令给下位机终端, 探测联网状态.

帧头 帧长度 目标短地址 单片机ID用户命令用户命令参数1 用户命令参数2 校验码1字节0xFD 1字节0x0E 1字节0xFF 7字节都为0xFF 1字节0x01 1字节0x00 1字节1字节0x00

(2) 联网确认命令: 下位机终端返回确认信息给协调器, 并转发上位机.

帧头 帧长度 目标短地址 单片机ID用户命令用户命令参数1 用户命令参数2 校验码1字节0xFD 1字节0x0E 1字节7字节 1字节0x00 0x02 1字节0x00 1字节1字节0x00

(3) 采集产量数据命令: 上位机通过协调器下发产量采集命令给下位机终端.

帧头 帧长度 目标短地址 单片机ID用户命令用户命令参数1 用户命令参数2 校验码1字节0xFD 1字节0x0F 1字节7字节 1字节1字节 2字节 1字节0xFF 0x03

(4) 产量数据上传: 下位机终端上传产量数据通过协调器, 并转发上位机.

帧头 帧长度 目标短地址 单片机ID 用户命令用户命令参数1用户命令参数2 历史产量 校验码1字节0xFD 1字节0x13 1字节7字节 1字节0x001字节 2字节 4字节1字节0x04 二进制数

(5) 接收确认: 上位机通过协调器下发信息给下位机, 告知产量数据已收到.

帧头 帧长度 目标短地址 单片机ID用户命令用户命令参数1 用户命令参数2 校验码1字节0xFD 1字节0x0E 1字节7字节 1字节0xFF 0x05 1字节0x00或0xFF 1字节1字节0x00

(6) 采集终止命令: 上位机通过协调器下发命令给计数终端, 通知停止采集.

帧头 帧长度 目标短地址 单片机ID用户命令用户命令参数1 用户命令参数2 校验码1字节0xFD 1字节0x0E 1字节7字节 1字节0xFF 0x08 1字节0x00 1字节1字节0x00

(7) 终止确认: 计数终端返回确认信息给协调器.

帧头 帧长度 目标短地址 单片机ID用户命令用户命令参数1 用户命令参数2 校验码1字节0xFD 1字节0x0F 1字节7字节 1字节0x00 0x09 1字节2字节 1字节0x00

在这个协议中, 目标短地址0xFF表示命令发送到网络中的计数器, 0x00表示给网络中的协调器发命令; 单片机ID是下位机终端中STC单片机的7字节ID; 用户命令参数用于传递采集间隔、数据传输成功或失败状态、工人编号和产品编号等信息.

2.2 数据采集、管理功能实现

数据采集功能需要在开启服务器前, 在配置文件中对串口通道进行配置, 启动后可根据下位机不同类型配置参数. 配置完成后进行探测操作, 服务器将探测到的节点信息全部接收并发送至客户端显示, 产量数据的采集也是依据探测到的节点而进行的. 当采集开始, 服务器就会在数据库中建立当天的产量表.

数据库管理是实现用户对产量进行分类统计和管理. 客户端与服务器的协议中规定了各种查询、统计条件, 用户可以根据条件选择符合自己需求的数据, 例如: 可以查询具体某一天某一员工对应的所有产品产量信息, 或某一员工对应的某一产品的产量信息.

3 服务器与客户端设计

3.1 服务器功能设计

在服务器设计中, 采用多线程思想, 共设计五个线程, 包括一个内部监听线程, 判断客户端是否连接,若出现异常则做出相应响应来处理; 两个外部监听线程, 分别监听客户端用户操作类型的指令和串口从终端获取的数据, 并分别进行数据解析和处理; 一个串口数据的处理与发送线程; 一个数据解析内部线程,将不同作用的数据分别发往数据库和客户端. 这种设计模式保证了串口、客户端、数据库的数据在服务器中不紊乱且互不干扰. 各线程工作交互模式如图2所示.

图2 服务器五线程数据交互结构图

3.2 客户端功能设计

客户端界面用JavaSE中的Swing组件编辑而成, 完成终端配置、探测、数据采集和保存等功能, 并将更新的数据实时显示出来. 另外其分界面分别完成数据统计、查询以及数据库管理等功能.

客户端完成与服务器通信和数据显示两项功能. 前者采用Socket通信, 专门设计一个采集线程, 用来实时接收数据. 后者为了减轻服务器的工作负荷并且能灵活显示所需数据, 允许服务器将数据筛选后以协议原格式发来, 在数据显示前完成解析. 为了处理异常发生引起的界面卡顿问题, 增加一个线程监听服务器, 及时反馈错误信息. 客户端线程设计如图3所示.

图3 客户端三线程结构图

客户端通过监测数据, 可以根据以下依据判断故障节点. 首先, 若采集时发现探测到的节点部分没有产量数据, 那么说明这些节点的设备没有工作或出现故障; 其次, 在采集过程中, 服务器每五分钟存储一次数据, 且数据不会覆盖, 一段时间内部分节点的产量没有更新, 或某一天结束后未达到预期产量, 管理员可以从数据库调出该节点的产量表, 找到出问题的时间点.

4 系统测试及结果

在本系统的开发实践中, 利用两台PC机分别作为服务器和客户端, 将用来做软件测试的模拟数据通过虚拟串口进行虚拟数据交互, 重点测试了数据解析的正确性以及数据库管理功能. 测试通过后搭建了硬件设备, 对实际工作状态和采集过程进行测试, 测试网络由18个下位机终端组成, 测试结果如图4所示.

图4 软件数据监测结果

5 结论

本文基于C/S模式和Java编程语言, 设计和实现了一款无线传感器网络通信工业产量信息在线监测和管理系统. 系统具备将数据实时采集、监测、保存、管理集于一体的功能. 系统的关键环节是数据接收和存储, 后台服务器和客户端软件都利用Java的多线程思想, 将数据的收发、解析分别设计为不同的线程,避免数据紊乱, 使得界面流畅, 用户操作方便. 本系统跨平台特点, 不受操作系统的限制, 安全性高, 可维护性好且安装简单.

[1] 唐昱佳. 基于物联网的能源管理系统设计[J]. 计算机应用与软件, 2011, 28(12): 161~164

[2] 朱 鹏. 基于TCP/IP 协议的工业控制网络远程数据通信网关的安全技术研究[D]. 昆明: 昆明理工大学硕士学位论文, 2013

[3] 唐明军, 潘建华. 基于ZigBee的电能无线抄表系统的设计[J]. 物联网技术, 2015, 5(11): 26~27

[4] 刘亚勇. 基于Java的远程在线监测系统[D]. 武汉: 武汉科技大学硕士学位论文, 2007

[5] 张 燕. 基于C/S和B/S混合模式的车间生产管理信息系统[D]. 成都: 四川大学硕士学位论文, 2005

[6] 徐小力, 宋宝华. 基于C/S和B/S结合的机电设备远程监测系统[J]. 微计算机信息, 2006, 22(4): 122~124

[7] 毛苏杭, 宋蕴璞. 基于工业网关的钢铁企业实时数据采集技术[J]. 物联网技术, 2015, 5(12): 10~12

[8] 彭 巍. 基于ZigBee的无线产量监控系统设计与实现[D]. 长沙: 湖南大学硕士学位论文, 2014

Software Design of Industrial Data On-line Monitoring System Based on C/S Java Model

TONG Yaonan, LIAO Xuewen, LI Hao, YANG Tuo
(College of Information and Communication Engineering, Hunan Institute of Science and Technology, Yueyang 414006, China)

Based on the C/S model and ZigBee network, a software system for industrial production information collection and management was designed by using Java programming language. The serial data communication protocol was designed, and the server and client software were designed by using five threads and three threads respectively. The system has the characteristics of cross platform, so it is not limited by operating system and with high security.

data acquisition, monitor, ZigBee, Java, C/S model

TP301

: A

: 1672-5298(2016)04-0031-05

2016-09-12

湖南省大学生研究性学习和创新性实验计划项目(湘教通[2015]269号)

童耀南(1977− ), 男, 湖南平江人, 博士, 湖南理工学院信息与通信工程学院副教授. 主要研究方向: 信号处理与物联网技术

廖学文(1995− ), 男, 陕西宝鸡人, 湖南理工学院信息与通信工程学院2013级本科生. 主要研究方向: 计算机软件技术

猜你喜欢
下位线程字节
No.8 字节跳动将推出独立出口电商APP
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
No.10 “字节跳动手机”要来了?
发射机房监控系统之下位机
简谈MC7字节码
浅谈linux多线程协作
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
CAN总线并发通信时下位机应用软件设计