基于Linux的流设备驱动的实现 韩子国,叶梅 2015-08-20
主要内容 系统概述 系统开发过程 EPICS平台的简单介绍 IOC的实现 监测与控制界面的实现 测试结果与结论
系统概述 需求分析:本文在调研了江门中微子实验需求的基础上,主要介绍了在实验物理和工业控制系统(EPICS)平台上开发流设备驱动程序,即IOC(Input/Output Controller)。 功能:可以远程监测与控制高压机箱与高压插件。 技术方法:采用基于数据流的设备通讯驱动软件模块StreamDevice,用到的接口方式为TCP/IP协议。 界面实现:本文还简单介绍了用CSS(Control System Studio)开发相应的远程监测与控制界面。
系统开发过程 1、实时数据库的建立 2、设备控制软件的开发 3、人机操作界面的开发 数据库信号名定义 建立数据库 数据装入 过程控制 专用I/O驱动程序的开发 3、人机操作界面的开发
EPICS平台 EPICS: 实验物理与工业控制系统 EPICS是美国ANL和LANL实验室联合研制开发的实验物理和工 业控制系统软件包。EPICS提供丰富的控制系统软件开发工具,可 以用来建立分布式的控制系统体系结构,进行系统集成。 优势: 1、大大减少设备级软件开发工作量 2、实现局域网计算机对控制系统实时数据的共享 3、有强大的分布式实时数据库系统 4、简单的人机图形界面开发工具
EPICS平台 OPI (Operator Interface) – 运行在客户端 – 提供图形操作员界面开发工具 – 动态图形控件与实时数据库相连 CA (Channel Access) IOC (Input Output Control) – 运行在服务器 – IOC数据库 – 提供设备驱动程序
IOC的实现 IOC主要组成部分:(1)数据库;(2)信道接入;(3)设备支持。 获取数据流程:设备支持将硬件返回的数据传给数据库,数据库将数据转换成EPICS能识别的数据格式,通过信道接入传递给网络,从而通过网络将数据传给客户端监控软件。发送命令流程与之相反。
StreamDevice是一种基于数据流的设备通讯驱动软件模块,通过发送和接收字符串来远程控制硬件设备 1、将StreamDevice软件包直接放到用户创建的EPICS应用目录下,通过编译StreamDevice生成用户需要的库文件,供用户调用。 2、将StreamDevice作为一种第三方外部模块,用户在使用时需要在新创建的EPICS应用目录内的RELEASE文件中指定其路径,并修改相关的配置文件重新编译即可调用相关库文件。
Protocol文件定义了record与硬件设备之间的多种通信协议。 不同类型的硬件设备都会使用各自独立的protocol文件。 record在INP域或OUT域中加载相对应的protocol文件名。 可以通过设置环境变量STREAM_PROTOCOL_PATH来指定protocol文件位置。 内容示例: readai{ out "$CMD:MON,CH:\$1,PAR:\$2"; in "#CMD:OK,VAL:%f"; }^M readstring{out "$CMD:MON,CH:\$1,PAR:\$2"; in "#CMD:OK,VAL:%s";}^M …. “$CMD:MON,CH:\$1,PAR:\$2”; “#CMD:OK,VAL:%f”; 为硬件设备通讯命令,这里要根据不同的硬件设备进行设置。 out: 代表输出到硬件设备的指令;in: 代表反馈的数据信息
Db文件指的是数据库文件。定义了数据类型、数据处理、数据输入输出等有关数据的信息。 Db文件主要由record组成。下面是一个record的示例 record(ai, “$(S):$(SS):$(D):$(CH_NAME):VMon”) { field(DESC, "Monitor Voltage") field(DTYP, “stream”) field(INP, “@nim8304.proto readai($(CH),VMON) $(PORT)” field(PREC, "2") field(EGU, "V") field(SDIS, "$(S):$(SS):$(D):Disable") } 1、DTYP:指定设备支持类型。这里是StreamDevice。 2、INP:输入。这里加载了nim8304.proto文件中的readai函数。 3、ai :模拟信号输入。需要根据硬件设备数据类型来选择。bi为数字信号输入。
监测与控制界面的实现 CSS是什么? Eclipse RCP是什么? CSS(Control System Studio)是一个以Eclipse RCP(Rich Client Platform)为框架结构,由多个应用程序以插件的形式组成的跨平台集成开发工具软件。可实现控制系统的界面制作、语音报警、数据存档等功能。 Eclipse RCP是什么? Eclipse RCP是基于Eclipse项目推出的一个富客户端平台开发的应用框架,目的在于为开发人员提供一个功能强大的、快速的、可扩展的应用平台。Eclipse RCP采用插件技术,便于扩展。
1、启动CSS,完成配置工作,Edit->Preference。如服务器IP等。 监测与控制界面的实现 CSS开发步骤: 1、启动CSS,完成配置工作,Edit->Preference。如服务器IP等。 2、新建OPI工程,将需要的控件从控件窗口拖动到编辑窗口。 3、以IOC的PV名命名控件名。此时控件就会实时监控PV数据。 CSS测试程序: IOC测试record如下: record(calc,"VME:Voltage_5V") { field(SCAN,"1 second") #扫描周期1s field(INPA,"10") #A为10 field(CALC,"RNDM*A") #产生随机数乘以A } 从测试程序可以看出,运行前,将一个XY图像的名字设置为某个PV名字,运行后就可以实时监测到此PV的当前值。测试程序中,每隔1秒扫描一次,输入A为10,产生一个随机数,乘以A得到了一条实时曲线。
Name:通道名字 VMon:监测电压值 IMon:监测电流值 ISet:设置电流值 ISet.RBV:预设电流值 Power:开关 监测与控制界面的实现 Name:通道名字 VMon:监测电压值 IMon:监测电流值 ISet:设置电流值 ISet.RBV:预设电流值 Power:开关 高压机箱界面
Ch0-3:通道名字 Voltage:监测电压值 Current:监测电流值 RUP:上升速度 RDW:下降速度 Power:开关 监测与控制界面的实现 Ch0-3:通道名字 Voltage:监测电压值 设置电压值 预设电压值 Current:监测电流值 设置电流值 预设电流值 RUP:上升速度 RDW:下降速度 Power:开关 高压插件界面
测试结果与结论 测试结果 1、实现了实时监测高压机箱与高压插件的各个参数。 2、实现了控制高压机箱开关与高压插件升降高压。 3、实现了预设电压与电流值,配置基本参数。 4、监测数据可以通过Python程序存到MySQL中。 5、加入了报警触发机制,当数据不在阈值范围内时,就会触发报警,数据框或指示灯将显示红色警报。
测试结果与结论 结论 1、从结果可以看出,本驱动基本完成了对高压电源及其插件的监测与控制,经过了一年的调试与运行,达到了预期效果。可以作为江门中微子实验高压系统软件设计及开发的参考。 2、随着探测器设计的逐步完善,在后续的应用开发中,还会根据需求,继续完善相应的功能。