EPICS应用程序开发2 -- EPICS概要

1、EPICS是什么?

实验物理和工业控制系统(EPICS)由一个软件组件和应用程序开发者可以用其创建控制系统的工具集合组成。基本组件:

1) OPI:操作界面。这是一个能够运行各种EPICS工具的工作站。

2) IOC:输入/输出控制器。能够支持EPICS运行时数据库和在本手册中描述的其它软件组件的平台。一个示例是一个工作站。另一个示例是一个基于使用wxWorks或RTEMS作为实时操作系统的的VME/VXI系统。

3) LAN:局域网。这是在其上允许IOCs和OPIs进行通信的通信网络。EPICS提供软件组件,通道访问,它提供了通道访问客户端和任意数目通道访问服务器之间网络透明的通信。

通过EPICS实现的控制系统有以下物理结构:

 本章剩下部分简要介绍EPICS:

  • 基本属性:EPICS的一些基本属性
  • 平台:EPICS支持的厂家提供的硬件和软件平台。
  • IOC软件:EPICS提供的IOC软件组件。
  • 通道访问:EPICS软件支持对IOC数据库的网络无关的访问。
  • OPI工具:EPICS提供的基于OPI的工具。
  • EPICS核心:一个EPICS core软件集合,即是:没有其EPICS将不能工作的软件组件。

2、基本属性

EPICS的基本属性是:

1) 基于工具:EPICS提供了用于创建一个控制系统的很多工具。这使得对自定义编码的需求最小并且帮助确保一致性操作接口。

2) 分布式:能够支持任意数目的IOCs和OPIs。只要网络没有饱和,不出现单个瓶颈。一个分布式系统规模自由。如果单个IOC变得饱和了,其功能可以分布到若干个IOCs。不是再单台主机上运行所有应用程序,这些应用程序能够分布到很多OPIs上。

3) 事件驱动:EPICS软件组件都被最大可能程度地设计成是受事件驱动。例如,不是必须轮询IOCs的变化,一个通道访问客户端可以请求在一个变化发生时其受到通知。这种设计导致了资源的高效使用以及快速响应时间。

4) 高性能:一个基于SPARC的工作站可以用产生自一个通道访问事件的每次更新处理几百个屏幕更新。一个68040 IOC可以每秒处理6000多个记录,包括通道访问事件的产生。

3 IOC软件组件

一个IOC包含以下EPICS提供的软件组件。

  • IOC数据库:驻留内存的数据库以及相关的数据结构体。
  • 数据库访问:数据库访问例程。除了记录和设备支持外,对数据库的所有访问是通过数据库访问例程。
  • Scanner:决定应该何时运行记录的机制。
  • 记录支持:每种记录类型有一个相关联的记录支持例程集合。
  • 设备支持:每种记录类型有一个或者多个设备支持例程的集合。
  • 设备驱动:设备驱动访问外部设备。一个驱动可能有一个相关联的中断例程。
  • 通道访问:外部世界和IOC之间的接口。它提供了对数据访问的一个网络无关接口。
  • Monitors:当数据库字段值变化时,调用数据库monitors。
  • Sequencer: 一个有限状态机。

简要描述IOC的主要组件以及它们如何相互作用。

3.1 IOC数据库

每个IOC的核心是驻留内存的数据库以及驻留内存的描述数据库内容的各种结构体。EPICS支持大型和可扩展的记录类型集合,例如:ai(模拟输入),ao(模拟输出)等。

每种记录类型有一个字段的固定集合。某些字段是所有记录类型共有的而另外一些是专用于特定记录类型。每个记录有一个记录名并且每个字段有一个字段名。每个数据库记录的第一个字段是这个记录的名称,其必须在连接相同TCP/IP子网的所有IOCs中唯一。

提供了数据结构体,因而能够高效地访问数据库。因为大多数软件组件通过数据库访问例程访问数据库,所以它们不需要知道这些结构体。

3.2 数据库访问

除了记录和设备支持外,对数据库地所有访问是通过通道或数据访问例程。

3.3 数据库扫描

数据库扫描是用于决定何时运行一个记录的机制。五种扫描类型是可能的:Periodic, Event, I/O Event, Passive和Scan Once。

  • Periodic:周期地请求运行一个记录。支持很多时间间隔。
  • Event:事件扫描是基于由任何IOC软件组件的一个事件提交。
  • I/O Event:I/O事件扫描系统根据外部中断运行记录。一个IOC设备驱动中断例程必须可用于接受外部中断。
  • Passive:由于链接的记录被运行或者由于诸如通道访问puts外部更改,被动的记录被运行。
  • Scan Once:为了提供给缓存puts,扫描系统系统一个例程scanOnce,它安排一个记录被运行一次。

3.4 记录支持,设备支持和设备驱动

数据库访问不需要记录类型特定知识,每种记录类型提供一个记录支持例程的集合,它们实现所有记录特定的行为。因而,数据库访问能够支持任何数目和种类的记录。相似的,记录支持不包含设备特定的知识,使得每种记录类型能够有任意数目独立的设备支持模块。如果访问硬件的方法比由设备支持能够处理的更加复杂,则可以开发一个设备驱动。

与硬件不相关联的记录类型没有设备支持或设备驱动。

IOC软件被设置成使得数据库访问层除了知道如何调用它外不需要知道有关这个记录支持层。记录支持层除了知道如何调用设备支持层外不需要知道有关其设备支持层。这种设计允许一个特定安装以及甚至在一个安装中一个特定IOC选择一个记录类型,设备类型和驱动的唯一集合。IOC系统软的其它部分不受影响。

因为一个应用程序开发者可以开发记录支持,设备支持和设备驱动,这些话题将在后面的章节中更加详细地讨论。

每种记录支持模块必须提供一个由数据库scanner调用的记录运行的例程。记录运行由以下功能的某些组合组成(特定记录类型可能不需要所有函数):

  • 输入:读取输入。可以通过设备支持例程从硬件,通过数据库链接从其它数据库记录或者通过通道访问链接从其它IOCs,获取输入。
  • 转换:原始输入到工程单位或者工程单位到原始输出值的转换。
  • 输出:写输出。输出能够通过设备支持例程被定向到硬件,通过数据库链接被定向到其它数据库记录或者通过通道访问链接被定向到其它IOCs。
  • 产生警报:检查并且产生警报
  • 监视:触发与通道访问回调相关联的monitors。
  • 链接:触发链接记录的运行。

3.5 通道访问

在下一章条件通道访问。

3.6 数据库monitors

数据库monitors为数据库值变边提供了回调机制。当数据库值变化时,在没有持续轮询数据库下,这使得调用者被通知。一个掩码可以被设置成指定值变化,警报变化和/或存档变化。

当前,仅通道访问使用数据库monitors。其它软件不应该使用数据库monitors。

4 通道访问

通道访问提供对IOC数据库的网络透明访问。它是基于客户端/服务器模型。每个IOC提供一个通道访问服务器,它愿意与任何数目的客户端建立通信。通道访问客户端服务在OPIs和IOCs上都可用。一个客户端能够与任何数目的服务器通信。

4.1 客户端服务

基本的通道访问客户端服务:

  • search:定位到包含所选过程变量的IOCs并且与每一个建立通信。
  • get:获取一个所选集合的过程变量的值和其它可选的信息。
  • put:更改所选过程变量的值。
  • add event:添加状态变化回调。这是一个请求,使得服务器只在相关联的过程变量更改状态时才发送信息。能够请求以下状态变化的任意组合:值变化、警报状态和/或严重性变化,存档值的变化。很多记录类型提供了用于值变化的回滞因子。

除了请求过程变量值,可以请求以下其它信息的任意组合:

  • status:警报状态和严重性。
  • units:对应过程变量的工程单位。
  • precision:用其显示浮点数值的精度。
  • time:上次运行记录的时间。
  • enumverated:一个定义枚举值含义的ASCII字符串集合
  • graphics:用于产生图像的高和低限制。
  • control:高和低控制限制。
  • alarm:对应过程变量的警报HIHI,HIGH,LOW和LOW值。

应该注意通道访问不提供以记录访问数据库记录。这是一个特意的设计决定。这使得能够添加新的记录类型而影响通过通道访问访问数据库的任何软件,并且它允许一个通道访问客户端与拥有不同记录类型集合的多个IOCs进行通信。

4.2 搜索服务器

通道访问提供一个驻留IOC的服务器,它等待通道访问搜索消息。当通道访问客户端(例如当一个操作界面任务启动)搜索包含这个客户端使用的过程变量的IOCs时,产生这些消息。这个服务器接收所有搜索请求,检查这些过程变量中是否有一些是否位于这个IOC中,并且如果发现了一些,用"I have it"消息响应发送者。

4.3 连接请求服务器

一旦找到了过程变量,通道访问客户端对包含这个客户端使用的过程变量的每个IOC发送连接请求。在IOC中的连接请求服务器,接受这个请求并且建立一个到这个客户端的连接。每个连接被两个单独任务管理:ca_get和ca_put。ca_get和ca_put请求映射成dbGetField和dbPutField数据库访问请求。ca_add_event请求导致数据库monitors被建立。数据库访问和/或记录支持例程通过调用db_post_event触发这些monitors。

4.4 连接管理

每个IOC提供一个连接管理服务。当一个通道访问服务器出错时(例如:其IOC崩溃),客户端被通知,而当一个客户端出错(例如,其任务崩溃),服务器被通知。当一个客户端出错时,服务器断开连接。当服务器崩溃时,客户端在服务器重启时自动重新建立连接。

5 OPI工具

EPICS提供了很多基于OPI的工具。这些能够根据它们是否使用通道访问被分成两组。通道访问工具是实时工具,即:它们用于监视和控制IOCs。

5.1 通道访问工具示例

已经开发了很多通道访问工具。以下是一些代表性示例:

  • CSS:Control System Stdio,一个带有很多可用插件的Eclipse RCP应用程序。
  • EDM:Extensible Display Manager
  • MEDM:Motif Editor and Display Manager
  • StripTool:一个通用的stripchart程序。
  • ALH:Alarm Handler。由一个alarm配置文件驱动的通用alarm handler。
  • Sequencer:运行在一个IOC中并且模拟一个有限状态机。
  • Probe :允许用户在运行时监视和/或更高单个过程变量。

5.2 其它工具的示例

  • VDCT:一个基于Java的数据库配置工具,它很快变成了推荐的数据库配置工具。
  • SNC:状态标记编辑器。它产生一个C程序,其代表IOC Sequencer工具的状态。

6 EPICS核心软件

EPICS由一个核心软件集合和一个可选组件集合组成。核心软件,即:EPICS没有这些EPICS组件,EPICS不能运行:

  • 通道访问--客户端和服务器软件
  • IOC数据库
  • Scanners
  • Monitors
  • 数据库定义工具
  • 源/发行

 所有其它软件组件是可选的。当然,大部分应用程序将需要MEDM(或EDD/DM)相当的功能。一个应用程序开发者不会从头开发记录和设备支持。大部分OPI工具不是必须被使用。能从一个特定IOC删除任何指定记录支持模块,设备支持模块或者驱动,并且EPICS将仍然工作正常。

猜你喜欢

转载自blog.csdn.net/yuyuyuliang00/article/details/126930752