在安裝前在重複一下系統的目錄結構:
/epics
/base-3.14.12.6
/modules
/asyn4-32
/StreamDevice-stream_2_7_7
/extensions
1、安裝asyn
下載地址:https://epics.anl.gov/modules/soft/asyn/
選擇下載最新版本的asyn
1.1 asyn 的作用
epics系統通過網絡訪IOC,並通過驅動控制底層串口或網絡設備。運行IOC的設備相當於服務器,加載IOC中應加載.db;.dbd;.protocol等文件。
設備的各種變量(設備名稱,電壓,電流等)分別作爲一個通道記錄(Record)在.db文件中;而.dbd文件則定義了.db文件的類型和格式,作用域等。.protocol文件是用戶根據自己的需求,對廠家提供的設備通訊協議進行更改、再定義的文件。
客戶端機器通過TCP/IP訪問運行IOC的服務器機器,應用程序通過EPICS shell定義的命令訪問IOC,讀取其中控制對象信息等記錄(Record)。對設備的控制命令則由設備廠家提供的通訊協議規定。
ASYN就是提供與硬件設備通訊的驅動的支持,StreamDevice 則是放在創建的應用程序中,調用ASYN並實現通訊協議的方法。(Streamdevice支持GPIB USB Serial TCP/IP等多種方式)
Asyn裝在哪裏都可以,沒有影響,裝好之後由不同的應用程序調用,在RELEASE裏指定asyn目錄即可。Asyn所提供的設備驅動是一般(low level)的驅動,其他特殊設備需要其他的驅動。
1.2 asyn 的安裝的過程
在上面建立一個modules 文件夾,並且將asyn在此文件夾下解壓縮
(1)修改configure/RELEASE 的文件中的環境變量
#修改RELEASE文件
#EPICS_BASE=/home/epics/base-3.14.12.6 #指向正確的位置(自己安裝的位置)
#註釋掉IPAC(與vxworks相關的)與SNCSEQ(沒有安裝epics的SNCSEQ的情況下)
修改後的情況如下:
2 安裝stream device
StreamDevice是爲設備提供基於字節流的接口支持。比如串行接口(RS-232,RS485, …),IEEE-488總線(GPIB或HP-IB),和telnet協議(TCP/IP)。
下載網址:http://epics.web.psi.ch/software/streamdevice/
安裝過程如下:
>>>>>>>>git clone https://github.com/paulscherrerinstitute/StreamDevice.git
Cloning into 'StreamDevice'...
remote: Enumerating objects: 154, done.
remote: Counting objects: 100% (154/154), done.
remote: Compressing objects: 100% (93/93), done.
remote: Total 3190 (delta 85), reused 100 (delta 61), pack-reused 3036
Receiving objects: 100% (3190/3190), 864.85 KiB | 11.00 KiB/s, done.
Resolving deltas: 100% (2348/2348), done.
ps,如下所示是對streamdevice 的安裝的過程,版本要完全的對應好。除此之外,我採用的是vim ,如下展示的是emacs,只是編輯器的不同。
>cd StreamDevice-steam_2_7_7 (進入該文件夾)
>mkdir trash (創建文件夾)
>mv GNUmakefile trash/ (移動文件 GNUmakefile 至文件夾 trash 中)
>mkdir configure (創建文件夾)
>cp -r ../asyn4-32/configure/* configure/
>emacs configure/RELEASE #加 (修改文件)ASYN=$(EPICS_BASE)/../modules/asyn4-32
>emacs src/devwaveformStream.c #加 #include <errlog.h>(已經有了就可以不加)
>修改<top>中以及 src, srcSynApps, streamApp 下的 Makefile 中的 TOP 值。一共4個,修
改值值 TOP 目錄下
#for example: emacs Makefile # 修改 TOP=./
> emacs Makefile&
# change “TOP = ..” to “TOP = .”
# emacs ./src/Makefile
# change “TOP = ../..” to “TOP = ..”
# emacs ./streamApp/Makefile
# change “TOP = ../..” to “TOP = ..”
# emacs ./srcSynApps/Makefile
# change “TOP = ../..” to “TOP = ..”