索 引 号: | WC6307000-2020-073 | 主题分类: | 区政府委办局 |
发布机构: | 区生态环境局 | 发文日期: | 2020-07-01 |
名 称: | 关于加快推进本区加油站油气回收治理工作的通知 | ||
文 号: | 嘉环发[2020]73号 | 公开类型: | 主动公开 |
公开属性: | 全部公开 | 公开期限: | 长期公开 |
上海市嘉定区生态环境局文件
嘉环发〔2020〕73号
关于加快推进本区加油站
油气回收治理工作的通知
各相关加油站:
根据《上海市生态环境局、市经济和信息化委、市交通委关于进一步加强本市油气回收治理工作的通知》(沪环气﹝2019﹞234号)要求,为进一步规范油品储、运、销行业管理,加快推进本区加油站油气回收综合治理工作,现将有关工作要求通知如下:
一、工作目标
进一步加强本区加油站油气回收综合治理,提高油气回收治理水平,减少挥发性有机物排放,改善环境空气质量,力争到2020年底前完成年销售汽油量2000吨以上加油站油气回收在线监控设施安装及联网。
二、工作要求
年销售汽油量2000吨以上的加油站应安装油气回收在线监测设备,按照《加油站油气在线联网工作流程》(见附件一)且符合《加油站油气回收在线监控系统数据传输技术要求》(见附件二),与生态环境部门联网。
油气在线监控系统建设过程中,企业要做好防爆电气改造工作,落实防爆、防火等措施。
三、加强监管
各相关加油站要落实企业主体责任,加快推进油气回收治理设施和油气回收在线监控系统的建设,并加强日常运行和维护,应委托有资质的油气排放检测机构每半年开展一次油气回收环保检测,已完成油气回收在线监控系统的加油站自检频次可以延长至一年一次。各加油站应对油气回收设施开展日常巡检并对结果进行记录,台账记录应存档保存2年。
联系方式:局大气环境与辐射管理科 许嘉萍 39178620
附件:一、加油站油气在线联网工作流程
二、上海市加油站油气回收在线监控系统数据传输技术要求
上海市嘉定区生态环境局
2020年7月1日
附件一:
加油站油气在线联网工作流程
加油站首次完成安装油气在线监控系统后可按照程序办理环保联网。联网流程为:入网申请-受理审核-联网符合性审核-联网。
加油站向机动车环保业务受理窗口(徐汇区三江路55号边门)递交申请材料:(1)《油气在线监控系统入网申请书》(原件盖章,见附件1);(2)当年的《油气在线比对测试报告》(复印件盖章)。
机动车环保业务受理窗口审核申请材料后,申请材料齐全、符合要求的,出具《油气在线监控系统入网申请材料接收凭证》(见附件2);市环境监测中心依据《加油站油气回收在线监控系统数据传输技术要求》组织在5个工作日内完成对加油站油气在线系统联网符合性进行审查,通过审查的予以联网。如审查未通过,则要求企业限期整改。
加油站油气回收治理设施发生变更时可按照联网变更程序办理。联网变更流程为:变更申请-受理变更-联网。
加油站向机动车环保业务受理窗口递交《油气在线监控系统联网变更申请表》(原件盖章,见附件3);市环境监测中心对变更内容进行审核,通过审核后予以联网。
附件1:
油气在线监控系统联网申请书
单位名称:(公章)
加油站名称:
加油站地址:
成品油批准证书号:
联系人:
联系电话:
申请日期:
申请人自我承诺
(加油站企业名称)郑重声明并承诺:
一、 本企业所提供的一切资料及数据内容真实,并与填写的相关信息一致。
二、 本企业的油气在线监控系统按照规范要求运行、上传数据并接受生态环境部门监督检查。
加盖公章
年 月 日
表1 加油站企业基本情况
加油站名称 | |||
法定代表人 | 联系电话 | ||
成品油批准证书号 | |||
联系人 | 联系电话 | ||
所属成品油销售企业 | !中国石化!中国石油!中国海油!社会站 | ||
成立时间 | 最近改造时间 | ||
注册详细地址 | |||
注册区域 | |||
加油站详细地址 | |||
加油站所属区域 | |||
地下管路图 | !有!无 | ||
距最近民用建筑物距离(m) | |||
经营状态 | !正常!停业 | ||
入网条件 | !具备!不具备!整改后具备 |
表2 加油站基本情况
年吞吐量(t) | |||
汽油(t) | 柴油(t) | ||
罐容总量(t) | |||
汽油(t) | 柴油(t) | ||
罐体总量 | |||
汽油罐体数 | 汽油罐体品牌 | ||
柴油罐体数 | 柴油罐体品牌 | ||
加油机总数 | |||
汽油加油机数 | 汽油加油机品牌 | ||
柴油加油机数 | 柴油加油机品牌 | ||
加油枪总数 | |||
汽油加油枪数 | 汽油加油枪品牌 | ||
柴油加油枪数 | 柴油加油枪品牌 |
表3 油气回收基本情况
油气回收改造设计单位 | |||
油气回收改造施工单位 | |||
一阶段油气回收装置 | !有!无 | P/V阀 | !有!无 |
二阶段油气回收装置 | !有!无 | 汽油枪品牌 | |
真空泵品牌 | 油气回收方式 | !集中!分散 | |
后处理装置 | !有!无 | 后处理装置品牌 | |
后处理装置技术类型 | !吸附+冷凝!吸附!膜+冷凝!冷凝!膜处理 | ||
在线监控装置 | !有!无 | ||
在线监控装置品牌 | |||
在线监控装置型号 | |||
控制主机型号 | |||
油气流量控制器型号 | |||
油气流量传感器型号 | |||
油气浓度传感器型号 | |||
温度传感器型号 | |||
压力传感器型号 |
附件2
油气在线监控系统联网申请材料接收凭证
编号:2019-YQRW-001
序号 | 资料名称 | 份数 | 原/复印件 | 备注 | |||
1 | 油气在线监控系统入网申请书 | 1 | 原件 | ||||
2 | 油气在线比对测试报告 | 1 | 复印件 | ||||
资料签收 | |||||||
接收资料单位 | 资料提交单位 | ||||||
上海市环境监测中心 | |||||||
收件人 | 提交人 | ||||||
日期 | 日期 | ||||||
备注 | ★加油站须自备外网条件并确认具备入网条件。
|
附件3
油气在线监控系统联网
变更申请表
加油站名称 | |||
法定代表人 | 联系电话 | ||
成品油批准证书号 | |||
联系人 | 联系电话 | ||
变更申请 | |||
变更后内容 | 1、 汽油加油机!品牌!数量 2、 柴油加油机!品牌!数量 3、 汽油枪!品牌!数量 4、 柴油枪!品牌!数量 5、 在线监控装置!品牌!型号 !流量传感器型号 !压力传感器型号 !浓度传感器型号 !温度传感器型号 6、 后处理装置!品牌 !技术类型 | ||
备注 |
申请单位(盖公章):日期:
附件二:
上海市加油站油气回收在线监控系统数据传输技术要求
为贯彻《中华人民共和国环境保护法》,指导油气在线监控系统的建设,规范数据传输,保证各种污染物监控监测仪器设备、传输网络和环保部门应用软件系统之间的连通,制定本技术要求。
1 适用范围
本技术要求适用于加油站油气回收在线监控系统与监控中心之间的数据传输,规定了传输的过程及参数命令、交互命令和数据命令的格式,给出了代码定义。
本技术要求还规定了加油站油气回收在线监控仪器仪表和数据采集传输之间的数据传输格式,同时给出了代码定义。
2 规范性引用文件
本技术要求内容引用了下列文件或其中的条款。凡是不注明日期的引用文件,其有效版本适用于本技术要求。
GB 20952-2007 加油站大气污染物排放标准
HJ 212-2017 污染物在线监控(监测)系统数据传输标准
3 术语和定义
下述术语和定义适用于本技术要求。
3.1在线监控系统
在线监测加油站油气回收过程中的气液比以及油气回收系统的密闭性和管线液阻是否正常的系统,当发现异常时可提醒人员采取相应的措施,并能记录、存储、处理和传输监测数据。
3.2监控中心
安装在各级环保部门、通过传输网络与自动监控设备连接并对其发出查询和控制等指令的数据接收和数据处理系统,包括计算机及计算机软件等。
4 数据上传协议
4.1 数据传输方式
4.1.1技术选择
数据传输技术:标准的WebSocket通信技术。
数据安全技术:基于动态令牌的HmacSHA256加密的安全报文(密钥第三方保密)。消息内容采用Base64编码传输。采用HTTPS安全通道建立连接。
4.1.2网络需求
加油站在线监控系统通过公网和信息中心建立网络连接。为了确保网络稳定性,加油站在线监控系统可以采用3G/4G或有线网络方式接入网络并且确保网络稳定可靠。
4.1.3数据传输频率
由加油站在线监控系统定期向信息中心进行数据上传操作。在线监控系统上传A/L数据时,应同时上传加油开始时间、加油结束时间和数据上传时间;上传压力数据时,应同时上传压力数据的生成时间和上传时间;上传预警和报警数据时,应同时上传预警和报警数据的生成时间和上传时间。每次上传数据的时间间隔应不大于1h。在线监控系统应能以时间间隔应不大于30s的间隔采集环境数据,并按照2到10min左右的时间间隔打包上传环境数据。
4.1.4数据传输接口
数据上传接口:socket.io client。
4.2 身份令牌说明
在线监测系统与监控平台建立长连接之前需要获取身份令牌。在线监测系统拿到accessToken之后,在和服务端建立socket连接时,应带上参数(token)值为accessToken对应的值。
1) 令牌获取方式:
http(s)+POST
URL: http(s)://xxxx/eldf.portal-service/auth/equipmentLogin
2) 参数:
companyCode:企业代码
username :用户名
password :密码
3) 正常响应:
{"success":true,"errorCode":"","accessToken":"xxxxxxx"}
4) 失败响应:
{"success":false,"errorCode":"XXXX"}
errorCode对应表:
1001 : 企业代码不能为空
1002 :用户名不能为空
1003 :密码不能为空
2001 :用户不存在
2002 :密码不正确
4.3密钥说明
密钥由监控平台配置管理,每个加油站在线监测系统分配一个密钥。
4.4报文结构
4.4.1请求报文格式
请求报文数据定义:
序号 | 数据项 | 数据格式 | 说明 |
1 | message | Json | |
1.1 | messageId | Varchar | 消息ID,32位UUID+年月日时分秒毫秒 不能为空,采用Base64编码 |
1.2 | busObject | Varchar | 业务报文(数据需转化为base64编码) |
2 | hmac | Varchar | 动态令牌(根据message对应的json字符串计算) |
3 | time | Time | 系统当前时间(年月日时分yyyy-MM-dd HH:mm) |
4 | version | Varchar | 通信协议版本(注:1为当前版本) |
报文数据定义示例(JSON字符串):
{
"message": {
"messageId": "xxx",
"busObject": "业务json数据"
},
"hmac": "",
"time": "yyyy-MM-dd HH:mm",
"version": ""
}
4.4.2返回报文格式
返回数据用于通知上传操作的执行结果,并根据业务需要将控制数据和升级数据返回给加油站在线监控系统。
返回数据定义(数据格式JSON):
序号 | 数据项 | 数据格式 | 说明 |
1 | message | Json | |
1.1 | messageId | Varchar | 消息ID,对应输入的messageId,采用base64编码 |
1.2 | busObject | Varchar | 业务报文(数据需转化为base64编码) |
2 | success | Boolean | true/false |
3 | hmac | Varchar | 动态令牌 |
4 | errorCode | Varchar | 详见下表错误消息定义 |
5 | errorMessage | Varchar | 详见下表错误消息定义 |
6 | time | Varchar | 系统当前时间(年月日时分)yyyy-MM-dd HH:mm |
{
"message": {
"messageId": "xxx",
"busObject": "{}",
},
"success": true,
"hmac": "",
"errorCode": "",
"errorMessage":""
"time": "yyyy-MM-dd HH:mm"
}
错误消息定义:
错误类型 | 错误代码errorCode | 错误说明errorMessage | 说明 |
系统错误消息 | SESSION_TIMEOUT | 会话超时,需要重新获取令牌 | |
SYSTEM_ERROR | 系统异常 | ||
VERSION_ERROR | 通讯协议版本错误 | ||
HMAC_ERROR | HMAC校验错误 | ||
DECODE_ERROR | base64解码错 | ||
TIME_ERROR | 时钟异常 | 需请求方更新系统时间后重新发送 | |
DATA_ERROR | 业务数据解析错误 | ||
DATA_REPETITION | 业务数据已经存在 |
4.5接口定义
接口列表:
序号 | 接口名称 | 说明 |
1 | GSConfigurationDataEvent | 加油站在线监测系统配置数据上传 |
2 | GSEnvironmentDataEvent | 加油站环境数据上传 |
3 | GSRecycleDataEvent | 加油站油气回收数据上传 |
4 | GSAlarmDataEvent | 加油站报警数据上传 |
4.6业务报文
业务报文分为4类,分别为:在线监测系统配置数据、加油枪油气回收数据、加油站环境数据、报警数据。
4.6.1配置数据
1)上传规则:每当修改参数配置时,实时上传当前参数配置;每日零时后,在线监测系统统计当前参数配置并上传预报警数据。
2)配置数据明细:
序号 | 字段名 | 配置明细 | 数据格式 | 示例值(均不含单位) |
1 | monitorTime | 监测时间 | Time | 2017-6-13 5:15:22 |
2 | qybyjxxz | 气液比预警下限值% | NUMBER(4,2) | 0.90(即90%) |
3 | qybyjsxz | 气液比预警上限值% | NUMBER(4,2) | 1.30(即130%) |
4 | yjcsbl | 预警次数比例% | NUMBER(4,2) | 0.25(即25%) |
5 | qybybjzhsj | 气液比预报警转换时间d | NUMBER(2) | 7(d) |
6 | hjsjcy | 环境数据采样间隔s | NUMBER(4) | 30(s) |
7 | zxyl | PV阀正向压力预警限值Pa | NUMBER(4) | 1500(Pa) |
8 | fxyl | PV阀负向压力预警限值Pa | NUMBER(4) | -1500(Pa) |
9 | ylzhsj | PV阀压力预报警转换时间d | NUMBER(2) | 5(d) |
10 | gyyjsx | 罐压预警上限值Pa | NUMBER(3) | 50(Pa) |
11 | gyyjxx | 罐压预警下限值Pa | NUMBER(3) | -50(Pa) |
12 | gyyjsj | 罐压预警时间h | NUMBER(2) | 12(h) |
13 | gybjsj | 罐压报警时间d | NUMBER(2) | 5(d) |
14 | yqnd | 油气浓度报警阈值% | NUMBER(4,2) | 0.4(即40%) |
3)数据补发:
在线监测系统需对每条数据的上传状态进行监控,某条数据未上传或未成功上传(即未收到监管平台发送的接收成功的信息),均需进行数据补发;
数据补发仍使用本接口。
补发数据的monitorTime为数据产生时的时间。
4)报文数据定义示例(JSON字符串):
{
“message”: {
“messageId”: “xxx”,
“busObject”: {
“monitorTime”: “2017-6-13 15:15:22”,
“qybyjxxz”: 0.85,
“qybyjsxz”: 1.35,
“yjcsbl”: 0.25,
“qybybjzhsj”: 5,
“hjsjcy”: 30,
“zxyl”: 1500,
“fxyl”: -1500,
“ylzhsj”: 5,
“gyyjsx”: 50,
“gyyjxx”: -50,
“gyyjsj”: 12,
“gybjsj”: 5,
“yqnd”: 0.4
}
},
“hmac”: “”,
“time”: “2017-6-13 15:15”,
“version”: “1”
}
4.6.2加油枪数据
1)上传规则:当有大于等于15L的加油事件产生时,监测系统实时上传加油数据。
2)数据内容:油气数据记录的是每次加油过程中产生的相关数据,数据内容如下表:
元素名称 | 数据格式 | 数据描述 | 数据示例 |
monitorTime | Time | 监测时间yyyy-MM-dd HH:mm:ss | 2017-6-13 15:15:22 |
jyjId | Varchar2(2) | 加油机标识,1~99 | 1 |
jyqId | Varchar2(2) | 加油枪标识,1~99 | 2 |
al | NUMBER(4,2) | 气液比 | 0.86(即86%) |
qll | NUMBER(6,2) | 油气流量(L) | 16.32 |
yll | NUMBER(6,2) | 燃油流量(L) | 18.54 |
其中:每个加油站所有的加油枪顺序编号,不重复,即10把加油枪编号为1-10。
3)数据补发:
在线监测系统需对每条数据的上传状态进行监控,某条数据未上传或未成功上传(即未收到监管平台发送的接收成功的信息),均需进行数据补发;
数据补发仍使用本接口。
补发数据的monitorTime为数据产生时的时间。
4)报文数据定义示例(JSON字符串):
如果不存在某项数据则在数据域中填写空字符串;
报文中,每个{}代表每一次加油数据,内容如下:
{
"message": {
"messageId": "xxx",
"busObject": [
{
"monitorTime": "2017-05-25 15:15:22",
"jyjId": "",
"jyqId": "",
"al": 1.23,
"qll": 22332.23,
"yll": 121.32
},
{
"monitorTime": "2017-05-25 15:15:22",
"jyjId": "",
"jyqId": "",
"al": 1232.23,
"qll": 22332.23,
"yll": 121.32
}
]
},
"hmac": "",
"time": "2017-6-1315: 15",
"version": "1"
}
4.6.3环境数据
环境数据的采集时间间隔应不大于30s。
1)上传规则:按照5min的时间间隔,打包上传环境数据。
2)环境数据内容如下表:
元素名称 | 数据格式 | 是否可空 | 数据描述 | 数据示例 |
monitorTime | Time | 否 | 监测时间yyyy-MM-dd HH:mm:ss | 2017-6-13 15:15:22 |
ygyl | Number(4) | 否 | 油罐压力,单位Pa | 1000 |
yzyl | Number(4) | 否 | 液阻压力,单位Pa | 1200 |
xnd | Number(5,2) | 否 | 卸油区油气浓度,单位% | 100% |
ywd | Number(3,1) | 否 | 油罐温度,单位℃ | 25.1 |
3)数据补发:
在线监测系统需对每条数据的上传状态进行监控,某条数据未上传或未成功上传(即未收到监管平台发送的接收成功的信息),均需进行数据补发;
数据补发仍使用本接口。
补发数据的monitorTime为数据产生时的时间。
4)报文数据定义示例(JSON字符串):
如果不存在某项数据则在数据域中填写空字符串;
报文中,每个{}代表每一次采集的环境信息,内容如下:
{
“message”: {
“messageId”: “xxx”,
“busObject”: [
{
“monitorTime”: “2017-05-25 15:15:22”,
“ygyl”: 122,
“yzyl”: 122.32,
“xnd”: 1212.23,
“ywd”: 123.22
}
]
},
“hmac”: “”,
“time”: “2017-6-1315: 15”,
“version”: “1”
}
4.6.4报警数据
1)上传规则:每日零时后,上位机(在线监测系统)统计前一日预报警结果并上传预报警数据。
2)报警标识:使用四个数值标识四种状态: 0表示正常,1表示预警,2表示报警,N表示无效。
3)报警数据内容如下表:
元素名称 | 数据格式 | 是否可空 | 数据描述 |
monitorTime | Time | 否 | 监测时间yyyy-MM-dd HH:mm:ss |
al | Varchar2(500) | 否 | 气液比(0、1、2、N) |
mb | Varchar2(1) | 否 | 密闭性(0、1、2、N) |
yz | Varchar2(1) | 否 | 液阻(0、1、2、N) |
ygyl | Varchar2(1) | 否 | 油罐压力(0、1、2、N) |
clzznd | Varchar2(1) | 否 | 处理装置排放浓度(0、1、2、N) |
pv | Varchar2(1) | 否 | P/V阀状态(0、1、2、N) |
clzzqd | Varchar2(1) | 否 | 处理装置启动状态(0、1、2、N) |
clzztz | Varchar2(1) | 否 | 处理装置停止状态(0、1、2、N) |
xyhqg | Varchar2(1) | 否 | 卸油回气管状态(0、1、2、N) |
气液比字段,在上传报警状态的同时还需要上传该报警状态所属的加油枪号。油枪号和预报警状态的上传数据规则为:
加油枪号 + 冒号 + 预报警状态 + 分号;
范例:
假设加油站共有8把枪。当天统计完预报警状态的结果是,1号枪报警、2号枪预警、3号枪报警,其他枪正常。AL字段的内容应该为:
< AL>1:2;2:1;3:2;4:0;5:0;6:0;7:0;8:0;
4)数据补发:
在线监测系统需对每条数据的上传状态进行监控,某条数据未上传或未成功上传(即未收到监管平台发送的接收成功的信息),均需进行数据补发;
数据补发仍使用本接口。
补发数据的monitorTime为数据产生时的时间。
5)报文示例:
{
"message": {
"messageId": "xxx",
"busObject": {
"monitorTime": "2017-05-25 15:15:22",
"al": "1:2;2:1;3:2;4:0;5:0;6:0;7:0;8:0;",
"mb": "0",
"yz": "1",
"ygyl": "1",
" clzznd": "1",
"pv": "0",
" clzzqd": "0",
" clzztz": "0",
" xyhqg": "0"
}
},
"hmac": "",
"time": "2017-6-1315: 15",
"version": "1"
}
4.7示例
4.7.1Socket.io调用示例
以JS为例仅供参考(其他语言均采用标准即可)
4.7.2数据示例
以“GSConfigurationDataEvent”为例(由于字段比较多在此省略了一些字段)
报文的明文结构如下(整个结构以字符串传输):
"{\"message\":{\"messageId\":\"47333c58c62c4d9fb6e82aa01b0e15f820170******61301369\",\"busObject\":{\"monitorTime\":\"2017-6-16\",\"qybyjxxz\":0.85,\"qybyjsxz\":1.35,\"yjcsbl\":0.25}},\"hmac\":\"\",\"time\":\"yyyy-MM-dd HH:mm\",\"version\":\"1\"}"
以上结构中的hmac值在messageId字段和busObject字段所对应的值进行Base64编码后,根据整个message对应的json字符串计算出动态令牌
message对应结构Base64编码后:
"{\"messageId\":\"NDczMzNjNThjNjJjNGQ5ZmI2ZTgyYWEwMWIwZTE1ZjgyMDE3MDYxNjE2MTMwMTM2OQ==\",\"busObject\":\"eyJtb25pdG9yVGltZSI6IjIwMTctNi0xNiIsInF5YnlqeHh6IjowLjg1LCJxeWJ5anN4eiI6MS4zNSwieWpjc2JsIjowLjI1fQ==\"}"
根据如上字符串计算出的hmac令牌为(密钥:aEUjjsauUjK93):
94af2dac094880b9ebf2412fab4efbb12052bc7a931eef15046d86e1ac133a89
最终发送到服务器端的json字符串为:
"{\"message\":{\"messageId\":\"NDczMzNjNThjNjJjNGQ5ZmI2ZTgyYWEwMWIwZTE1ZjgyMDE3MDYxNjE2MTMwMTM2OQ==\",\"busObject\":\"eyJtb25pdG9yVGltZSI6IjIwMTctNi0xNiIsInF5YnlqeHh6IjowLjg1LCJxeWJ5anN4eiI6MS4zNSwieWpjc2JsIjowLjI1fQ==\"},\"hmac\":\"94af2dac094880b9ebf2412fab4efbb12052bc7a931eef15046d86e1ac133a89\",\"time\":\"yyyy-MM-dd HH:mm\",\"version\":\"1\"}"
以下为其他测试字符串的hmac计算结果
密钥:aEUjjsauUjK93
消息内容:hello
hmac令牌:9f6e44b830fdab6a2a3f034be281286bc7f8e344720147fb16a3d4f5f9157ccf