一、概要
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) 对于导杆直接被步进电机驱动的简单线性平台。
- UREV = EGU's / 1 leadscrew rev.
- SREV = motor steps / 1 motor rev. > 0
- MRES = UREV /SREV
- MRES和UREV允许负值,因而这个记录的坐标系统可以被设置为电机控制器的反向极性。
- 当电机移动时,不要更改MRES。
八、变速箱示例
传动比定义:一个传动链的动力齿轮和最后或者驱动齿轮的比率。因而,一个3:1传动比表示导杆每1个分辨率,电机产生3个分辨率。
对一个电机安装编码器的伺服电机, 更改电机步长为编码器刻度。
九、反馈
1) 输入位置反馈给电机记录的两种方式
- 从驱动支持,通过电机控制器
- 从一个EPICS PV,通过独立,反馈设备。
2) 对于来自驱动支持的反馈:
- 初始化时驱动层代码在电机状态字段(MSTA)设置编码器为存在位(EA_PRESENT)。
- Raw编码器位置字段(REP)有电机控制器的raw编码器值(ticks)。
3) 配置来自驱动支持的反馈:
- 设置编码器分辨率字段(ERES)转换编码器ticks为EGU's
- 如果使用编码器存在字段(UEIP)决定是否使用REP(Yes/No)。
4) 配置来自EPICS PV的反馈:
- 设置回读PV链接(RDBL)
- 设置回读分辨率(RRES)来转换RDBL PV单位为EGU's
- 使用恢复如果村扎起字段(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:定义构建哪些设备/驱动模块