提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
第一章 EPICS学习: EPICS概述
一、EPICS是什么?
概述:由一系列软件和工具组成,用于创建分布式控制系统的物理实验与工业控制系统。能够提供给分布式系统所期盼的功能:
- 设施设备的远程控制和监控
- 操作的自动排序
- 设施模式和配置控制
- 管理整个设施的公共计时器
- 报警检测、报告和记录
- 闭环控制
- 建模和仿真
- 数据转换和过滤
- 数据采集,包括图片数据
- 数据趋势分析、归档、检索和画图
- 数据分析
- 安全访问(防止意外操纵的基本保护)
EPICS 可以从非常大的系统扩展到非常小的系统。大型系统必须能够传输和存储大量数据,既强大可靠,又能容错。单个组件的故障不应使系统瘫痪。对于小型安装,必须能够在不需要复杂或昂贵的基础设施组件的情况下设置控制系统。对于现代应用程序,数据管理变得越来越重要。可以长期存储获取的操作数据,并以原始形式检索。EPICS提供了实现这一目标的工具,并根据设施的需求定制数据管理。
二、系统组件
EPICS 工具集支持创建服务器和客户端应用程序。
- 服务器:提供在本地或者网络上对数据进行访问、读和写。读写通常与连接物理组件的硬件进行,数据也可以由其它地方提供。然而,物理I/O是任何控制系统(包括EPICS)的中心任务。
- 客户端:能够进行显示、存储和操作数据。客户端软件的范围从(图形和命令行)用户界面工具到强大的数据管理服务
1. IOC(输入/输出控制器)
这是EPICS的I/O服务组件。几乎任何可以支持EPICS的基本组件(如数据库和网络通信)的计算平台都可以用作IOC。可以是普通的台式计算机,也可以是基于实时操作系统(如vxWorks或RTEMS)并运行在专用模块化计算平台(如MicroTCA、VME或CompactPCI)上的系统。EPICS IOC也可以运行在低成本的硬件上,如RaspberryPi或类似的硬件。
2. CWS(客户机工作站)
这是一台可以运行各种EPICS工具和客户机应用程序的计算机;典型的例子是用户界面工具和数据归档。CWS可以是台式计算机、服务器机器或类似设备,通常运行“常规”(与实时相反)操作系统,如Linux、Windows或MacOS。
3. LAN(局域网)
局域网。这只是一个标准的基于以太网(或无线)的通信网络,允许IOC和CWS进行通信。
4.简单EPICS控制系统示意图
可以由一个或者多个IOCs和客户机工作站在LAN总线上通信来构成一个简单的EPICS控制系统。客户机和服务器之间的分离使系统的配置更容易,也更健壮,可以在不停止操作的情况下向系统中添加或者删除客户端和服务器。
除了“经典”EPICS控制系统的这些基本组件之外,还可以为非“进程I/O”(受控进程的实时值)或附加到硬件的数据实现服务器(又名服务)。例如,这些其他服务可以提供配置或校准数据,或粒子束建模等计算服务。由于所有服务都使用相同的协议并交换相同类型的数据结构,因此数据源对客户端软件是透明的(即,您不需要事先知道数据来自何处或如何获得数据)。从这个意义上说,IOC可以被视为一种特殊类型的服务器,它处理过程数据并连接到实际的现场硬件(在许多情况下,但不一定)。
三. EPICS基本属性
- 基于工具:EPICS提供了一组用于创建控制系统的交互工具和组件。这最大限度地减少了对客户特定编码的需求,并有助于确保统一的操作界面。
- 分布式:支持任意数量的ioc和cws。只要网络不饱和,就不存在单一的瓶颈。如果一个IOC饱和,它的功能可以分散到几个IOC上。应用程序可以分布在许多CWS上,而不是在单个CWS主机上运行所有应用程序。
- 事件驱动:EPICS软件组件都被设计成最大程度上的事件驱动。例如,EPICS客户端可能不需要查询IOCs以获取更改,而是请求收到更改通知。这种设计可以有效地利用资源,以及快速响应时间。
- 高性能:IOC每秒可以处理数以万计的数据项(“数据库记录”)。客户机和服务器可以处理具有数百万个过程变量的系统,同时最小化网络开销。
- 可伸缩:作为一个分布式系统,EPICS可以从具有单个IOC和几个客户机的系统扩展到具有数百个IOC和数百万个I/O通道和过程变量的大型安装。
- 鲁棒性:单个组件的故障不会导致整个系统崩溃。组件(ioc,客户端)可以在不停止控制系统运行的情况下从系统中添加和删除。组件可以承受互联网络的间歇性故障,并在网络故障恢复后自动恢复。
- 基于过程变量:与其他一些控制系统包相比,EPICS不将控制系统(I/O)设备建模为对象(如面向对象编程),而是将其作为描述受控过程或设备的单个方面的数据实体,因此称为“过程变量”或“PV”。典型的PV可以表示各种属性中的任何一个,例如温度或(电)电流。这种设计是典型的过程控制系统。
四. IOC 软件组件
EPICS IOC的核心是一个软件实体或包含一下软件的进程组件:
- IOC数据库(IOC Database):内存驻留数据库,包含一组不同类型的命名记录。这些记录包含上面提到的过程变量。
- 扫描器(Scanners): 用于处理IOC数据库中记录的机制
- 记录支持(Record Support):每个记录类型都有一组相关的记录支持例程来实现记录类型的功能
- 设备支持(Device Support):设备支持例程将I/O数据绑定到数据库记录
- 设备驱动程序(Device Driver):设备驱动程序处理对外部设备的访问
- 通道访问(CA)或pvAccess:外部世界和IOC之间的接口。它提供了通过网络访问(EPICS)数据库的接口
- Sequencer:一个有限状态机。这是一个外部模块,不包括在EPICS核心软件发新版中
1. IOC 数据库
每个IOC的核心是一个过程数据库,数据驻留在内存中(即不存储在硬盘或者其它永久设备上),与常见的关系数据库(SQL)没有任何关系
数据库定义IOC的功能:它提供什么流程数据,如何处理和存储数据。数据库可以包含任意数量的特定记录类型的记录。记录类型定义记录处理的数据类型和一组定义如何处理数据的函数。
record(ai, "Cavity1:T") #type = ai, name = “Cavity1:T”
{
field(DESC, “Cavity Temperature”) #description
field(SCAN, “1 second”) #record update rate
field(DTYP, “XYZ ADC”) #Device type
field(INP, “#C1 S4”) #input channel
field(PREC, “1”) #display precision
field(LINR, “typeJdegC”) #conversion spec
field(EGU, “degrees C”) #engineering units
field(HOPR, “100”) #highest value on GUI
field(LOPR, “0”) #lowest value on GUI
field(HIGH, “65”) #High alarm limit
field(HSV, “MINOR”) #Severity of “high” alarm
}
数据库记录可以相互链接。比如记录可以从其它记录触发其它记录处理,启用和禁用记录等。
通过将记录组合链接在一起,EPICS数据库成为一种编程工具。使用它,甚至可以由数据库实现非常复杂的函数。此外,由于此逻辑驻留在IOC上,因此它不依赖于任何客户机软件来工作。通过这一点,许多客户机程序可以只显示或写入数据库记录中的值。
下图给出了一个简单的记录链接示例:如果两个传感器T1和T2的平均温度超过10℃,制冷器开启。这个数据库包含四个记录:两个模拟输入(ai),一个二进制输出(bo)和一个计算(cal)
2. 数据库扫描
数据库扫描是处理记录的机制。例如读取I/O通道,将读取值准换成工程单位,为值附加时间戳或报警检查限制。处理记录如何处理数据取决于记录类型。
提供了四种基本类型的记录扫描:周期性、时间、I/O事件和被动。所有方法都可以在IOC中混合使用。
- 周期性:周期性处理一条记录。支持多个时间间隔,范围从10Hz到0.01Hz,范围可配置。
- 事件:当任何IOC软件组件发布事件时,将进行事件扫描。
- I/O事件: I/O事件扫描系统根据外部事件(如处理器中断)处理记录。IOC设备驱动程序中断例程必须可用以接受外部中断。但是I/O事件并不一定是传统意义上的CPU中断。
- 被动式:不定期扫描被动式记录,也不按事件扫描被动式记录。但是他们可以在处理链接到他们的其它记录时作为结果处理,或者作为外部更改的结果,例如使用通道访问在网络上新设置的值。
3. 记录支持,设备支持和设备驱动
每种记录都提供了一组记录支持例程,用于实现所有特定于记录的行为,供数据库扫描器调用。因此,IOC可以支持任意数量的记录和记录类型。如果访问硬件的方法比设备支持所能处理的复杂,那么可以开发设备驱动程序。有时,在设备支(当它是特定于记录类型)和驱动程序(当代码处理特定于设备的细节)之间拆分是一个很好的做法。与硬件无关的记录类型不需要设备支持和设备驱动程序。
IOC软件设计设计允许特定安装,甚至安装中的特定IOC选择一组独特的记录类型、设备类型和驱动程序,IOC的其它软件的其余部分不受影响。
记录处理有以下函数的组合组成(并不需要使用所有的函数):
- Input:读取输入。通过设备支持例程从硬件、通过数据库链接从其它数据库记录或者通过通道访问(CA)或pvAccess(PVA)链接从其他loc获得输入。
- Conversion:将原始输入与工程单位的相互转换。
- Output:写输出。与输入相同,不过方向相反。
- Raise Alarms:检查警报并触发警报
- Monitor:与CA或PVA回调相关的触发监视器
- Link:触发对链接记录的处理
4. 数据库监测
监视器功能运行在数据库值更改时通知客户机程序,而不必不断地轮询数据库。可以配置为指定值更改、警报更改或存档更改来进行通知。
5. 网络协议
EPICS支持以下网络协议对IOC数据库的网络透明访问。
5.1 信道访问(CA)
CA基于客户机/服务器模型,每个IOC提供一个CA服务器,该服务器能够与任意数量的客户机建立通信。在CWS和IOC都可以使用CA服务。客户端可以与任意数量的服务器通信。
5.1.1 客户端服务
基本的CA客户端服务由:
- Search: 查找包括选定过程变量的IOC,并与每个IOC通信
- Get:获取所选流程变量集的值和附加可选信息
- Put:修改所选流程变量的值
- Monitor:请求服务器仅在相关流程变量改变状态时发送信息。可以请求以下状态更改的任意组合:值更改、警告状态 and/or 级别更改、档案值更改。许多记录类型为值的变化提供了迟滞因子。
除过程变量外,还可能要去下列附加信息的任意组合:
- Status: 警告的状态和级别
- Unit:工程单位
- Precision:精度
- Timestamp: 记录最后被处理的时间
- Enumeration:定义枚举值含义的一组ASCII字符串
- Graphics:在图形界面上配置小部件图形的上限和下限
- Control:上下限控制,记录操作限制
- Alarm:进行变量的警告状态(HIHI、HIGH、LOW、LOLO)和严重程度
5.1.2 搜索服务器
CA提供IOC驻留服务器,该服务器等待CA搜素消息。这些是由CA客户端(如操作员界面任务启动时)在搜素包含它使用的过程变量的IOC时生成的UDP广播。此服务器检查是否有任何流程变量在次IOC中,如何找到任何流程变量,则用 “ I ” 回复发送者。
5.1.3 连接请求服务器
找到流程变量,CA客户端会未每个包含这个流程变量的IOC发送连接请求,在IOC中,会接受请求并连接客户端。每个连接有两个独立任务管理:ca_get和cp_put。ca_add_event请求会建立数据库监视器。数据库访问与记录支持例程通过调用db_post_event提供值更新(监视器).
5.1.4 连接管理
每个IOC提供一个连接管理服务。CA失败(如IOC崩溃),会通知客户端,当客户端失败(任务崩),会通知服务器。客户端失败,服务器会断开连接。服务器崩溃,服务器会重启,与客户端重新建立连接。
5.2 pvAcess
是EPICS 7中信道访问的替代品和替代方案。向EPICS添加了许多功能,通过pvAccess,结构化数据可以高效传输,并且能处理大数据集。有以下优化实现:
- 数据结构自省和数据传输分离,因此每个连接秩序携带一次结构信息
- 监视器只发送已更改的数据结构项
- 在应用程序测试中,pvAccess已经能够利用10Gb以太网的96%-99%的可用理论带宽,接近于实际极限
5.2.1 客户端服务
- Search: 查找包括选定过程变量的IOC,并与每个IOC通信
- Get:获取所选流程变量集的值和附加可选信息
- Put:修改所选流程变量的值
- Monitor:请求服务器仅在相关流程变量改变状态时发送信息。可以请求以下状态更改的任意组合:值更改、警告状态 and/or 级别更改、档案值更改。许多记录类型为值的变化提供了迟滞因子
- PutGet:在一个原子操作中更改PV的值,处理EPICS记录并回读
- ChannelRPC:一种 “ 远程过程调用 ” 通信模式。类似与PutGet,但是客户端和服务器发送的数据结构不一致。该模式可以描述为带有参数的查询。例如要求校准服务提供特定设备的参数。
5.2.2 搜索服务器
与CA一样,不同的是找到流程变量时,则用 ” 我有 ” 消息回复发送者。
5.2.3 连接请求服务器
在pvAccess,包含两个阶段:
- 交换内省数据,服务器向客户端通信要交换的数据的结构,双方创建必要的占位符结构
- 使用分配的数据结构交换实际结构
5.2.4 连接管理
与CA一致。
注: 访问方法不作为记录提供对EPICS数据库的访问。这允许在不影响通过PVA和CA访问数据库的任何软件的情况下更改数据库结构或添加新的记录类型,并且允许这些客户端与具有不同记录类型集的多个IOCs通信。
6. 客户端工作站工具(Clinet Workstation Tools)
根据是否使用CA/pvAccess,分为两组:CA/pvAccess工具是实时工具,用于监视和控制IOC。
6.1 CA/pvAccess 工具示例
- CS-Studio:控制系统工作室,一个应用程序包,有许多插件,如显示管理器(BOY,display Builder),数据可视化/图表工具(DataBrowser)等。
- EDM: 几个可选的显示管理器之一,其它的替代方案是caQtDM(基于Qt),medm。
- Alarm Handler:有告警配置文件驱动的同意告警处理程序。
- Sequencer:在IOC中实现状态机。
- Archiver Appliance:从EPICS服务器(CA、PVA)收集数据,并储存在时间序列中,便于后续检索和分析。
- Channel Finder(Indexing Service):用于管理系统中EPICS记录的工具。此工具可以提供记录的平面名称空间的抽象视图。例如,列出系统中的所有真空泵,或通过束流位置监视器测量的束流在加速器中的水平位置。
6.2 其它工具示例
- VDCT:基于Java的数据库配置工具,用于设计和配置EPICS数据库,并且可视化记录和连接。
- SNC:状态符号编译器。生成一个表示IOC Sequencer工具状态的C程序。