APP下载

基于EPICS高温制氢控制系统的设计与实现

2019-10-25李丹清韩利峰陈志军李国辉陈永忠

仪器仪表用户 2019年11期
关键词:历史数据制氢高温

李丹清,韩利峰,陈志军,李国辉,陈永忠

(中国科学院 上海应用物理研究所 系统工程部,上海 201800)

0 引言

图1 EPICS控制系统架构Fig.1 EPICS Control system architecture

图2 IOC软件结构Fig.2 IOC Software structure

传统上的化石能源包括天然气、石油以及煤炭等,这些能源在人类文明发展的过程中起到了巨大的推动作用,然而这些能源的不可再生性以及对于环境的巨大污染导致人们迫切地去寻找替代能源。这些替代能源包括核能与可再生能源等清洁能源,清洁能源的发展能够保障能源安全,应对气候变化,实现可持续发展。其中氢气作为新兴的二次能源的载体,具有储能丰富、热值高、绝对清洁以及可运输等优势。当今世界各国越来越重视氢能产业的发展[1-3],并制定了相关发展规划,将氢能和燃料电池确定为新一代能源技术发展的重要方向之一。在中国,国家发展改革委、国家能源局在《能源技术革命创新行动计划2016-2030 年》[4]规划了能源技术革命重点创新行动路线图,将“氢能与燃料电池技术创新”列为15 项具体重点研究任务之一,首次将氢能产业提升至国家能源发展战略高度[5]。氢能产业的发展,能够带动新能源汽车以及高端装备制造业的快速发展。传统上最为广泛的制氢方法是电解制氢,然而传统的电解制氢方法在能源、工艺以及设备方面成本过高[6],这严重地阻碍了氢能产业的发展。

中国科学院20KW 高温电解制氢实验装置,旨在研究新一代高温电解制氢技术。作为新一代的制氢技术,主要是通过高温将水加热成水蒸气,然后在通过电解水蒸气为氢气和氧气的方法完成制氢,与传统的电解制氢方法相比,高温电解制氢可以降低20%~30%的电能消耗,并将电解效率提高至90%~100%,这极大地降低了制氢的能源成本与工艺成本。同时可以用相对廉价的金属氧化物来替代传统上的贵金属作为电极材料,这也可以降低设备成本。高温电解制氢技术可以使用核反应堆的热能对水进行加热,从而实现多能融合的核能——可再生能源复合系统。

本文主要设计并实现了中国科学院20KW 高温电解制氢实验装置的控制系统。控制系统主要监控高温电解制氢实验装置的设备和管道温度、流量、压力、设备状态、电流以及电压等。通过人机界面完成各个设备的控制,在客户端电脑上发出指令,完成设备的开机、停机、复位、紧急复位等。运行人员和实验人员可以通过控制系统向系统设备或管道设定目标温度、流量、压力等,从而完成整个装置的工况调节,为实验和计算提供相应的支持。

1 系统架构

本系统基于EPICS 进行开发,EPICS[7,8](实验物理以及工业控制系统,Experimental Physics and Industrial Control System)是国内外加速器、大型实验装置、高能实验系统以及天文台常用的开发工具。如图1 所示,它是一个标准的分布式控制系统。它包含三层架构,包括客户端控制层、输入输出控制层以及设备控制层[9]。客户端控制层提供人机交互界面(OPI),为操作人员与系统的交互提供接口。输入输出控制层是整个EPICS 系统的核心部分,负责从设备控制层获取数据,提供数据给客户端控制层,同时也负责将客户端控制层中的操作指令发送给设备控制层。设备控制层是整个系统基础,负责设备电气和逻辑控制等。

输入输出控制层的主要部分是输入输出控制器(IOC),其内部软件结构如图2 所示。其中,IOC 数据库(IOC Database)是一个常驻于内存的实时数据库。Database Access 为数据访问例程提供了访问IOC 内部数据的接口。记录支持(Record Support)为记录类型提供支持,如模拟输入量(ai)、模拟输出量(ao)、数字输入量(bi)、数字输出量(bo)等,并且每种记录类型对应于一种记录支持。设备支持(Device Support)负责设备,一个记录类型对应于多个设备支持程序,生成多个基于设备的各种记录(record)。设备驱动(Deivce Drive)负责复杂外部设备的驱动连接。驱动程序拥有相应的设备驱动中端程序。通道访问模块(Channel Access)用于外部连接以形成基于以太网的分布式控制系统。

图3 20KW高温制氢控制系统物理架构Fig.3 Physical structure of 20kw high temperature hydrogen production control system

中国科学院20KW 高温制氢实验装置包含数个工艺系统。它们是制氢系统、压缩系统、存储系统、冷冻水系统、吸附干燥纯化系统、蒸汽系统以及压缩空气系统。冷冻水系统包含冷水机与纯水机。冷水机利用传统的Modbus 协议进行设备通讯,纯水机在内部架设了TCP/IP 服务器可以使用EPICS 的S7-TCP/IP 驱动支持模块进行通讯。其他系统采用基于Siemens PLC 为核心的控制器来实现和完成,这些系统可以通过EPICS 的通讯支持模块S7nodave 来进行通讯,如图3 所示。系统需要保存实验数据以供实验分析和事件定位,本系统使用EPICS 最新的数据归档系统Archiver Appliance 来完成数据归档和历史数据存储。

2 软件设计与实现

如图4 所示,本系统的客户端控制层使用Web 来展示历史数据,并利用Web 对历史数据归档系统进行管理、数据检索以及下载实验数据等。CSS 是EPICS 客户端人机界面制作工具,提供了大量的控件用于人机界面的制作。此外还提供了传统上的RDB channel Archiver[10]归档插件以及警报系统插件等。输入输出控制层包括IOC 以及Archiver Appliance 历史数据归档系统,Archiver Appliance 通过Engine 进程从IOC 获取历史数据,并完成数据存储。

本系统在Centos7 环境下完成EPICS 的各个组件的安装与编译,如图5 所示。其中选择的EPICS 核心版本是Base-3.15.5,所有的驱动支持组件和IOC 都需要依赖于EPICS 核心Base。其中AYSN 4-34 是EPICS 的设备异步驱动支持组件。所有组件的依赖关系需要在本组件RELEASE文件里添加其他组件的根目录的路径,从而实现依赖关系的建设,然后进行编译和安装即可。

图4 高温制氢逻辑架构Fig.4 High temperature hydrogen production logic architecture

图5 EPICS模块依赖关系图Fig.5 EPICS Module dependency graph

表1 Modbus通讯协议数据格式Table 1 Modbus communication protocol data format

2.1 基于EPICS的Modbus协议的实现

Modbus[10]是一种常用的串行总线协议,如今拥有串口、以太网等多种版本。本系统通过ZLAN 串口服务器,将串口转换成以太网。Modbus 协议的数据格式如表1 所示。其中,设备地址通常可以在设备里自定义设置,默认通常是1。功能码指明了当前Modbus 协议的具体操作,通常写操作的功能码为5,6,15,16,而读操作码为1,2,3,4。

EPICS 的Modbus 通讯协议,首选需要根据依赖关系完成安装。然后,需要对启动文档modbus.cmd 进行如下配置。

1)drv Asyn IP Port Configure("H T S E L SJ","192.168.1.158:502",0,0,1)

2)modbusInterposeConfig("HTSELSJ",0,2000,0)

3)asynSetOption("HTSELSJ",0, "disconnectOnReadTimeout", "Y")

4)drvModbusAsynConfigure("ModAI01", "HTSELSJ", 0,3, 04000, 040, 0, 100, "Koyo")

5)dbLoadTemplate(“HTSELSJ.substitutions”)

其 中drvAsynIPPortConfigure 负 责IP 与 端 口 名的配置,完成异步连接。"HTSELSJ"为协议端口名,"192.168.1.158:502"为Modubs 设备端的IP 地址与服务端口。最后3 个参数分别为进程优先级,重连以及结尾标识符。

modbusInterposeConfig 命令负责驱动的一些配置,"HTSELSJ"为drvAsynIPPortConfigure 定义的端口名指明此操作的连接对象。第二个参数为连接类型,0 代表TCP/IP连接,1 代表RTU,2 代表ASCII。最后两个参数分别表示最大延时上限,设备写延时。

drvModbusAsynConfigure 实现最终Modbus 端口驱动,参数定义如下所示:

参数1:Modbus 表端口名(tablename)。

参数2:drvAsynIPPortConfigure 定义的端口名。

参数3:从站地址SlaveAdress。

参数4:为Modbus 功能码,如表1 所示。

参数5:为Modbus 数据的起始地址。

参数6:Modbus-Length 为Modbus 数据表长度。

参数7:为数据类型。

参数8:为读写延时。

参数9:为PLC 类型说明字符串。

dbLoadTemplate 加载宏文件,通过宏文件和宏文件中的模板文件生成db 文件,db 文件定义了记录(record)的具体类型。宏文件格式如下:

file "../../db/longin.template" { pattern

{P, R, PORT, OFFSET, SCAN}

{HTSELST:, AX01, ModAI01, 0, "I/O Intr"}

{HTSELST:, AX02, ModAI01, 1, "I/O Intr"}

{HTSELST:, AX02, ModAI01, 2, "I/O Intr"}

{HTSELST:, AX03, ModAI01, 3, "I/O Intr"}

}

PORT 字段(ModAI01)与启动文件中的命令drvModbusAsynConfigure 的第一个参数(Modbus 表端口名)应相同,从而实现表名与基于Modbus 协议格式数据的设备物理地址相互映射。完成db 文件中的record 与Modbus 协议数据的连接。其中longin.template 为db 文件的模板文件,格式如下:

record(longin,"$(P)$(R)") {

field(DTYP,"asynUInt32Digital")

field(INP,"@asynMask($(PORT) $(OFFSET)0xFFFF)")

field(SCAN,"$(SCAN)")}

宏文件中的P 字段与R 字段,在运行时替换模板函数中的$(P)与$(R)从而完成record 的PV 变量名的组合。PORT 字段和地址偏移量(OFFSET)结合启动文件中的其他命令完成数据寻址。

此外,Modbus 还有其他模板函数可供选择,如bi_bit.template,bo.template,ai.template 等。通过启动modbus.cmd 加载宏文件,使用模板文件生成的数据相关的record,通过记录调用记录支持,设备支持以及驱动完成数据通讯。

2.2 基于EPICS的S7-TCP/IP通讯协议实现

EPICS 的S7-TCP/IP 驱动支持模块是支持TCP/IP 方式的设备数据通讯协议的驱动模块,将设备PLC 控制器架设成TCP/IP 服务器,通过TCP/IP 的方式实现设备到EPICS IOC 的数据收发。首先通过以下命令创建空IOC 应用。

MakeBaseApp.pl -t ioc S7plc

MakeBaseApp.pl -i -t ioc S7plc

将S7-TCP/IP 驱动支持包放入S7plcApp/src 目录下,修改Makefile,添加以下内容:

LIBRARY = s7plc

LIB_SRCS += s7plc_registerRecordDeviceDriver.cpp

LIB_SRCS += drvS7plc.c

LIB_SRCS += devS7plc.c

PROD_DEFAULT = s7plcApp

s7plcApp_LIBS += s7plc

s7plcApp_DBD += base.dbd

s7plcApp_DBD += s7plc.dbd

DBD += s7plcApp.dbd

s7plcApp.dbd.d: s7plc.dbd

s7plc.dbd: s7plcBase.dbd s7plcCalcout.dbd s7plcReg.dbd cat

更改ioc 下的st.cmd,添加以下内容:

dbLoadDatabase(“dbd/s7plcApp.dbd”)

s7plcApp_registerRecordDeviceDriver

s7plcConfigure ("HTSECSJ", "192.168.0.10", 2000, 1024,32, 1, 500, 100)

dbLoadRecords(“../../example.db”)

在TOP/db 目录下添加example.db 格式如下:

record (ai, "HTSECSJ-AI01") {

# map range 0...1000 to 0.0000...10.0000

field (DTYP, "S7plc")

field (INP, "@HTSECSJ:0/0 'T=INT16 L=0 H=1000'")

field (EGUF, "10")

field (LOPR, "-10")

field (HOPR, "10")

field (LINR, "LINEAR")

field (PREC, "2")

field (SCAN, "I/O Intr")

}

其中,record 的INP 字段定义了设备通讯协议的端口地址与数据类型。

2.3 S7nodave通讯协议实现

S7nodave 是 Siemens PLC 的 EPICS 驱动支持模块。目前该模块可以实现 Siemens S7 系列的多种PLC 通信协议支持,与S7-TCP/IP 通讯协议不同的是S7nodave 可直接访问PLC 中的内存映射表内容,无需在PLC 端进行通讯配置。首先根据S7nodave 的依赖关系,将S7nodave 作为单独模块添加到 EPICS 的设备驱动块目录下并编译,编译成功后,在S7nodave 的TOP 目录下的lib 目录和dbd 目录中分别有库文件S7nodave 和dbd 文件S7nodave.dbd 生成。然后建立空IOC 应用,并且在IOC 的RELEASES 中配置S7nodave 安装路径,如下所示:

S7NODAVE=/usr/local/epics/modules/s7nodave

修改在IOC 程序的src 目录中的makefile 文件,在文件中配置库文件S7nodave 和dbd 文件S7nodave.dbd。

nodave_DBD + = s7nodave.dbd

nodave_LIBS + = s7nodave

S7nodave 设备支持可以直接读取和写入PLC 的内存地址,利用记录record 的设备地址字段INP 和OUT,指定S7nodave 认可的PLC 设备地址。IOC 程序的st.cmd 文件中添加以下内容:

dbLoadDatabase("dbd /S7nodave.dbd")

S7nodave_register R ecordDeviceDriver pdbbase

S7nodaveConfigureIsoTcpPort( "HTSE02","192.168.1.1”,0,0,0)

S 7 n o d a v e C o n f i g u r e P o l l G r o u p( "H T S E 0 2","HTSE02group",0.1,0)

dbLoad R ecords “db/HTSE02.db”

由于PLC 与SoftIOC 间通过以太网基于TCP/IP 的方式交换信息,需要指明PLC 的IP 地址,后面3 个数字分别代表PLC 机架号、卡槽站号和线程优先级。db 文件记录格式如下:

record(ao," $(user):W R ITEVOLTAGE_W8")

{

field( DTYP,"s7nodave" )

field( OUT,"@HTSE02(DLV=0,DHV = 27648) DB1.DBW8 int16" )}

record(ai,"$ (user):WRITEVOLTAGE_W8" )

{

field(DTYP,"s7nodave")

field(INP,"@HTSE02( DLV = 0,DHV = 27648) DB1.DBW16 int16)

}

record 中OUT 与INP 字段负责外部连接,其中分别需要指定端口名,数据上下限以及数据块地址等。

3 Archiver Appliance的应用

EPICS 传统上广泛使用的历史数据归档系统是RDB Channel Archiver。RDB Channel Archiver 是基于关系型数据库来实现数据存储的,然而由于关系型数据库其本身严格定义的数据结构、多表查询以及事务处理机制等因素而导致读写性能上存在瓶颈。当数据量到达一定量级是会存在检索延时等情况,20KW 高温制氢实验装置需要通过历史数据进行快速历史事件定位。因此,需要快速地响应历史数据检索结果。考虑到基于关系型数据库的RDB Channel Archiver 的性能限制,本系统使用EPICS 最新的归档系统Archiver Appliance 来进行历史数据存储。

SLAC(Stanford Linear Accelerator Center,美国国家加速器实验室)在2016 年EPICS 年度大会上展示了它们最新研发的EPICS Archiver Ap-pliance[11]系统。EPICS archiver appliance 重点关注于提高数据的聚合性能,同时研发了相应的管理界面,通过管理界面可以查看数据的归档状态,数据的变化趋势曲线等。

Archiver Appliance 本质上是一个Tomcat 服务器,提供了4 个Tomcat 进程。它们分别是数据归档引擎(Engine)、数据管理模块(ETL)、数据检索模块(Retrieval)以及逻辑业务执行模块(Mgmt)。Engine 的作用在于根据PV 变量名从IOC 采集数据。Retrieval 则负责从数据库收集数据,并整合数据以满足用户检索需求。Mgmt 则负责执行业务逻辑,管理页面以及保存配置文件等。ETL 负责存储数据的管理,负责将数据在3 个存储阶段间进行转移。Archiver Appliance 存在3 个历史数据存储阶段,它们是短期存储阶段(Short Term Store,STS),中期存储阶段(Medium term store,MTS)和长期存储阶段(Long Term Store,LTS)。STS 数据通常存放在内存中,它负责存储数小时内的数据。MTS 负责存储数天内的数据,它通常存放在固态硬盘和系统硬盘中。LTS 则负责更为长期的历史数据存储,ETL 负责将数据在各个存储阶段进行转移。Archiver Appliance 的架构如图6 所示。

本系统在Lenovo TS560 塔式服务器上搭建Archvier Appliance,总存储容量约为3TB 左右。20KW 高温制氢实验装置,需要监控的量约为250 个PV 变量。以每秒采样率为3 计算,一个record 的一年占用存储约为1.8GB,本服务器可以存储6 年以上连续不断的实验产生的数据,足以满足实验的需求。图7 为Archiver Appliance 系统主界面,图8 为数据检索界面。

4 系统(OPI)界面

图6 Archiver Appliance原理图Fig.6 Schematic diagram of the Archiver Appliance

图7 Archiver Appliance系统主界面Fig.7 Main page of archiver appliance

图8 Archiver Appliance数据检索界面Fig.8 Retrieval page of Archiver Appliance

图9 高温制氢系统界面Fig.9 High temperature hydrogen production system interface

系统界面通过EPICS 人机界面工具CSS 来实现,本文以制氢模块为例,如图9 所示。系统界面主要分为工艺部分与关键数据图表部分。工艺部分描述了系统的工艺流程图、设备警报状态以及页面导航按钮。在工艺流程图上需要显示温度、流量、液位以及压力等实时数据。在工艺流程图下方则是各个关键设备的警报状态显示图标,绿色表示设备正常,红色表示设备异常。导航按钮通过下拉框的形式实现各个子系统界面之间的切换。左边部分为关键数据图标部分,通过实时曲线的方式显示关键数据,从而为实验工况调节与事件定位提供支持。

5 总结

本文基于EPICS 实现了20KW 高温制氢实验装置的控制系统。首先利用西门子S7-PLC 实现了系统大部分设备的本地控制,通过分析EPICS 的多个通讯协议支持组件,实现了20KW 高温制氢实验装置控制系统的远程数据收发。考虑到系统实验与实验事件定位需要,本系统采用EPICS最新历史归档系统Archiver Appliance 来存储历史数据。整套控制软件均在Centos7 操作系统下基于EPICS 开发,简化了软件系统结构和代码维护量,提高了整套系统运行的稳定性,为20KW 高温制氢实验装置的控制系统提供了可靠的技术保障。

猜你喜欢

历史数据制氢高温
天然气制氢在氯碱产业中的作用
高温干旱持续 农作物亟须“防护伞”
高温季蔬菜要如此培“根”固本
全球高温
基于设备PF性能曲线和设备历史数据实现CBM的一个应用模型探讨
基于故障历史数据和BP神经网络的接地选线方案研究
制氢转化炉辐射段炉管检测方法概述及展望
赢创全新膜技术有望降低电解水制氢的成本
高温来袭,警惕寒湿作祟
千瓦级燃料电池热电联产系统及其制氢系统模拟