EPICS motor模块

news2024/11/15 17:43:36

一、概要

1) 在EPICS motor模块中的是什么并且它为了什么?

2) 支持的电机控制器和模型

3)电机记录特性

4)配置示例

5)反馈

6) 重试

7) 回程差矫正

8)发行

二、术语

1) MM                <-->        电机模块发行

2) MR                <-->        电机记录

3) EGU              <-->        工程单位

4)RPS                <-->        每秒分辨率

5)步进电机步长和编码器刻度

6)回读                <-->        反馈

7)目标位置:用户请求的,静态的,绝对的位置(VAL)

8)  命令的位置:电机控制器的当前,动态,绝对参考位置(RMP)。

三、在Motor模块中的是什么?

1)用户窗口:medm, CSS/Boy, caQtDm(主要是调试,某些程序专用,例如:飞行扫描)(位置:<motor>/motorApp/op/*)

2)数据库:(被*.substitution文件引用的模板)(位置:<motor>/motorApp/Db)

3) MR(*.dbd和4000+.cc)和公共的设备/驱动代码,由所有设备/驱动共享(位置:<motor>/motorApp/MotorSrc)。

  • 3种不同的电机模块设备/驱动架构
  • Model 1(唯一设备),Model 2和3(公共设备)
  • 网址:Motor Device and Driver Support

4) 厂家专用命令,设备/驱动代码和*.dbd(README docs)(位置:<motor>/motorApp/<vendor-name>Src)。

5) 保存/恢复*.req文件(位置:<motor>/motorApp/Db)。

6) 电机设备/驱动(构建选项)带的两个IOC构建示例(w/和w/o asyn)

7)iocBoot示例(控制器专用st.cmd和进行支持的*.cmd文件)(构建选项)(位置:<motor>/iocBoot/*)

8) 文档(发行注意,motor记录和设备/驱动信息)(位置:<motor>/documention)

四、Motor模块为了什么?

1) 设备无关--电机硬件对用户是透明的

2) 对于所有设备,相同的用户窗口和电机移动行为

从以上窗口可用操作:

  • 进行绝对或增量移动
  • 定义当前位置
  • 停止当前移动

没有任何控制器专用的信息。

3)对于所有支持的控制器,公共的设备和驱动层软件

4)不受支持的MR特性在设备/驱动被处理,一般,通过忽略这个请求。

五、支持的制造商 

 

六、特性

1)范围

MR的范围受限于单轴,非协调,点到点移动

2) 坐标系统

1) 某些控制器使用raw单位用于通信。

  • MR用raw单位与设备支持进行通信
  • 用step, steps/sec和steps/sec^2传递位置,速度和加速度MR命令给设备支持。

2) 其它控制控制器用工程单位(EGU's)进行通信;例如:英寸,毫米,角度。设备支持处理转换。

3) 电机分辨率字段(MRES)转换raw值为dial值。转换raw目标位置(RVAL)为dial目标(DVAL):

        DVAL[EGU's] = RVAL[steps] * MRES[EGU's/step]

4) 用户单位是基于dial单位,用户方向字段(DIR)和用户偏移字段(OFF)。

        转换dial目标位置(DVAL)为用户目标(VAL):

        VAL = (DVAL * DIR) + OFF; 此处DIR=+/-1。

3) 移动类型

1) 绝对(VAL, DVAL, RVAL)

2) 相对(RLV)

3) 增量(TWF, TWR, TWV)

 4) homing, jogging(归位,轻碰)

1) 归位搜索(HOMF, HOMR, HVEL)

2) 轻碰(JOGF, JOGR, JVEL, JAR)

3) 安全问题:

  • 执行第一阶段?首先检查硬件限位开关。
  • 加伤风险,远程操作,伺服系统

5) 设置位置,软行程限位

1) 定义当前位置(SET, OFF)

2) 软行程限位(HLM, LLM, DHLM, DLLM)(如果DHLM=DLLM=0,则禁用)

 

6) 其余特性

1) 在初始时,移动前和移动后,发送电机控制器命令原语(INIT, PREM, POST)。

2)通过设备指令驱动功率监视和电机同步DB Puts。

3) 通过状态更新字段(STUP)用户初始更新。

4) 一些字段是电机类型专用的:

  • PID参数(PCOF/ICOF/DCOF)用于伺服电机(倍归一化位0 -> 1)。
  • 对于步进电机的起始速度(VBAS)。
  • 对于软通道,结束移动输入链接(DINP)。

5) 来自一个EPICS PV链接或者一个电机控制器的位置反馈。

七、配置示例

1) 设置工程单位字段(EGU);inch,mm,degree

2) 设置电机分辨率(MERS)字段,以以下为单位:

  • 对于步进电机(EGU's / motor step)
  • 对于伺服电机(EGU's / encoder tick)

3) MRES应该被设置成说明?

4) 对于导杆直接被步进电机驱动的简单线性平台。

  1. UREV = EGU's / 1 leadscrew rev. 
  2. SREV = motor steps / 1 motor rev. > 0 
  3. MRES = UREV /SREV
  4. MRES和UREV允许负值,因而这个记录的坐标系统可以被设置为电机控制器的反向极性。
  5. 当电机移动时,不要更改MRES。

八、变速箱示例

传动比定义:一个传动链的动力齿轮和最后或者驱动齿轮的比率。因而,一个3:1传动比表示导杆每1个分辨率,电机产生3个分辨率。

对一个电机安装编码器的伺服电机, 更改电机步长为编码器刻度。

九、反馈

1) 输入位置反馈给电机记录的两种方式

  1. 从驱动支持,通过电机控制器
  2. 从一个EPICS PV,通过独立,反馈设备。

2) 对于来自驱动支持的反馈:

  1. 初始化时驱动层代码在电机状态字段(MSTA)设置编码器为存在位(EA_PRESENT)。
  2. Raw编码器位置字段(REP)有电机控制器的raw编码器值(ticks)。

3) 配置来自驱动支持的反馈:

  1.  设置编码器分辨率字段(ERES)转换编码器ticks为EGU's
  2.  如果使用编码器存在字段(UEIP)决定是否使用REP(Yes/No)。

4) 配置来自EPICS PV的反馈:

  1. 设置回读PV链接(RDBL)
  2. 设置回读分辨率(RRES)来转换RDBL PV单位为EGU's
  3. 使用恢复如果村扎起字段(URIP)确定是否使用RDBL PV链接[Yes/No]

5)  Raw电机位置(RMP)是从电机控制器读取的当前命令位置。如果电机记录闭环控制是off(UEIP和URIP都为No),则在每次移动后RVAL=RMP。

6) Raw回读值字段(RRBV)可以以steps或ticks为单位。

7) 反馈数据流

 

九、重试

1) 它不是什么。重试不是连续的,动态闭环。

2) 它是什么。重试尝试通过基于DIFF字段进行,一直性,相对移动来消除dial位置误差(DIFF)。

3) DIFF = DVAL - DRBV

4) 如果[RTRY != 0,并且((EA_PRESENT = True, 并且 UEIP == Yes )或者URIP=Yes)]是真,则所有电机记录移动是相对移动。

5) 设置重试:

  • 对于一个伺服电机,通常设置UEIP == No。
  • 设置重试死区(RDBD); 如果(DIFF>RDBD,重试)
  • 设置最大重试次数(RTRY) -- 重试的最大次数
  • 当前重试次数(RCNT) -- 在每次移动开始时被清除。

 

十、齿隙

1) 齿隙:由于机械缺陷,丢失运动

2) 齿隙配置:

  • 齿隙距离(BDST)确定齿隙移动的幅度和方向。
  • 齿隙有它自己的速度(BVEL)和加速度(BACC)参数。

3) 齿隙矫正算法:

  • 选择方向--BDST方向
  • 回转参数--回转速度(VELO)和加速度(ACCL)
  • 齿隙参数:BVEL和BACC

齿隙矫正逻辑

1) 考虑移动到一个称为目标的位置:

IF 禁用齿隙(0=|BDST| < |MRES|) 或者(移动是按选择方向,并且齿隙参数==回转参数),则跳过齿隙,使用回转参数移动到目标。

ELSE IF 增量距离 > |BDST| 或者移动不是选择方向,则使用回转参数移动到位置(Target - BDST),接着使用齿隙参数移动到目标。

ELSE IF 增量距离 <= |BDST|, 并且移动是按照选择的方向,则认为齿隙已经被消除;使用齿隙参数移动到目标。

ENDIF

 

十一、motor模块发行和构建自定义

电机模块构建自定义

1) 要构建示例,取消注释在<motor>/Makefile中一"#!"开始的三行。

2) <motor>/configure/RELEASE:

  • 如果仅定义了EPICS_BASE,仅OMS和软通道模型#1 设备/驱动被构建。
  • 别的其它所有东西,需要Asyn

3) <motor>/motorApp/Makefile:定义构建哪些设备/驱动模块

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

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

相关文章

Linux上的校验和验证

校验和&#xff08;checksum&#xff09;程序用来从文件中生成相对较小的唯一密钥。我们可以重新计算该密钥&#xff0c;用以检查文件是否发生改变。修改文件可能是有意为之&#xff08;添加新用户会改变密码文件&#xff09;&#xff0c;也可能是无意而为&#xff08;从CD-ROM…

Java:Java仍然处于领先地位?

没有多少编程语言能够自吹自擂并持续流行20多年&#xff0c;但Java就是其中之一。Java应用程序不仅局限于web和移动开发&#xff0c;而且给大数据和人工智能留下了深刻的印象。不用多说&#xff0c;让我们讨论一下Java流行的几个原因!!1.实用性根据JamesGosling的说法&#xff…

QT+OpenGL 面剔除和帧缓冲

QTOpenGL 面剔除和帧缓冲 本篇完整工程见gitee:QtOpenGL 对应点的tag&#xff0c;由turbolove提供技术支持&#xff0c;您可以关注博主或者私信博主 面剔除 OpenGL能够检查所有面向&#xff08;Front Facing&#xff09;观察者的面&#xff0c;并且渲染他们&#xff0c;而丢…

springboot logback日志+异常+阿里云日志 aliyun-log-logback-appender

前言最近有个新项目用了&#xff0c;springboot3.0&#xff0c;以前项目日志保存得方式是阿里云云服务自动读取日志文件&#xff0c;最近项目部署得方式可能有变化&#xff0c;所以新项目用logbackaliyun-log-logback-appender得方式保存到阿里云日志服务。用logback得原因主要…

《OpenGL宝典》--统一变量

统一变量 [layout (location 0)] uniform float f 1.0f;若设置layout&#xff0c;则不需要使用glGetUniformLocation来获取统一变量的位置 使用glUniform*传递值&#xff0c;glUniformMatrix*()设置矩阵统一变量。 glUseProgram(myShader); glUniform1f(0,45.2f);//0为loc…

思迅软锁安装配置说明

思迅软锁安装配置说明 一、软锁安装、申请及配置流程 1.软件安装环境要求 2.软件安装配置流程 步骤1: 在平台下载软锁程序并安装。在安装了总部数据库的服务器上&#xff0c;运行“思迅软锁服务.exe”程序&#xff0c;按照指引进行安装&#xff0c;安装完成后将在电脑的桌面上…

微服务之Gateway服务网关

&#x1f3e0;个人主页&#xff1a;阿杰的博客 &#x1f4aa;个人简介&#xff1a;大家好&#xff0c;我是阿杰&#xff0c;一个正在努力让自己变得更好的男人&#x1f468; 目前状况&#x1f389;&#xff1a;24届毕业生&#xff0c;奋斗在找实习的路上&#x1f31f; &#x1…

「亲测」0成本考证填报个税纳税额减免3600

「亲测」0成本考证填报个税纳税额减免3600 今天开始2022综合所得的年度汇算就开始办理了&#xff0c;刚刚步入工作的同学&#xff0c;对个税的填报有些苦恼&#xff0c;好像除了房租就没有能减税的政策了。 别急别急&#xff0c;其实个⼈所得税⾥⾯包含⼀个叫“专项附加扣除”的…

C++ 认识和了解C++

1.在使用C语言写代码的时候开头要用到的是&#xff1a; #include<iostream> using namespace std;不可以写成这样&#xff1a; #include iostream.h&#xff08;1&#xff09;iostream是输入输出流类&#xff0c; istream输入流类 cin >> ostream输出流类 cout &…

40系笔记本(可不联网激活)深度学习生产力(环境配置和简单训练测试)

40系笔记本深度学习、转码生产力&#xff08;环境配置和简单训练测试&#xff09;这里写自定义目录标题深度学习环境准备CUDA、CUDNN版本问题torch版本问题其他软件版本的安装命令训练测试代码地址关于Linux还是Windows的问题结果博主首发购买了枪神7超竞4080的版本&#xff0c…

git开发流程

分支介绍 dev&#xff1a;开发环境&#xff0c;从feature去mr test: 测试环境&#xff0c;从feature去mr pre&#xff1a; 预生产环境&#xff0c;从master去mr&#xff0c;为了验证master代码 master: 生产环境&#xff0c;从feature去mr feature&#xff1a; 开发分支----小…

4种方法教你如何隐藏电脑磁盘分区?

磁盘分区是电脑的重要组成部分&#xff0c;我们能够在电脑中保存众多数据&#xff0c;就离不开它。那么你知道该如何隐藏磁盘分区吗&#xff1f;下面小编就教你4个方法隐藏电脑磁盘分区。方法一&#xff1a;使用磁盘管理隐藏硬盘分区1、按下“WinR”键&#xff0c;输入“diskmg…

Python3-元组

Python3 元组 Python 的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号 ( )&#xff0c;列表使用方括号 [ ]。 元组创建很简单&#xff0c;只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 >>> tup1 (Google, Runoob, 19…

4-1 SpringCloud快速开发入门:RestTemplate类详细解读

RestTemplate类详细解读 RestTemplate 的 GET 请求 Get 请求可以有两种方式&#xff1a; 第一种&#xff1a;getForEntity 该方法返回一个 ResponseEntity对象&#xff0c;ResponseEntity是 Spring 对 HTTP 请求响应的封装&#xff0c;包括了几个重要的元素&#xff0c;比如响…

Python基础篇(十五)-- Pygame游戏编程

1 初识Pygame Pygame是一个开源的Python模块&#xff0c;专门用于多媒体应用&#xff08;如电子游戏&#xff09;的开发&#xff0c;其中包含对图像、声音、视频、事件、碰撞等的支持。Pygame建立在SDL的基础上&#xff0c;SDL是一套跨平台的多媒体开发库&#xff0c;用C语言实…

39万字完整版智能矿山项目建设整体解决方案

本资料来源网络&#xff0c;仅做知识分享&#xff0c;请勿商用。完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 1.1 总体技术要求 1.1.1 核心业务架构 智能矿山业务架构是在统一的标准与规范及安全运维保障体系下&#xff0c;按分层设计模式&#xff0c;分为设备层、…

QML鼠标事件

QML中常用的事件有&#xff1a; 鼠标事件键盘事件拖拽事件定时器MouseArea&#xff08;鼠标区域&#xff09; MouseArea是一个不可见的项目&#xff0c;同、通常用来和一个可见的项目配合使用来为其提供鼠标处理。鼠标处理的逻辑可以包含在MouseArea项目中 常用的属性&#xff…

【设计模式】原型模式与建造者模式

原型模式 原型模式是指通过原型实例指定创建对象的种类&#xff0c;然后通过拷贝的方式创建新的对象。属于创建型模式 原型模式的核心在于拷贝原型对象&#xff0c;主要用于对对象的复制。当你需要通过一大段get/set方法去构建对象的时候&#xff0c;就可以考虑使用原型模式了…

手牵手教Docker部署Springboot+vue ,全过程十分详细,轻松完成项目部署(简单,高效,通用)

手把手教Docker部署Springbootvue &#xff0c;详细全过程&#xff0c;轻松完成项目部署&#xff08;简单&#xff0c;高效&#xff09; 上线前准备 腾讯云的服务器&#xff0c;服务器安装好docker 和docker-compose 最好事先了解技术 nginxdocker-compose 整体编排 后端部…

【C++】Visual Studio C++ 配置并使用gtest(不好用你捶我)

文章目录 相信大家都能感受到Visual Studio C 编辑器链接 lib 或 dll文件是一件非常头疼的事情。配置gooleTest的过程也不例外。 市面上很多教程&#xff0c;要么就不全&#xff0c;要么就缺少一些细节&#xff0c;导致我自己再配置的过程中&#xff0c;踩了很多坑。今天就记录…