文章目录
前言
最近,笔者在摸索和学习控制系统EPICS,遂写下自己的学习笔记,以防忘记,分享心得供大家参考,欢迎指正和讨论。
一、Epics是什么?
EPICS (Experimental Physics and Industrial Control System)是一套软件工具和应用程序,它们提供了用于构建分布式控制系统的软件基础设施。
这种分布式控制系统通常由数十台甚至数百台计算机组成,通过网络连接在一起,以实现它们之间的通信,并从中央控制室或甚至通过互联网远程提供对设备各部分的控制和反馈。
EPICS Documationation网址如下:网页链接
二、Epics Base安装步骤
1.安装依赖包
在安装epics之前,需要安装make、c++、libreadline等依赖包,可以使用 sudo apt-get install [依赖包名称]来实现。
2.epics安装
在命令行中依次输入如下指令:
mkdir $HOME/EPICS
cd $HOME/EPICS
git clone --recursive https://github.com/epics-base/epics-base.git
cd epics-base
make
3.检验
使用上一步的make指令编译,无报错之后,在命令行中输入:
softIoc
如下图所示,则表明epics安装成功。
三、创建一个IOC案例
IOC(Input/Output Controller)是EPICS的I/O服务器组件。几乎所有支持EPICS基本组件(如数据库和网络通信)的计算平台都可以用作IOC。
1.创建test.db
在任意位置(在这个案例中,笔者在桌面创建的),创建一个test.db文件,文件的内容如下:
record(ai, "temperature:water")
{
field(DESC, "Water temperature in the fish tank")
}
这个文件定义了一个名为temperature:water的record实例,它是一个模拟输入(ai)record。你可以想象DESC停留在Description。
2.启动数据库
现在我们再次启动softIoc,但这次使用这个记录数据库。
softIoc -d test.db
现在,在EPICS提示符中,可以使用dbl命令列出可用的记录,将看到如下内容:
打开第二个命令行窗口,并尝试输入caput和caget,将看到如下结果:
这只是一个简单的例子。请参考记录参考手册以获得更多信息。
四、安装asyn工具包
asynDriver(也称为asyn)是一个通用的工具,用于将设备特定的代码接口到低层通信驱动程序。
asynDriver的主要目标是获得EPICS IOC设备支持,但是除了使用EPICS构建系统和libCom库之外,大部分代码都是设计成可以在EPICS IOC之外使用的。
可在官方网址更多的了解asyn。
1.下载asyn安装包
通过如下指令,安装asyn:
cd $HOME/EPICS
mkdir support
cd support
git clone https://github.com/epics-modules/asyn.git
cd asyn
2.设置环境变量
编辑该路径…/EPICS/support/asyn/configure/RELEASE的RELEASE文件,设置EPICS_BASE的值如下图所示:
注意,该地址为Epics Base的安装地址,如果您的安装地址不同,请做出相应修改。
3.把不需要的模块注释掉
把RELEASE文件中的 IPAC=… 和 SNCSEQ=…注释掉,因为目前暂时用不上这两个工具包,如果有该需求,请自行下载。修改之后的RELEASE文件如下:
#RELEASE Location of external products
HOME=/Users/maradona
SUPPORT=$(HOME)/EPICS/support
-include $(TOP)/../configure/SUPPORT.$(EPICS_HOST_ARCH)
# IPAC is only necessary if support for Greensprings IP488 is required
# IPAC release V2-7 or later is required.
#IPAC=$(SUPPORT)/ipac-2-14
# SEQ is required for testIPServer
#SNCSEQ=$(SUPPORT)/seq-2-2-5
# EPICS_BASE 3.14.6 or later is required
EPICS_BASE=$(HOME)/EPICS/epics-base
-include $(TOP)/../configure/EPICS_BASE.$(EPICS_HOST_ARCH)
4.编译
回到asyn的目录下,即…/EPICS/support/stream/asyn,在该位置使用make进行编译:
编译无错误,则代表asyn安装成功。
五、安装StreamDevice工具包
StreamDevice是一个通用的EPICS设备,支持基于“字节流”通信接口的设备。这意味着可以通过发送和接收字符串(从最广泛的意义上说,包括不可打印字符甚至空字节)来控制的设备。
可在官方网址更多的了解StreamDevice。
1.下载StreamDevice安装包
通过如下指令,安装StreamDevice:
cd $HOME/EPICS/support
git clone https://github.com/paulscherrerinstitute/StreamDevice.git
cd StreamDevice/
rm GNUmakefile
2.设置环境变量
编辑该路径$HOME/EPICS/support/asyn/configure/RELEASE的RELEASE文件,设置EPICS_BASE的值如下图所示:
EPICS_BASE=${HOME}/EPICS/epics-base
SUPPORT=${HOME}/EPICS/support
ASYN=$(SUPPORT)/asyn
注意,您的安装地址不同,请做出相应修改。
3.把不需要的模块注释掉
在这里,我们先把不需要用到的工具包注释掉,如果有需求,请自行下载。修改之后的RELEASE文件需下图所示:
#RELEASE Location of external products
# Run "gnumake clean uninstall install" in the application
# top directory each time this file is changed.
#
# NOTE: The build does not check dependencies on files
# external to this application. Thus you should run
# "gnumake clean uninstall install" in the top directory
# each time EPICS_BASE, SNCSEQ, or any other external
# module defined in the RELEASE file is rebuilt.
TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top
# If you don't want to install into $(TOP) then
# define INSTALL_LOCATION_APP here
#INSTALL_LOCATION_APP=<fullpathname>
SUPPORT=${HOME}/epics/support
-include $(TOP)/../configure/SUPPORT.$(EPICS_HOST_ARCH)
ASYN=${SUPPORT}/asyn
# CALC=$(SUPPORT)/calc-3-7
# PCRE=$(SUPPORT)/pcre-7-2
# EPICS_BASE usually appears last so other apps can override stuff:
EPICS_BASE=${HOME}/epics/base-3.16.1
# These lines allow developers to override these RELEASE settings
# without having to modify this file directly.
-include $(TOP)/../RELEASE.local
-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
-include $(TOP)/configure/RELEASE.local
4.编译
回到StreamDevice的目录下,即…/EPICS/support/stream/StreamDevice,在该位置打开命令行,使用make编译无误,则表明安装成功。