基于MODBUS 协议的燃气压力控制系统

2015-12-17 05:37许一帆王力生贾廷纲徐志明
电脑知识与技术 2015年28期

许一帆 王力生 贾廷纲 徐志明

摘要:该文实现了一套燃气压力控制系统,主要设备包括五台智能调压器和一台上位机,其中每台智能调压器通过串口和上位机相连接。本系统通过一台上位机对五台调压器进行统一控制管理,为客户提供了一个高效整合的解决方案。具体地,本系统利用MODBUS通信协议,实现了调压器和上位机之间的通信,并且用户可以远程对其进行访问控制,即时地查询和控制调压器的状态。

关键词:智能调压器;串口服务器; MODBUS协议

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)27-0197-03

Abstract: In this paper, it mainly implements a gas pressure controlling system, containing of five intelligent regulators and one host computer, in which each intelligent regulator connects with the host computer via a port. This system provides our customers with an efficient integrative solutions that realizes unified controlling management of five regulators by one host computer. Specifically, this system uses MODBUS communication protocol to realize the communication between each regulator and host computer. Additionally, users can remote access control, and query or control the state of regulators on time.

Key words: Intelligent regulators; Serial port server; MODBUS communication protocol

本課题来源于某燃气设备公司的一个项目,首先先对该项目进行简要的介绍。该燃气公司目前拥有五台智能调压器,如图1所示。该调压器拥有五种功能,分别是流量测量、本地或远程出口压力设定、流量限制、远程监控和终端用户管理。它的优点是功能多,且只需要一个电源。

每台智能调压器通过串口与上位机通讯,现在需要实现了一个高效整合解决方案,通过一台上位机对五台调压器的统一控制管理,并且用户可以远程对其进行访问控制,即时地查询和控制调压器的状态。

1 方案综述

1.1 硬件实现方案

由于每台智能调压器都是通过串口和上位机一对一连接,而上位机只有一个串口,所以想要用一台上位机实现对五台设备的集体控制,首先要解决硬件连接上的问题。

我们的解决方案是使用一个串口服务器[1]。串口联网服务器让传统的RS-232/422/485设备立即联网,利用基于TCP/IP的串口数据流传输的实现来控制管理[2]。串口服务器拥有多个串口,并且通过以太网与上位机连接,在上位机上虚拟多个串口,实现了一带多的功能。

本课题所使用的串口服务器可以同时和八台设备连接通信,很好地解决了硬件上的问题。

1.2 软件实现方案

硬件的问题通过串口服务器比较容易地解决了,下面重点在于软件上的实现。

首先,需要在调压器和上位机间建立通信,由于通过串口服务器,上位机具备了多个虚拟串口,所以可以直接使用传统的一对一通讯协议。在本系统中,我们使用MODBUS通讯协议中的命令3,命令6和命令16,来实现上位机对调压器的读多个寄存器,写单个寄存器和写多个寄存器的功能。

其次,为了实现多个用户远程的访问控制调压器,我们使用SQL SERVER 2008数据库作为中间媒介,现场的上位机通过串口服务器实时采集各个调压阀的状态,并存入数据库中, 而用户可以使用我们提供的应用程序在任何地方访问数据库,读取数据,从而远程监测燃气压力控制系统的状态。同理,远程用户可以将控制命令写入数据库,而现场上位机将这些命令从数据库读出,并转发给各个调压器。

最后,根据权限的高低依次设计Admin、Controller、Observer三种用户角色,所有远程用户必须使用账户密码进行登录,根据不同的权限进行不同的操作,这样可以保证系统的安全性。

2 MODBUS协议简介

MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信[3]。MODBUS协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS协议映射能够在应用数据单元(ADU)上引入一些附加域,如图2所示。

在本系统中,功能码代表了上位机向调压器指示的操作类型。根据需求,我们使用到了功能码3,6和16,下文将简单介绍这三种功能码。

2.1功能码3

功能码3用于读取寄存器连续快的内容,上位机通过这条命令,结合地址表,采集调压器当前状态。功能码3的请求报文,如图3所示。

2.2 功能码6

功能码6将某个值写入远程设备的单个寄存器中,上位机通过这条命令,结合地址表,设定调压器的状态。在本系统中,我们并未直接实现功能码6,而是将功能码6作为功能码16的一种特殊情况。

2.3 功能码16

功能码16用于将多个值写入远程设备的连续寄存器块中,上位机通过这条命令,结合地址表,连续设定调压器的多个状态。特别地,将寄存器数量设为1,即可作为功能码6的实现,用于设定单个状态值。功能码16的请求报文,如图4所示。

3 上位机控制程序

上位机控制程序是在现场的上位机的一个进程,由它对整个系统进行实时的控制。主要有以下两个功能:

1)运行时不断更新调压器监测数据到数据库中,供远程用户从数据库中读取。

2)从数据库的命令表项里读取远程用户命令并执行。

上位机控制程序使用定时器的方式,每5秒调用已实现并封装的MODBUS协议的接口,采集各个调压器的状态,并且使用ADO.NET[4]将当前状态更新到数据库的CURRENT_STATUS表,如表1所示。这张表里永远只有一条数据,这样远程用户通过不断的读取这张表里的第一行数据,就可以实时监控系统状态。

其次,上位机控制程序使用ADO.NET从数据库中的COMMAND_TABLE表中读取远程用户的命令,如表2所示。上位机控制程序通过表中DONE字段判断这条命令是否已执行,对于未执行命令,上位机程序调用MODBUS库接口,根据命令类型,调压器编号去设定调压器状态。

4 数据库表项和用户角色

4.1 数据库表项

在本系统中,数据库用来实现远程用户对调压器的监测和间接控制以及存放历史数据。在数据库中设置了四张表,分别是:

1) 历史信息表:用于记录实时采集的系统数据,采用月表的形式,在每月固定时间新建一张。

2) 当前信息表:实时记录当前调压器的状态。

3) 命令表:用于特定权限用户写入命令,上位机控制程序从中读取命令并执行。

4) 用户表:admin用户使用,记录用户信息,每注册一个新用户增加一个表项。

历史信息表和当前信息表都只提供给远程用户读取功能,而由上位机控制程序更新(写入)。由于有五台智能调压器,每台调压器都拥有各自独立的历史信息表和当前信息表。

4.2 用户角色

根据安全性的需要,用户分为以下三种:

1) Admin用户:拥有最高权限,主要用于管理其他用户。可以访问数据库中所有表,只有admin能访问用户表。

2)Controller用户:既可以查看历史信息和当前状态,即读取数据库中五台设备的历史信息表和当前信息表,也可以写控制命令到命令表,提供给上位机控制程序执行,对调压器进行远程控制。

3)Observer用户:权限最低,作为观察用户,只能访问历史信息表和当前信息表,不能访问命令表,即不能对调压器进行控制[5]。

5 结论

本文实现了一个高效整合的燃气压力控制系统,硬件上使用串口服务器扩展硬件上位机的串口,实现一带多的功能。通讯上,使用MODBUS通讯协议,实现了协议中的功能码3,功能码6和功能码16。使用SQL SERVER 2008数据库作为中间媒介,实现了远程监测和控制的功能。安全性上,根据权限的高低依次设计Admin、Controller、Observer三种用户角色,保证了控制系统的安全性。

参考文献:

[1] 董小吉. 利用NPORT串口服务器组网解决方案[J]. 治淮, 2006(1):41-42.

[2] 王双庆, 邢建春, 王平,等. 基于NPort串口服务器的人防工程智能设备集成[J]. 工业控制计算机, 2008(8):8-10.

[3] 潘洪跃. 基于MODBUS协议通信的设计与实现[J]. 计量技術, 2002(4):35-36.

[4] 李哲, 许树勤, 李占青. 数据库的选择及ADO技术的应用[J]. 机械工程与自动化, 2004(3):22-24.

[5] 罗运模. SQL Server数据库系统基础[M].北京:高等教育出版社, 2002.