APP下载

基于EPICS的EAST极向场电源监控设计与实现

2018-07-04,,,

计算机测量与控制 2018年6期
关键词:关系数据库线程数值

, , , ,

(中国科学院 合肥物质科学研究院等离子体物理研究所,合肥 230031)

0 引言

极向场电源系统(PF)作为托卡马克装置的核心子系统之一,由12组独立可调的PF电源分别向14组相互耦合的极向场超导线圈供电,每一套PF电源主要包括AC-DC整流器(converter unit,CU)、晶闸管开关网络(switch network unit,SNU)、失超保护系统(quench protection,QP)和隔离开关(disconnect switch,DS)[1-3]。任何设备的状态都需要实时监视,同时开关设备分布在不同的地方,所以需要能够进行远程控制。

随着PF控制系统硬件升级,所有的软件也进行了升级或重新设计。以前的监控系统运行于Windows操作系统,通过力控软件设计,力控软件需要付费,维护和升级不方便[4]。升级后的监控系统运行于LINUX系统,基于EPICS(experimental physics and industrial control system)进行设计。EPICS是开源控制软件工具包,应用领域非常广泛,比如光源、功能物理、天文望远镜等,通过世界性的用户群体来维护与发展。EPICS提供很多标准工具供用户使用,这样就减少了接口代码的编写工作,确保统一的标准接口。EPCIS是分布式系统,如图1所示,每一个客户端(operation interface,OPI)都可以看到所有的服务端(input/output controller ,IOC)。可以很方便地使用EPICS创建一个控制系统,在该系统中,所有服务端IOC中定义的PVs(process variables)都可以通过CA(channel access)宏被客户端OPI随意地访问[5]。服务端IOC实现输入输出操作,包括数据库、状态机、设备支持、硬件驱动等,数据库对所有的记录进行定义并设置,设备支持中对所有的PV状态进行更新或者获取PV数值,与硬件相关的程序可以做成硬件驱动,以供直接调用。本文使用CSS(control system studio)作为OPI人机界面,CSS是基于eclipse的插件系统工具包,使用CSS实现所有设备的状态监视以及开关控制,同时用户可以安装自己所需插件,本文使用报警插件alarm与数据归档插件archive。服务端与客户端之间通过CA协议进行数据交互,CA协议是EPICS特有的一种透明的通信方式。

图1 EPCIS基本框架

1 监控系统设计

升级后的监控系统如图2所示。包括数据传输层、服务器层与人机接口层。数据传输层是现场设备与IOC程序的接口,现场设备主要包括整流器、晶闸管、失超保护、隔离开关,以及辅助设备水路、传感器、急停、烟雾报警检测等,一套电源传输的主要信号如图中所示。服务器层包括IOC服务器、archive数据归档服务器和alarm报警服务器,IOC服务器中数据库对用到的所有PV进行定义并设置,设备支持通过Modbus UDP协议与现场总线控制器进行数据交互,将设备状态、开关状态、电流、电压、水压信号等上传至人机界面进行显示,实现实时监视,并获取开关控制PV数值,处理后发送至现场总线控制器,实现对开关的远程控制。Archive归档系统搭建完成后,将需要归档的PV导入关系数据库,并启动归档服务器,即可以将每个PV的所有数据存入关系数据库。Alarm报警系统搭建完成后,将携带PV名字的配置信息导入关系数据库,并启动报警服务器,当PV状态与报警严重度发生变化时,服务器检测此变化,并通知CSS界面进行更新。人机界面包括所有设备的状态监视、开关控制、报警检测以及历史数据查询,为了能够在CSS中能够实现报警检测和历史数据查询,首先将alarm和archive插件插入CSS之中,然后打开报警视图查看报警,打开数据浏览视图从归档系统中调取历史数据进行波形显示。

图2 监控系统框图

2 数据传输

本文使用现场总线作为设备和EPICS IOC的数据传输媒介,使用的现场总线控制器型号为 WAGO750-881[6], 现场总线模块包括WAGO750-479 (AI, Analog Input), WAGO750-400 (DI, Digital Input) 和 WAGO750-513 (DO, Digital Output)。IOC与现场总线控制器的通信协议为Modbus UDP, 其信息帧格式如图3所示,包括头部与数据区域。头部的功能代码(Function code)非常重要,其决定着将会执行何种功能,读模拟信号、读数字信号还是写入数据等。数据区域包括数据长度与实际数据等。定时器线程以100 ms周期向现场总线控制器发送读取模拟/数字信号请求,控制器搜集所需数据并返回数据给IOC的接收线程,接收线程阻塞式等待接收数据,接收到数据包后对其进行分析处理。发送线程检测到开关控制信号与当前状态不一致时,发送数据到对应现场总线控制器,控制器按位将信号分配给输出模块,实现对开关的控制。

图3 数据传输过程

以读数字信号(DI)为例,其读请求信息帧如图4(a)所示。功能代码为0x01,所请求的数据长度为8位。返回数据包的功能代码也应为0x01,返回一个字节的数据0x75。接收线程接收到返回数据包后,取出数据包携带的IP信息,从而判断数据来自哪个设备,再根据返回包的功能代码判断是模拟信号或数字信号,若为数字信号,则逐位取出信号,并在设备支持中赋值给对应PV,若为模拟信号,则一个模拟信号占用2个字节。

图4 读DI数据请求信息帧与返回包格式

3 IOC程序设计

3.1 数据库设计

EPICS数据库就是各种类型记录(Record)的集合。一个记录拥有唯一的名字和类型,有很多的域,一个或者多个设备支持,可以有多个链接。当记录被处理时,它可以从硬件或者其它记录获取数据,可以将数据放到硬件或者其它记录,可以将原始数据转换为工程数据,检测数值是否超出范围并引起报警等。监控系统EPICS数据库定义约1200条记录,图5是本文定义的一个记录,包括记录名称、类型、属性、链接、数值等。PV是用于EPICS客户端与服务端数据交换的变量。PV名字是由记录名字(Record name)和域(Field)组成的,比如图中定义的记录,其PV名字可以描述为EAST-monitor-PF01: CU1_Pressure_L.DESC、EAST-monitor-PF01: CU1_Pressure_L.DTYP、EAST-monitor-PF01: CU1_Pressure_L.SCAN等, 记录名字作为PV名字时默认为VAL,即EAST-monitor-PF01: CU1_Pressure_L等同于T-monitor-PF01: CU1_Pressure_L.VAL。

图5 记录定义

本文使用的记录类型包括ai(模拟输入)、bi(数字输入)和bo(数字输出)。通过域来设置记录的行为或者属性,比如记录如何被执行,数据从哪里获取或者送到哪里去,何时进行报警等。域分为用于设计的域和用于运行的域,设计域供设计者定义数据库时设置记录行为。当IOC运行后,可以通过运行域查询记录执行情况,比如PACT域表示记录是否正在被处理,SEVR是报警严重度数值,STAT是报警状态,TPRO域设置为1时可以跟踪记录执行情况。如表1所示为本文用到的设计域。SCAN为记录扫描机制,决定设备支持如何被执行,包括周期性、中断触发或者事件触发,本文都使用周期扫描机制,即记录对应的设备支持周期性执行,PV数值周期性更新或被获取。OSV和ZSV用于alarm报警,若OSV设置为Minor或者Major,ZSV设置为OK,则当PV数值为1时触发报警,相反PV数值为0时触发报警。隔离开关DS与快速开关DCCB(Direct Current Circuit Breaker)的分合控制需要脉冲信号,本文使用HIGH域实现,HIGH是bo记录的特有域。比如EAST-monitor-PF01:DISDS1_close_comm用于控制电源PF01的隔离开关DS1的合动作,其扫描周期SCAN设置为0.3 s,HIGH设置为0.2 s,HIGH的数值必须不大于扫描周期,当界面向该PV写入数值1时,数值1保持0.2 s,之后恢复到数值0,以此模拟200 ms脉宽的脉冲信号。

表1 本文使用的设计域

3.2 EPICS IOC设计

IOC程序包括定时器线程、接收数据线程、发送数据线程、bi设备支持、ai设备支持与bo设备支持。对于输入信号,接收线程接收到数据后,进行分析取出操作,设备支持将数值赋值给对应PV,人机界面相应更新。对于输出信号,操作人员在界面上对开关进行操作,设备支持不断获取当前PV数值,并判断其数值是否变化,若变化则通知发送线程发送控制信号到现场总线控制器。设备支持是一组记录支持调用的例程,可以与硬件进行数据交互,是IOC与硬件的接口。记录的设备类型是由域DTYP进行设置的,而该域由用户自己设定。本文自定义3种类型的设备类型DTYP,MONITOR_BI,MONITOR_AI与MONITOR_BO。MONITOR_BI处理所有的bi记录,MONITOR_AI处理所有的ai记录,都使用周期性扫描机制,扫描周期为100 ms。MONITOR_BO处理所有的bo记录,扫描周期为300 ms。图6为本文一个记录的设备支持实现过程。首先在EPICS数据库中定义记录,对记录行为INP与DTYP进行设置,然后在设备支持的申明文件(DBD)中找到对应的DTYP,从而获得其入口表的地址MonitorTestai,根据地址在设备支持程序中找到对应的设备支持函数,从而实现对记录的处理。设备支持中的初始化函数init_record只在EPICS IOC程序启动时执行一次,记录处理函数read_ai的执行根据SCAN域的设置周期性执行。read_ai函数中根据INP判断当前被触发的是哪个PV,然后将接收线程分析处理后的对应数据赋值给当前PV。

图6 AI设备支持实现过程

4 界面设计

4.1 状态实时监视与开关远程控制

EPICS IOC设备支持程序中对所有PV进行状态更新,PV状态在OPI界面上进行显示,包括电源主回路、所有开关与水路状态等,用于显示状态的主要控件包括编辑框、图片等,通过编辑框显示模拟信号数值,通过图片颜色或者亮度的变化显示当前信号状态或者运行状态的变化。OPI界面上对开关进行闭合或者打开的操作,实现对隔离开关DS与快速开关DCCB的远程控制。每一套电源有3个隔离开关DS1、DS2、DS3,3个开关硬件互锁,DS1与DS2同时进行控制,当DS1与DS2闭合时,DS3不能闭合,否则会造成电源短路,为了保证设备安全,防止硬件互锁失败,软件也进行互锁设计。根据调试需求,12套电源的隔离开关可以一起控制,也可以独立控制。当界面对某个隔离开关进行分合操作时,对应PV被强制赋值1,IOC程序检测到控制信号与当前开关状态数值不同,则向隔离开关现场总线控制器发送控制信号。

4.2 Alarm报警

如图7所示为alarm报警系统的结构图,包括alarm服务器、关系数据库RDB(Relational Database)、客户端以及消息服务接口JMS(Java Message Service)。在关系数据库中为报警系统创建数据库及访问该数据库的用户与密码、创建用于存储alarm配置及数据的各种表格。同时编写alarm配置文件,该文件设置了报警行为以及报警时作何处理等,手动将该文件加载到关系数据库中。alarm服务器从关系数据库中读取配置并监视变量变化。启动alarm系统前,需要在EPICS数据库中对需要报警记录的域进行设置,该设置在IOC运行时加载到系统。当一个alarm触发时,alarm服务器通过JMS发送状态更新、通知用户接口CSS,并更新RDB中的PV状态。通过CSS报警视图查看报警显示结果,当报警被触发时,可以查看该报警的相关信息以及执行某些动作,比如自动发送邮件或者弹出窗口提示操作者。Alarm客户端可以修改关系数据库中的alarm系统配置文件,它们使用JMS通知服务器和其他客户端这种修改,然后服务器和其他客户端可以从RDB中读取更新后的配置[7]。

图7 报警系统

4.3 数据存储与查看

如图8所示为archive数据归档系统结构图,包括服务端、客户端与关系数据库RDB。在关系数据库中为归档系统创建数据库、使用的表格以及用户名和密码。编写配置文件,该文件设置加载通道名字(PV)以及数据库更新该通道的周期等参数,在启动归档引擎之前将该文件导入到RDB中。系统周期性地将数据存储到RDB中,用户可以通过引擎网页服务端查看当前加载的组以及该组中所有通道的详细信息,包括通道连接状态、当前数值、最大值、最小值、平均值等信息。同时可以通过CSS中的数据浏览视图查看某个记录的历史数据,可对曲线进行处理并保存[8]。

图8 数据存储与查看

5 测试结果

部分测试结果如图9所示。

图9 实验结果

6 结束语

本文运行于Linux操作系统,基于EPCIS进行设计,实现了对极向场电源现场所有设备的实时监视,实现对隔离开关和快速开关的远程控制,通过alarm插件实现对故障的检测与显示,通过archive插件实现对数字输入信号的存储并实现历史数据查询。本设计已通过EAST实验测试,功能较为齐全,性能比较稳定。

参考文献:

[1] Ji Z, Wu Y, Sun X, et al. East integrated control system. Fusion Engineering and Design, 2010, 85(3/4): 509-514.

[2] Li D, Fu P. Design and test results for the 15 kA thyristor switch network of EAST[A]. Power Electronics and Motion Control Conference, IPEMC '09. IEEE 6th International[C]. IEEE, 2009:2599-2602.

[3] Yarema R J. A Four Quadrant Magnet Power Supply for Superconducting and Conventional Accelerator Applications[J]. IEEE Transactions on Nuclear Science, 1981, 28(3):2809-2811.

[4] 杨亚龙,陈飞云,傅鹏.EAST极向场电源监控系统的设计与实现[J].核聚变与等离子体物理,2007,27(3):217-221.

[5] EPICS Application Developer’s Guide [EB/OL]. Argonne National Laboratory, 2012-12-17.

[6] WAGO-I/O-SYSTEM 750, 750-881 Programmable Fieldbus Controller ETHERNET[Z].WAGO Kontakttechnik GmbH & Co. KG.

[7] Alarm Handler User’s Guide[Z].Argonne National Laboratory, 2014-08.

[8] Channel Archiver Manual[Z]. 2006-08, for R3.14.4 and higher.

猜你喜欢

关系数据库线程数值
5G终端模拟系统随机接入过程的设计与实现
实时操作系统mbedOS 互斥量调度机制剖析
体积占比不同的组合式石蜡相变传热数值模拟
浅析体育赛事售票系统错票问题的对策研究
数值大小比较“招招鲜”
舰船测风传感器安装位置数值仿真
铝合金加筋板焊接温度场和残余应力数值模拟
基于单表结构的Web动态树设计与实现
探讨关系数据库设计中范式理论的教学方法
Java的多线程技术探讨