在工业控制与实验物理领域,EPICS(Experimental Physics and Industrial Control System)作为分布式控制系统的事实标准,其稳定性和扩展性备受推崇。本文将手把手带你完成Ubuntu 22.04 LTS系统上EPICS Base 7.0.6.1的完整部署,涵盖从系统准备到IOC测试的全流程,特别针对实际工程场景中的痛点问题提供解决方案。
首先确认系统版本和架构:
bash复制lsb_release -a
uname -m
对于x86_64架构的Ubuntu 22.04,需要安装以下编译工具链:
bash复制sudo apt update
sudo apt install -y git build-essential libreadline-dev
注意:若使用Ubuntu 24.04,需额外安装
libreadline8兼容库
根据实际应用场景选择安装:
libx11-dev libxt-devlibsqlite3-devnet-tools tcpdump建议采用分层目录结构管理EPICS工程:
bash复制mkdir -p ~/epics/{base,support,iocs}
cd ~/epics/base
git clone --branch 7.0.6.1 https://github.com/epics-base/epics-base.git
进入源码目录进行编译:
bash复制cd epics-base
make -j$(nproc)
常见编译问题排查:
undefined reference to 'pthread'错误,执行:bash复制export EPICS_HOST_ARCH=linux-x86_64
make clean
make
bash复制sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
针对不同shell环境提供两种配置方案:
方案A:.bashrc(交互式shell专用)
bash复制echo 'export EPICS_BASE=~/epics/base/epics-base' >> ~/.bashrc
echo 'export PATH=$EPICS_BASE/bin/$EPICS_HOST_ARCH:$PATH' >> ~/.bashrc
方案B:.profile(系统级应用推荐)
bash复制cat << EOF >> ~/.profile
# EPICS Environment
if [ -z "\$EPICS_HOST_ARCH" ]; then
export EPICS_HOST_ARCH=\$(\$HOME/epics/base/epics-base/startup/EpicsHostArch)
fi
export EPICS_BASE=\$HOME/epics/base/epics-base
export PATH=\$EPICS_BASE/bin/\$EPICS_HOST_ARCH:\$PATH
EOF
执行以下命令验证配置:
bash复制source ~/.bashrc # 或 source ~/.profile
which caget
epicsHostArch
bash复制mkdir -p ~/epics/iocs/testIoc
cd ~/epics/iocs/testIoc
makeBaseApp.pl -t example testIoc
makeBaseApp.pl -i -t example testIoc
make
创建测试数据库文件test.db:
plaintext复制record(ai, "demo:temp") {
field(DESC, "Test temperature")
field(PREC, "3")
field(HOPR, "100")
field(LOPR, "0")
}
bash复制cd iocBoot/ioctestIoc
./st.cmd
bash复制caget demo:temp
caput demo:temp 25.5
camonitor demo:temp
多网卡环境配置示例:
bash复制export EPICS_CA_ADDR_LIST="192.168.1.255"
export EPICS_CA_AUTO_ADDR_LIST=NO
创建start_testIoc.sh:
bash复制#!/bin/bash
export EPICS_BASE=~/epics/base/epics-base
export PATH=$EPICS_BASE/bin/$EPICS_HOST_ARCH:$PATH
cd ~/epics/iocs/testIoc/iocBoot/ioctestIoc
exec ./st.cmd
设置可执行权限:
bash复制chmod +x start_testIoc.sh
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| make失败 | 缺少依赖库 | 执行sudo apt install libreadline-dev |
| caget未找到 | PATH未配置 | 检查.bashrc或.profile配置 |
| 网络不通 | 防火墙限制 | 检查ufw status |
bash复制env | grep EPICS
bash复制make clean
make VERBOSE=1
bash复制cd ~/epics/support
git clone https://github.com/epics-modules/asyn.git
cd asyn
echo "EPICS_BASE=$HOME/epics/base/epics-base" >> configure/RELEASE
make
修改testIocApp/src/Makefile:
makefile复制testIoc_LIBS += asyn
在开发过程中,建议使用版本控制工具管理IOC配置。遇到数据库加载问题时,可以先用dbl命令检查记录是否成功加载,再通过dbgf命令调试字段属性