EPICS motor模块中SoftMotor的使用示例

本实例使用motor模块中软电机,通过通道访问控制另一个直流电源IOC的输出电压,并且回读输出电压。 此处使用的另一个IOC为:基于EPICS stream模块的直流电源的IOC控制程序实例-CSDN博客

1)创建这个IOC程序目录结构,操作演示如下:

root@bl02u2-X1:/usr/local/EPICS/program# mkdir softmotor
root@bl02u2-X1:/usr/local/EPICS/program# cd softmotor/
root@bl02u2-X1:/usr/local/EPICS/program/softmotor# ls
root@bl02u2-X1:/usr/local/EPICS/program/softmotor# source /etc/profile.d/epics.sh
root@bl02u2-X1:/usr/local/EPICS/program/softmotor# ls
root@bl02u2-X1:/usr/local/EPICS/program/softmotor# makeBaseApp.pl -t ioc softmotor
root@bl02u2-X1:/usr/local/EPICS/program/softmotor# makeBaseApp.pl -i -t ioc softmotor
Using target architecture linux-x86_64 (only one available)
The following applications are available:softmotor
What application should the IOC(s) boot?
The default uses the IOC's name, even if not listed above.
Application name?
root@bl02u2-X1:/usr/local/EPICS/program/softmotor#
root@bl02u2-X1:/usr/local/EPICS/program/softmotor# ls
configure  iocBoot  Makefile  softmotorApp

2)编辑configure/RELEASE文件,列出本IOC中使用到的模块所在的路径:

...
SUPPORT=/usr/local/EPICS/synApps/support# If any motor controller communication mechanism besides
# the VME backplane is required, then ASYN must be defined.
# Recommended ASYN release: R4-35
ASYN=$(SUPPORT)/asyn
MOTOR=$(SUPPORT)/motor# EPICS_BASE should appear last so earlier modules can override stuff:
EPICS_BASE = /usr/local/EPICS/base...

3) 进入softmotorApp/src/目录,编辑Makefile文件,添加这个IOC将使用到的数据库定义文件和库文件:

PROD_IOC = softmotor
# softmotor.dbd will be created and installed
DBD += softmotor.dbd# softmotor.dbd will be made up from these files:
softmotor_DBD += base.dbd
softmotor_DBD += asyn.dbd
softmotor_DBD += motorSupport.dbd
softmotor_DBD += devSoftMotor.dbd# Include dbd files from all support applications:
#softmotor_DBD += xxx.dbd# Add all the support libraries needed by this IOC
softmotor_LIBS += asyn
softmotor_LIBS += motor
softmotor_LIBS += softMotor# softmotor_registerRecordDeviceDriver.cpp derives from softmotor.dbd
softmotor_SRCS += softmotor_registerRecordDeviceDriver.cpp# Build the main IOC entry point on workstation OSs.
softmotor_SRCS_DEFAULT += softmotorMain.cpp
softmotor_SRCS_vxWorks += -nil-# Add support from base/src/vxWorks if needed
#softmotor_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary# Finally link to the EPICS Base libraries
softmotor_LIBS += $(EPICS_BASE_IOC_LIBS)#===========================include $(TOP)/configure/RULES

4)进入softmotorApp/Db目录,添加数据库实例文件以及Makefile文件:

# softMotor.db
record(motor, "$(P)$(M)SoftMotor") {field(DESC, "Set Voltage")field(SCAN, "Passive")field(DTYP, "Soft Channel")field(VELO, "0.1")field(VBAS, "0.1")field(OUT, "$(USER)SetVoltage")  # Set Voltage for another IOC of a devicefield(RINP, "$(P)$(M)convertReadbackValue") # Readback Voltagefield(UEIP, "No")field(URIP, "No")field(PREC, "2")field(EGU, "V")field(DHLM, "40")field(DLLM, "0")field(RTRY, "0")field(TWV, "0.01")field(NTM, "NO")field(MRES, "0.01")field(RRES, "0.01")field(VELO, "0.01")field(VBAS, "0.01")field(IGSET, "1")}grecord(calcout,"$(P)$(M)convertReadbackValue")
{field(DESC,"ReadBack Voltage to feed the SoftMotor Record")field(CALC,"A * 100")field(INPA,"$(USER)Voltage_RBV  CP MS")
}

将这个db文件添加到相同路径中的Makefile中:

...
DB += softMotor.db
...

5) 回到这个IOC的顶层目录,执行make命令,编译这个IOC程序。

6)进入iocBoot/iocsoftmotor目录,编辑st.cmd启动脚本:

...
dbLoadRecords("db/softMotor.db","P=SoftMotor:,M=M1:,USER=UDP6721:")
...

7) 启动以上IOC:

root@bl02u2-X1:/usr/local/EPICS/program/softmotor/iocBoot/iocsoftmotor# ../../bin/linux-x86_64/softmotor st.cmd
#!../../bin/linux-x86_64/softmotor
< envPaths
...
epics> dbl
SoftMotor:M1:convertReadbackValue
SoftMotor:M1:SoftMotor
epics>

8) 调出以上两个IOC的图形控制界面:每按一次电机界面中TWF按钮,输出电压增加0.01V。

通过以上转换,能够用电机控制方式来控制一个直流电压源输出电压,如在sscan模块中进行电压扫描:

在SPEC软件中,可以配置一路EPICS电机来设置输出电压:

210.SPEC> dscan sm -1 1 20 1
Total 21 points, 21 secondsScan  15   Fri Dec 01 02:08:26 2023   file = test  spec  user = blctrl
ascan  sm 1 3  20 1# SoftMotor  Seconds  Seconds    Seconds  Monitor Detector Counter0    1.0000        1        1          1        0        0        01    1.1000        1        1          1        0        0        02    1.2000        1        1          1        0        0        03    1.3000        1        1          1        0        0        04    1.4000        1        1          1        0        0        05    1.5000        1        1          1        0        0        06    1.6000        1        1          1        0        0        07    1.7000        1        1          1        0        0        08    1.8000        1        1          1        0        0        09    1.9000        1        1          1        0        0        010    2.0000        1        1          1        0        0        011    2.1000        1        1          1        0        0        012    2.2000        1        1          1        0        0        013    2.2900        1        1          1        0        0        014    2.4000        1        1          1        0        0        015    2.5000        1        1          1        0        0        016    2.6000        1        1          1        0        0        017    2.7000        1        1          1        0        0        018    2.8000        1        1          1        0        0        019    2.9000        1        1          1        0        0        020    3.0000        1        1          1        0        0        0Returning sm to 2

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

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

相关文章

pnpm 安装

npm install pnpm -g 解决方案&#xff1a; 1、使用管理员的身份打开powershell, win x 2、输入 set-executionpolicy remotesigned 后按y&#xff0c;问题得到解决 其他&#xff1a; pnpm 安装完成只有&#xff0c;可设置其镜像 1、查阅当前镜像&#xff08;源&#xff09…

Python常用库大全及简要说明,附官方网站链接地址

文章目录 前言环境管理包管理包仓库分发构建工具交互式解析器文件日期和时间文本处理特殊文本格式处理自然语言处理文档配置命令行工具下载器图像处理OCR音频Video地理位置HTTP数据库数据库驱动ORMWeb 框架权限CMS电子商务RESTful API验证模板引擎队列搜索动态消息资源管理缓存…

HarmonyOS ArkTS与c++交互通信

一、创建Native C Module 1、右键项目->new->module 如图&#xff1a; 2、修改build-profile.json5配置 "externalNativeOptions": {"path": "./src/main/cpp/CMakeLists.txt","arguments": "-v -DOHOS_STLc_shared&quo…

Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊

文章目录 Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊使用 RenderEffect 模糊使用 Vukan 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比 Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊 本文首发地址 https://blog.csdn.net/CSqingchen/articl…

运算放大器和常见运放电路

关于运算放大器 运算放大器(Operational Amplifier), 简称运放, 是一种直流耦合, 差模输入, 单端输出(Differential-in, single-ended output)的高增益电压放大器件. 运放能产生一个比输入端电势差大数十万倍的输出电势. 因为刚发明时主要用于加减法等运算电路中, 因而得名运算…

LLM算法工程师面试题总结

一、请简述对大模型的基本原理和架构的理解。 大型语言模型如GPT&#xff08;Generative Pre-trained Transformer&#xff09;系列是基于自注意力机制的深度学习模型&#xff0c;主要用于处理和生成人类语言。下面简要概述了它们的一些基本原理和架构特点&#xff1a; 基本原…

线上问题整理-ConcurrentModificationException异常

项目场景&#xff1a; 商品改价&#xff1a;商品改价中通过多线程批量处理经过 Lists.partition拆分的集合对象 问题描述 商品改价中通过多线程批量处理经过 Lists.partition拆分的集合对象&#xff0c;发现偶尔会报 java.util.ConcurrentModificationException: nullat jav…

用element-ui进行简单的商品管理

安装element-ui 项目的控制台输入npm i element-ui -S main.js import ElementUI from element-ui;//引入element-ui模块 import element-ui/lib/theme-chalk/index.css;//引入element-ui的css样式 Vue.use(ElementUI);//使用ElementUI 商品管理组件 <template><…

使用Redis实现分布式锁

说明&#xff1a;在多线程情况下&#xff0c;我们需要用到锁来控制线程对资源的访问&#xff0c;当在多线程分布式的情况下&#xff0c;如果使用synchronized (this)&#xff0c;这会在每台服务器实例上都生成一个锁对象&#xff0c;而这个锁只会对当前实例生效&#xff0c;无法…

【数字图像处理】边缘检测

边缘检测是一种图像处理技术&#xff0c;用于在图像中识别和提取物体边缘的信息&#xff0c;广泛应用于计算机视觉和图像分析领域。本文主要介绍数字图像边缘检测的基本原理&#xff0c;并记录在紫光同创 PGL22G FPGA 平台的布署与实现过程。 目录 1 边缘检测原理 2 FPGA 布署…

【工具分享】| 阅读论文神器 使用技巧 AI润色 AI翻译

文章目录 1 使用技巧1.1 功能一 即时翻译1.2 功能二 文献跳转1.3 功能三 多设备阅读1.4 功能四 小组讨论笔记共享1.5 功能五 个人文献管理 2 其他功能 超级喜欢Readpaper这一款论文阅读软件&#xff0c;吹爆他哈哈 为什么&#xff1f; 当然是他可以解决我们传统阅读论文的种种…

数据库范式1NF-4NF

码和属性 字段是对内而言的&#xff0c;private的 属性是对外而言的&#xff0c;public的 用Java中的类比喻就是一个对像里面定义了很多字段&#xff0c;一般情况下每个字段都有一组对应的getter&setter方法&#xff0c;注意到了吗&#xff0c;字段一般用private修饰&#…

HarmonyOs 4 (一) 认识HarmonyOs

目录 一 HarmonyOs 背景1.1 发展时间线1.2 背景分析1.2.1 新场景1.2.2 新挑战1.2.3 鸿蒙生态迎接挑战 二 HarmonyOS简介2.1 OpenHarmony2.2 HarmonyOS Connect2.3 HarmonyOS Next**2.4 ArkTS &#xff08;重点掌握&#xff09;****2.5 ArkUI** 三 鸿蒙生态应用核心技术理念**3.…

探索APP自动化测试工具的重要作用是什么?

随着移动应用市场的蓬勃发展&#xff0c;保障应用程序的质量和性能成为开发团队至关重要的任务。在这个背景下&#xff0c;APP自动化测试工具崭露头角&#xff0c;成为提高开发效率、减少错误率的关键工具。本文将探讨APP自动化测试工具的用途&#xff0c;以及它们在移动应用开…

mongoDB非关系型数据库学习记录

一、简介 1.1Mongodb是什么 MongoDB是一个基于分布式文件存储的数据库,官方地址https://www.mongodb.com/ 1.2数据库是什么 数据库(DataBase)是按照数据结构来组织、存储和管理数据的应用程序 1.3数据库的作用 数据库的主要作用就是管理数据,对数据进行增©、删(d)、…

大语言模型(LLMs)在 Amazon SageMaker 上的动手实践(一)

本期文章&#xff0c;我们将通过三个动手实验从浅到深地解读和演示大语言模型&#xff08;LLMs&#xff09;&#xff0c;如何结合 Amazon SageMaker 的模型部署、模型编译优化、模型分布式训练等。 实验一&#xff1a;使用 Amazon SageMaker 构建基于开源 GPT-J 模型的对话机器…

C语言错误处理之 “strerror和perror函数以及断言处理方式”

目录 前言 perror函数 strerror函数 断言处理方式 前言 在错误处理一中&#xff0c;我们解释了C语言三种处理方式中的错误号处理方式&#xff0c;这一篇我们在基于上一篇的基础上加入了strerror函数与perror函数&#xff0c;以及断言处理方式的内容...... perror函数 包…

VSCode下载安装教程+安装插件

一、vscode下载安装 1.打开 官网&#xff1a;https://code.visualstudio.com/Download 2.选择跟你电脑相对应的版本下载&#xff0c;我是win10&#xff0c;所以选择如下&#xff1a; 3.下载到你想要保存的目录下 4.下载完成后打开目录&#xff0c;双击安装包 5. 同意&#xff…

使用YOLOv8训练自己的数据集

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 拉取项目 git clone https://github.com/ultralytics/ultralytics安装依赖 cd ultralytics pip install -r requirement.txt pip instal…

【android开发-10】android中四种布局详细介绍

在Android开发中&#xff0c;常见的四种布局分别是&#xff1a;线性布局&#xff08;LinearLayout&#xff09;、相对布局&#xff08;RelativeLayout&#xff09;、帧布局&#xff08;FrameLayout&#xff09;和绝对布局&#xff08;AbsoluteLayout&#xff09;。 注意&#…