吴晓燕 王飞 吴海坤
【摘要】本文介绍的是数字粮库信息化软件系统的智能通风模块,系统建设了一个综合性多功能的粮库信息化管理网络平台。平台系统基于B/S结构,实现在线业务处理、信息发布、智能控制的目的。其中通风模块的通风状态检测,通过串口发送指令控制通风设备,接收串口指令显示通风设备状态。系统在Java程序中使用comm.jar开发包编程实现串口通信。
【关键词】智能通风;状态监控;Java串口通信
引言
Java由于具有开放性、平台无关性和面向对象等特性,使之成为一个理想的软件开发平台[1]。因此智能通风[2]模块与下位机的通信方式选择RS232串口通信。本文使用Java开发基于B/S结构的智能通风状态监控串口通信程序,具有很强的实用意义。
1.智能通风结构模式
智能通风模块的物理结构为B/S(Browser/Server)模式,即浏览器/服务器模式,用户可联网通过Web浏览器访问系统,连接服务器对各通风设备进行监控维护。
服务器通过串口与通风设备进行通信,其流程如图1所示。进入页面,发送状态查询数据帧查询通风设备状态。若超过T0时间则提示响应失败。在T0时间内设备有响应则分析返回数据帧显示各通风设备的状态。用户点击通风设备图标,发送操作数据帧,在T0时间内通风设备进行响应,并返回数据。如果通风设备操作成功则提示操作成功,否则提示操作失败。若超过T0时间则提示响应失败。
图1 程序流程图
2.通风设备通信协议
智能通风通信协议[3]以帧为基本单元传输的,每帧由帧头、装置地址、报文命令码、报文长度、正文、累加和及结束符等组成。每个域由一定字节组成。其中读写寄存器的通信协议采用Modbus协议。其命令帧格式如图2所示。
图2 读写寄存器帧数据格式
3.智能通风设备监控
智能通风设备监控模块如图 3所示,通过选择仓号显示该仓号通风设备的状态,通风设备有通风窗、轴流风机、离心风机和空调等。点击图中通风设备图标可控制设备的开关。
4.Java串口通信技术实现
Sun的J2SE没有直接提供串行通讯协议的开发包,而是以独立的jar包形式发布的comm.jar[4],称之为Java(tm)Communications API,是J2SE的标准扩展。提供对RS-232串行端口通讯的支持。
Java读写串口过程主要是调用Javax.comm包中的comm API函数。在Javax.comm包中串口的输入输出操作是数据流形式,在初始化串口波特率和数据位的同时,将输入输出流和该串口建立一个映射,串口的输入输出操作就直接反映在输入流和输出流上。通过CommPort类的getInputStream()和getOutputStream()方法即可分别取得端口的输入流和输出流。
串口操作主要包括初始化串口、读写串口和关闭串口等操作。初始化串口操作SB.Initialize()打开串口并配置串口,如果初始化成功返回1,否则返回-1。打开串口需确定串口号和打开方式。
首先使用javax.comm. CommPortIdentifier类确定是否有可用的通信端口以及为IO操作打开通信端口。其中getPortIdentifier 对象得到系统端口列表,open方法可以返回一个CommPort对象。open方法有两个参数,第一个是String,通常设置为应用程序的名字。第二个参数是时间,即开启端口超时的毫秒数。当端口被另外的应用程序占用时,将抛出PortInUseException异常。
接着使用setSerialPortParams方法配制串口静态成员变量波特率、数据位、数据停止位和奇偶校验。
读写操作使用SB.WritePort(SendMsg)和RevMsg=SB.ReadPortX()函数中使用in=serialPort.getInputStream()从端口读取数据以及out=serial-
Port.getOutputStream()往端口写数据。
5.结束语
本文介绍了智能化粮库系统中的通风模块,模块通过发送接收串口通信数据包进行监控通风设备状态以及控制通风设备开关闭合。系统使用Java的Comm.jar开发包实现串口通信比较简单,可移植性好,具有一定的实用性。
参考文献
[1]周海涛,高兴锁,江晓峰.基于java数据采集串口通信的设计和实现[J].微计算机信息,2006(4):141-142.
[2]陈德发,秦维平,马飞.智能通风技术在高大平房仓中的应用[J].粮油仓储科技通讯,2014,30(1):29-31.
[3]钱伟青,张茂青,宦洪才,彭芳.基于Modbus协议的智能通风系统[J].电气时代,2006(8):110-112.
[4]伍祥生,王克宏.javax.comm API规范及其功能[J].微型机与应用,1999,18(6):38-40.
作者简介:吴晓燕(1988—),女,安徽安庆人,硕士,从事Java开发和雷达监控设计工作。