EPICS database练习

给定一个以下的数据库:

# 指定Limit的上限,初始为10,可以通过通道访问进行设置,上限为100
record(ao, "$(P)Limit")
{
field(DRVH, "100")
field(DOL, "10")
field(PINI, "YES")
}# 一个从0到'Limit'的渐变,这个Limit可以通过一个单独的记录进行配置
# 此记录1秒钟运行一次,每次运行时将自身值和Limit值进行比较,如果小于,则自增1,否则设为0
record(calc, "$(P)Ramp")
{
field(SCAN, "1 second")
field(INPA, "$(P)Ramp")
field(INPB, "$(P)Limit")
field(CALC, "A<B ? A+1 : 0")
}

根据以下要求对其进行扩展:

1、添加一个"$(P)Step"记录并且在CALC中使用它,使得渐变中步长增量能够在0.1和5之间。

2、为所有三个记录创建一个显示窗口。

3、让"$(P)Ramp"显示"a.u."的单位,并且使得它在十进制点后显示2位数字。

4、添加一个小组件到显示窗口,使得能够控制这个逻辑过程用什么速率。

5、配置"$(P)Ramp"在其值大于8时产生一个警报。

6、配置"$(P)Ramp"仅在其值变化2或更多时才发送值到一个存档程序。

7、添加一个模拟输出记录,当运行时,重置"$(P)Limit"为10。添加一个触发这个重置的按钮到显示窗口。

数据库设计如下:

$(P)Step记录用作输出,范围为0.1~5,其默认输出为1;calc通过INPC读取$(P)Step的值,并且存入C中并作为计算中使用的自增步长。

$(P)Reset记录运行时,将其值通过OUT字段写入到$(P)Step记录中。

$(P)Ramp记录字段设置如下:

  • PREC=2:小数点后取2位。
  • EGU=a.u.:设置记录的显示单位。
  • HIGH=8:当记录值超过8时,触发HSV设置的MINOR警报。
  • ADEL=2:变化超过2时,发送给存档程序。

文本数据库:

record(ao, "$(P)Limit") {field(SCAN, "Passive")field(PINI, "YES")field(DOL, "10")field(DRVH, "100")field(DRVL, "0")
}record(calc, "$(P)Ramp") {field(SCAN, "1 second")field(CALC, "A<B ? A+C : 0")field(INPA, "$(P)Ramp")field(INPB, "$(P)Limit")field(INPC, "$(P)Step")field(EGU, "a.u.")field(PREC, "2")field(HIGH, "8")field(HSV, "MINOR")field(ADEL, "2")
}record(ao, "$(P)Step") {field(SCAN, "Passive")field(PINI, "YES")field(DOL, "1")field(DRVH, "5")field(DRVL, "0.1")
}record(ao, "$(P)Reset") {field(SCAN, "Passive")field(PINI, "YES")field(DTYP, "Soft Channel")field(OUT, "$(P)Limit PP")field(DOL, "10")
}

测试:

运行数据库:

root@orangepi5:/usr/local/EPICS/program/softdb# softIoc -m P=Test: -d ramp_with_limit.db
Starting iocInit
############################################################################
## EPICS R7.0.7
## Rev. 2023-05-18T10:40+0800
## Rev. Date build date/time:
############################################################################
iocRun: All initialization complete
epics> dbl
Test:Limit
Test:Step
Test:Reset
Test:Ramp

用CSS创建显示窗口:

  • Limit输入框用于设置Test:Limit记录。
  • Step输入框用于设置Test:Step记录,设置范围0.1~5,用作Ramp记录渐变的步长。
  • Ramp显示文本框用于显示Test:Ramp记录。 
  • Reset按钮用于设置Test:Limit记录为10。

二进制记录

1)创建一个值为"Normal"和"Doubled"的BO记录,并将其添加到显示窗口。

2)在$(P)Ramp中使用来加倍有效的步长大小。

3)配置这个BO使其在设置成"Doubled"时,有效步长翻倍,在5秒钟后,它将恢复成"Normal"。

设计数据库如下:

添加的Bo记录名为$(P)Accel

文本数据库为:

record(ao, "$(P)Limit") {field(SCAN, "Passive")field(PINI, "YES")field(DOL, "10")field(DRVH, "100")field(DRVL, "0")
}record(calc, "$(P)Ramp") {field(SCAN, "1 second")field(CALC, "A<B ? A+C*(D? 2 : 1) : 0")field(INPA, "$(P)Ramp")field(INPB, "$(P)Limit")field(INPC, "$(P)Step")field(INPD, "$(P)Accel")field(EGU, "a.u.")field(PREC, "2")field(HIGH, "8")field(HSV, "MINOR")field(ADEL, "2")
}record(ao, "$(P)Step") {field(SCAN, "Passive")field(PINI, "YES")field(DOL, "1")field(DRVH, "5")field(DRVL, "0.1")
}record(ao, "$(P)Reset") {field(SCAN, "Passive")field(PINI, "YES")field(DTYP, "Soft Channel")field(OUT, "$(P)Limit PP")field(DOL, "10")
}record(bo, "$(P)Accel") {field(SCAN, "Passive")field(PINI, "YES")field(DTYP, "Soft Channel")field(OMSL, "supervisory")field(HIGH, "5")field(ZNAM, "Normal")field(ONAM, "Doubled")
}

加载数据库进行测试:

root@orangepi5:/usr/local/EPICS/program/softdb# softIoc -m P=Test: -d ramp_with_limit2.db
Starting iocInit
############################################################################
## EPICS R7.0.7
## Rev. 2023-05-18T10:40+0800
## Rev. Date build date/time:
############################################################################
iocRun: All initialization complete
epics> dbl
Test:Limit
Test:Step
Test:Reset
Test:Accel
Test:Ramp

CSS显示界面修改如下:

测试如下:

当按下Double时,渐变的步长在Step执行步长基础上翻倍,在点击Double的5秒钟后,恢复成Normal,并且步长变为Step指定的步长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-menu 保持展开点击不收缩 默认选择第一个菜单

<el-menu:default-openeds"[/system]" 数组 默认展开第一个:collapse"isCollapse"close"handleClose" 点击关闭的时候 让菜单打开 就可以实现保持展开效果ref"menus":unique-opened"true":active-text-color"se…

2024中国(重庆)人工智能展览会8月举办

2024中国(重庆)人工智能展览会8月举办 邀请函 主办单位&#xff1a; 中国航空学会 重庆市南岸区人民政府 招商执行单位&#xff1a; 重庆港华展览有限公司 【报名I59交易会 2351交易会 9466】 展会背景&#xff1a; 2024中国航空科普大会暨第八届全国青少年无人机大赛在…

QT 项目打包(为了后期远程实验用)

一、环境准备 1、一个项目工程 二、步骤 1、将编译器设置调整为Release模式 二、对项目重新编译构建 三、可以看到工程目录这个文件夹 打开工程目录文件夹的Release文件夹&#xff0c;我的路径如下 四、新建一个文件夹&#xff0c;将上述路径文件夹下的exe文件复制到新的文…

Windows的消息过程调用与窗口位于同一个线程

消息过程函数和窗口通常在同一个线程中运行。 在Windows中&#xff0c;每个窗口都有一个与之相关联的线程&#xff0c;这个线程负责处理窗口的消息。当窗口接收到消息时&#xff0c;系统会将消息发送给创建窗口的线程&#xff0c;并在该线程上调用窗口过程函数来处理消息。 这…

领导跳槽邀请,测试员该如何抉择?

在职场中&#xff0c;领导跳槽并邀请下属一同前往新公司&#xff0c;是一个既常见又令人纠结的选择。对于测试员来说&#xff0c;这个决定更是充满了未知与风险。那么&#xff0c;面对这样的机会&#xff0c;我们该如何权衡利弊&#xff0c;做出明智的选择呢&#xff1f; 首先&…

你眼中的IT行业现状与未来趋势

一&#xff1a;阐述 现在IT、科技行业从业人员开始求稳&#xff0c;部分从业人员开始转向DBA、运维&#xff08;企业相当稳定&#xff09;、硬件工程师等&#xff08;技术过硬&#xff0c;不是随便可以转的&#xff09;&#xff0c;但是这些行业职位少&#xff0c;薪水相对不是…

LLM大语言模型(十四):LangChain中Tool的不同定义方式,对prompt的影响

背景 ChatGLM3-6B的函数调用功能&#xff0c;和LangChain的Tool调用&#xff0c;在prompt上并没有对齐。 参考&#xff1a;LLM大语言模型&#xff08;十二&#xff09;&#xff1a;关于ChatGLM3-6B不兼容Langchain 的Function Call_error: valueerror: caught exception: unk…

神卓互联内网穿透之快速创建https类型通道【最新】

神卓互联最近上线了V9.0内网穿透通信传输模式&#xff0c;相比与之前的V8.0在速度和延迟方面确实提升了很多&#xff0c;控制台也进行了改版升级&#xff0c;这里是对升级后的控制台创建https通道方法进行记录&#xff1a; 登录神卓互联控制台 选择【内网穿透】-【映射管理】…

如何利用AI提高内容生产效率与AIGC典型案例分析

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

有趣的css - 打字机动画效果

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是使用 css 实现好玩的单行打字机效果&#xff0c;和我一起看看吧。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整…

centos7同步银河麒麟服务器SP系列外网yum源包同步不完整问题

centos7同步银河麒麟服务器SP系列外网yum源包同步不完整问题 一 问题描述二 解决方法三 外网源配置步骤 一 问题描述 Red 7.7 x86架构同步银河麒麟服务器SP arm架构外网源的yum包不完整问题&#xff0c;yum repolist查看源里面有15000左右的包&#xff0c;使用reposync命令同步…

疾病防范:拯救微笑,关于儿童抑郁的注意事项

引言&#xff1a; 儿童抑郁是一种常见但常被忽视的心理健康问题&#xff0c;对孩子的身心健康和成长都会造成严重影响。本文将探讨儿童抑郁的注意事项&#xff0c;以帮助家长和教育者更好地识别、理解和应对儿童抑郁问题。 1. 深入了解抑郁症&#xff1a; 抑郁症并非一种偶发的…

B端设计与C端设计,用户模型区别!

B端设计和C端设计到底有哪些不同&#xff1f;这篇文章里&#xff0c;作者就做了相对详细的阐述和分析&#xff0c;不妨来看一下。 C 全称是 Customer 即消费者&#xff08;泛指用户&#xff09;的产品&#xff0c;个人用户或终端用户&#xff0c;使用的是客户端。例如&#xff…

羊大师解析,如何遵守《节约用水条例》

羊大师解析&#xff0c;如何遵守《节约用水条例》 《节约用水条例》的实施旨在倡导和推动全社会形成节约用水的良好风尚&#xff0c;以应对日益严峻的水资源短缺问题。羊大师发现随着这一条例的深入实施&#xff0c;越来越多的人开始意识到节约用水的重要性&#xff0c;并积极…

Redis—图文详解高可用原因

本文不会讲解Redis的用途&#xff0c;关于用途会发另一片文章讲解&#xff0c;本文主要讲的是高可用的原理。 Redis高可用主要有以下三个原因&#xff1a;主从模式(上一篇讲Kafka的文章里有涉及到)&#xff0c;哨兵模式&#xff0c;Redis-Cluster(Redis集群)。 什么是主从模式…

第二证券|北交所股票散户可以买吗?门槛多少?

北交所股票散户能够买&#xff0c;不过一般来说&#xff0c;北交所股票出资风险比较大&#xff0c;不适合资金实力不雄厚的散户。 北交所买卖权限注册条件&#xff1a;请求注册权限前20个买卖日的证券账户和资金账户内的财物日均不低于50万元&#xff0c;其间不包括经过融资融…

基于Springboot的村庄果园预售系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的村庄果园预售系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

VR030AA080V01V02比例减压阀控制器

MAGNET-SCHULTZ比例阀是一种用于液压控制系统的装置&#xff0c;它能够根据输入信号自动调节输出的比例&#xff0c;常应用于流量、压力和温度等参数的控制。机械制造业中BEUEC比例放大器用于确保机械操作的精准度和重复性。MAGNET-SCHULTZ比例阀VR030AA080V01V01、VR030AA080V…

聚观早报 | 比亚迪海狮07 EV上市;苹果将升级Siri

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 5月13日消息 比亚迪海狮07 EV上市 苹果将升级Siri OpenAI开发全新技术 沃尔沃EX30车型将上市 SpaceX计划新建发…

ICLR 2024落幕,一文了解ICLR + 历年(2017-2024) 论文整理(含源码!)

来源: AINLPer公众号&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2024-5-13 引言 最近这几天&#xff0c;相信大家都或多或少的刷到了ICLR 2024这个关键词。对于刚刚入门的小伙伴或对此并没有深入的理解&#xff0c;只知…