admin管理员组

文章数量:1530984

实验物理与工业控制系统---EPICS

  • EPICS 简介
    • 什么是EPICS?
    • EPICS 授权
    • EPICS的诞生
    • EPICS合作开发
    • EPICS 7.0的开发平台和运行平台
    • s7nodave,S7 PLC的EPICS设备驱动程序
    • IOC支持模块
      • 软支持
      • 硬件支持
  • 如何配置Channel Access
  • StreamDevice简介
  • EPICS的Callback机制
  • EPICS Sequencer简介
  • EPICS和OPC UA之间的通讯
  • MQTT-Channel Access桥
  • EPICS的版本
  • EPICS的移植
  • EPICS中Record、Field、PV和Channel之间的关系
  • EPICS autosave模块简介
  • EPICS的基本架构
  • 支持EPICS的GUI框架CS-Studio和QT
  • EPICS Qt框架简介
  • RMT与IOC冗余
  • EPICS的Python扩展
  • 嵌入式EPICS
  • 软实时(Soft Real-time)EPICS
  • 基于Nagios的EPICS网络监控
  • EPICS与无线网络

EPICS 简介

什么是EPICS?

EPICS是一套软件工具和应用程序,为构建分布式控制系统提供软件基础设施,以操作诸如粒子加速器、大型实验和主要望远镜等设备。这种分布式控制系统通常由数十台甚至数百台计算机组成,这些计算机通过网络连接在一起,允许它们之间的通信,并从中央控制室甚至通过互联网远程控制和反馈设备的各个部分。
EPICS使用客户机/服务器和发布/订阅技术在不同的计算机之间进行通信。大多数服务器(称为输入/输出控制器或IOC)执行实际的I/O和本地控制任务,并使用通道访问(CA)网络协议将这些信息发布到客户机。CA是专门为使用EPICS的高带宽、软实时网络应用程序而设计的,这也是为什么它可以用于构建由数百台计算机组成的控制系统的原因之一。
最初,所有的EPICS IOC都必须运行在Wind River的vxWorks实时操作系统上,但2004年以来,可以在GUN/Linux、Solaris、MS-Windows、MacOS和RTEMS上运行IOC。可提供便携式软件,允许非EPICS控制系统充当CA服务器。CA客户机能够在各种各样的计算机和操作系统上运行——大多数风格的Unix、GNU/Linux、Windows、RTEMS和VXWorks。
EPICS也是参与软件开发和使用的组织的协作名称。它最初是Los Alamos National Laboratory和Argonne National Laboratory联合编写的,现在被世界各地的许多大型科学设施所使用。开发现在在这些不同的组织之间协作进行,I/O设备支持和客户机应用程序的共享非常多。

EPICS 授权

EPICS不是一个单一的软件,而是一组软件工具的集合,这些工具协同工作以帮助创建一个控制系统。EPICS的不同部分是在不同的组织、机构、企业开发的,并根据软件的发起人的意愿以不同的许可证分发,而软件的发起人的意愿通常又取决于实验室或其他组织对于此项工作的要求和政策。
所有在Argonne 或Argonne 与Los Alamos合作编写并由APS分发的EPICS代码现在都在EPICS Open license下使用。EPICS Open license源于旧的、更具限制性的EPICS Base license,包括美国能源部要求的某些措辞(这就是为什么我们不能仅使用修改后的BSD许可证)。EPICS旨在遵守Open Source Definition,但目前尚未提交给OSI小组审批。

EPICS的诞生

Beam Telescope:(用于ANL的 IPNS装置)控制系统(由LANL开发)采用了一个运行DEC Windows图形用户界面的Vaxstation,并以CAMAC为分布式数据采集和网络实现平台,这项工作在瑞士Villars的ICALEPCS-87(1987年)会议上展示时,引起了ANL团队和许多其他团队的兴趣。

LANL Toolkit Workshop:1988年在LANL举办的加速器自动化应用工具箱研讨会上,ANL团队的最初成员与来自世界各地的加速器控制人员一起参加了会议。会议进行了热烈的讨论,并为LANL团队指出了开发方向。但是后来这些建议和想法从未得到发展。

GTACS:工具箱研讨会的成果是GTACS(Ground Test Accelerator Control System)系统的开发,该系统体现了研讨会上提出的许多想法,更重要的是,它体现了关键的核心软件和基于工具的设计概念,使其能够用于爆炸式扩展的应用程序阵列中。Jeff Hill、Bob Dalesio等人在LANL的工作是一个坚实的基础。

ANL加入LANL:LANL和ANL团队在加拿大温哥华ICALEPCS-89会议会面,ANL团队有一个APS控制系统要设计开发,希望与LANL-GTA团队合作开发。在合作过程中,他们加深了对GTACS的认识。

GTACS演变成了EPICS:随着ANL团队的人员配备和对GTACS的熟悉,他们开始(并受到LANL团队的鼓励)提出改进建议,以提高GTAC的实用性、便利性和跨平台透明度。最后,为了与多实验室共同开发工作保持一致,并减少混淆,建议对新版本使用更通用的名称,EPICS(Experimental Physics and Industrial Control System)从此诞生了!

EPICS合作开发

EPICS合作开发组织包括5个美国实验室:

  • Los Alamos National Laboratory
  • Argonne National Laboratory,
  • Lawrence Berkeley Laboratory
  • Superconducting Super Collider Laboratory
  • Continuous Electron Beam Accelerator Facility

EPICS Base 3.14.12.8的核心开发成员是:

  • Martin R. Kraimer, Janet B. Anderson, Andrew N. Johnson (Argonne National Laboratory)
  • W. Eric Norum (Lawrence Berkeley Laboratory)
  • Jeffrey O. Hill (Los Alamos National Laboratory)
  • Ralph Lange, Benjamin Franksen (Helmholtz-Zentrum Berlin)
  • Peter Denison (Diamond Light Source)

EPICS还有数个工业合作伙伴。

EPICS 7.0的开发平台和运行平台

EPICS 7.0可以在如下平台开发:

  • GNU/Linux on Intel, PowerPC or ARM

  • MacOS X (Darwin) on Intel

  • MS Windows on x86 or x64 using MS Visual Studio, Cygwin, or MinGW
    EPICS 7.0 IOC 可以在如下平台运行:

  • GNU/Linux on Intel, PowerPC or ARM

  • MacOS X (Darwin) on Intel

  • MS Windows on x86 or x64

  • RTEMS releases up to 4.10.x on any previously supported CPU.

  • vxWorks 6.8 or later on PowerPC or Intel CPUs.

s7nodave,S7 PLC的EPICS设备驱动程序

s7nodave是一款S7 PLC的EPICS的设备驱动程序,它基于Asyn和libnodave,其中libnodave用来与S7或S7兼容的PLC通信。和其它S7 PLC的EPICS设备驱动程序不同,这款设备驱动程序不需要在PLC端编写任何编码,只需要在EPICS records中指定内存地址,并使用被大多数S7 PLC支持的ISO-TCP协议来读取通道数据。

详细信息参见:https://oss.aquenos/epics/s7nodave/

IOC支持模块

随着越来越多的设备和记录支持软件被编写在不同的EPICS应用系统中,以连接不同类型的硬件,很明显不是所有这些模块都能作为EPICS BASE的一部分集中管理和分发。因此,许多支持层软件已经从EPICS BASE上移除,现在单独维护。根据模块的用途,将它们分类为软支持(Soft Support)或硬件支持(Hardware Support)。

软支持

软支持模块可以包含一个新的记录类型、纯软件设备支持或一些在IOC中运行但却不容易用特定硬件识别的其他软件。

硬件支持

Steve Lewis提供了最全面的硬件支持列表,如果你想要的设备没有在这里列出,你也可以尝试使用谷歌的网络搜索。
许多使用Linux的PCI板内核驱动程序可以从Comedi项目中获得(推荐使用Asyn驱动层与Comedi连接到EPICS)。

如何配置Channel Access

  1. 基本操作,一个IOC在同一子网上
    假设一个IOC有一个记录“fred”,你想用“caget fred”或类似的CA客户来阅读它。
    如果是一个IOC在同一个子网上,事情很简单:
    默认情况下,CA客户端将广播名称搜索请求到子网上的UDP端口5064。只要IOC在该子网上的任何计算机上运行,它就应该接收这些搜索请求。然后,服务器和客户机将建立一个TCP连接,并交换数据。

  2. 不同计算机上有多个IOC,但子网相同
    如果运行多个IOC,每个IOC都在各自的计算机上,在同一子网上,基本广播名称搜索仍将成功,无需更改。

  3. 不同子网上的IOC
    默认广播名称搜索仅限于运行CA客户端的计算机的子网。要访问一个或多个附加子网上的IOC,需要配置环境变量epis_ca_addr_list。它可以列出每个IOC的特定IP地址,也可以列出其子网的广播地址。但是请注意,路由器通常不会转发广播请求,这意味着使用特定的IP地址。

  4. 同一台计算机上有多个IOC
    在计算机上启动第一个IOC时,它将监听UDP端口5064上的名称搜索。当在同一台计算机上启动第二个IOC时,它还将监听UDP端口5064上的名称搜索。但是,由于大多数网络内核的限制,只有最后启动的IOC才能实际接收发送到该计算机端口5064的UDP搜索请求。作为一种解决方法,您需要配置epis_ca_addr_列表以使用各自子网的广播地址。

或者,您可以自动设置将绕过问题的IPtables规则。(请参阅如何使通道访问在Linux主机上访问多个软IOC。)

  1. 同一台计算机上但在不同子网上有多个IOC
    结合最后两个点会导致一个问题:要在同一台计算机上访问多个IOC,必须将epis_ca_addr_list设置为该计算机子网的广播地址。但是,如果IOCS的子网与CA客户端的子网不同,则广播搜索数据包通常不会由中间网络路由器转发。
    有几种方法可以解决这个问题:
    • 通道访问网关
      在具有所需IOC的子网上运行的PV网关将使用其EPIC地址列表中该子网上的广播地址,以便它可以到达整个子网上所有IOC,包括在同一台计算机上运行的多个IOC。不同子网上的CA客户机只使用网关的epis_ca_addr_list=ip直接到达网关,这可以通过路由器实现。
      除了建立基本的连接之外,网关还提供IOC负载减少,它可以增加访问安全性,例如限制写访问。
    • CA名称服务器
      您可以在GUI子网中运行一个CA名称服务器,该服务器了解IOC并响应搜索请求;在这种情况下,您不会设置EPIC_ca_addr_列表变量。这几乎相当于运行一个CA网关,但是它的健壮性稍高一些,因为如果名称服务器进程停止,它不会杀死任何现有的连接。
    • UDP广播包中继
      如果您可以访问两个子网上都有网络接口的机器,则可以在机器上运行一个名为udp broadcast packet relay的程序,在子网上转发udp broadcast packet。为了获得最佳性能,您应该运行它两次,一次用于端口5064,另一次用于5065。第一个将在子网之间转发CA搜索请求,而第二个将重新分配CA信标,这有助于在IOC关闭一段时间后更快地重新连接频道。
  2. 防火墙
    防火墙可能需要配置为在端口5064和5065上传递UDP和TCP通信。

StreamDevice简介

StreamDevice是对具有基于“字节流”的通信接口的设备的通用EPICS设备支持。这意味着可以通过发送和接收字符串来控制设备(从最广泛的意义上来说,包括不可打印的字符,甚至是空字节)。这种通信接口的例子有串行线(RS-232、RS-485,…)、IEEE-488(也称为GPIB或HP-IB)和TCP/IP。StreamDevice附带了一个到asyndriver的接口,它实现了对这些通信接口的低级支持。但它可以被扩展以支持其他总线驱动程序。

StreamDevice支持所有具有设备支持功能的EPICS Base标准记录。也可以编写对新记录类型的设备支持。
StreamDevice 2已在以下位置进行测试:

  1. Linux-x86(rh-7.3、rh-9.0、sl-3、sl-5、sl-6、fc-3、fc-5、fc-6)
  2. Solaris SPARC和Solaris SPARC GNU(SUNOS 5.8)
  3. Cygwin-x86(Windows XP、Cygwin 1.5.20)
  4. Win32-x86(Windows XP)
  5. VXWorks-PPC603
  6. VXWorks-PPC604
  7. RTMES

EPICS的Callback机制

EPICS采用了Callback机制, 实现网络协议和设备驱动中的异步处理, 在设备数据或状态变化时设备驱动才读取数据, 并传输到网络, 减轻网络通讯负荷和控制器CPU负载。《EPICS控制系统的Callback机制》一文清晰地阐述了这种机制,值得阅读。

  1. CA协议中的Callback
    OPI和IOC间用以太网连接, 用基于TCP/IP协议的Channel Access 协议通讯。每个通道对应IOC数据库中的一个记录域。CA协议采用客户-服务者模型, OPI作为客户, 请求数据;IOC主要作为服务者, 提供数据, 有时也可作客户要求其他IOC上的数据。OPI为及时掌握设备运行情况,

本文标签: 控制系统物理工业EPICS