Modbus Tcp 在排污总量控制系统上的应用--控制网



Modbus Tcp 在排污总量控制系统上的应用
企业: 日期:2016-02-19
领域:现场总线 点击数:1279

目前,污染物总量控制是以环境质量目标为基本依据,政府环保管理机构以行政手段对区域内各污染源的污染物或重点污染物的排放总量实施控制。而随着排放污染物的增加和不断变化,迫切需要通过工业信息化手段来解决污染物的总量控制。

排污总量控制系统采集企业各排污口各类监测数据,通过设置总量控制指标,为总量减排指标的落实提供科学依据,实现对工业企业重点污染排放物的浓度及总量的双控制,为巩固和落实总量减排工作成果提供了科学的方法。

1 系统概述

排污总量控制系统是用于对工业企业主要污染物的排放数据进行实时采集、监视、自动控制和管理的一套应用管理系统。系统由触控一体机、数据采集控制器、在线监控应用软件组成。系统应用示意图如图1所示。

系统应用过程中包含定量、监视、关阀、开阀等环节。

(1)定量:对企业废水排放总量和污染物(COD或氨氮等)排放总量进行设置等。

(2)监视:实时获取企业污染物的排放总量数据和阀门运行状态,在接近总排放量限额时(如90%),进行报警。

(3)关阀:企业的实际排污量达到总排放量限额时,自动下发关阀指令关闭电动阀门。

(4)开阀:对排污阀门被关闭的企业,在购买排污量后,再重新设置并且导入排污量后,自动下发开阀指令开启电动阀门。

1.JPG

图1 系统应用示意图

2 系统功能

排污总量控制系统在线监控应用软件界面如图2所示。系统包括以下功能:

(1)设置系统排放量:设置排放总量信息,并且存储到数据采集控制器中,作为污染物排放量的上限指标。

(2)实时监视:以文本和图像形式查看流量计数据信息(瞬时流量、累计流量)、阀门实时状态信息。

(3)实时数据查看:查看流量计、阀门实时数据信息。

(4)历史数据查看:查询系统数据库中已保存的排放量历史数据信息。

(5)报警提示功能:当总量超过允许总量的90%、100%时,系统会进行分级别预警,可直接启动报警,并保存报警信息记录,启动关闭阀门操作。

(6)自动阀门控制:系统检测到余量排放完时,自动关阀。重新购买和设定排放量后,自动开阀。

(7)日志信息查询:系统可查询系统中指定时间内的操作日志信息。

(8)报警信息查询:系统可查询系统中指定时间内的报警信息。

2.jpg

图2 排污总量控制系统界面

3 Modbus Tcp 在系统中的应用

Modbus是由Modicon在1979年发明的,是全球第一个真正用于工业现场的总线协议。1996年施耐德公司推出了基于以太网TCP/IP的Modbus TCP协议,Modbus TCP是一个请求/应答协议,通过功能码与寄存器地址进行数据读写操作。Modbus在2004年成为我国的国家标准。

在排污总量控制系统中,在线监控应用软件与数据采集控制器的通信功能都是应用Modbus TCP来实现的。Modbus TCP中共包括13类功能码,本系统中用到了其中5种功能码,如表1所示。

表1 Modus TCP5种功能码

3.JPG

在实际应用中,数据采集控制器作为Modbus TCP Server,在线监控应用软件作为Modbus TCP Client,在线监控应用软件先要通过Socket对象和502端口连接数据采集控制器,然后根据功能需要向Modbus TCP Server发送构造字节数组进行寄存器的读写操作。

(1)设置系统排放量:设置排放总量信息,并且存储到数据采集控制器中。此处首先读取数据采集控制器中存储的排放总量信息,然后对其进行设置,最后将新数值写入保持寄存器,需要使用的Modbus TCP的功能码为3和16。读取保持寄存器的主要字节构造代码如下:

List sendMessage = new List(255);

sendMessage.AddRange(GetBytes(this.NextDataIndex()));//1~2位 标识位

sendMessage.AddRange(new byte[] { 0, 0 });//3~4位 modbus标识

sendMessage.AddRange(GetBytes((short)6));//5~6位 后续byte数量

sendMessage.Add(0);//7位 默认为0

sendMessage.Add((byte)3);//8位 读保持寄存器功能码

sendMessage.AddRange(GetBytes((short)startAddress));//9~10位 读起始地址

sendMessage.AddRange(GetBytes((short)registerCount));//11~12位 读取的寄存器数量

4.jpg

图3 设置系统排放量界面

(2)实时监视:获取流量计数据信息(瞬时流量、累计流量)、阀门实时状态信息,需要使用的Modbus TCP的功能码为4和2。读取输入状态的主要字节构造代码如下:

List sendMessage = new List(255);

sendMessage.AddRange ( vt.GetBytes ( this.NextDataIndex()));//1~2位 标识位

sendMessage.AddRange(new byte[] { 0, 0 });//3~4位 modbus标识

sendMessage.AddRange(vt.GetBytes((short)6));//5~6位 后续byte数量

sendMessage.Add(0);//7位 默认为0

sendMessage.Add((byte)2);//8位 读输入状态功能码

sendMessage.AddRange(vt.GetBytes((short)startAddress));//9~10位 读起始地址

sendMessage.AddRange(vt.GetBytes((short)registerCount));//11~12位 读取的寄存器数量

5.jpg

图4 实时监视界面

(3)自动阀门控制:系统检测到累计排放量达到限值时,自动关阀。购买排放量并且导入后,自动开阀。并且显示当前阀门状态。需要使用的Modbus TCP的功能码为5。写入线圈状态的主要字节构造代码如下:

List sendMessage = new List(255);

sendMessage.AddRange(GetBytes(this.NextDataIndex()));//1~2位 标识位

sendMessage.AddRange(new byte[] { 0, 0 });//3~4位 Modbus标识

sendMessage.AddRange(GetBytes((short)6));//5~6位 后续byte数量

sendMessage.Add(0);//7位 默认为0

sendMessage.Add((byte)5);//8位 写状态位功能码

sendMessage.AddRange(GetBytes((short)startAddress));//9~10位 写入地址if (ceilStatus)

{

sendMessage.AddRange(BitConverter.GetBytes((short)255));//11~12位 写入状态位on

}

else

{

sendMessage.AddRange(dt.GetBytes((short)0));//11~12位 写入状态位off

}

7.jpg6.jpg

图5 阀门状态界面

4 应用情况

目前,排污总量控制系统已经在工业现场进行了实验应用,对污水实时和累计排放总量进行了数据监视,对排放总量接近存储排污量限值时进行报警,当排放总量达到存储排污量限值时自动关闭电动阀门停止排污。

5 总结

基于Modbus TCP实现的排污总量控制系统,实现了读取和写入数据采集控制器中相关寄存器中的数据,从而实现工业现场排污数据的读取和阀门状态的监视与控制,目前主流的数据采集控制器均支持标准的Modbs TCP通讯协议,所以本系统具有广泛的现场适用性。通过系统的成功部署与运行,有效地实现了对工业企业排放污染物的浓度及总量的双控制,在实际应用中还可以将累计排污数据发送到环保部门的在线监测平台,使环保部门清晰了解每个工业企业的污染物排放情况,从而为环境治理以及环保执法提供了有力的保障。

参考文献:

[1] 张力军等. 主要污染物总量减排管理实用手册[M].中国环境科学出版社,2008.

[2] 王琴. 污染源总量控制实施[J]. 能源环境保护,2013, 27(2): 61- 64.

[3] 耿元一. Modbus TCP国际领先 工业以太网前景看好[J]. 机电一体化,2005 (4): 15.

[4] 邬书金等. 基于Modbus TCP协议实现PC机与PLC的串行通信[J]. 可编程控制器与工厂自动化,2009(9): 63 - 64.

作者简介

冯皓晨(1996-),男,黑龙江大庆人,现就读于电子科技大学自动化专业。

摘自《自动化博览》2016年2月刊

 

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: