当前位置: 首页 > news >正文

3. 轴指令(omron 机器自动化控制器)——>MC_MoveVelocity

机器自动化控制器——第三章 轴指令 6

    • MC_MoveVelocity
      • 变量
        • ▶输入变量
        • ▶输出变量
        • ▶输入输出变量
    • 功能说明
        • ▶指令详情
        • ▶时序图
        • ▶重启运动指令
        • ▶多重启动运动指令
        • ▶异常
      • 动作示例
        • ▶动作示例
        • ▶梯形图
        • ▶结构文本(ST)

MC_MoveVelocity

  • 使用伺服驱动器的位置控制模式,进行模拟速度控制。
指令名称FB/
FUN
图形表现ST表现
MC_MoveVelocity速度控制FB描述文本MC_MoveVelocity_instance (
Axis :=《参数》 ,
Execute :=《参数》 ,
Velocity :=《参数》 ,
Acceleration :=《参数》 ,
Deceleration :=《参数》 ,
Jerk :=《参数》 ,
Direction :=《参数》 ,
Continuous :=《参数》 ,
BufferMode :=《参数》 ,
InVelocity =>《参数》 ,
Busy =>《参数》 ,
Active =>《参数》 ,
CommandAborted =>《参数》 ,
Error =>《参数》 ,
ErrorID =>《参数》
);

变量

▶输入变量
输入变量名称数据类型有效范围初始值内容
Execute启动BOOLTRUE, FALSEFALSE在上升沿开始指令。
Velocity目标速度LREAL正数或“0”0指定目标速度。
单位为[指令单位/s] 。 *1
Acceleration加速度LREAL正数或“0”0指定加速度。
单位为[指令单位/s2]。*1
Deceleration减速度LREAL正数或“0”0指定减速度。
单位为[指令单位/s2]。*1
Jerk跃度LREAL正数或“0”0指定跃度。
单位为[指令单位/s3]。*1
Direction方向选择_eMC_
DIRECTION
0: _mcPositiveDirection
2: _mcNegativeDirection
3: _mcCurrentDirection
0 *2指定旋转方向。
0:指定为正方向
2:指定为负方向
3:指定为当前方向
BufferMode缓存
模式选择
_eMC_BUFFER_
MODE
0: _mcAborting
1: _mcBuffered
0 *2指定多重启动运动指令时的动
作。
0:中断
1:等待
Continuous
(Reserved)
持续方法
选择
BOOLTRUE, FALSEFALSE(Reserved)
  • 1.关于指令单位,请参阅“NJ/NX系列CPU单元用户手册运动控制篇(SBCE-363)”或“NY系列工业用平板电脑/工业用台式电脑用户手册运动控制篇(SBCE-379)”的“单位转换设定”。
  • 2.有效范围为枚举体的变量,其实际初始值不是数值,而是枚举元素。
▶输出变量
输出变量名称数据类型有效范围内容
InVelocity达到目标速度BOOLTRUE,
FALSE
达到目标速度后变为TRUE。
Busy执行中BOOLTRUE,
FALSE
接收指令后变为TRUE。
Active控制中BOOLTRUE,
FALSE
控制中变为TRUE。
CommandAborted执行中断BOOLTRUE,
FALSE
指令中止时,变为TRUE。
Error错误BOOLTRUE,
FALSE
发生异常时变为TRUE。
ErrorID错误代码WORD*发生异常时,输出错误代码。16#0000为正常。
  • 请参阅“A-1错误代码一览(P.A-2)”。
▶输入输出变量
输入输出变量名称数据类型有效范围内容
Axis_sAXIS_REF指定轴。 *1
    1. 请使用在Sysmac Studio的轴基本设定画面中创建的用户定义变量的轴变量名称(默认 “MC_Axis***”)或系统定义变量的 轴变量名称(_MC_AX[], _MC1_AX[], _MC2_AX[*])。

功能说明

  • 进行基于位置控制的模拟速度控制。
  • 在Execute(启动)的上升沿,开始速度控制的动作。
▶指令详情
  • 下面对指令详细说明。

    ► Direction(方向选择)

  • 通过Direction(方向选择)指定移动方向。
  • Direction(方向选择)为“指定为正方向”时正方向移动;为“指定为负方向”时负方向移动。
  • Direction(方向选择)为“指定为当前方向”时,动作因轴是否停止而不同。
  • 轴已停止时,轴沿着上次的移动方向进行移动。
  • 接通电源或重启电源时正方向移动。
  • 使用注意事项
  • 多重启动运动指令使轴移动的过程中启动本指令时,沿当前移动的方向移动。
  • Direction(方向选择)选择“3: _mcCurrentDirection(指定为当前方向)”时,沿着前一动作的指令方向进行动作。
  • 因此,根据指令组合的不同,可能与前一动作的运动指令的输入发出指令的方向不一致。
  • 使用“3: _mcCurrentDirection(指定为当前方向)”时,请通过轴变量的Dir.Posi(正方向指令中)、以及Dir.Nega(负方向指令中)确认当前方向。
▶时序图
  • 在启动Execute(启动)的同时,Busy(执行中)变为TRUE。
  • 在下一个周期Active(控制中)变为TRUE。
  • 达到Velocity(目标速度)时,InVelocity(达到目标速度)变为TRUE。
  • 利用其它指令中止本指令时,CommandAborted(执行中断)变为TRUE,Busy(执行中)、Active(控制中)、InVelocity(达到目标速度)变为FALSE。
    在这里插入图片描述
  • InVelocity(达到目标速度)是表示对于启动本指令和重启运动指令达到等速的输出。
  • 因此,InVelocity(达到目标速度)变为TRUE后,即使利用超调来变更速度,InVelocity(达到目标速度)也不会变为FALSE。
  • 并且,在InVelocity(达到目标速度)变为TRUE之前已变更超调时,如果已达到变更目标速度,则InVelocity(达到目标速度)变为TRUE。
  • 可在输入变量中指定Acceleration(加速度)、Deceleration(减速度)、Jerk(跃度)。
  • 将Velocity(目标速度)指定为“0”并启动时,轴不会移动,但处于连续动作中。
  • 将Velocity(目标速度)设为“0”并启动时的动作示例如下所示。
    在这里插入图片描述
  • 将加速度、或减速度指定为“0”并启动后,不作加减速而达到目标速度。
  • 加速度为“0”时的动作示例如下所示。
    在这里插入图片描述
  • 需要平稳加减速时指定Jerk(跃度)。
  • 指定Jerk(跃度)后的动作示例如下所示。
    在这里插入图片描述
  • 关于Jerk(跃度)的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
▶重启运动指令
  • 在连续动作中变更输入参数,再次将Execute(启动)设为TRUE,可变更本指令的动作。
  • 重启运动指令可变更的输入变量有Velocity(目标速度)、Acceleration(加速度)、Deceleration(减速度)。
  • 重启运动指令变更Velocity(目标速度)时,InVelocity(达到目标速度)针对重启而设定的新目标速度进行动作。
  • 重启运动指令的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
▶多重启动运动指令
  • 多重启动运动指令的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。

    ► 其它指令执行中的本指令启动

  • 对当前正在执行的指令启动本指令,可切换或缓存到本指令。
  • 各轴可缓存到1个。
  • 多重启动时的本指令的动作由BufferMode(缓存模式选择)指定。
缓存模式选择说明
中断立即中止当前正在执行的指令,切换为本指令。
轴的动作方向因指令切换而反转时,根据轴参数中的“反转时动作”进行反转。
等待当前正在执行的指令正常完成后,已缓存的本指令自动启动。
  • 关于BufferMode(缓存模式选择),请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。

    ► 本指令执行中的其它指令启动

  • 只有对其他指令的BufferMode(缓存模式选择)指定中断和等待时,才能在执行本指令时,利用其它指令多重启动运动指令。
  • 指定等待时,如果本指令的输出变量“InVelocity(达到目标速度)”变为TRUE,则开始多重启动指令的动作。
▶异常
  • 在执行本指令中发生异常时,Error(错误)变为TRUE,轴停止动作。
  • 可查看ErrorID(错误代码)的输出值,了解发生异常的原因。

    ► 发生异常时的时序图
在这里插入图片描述

    ► 错误代码

  • 关于指令发生的异常,请参阅“A-1 错误代码一览(P.A-2)”。

动作示例

  • 下面,对转盘或离心分离器之类的速度控制中的示例程序进行说明。

    ► 轴参数的设定

  • 该示例程序中使用的最少的必要设定如下所示。

    轴种类

轴种类
轴1伺服轴
▶动作示例

在这里插入图片描述

    ► 动作模式
在这里插入图片描述

1 速度控制的开始

  • 将对药液投入进行检测的传感器1设为“ON”时,轴1开始速度控制。

2 变更为第2速度

  • 将Sensor2(触点)设为“ON”时,设定为超调500%,速度得以变更。

3 变更为第3速度

  • 将Sensor3(触点)设为“ON”时,设定为超调200%,速度得以变更。
  • 将Sensor2和Sensor3同时设为“ON”时,则为超调200%。

4 速度控制的停止

  • 将停止指令(StopTrig)设为“ON”时,停止减速。
▶梯形图

    ► 主要变量

名称数据类型初始值注释
MC_Axis000_sAXIS_REF轴1的轴变量。
MC_Axis000.MFaultLvl.ActiveBOOLFALSE轴1发生轻度故障等级的异常时变为TRUE。
MC_Axis000.Details.HomedBOOLFALSE轴1为原点确定状态时变为TRUE。
Pwr_StatusBOOLFALSE分配给MC_Power的实例PWR的输出变量Status的变
量。进入伺服ON状态时,该变量变为TRUE。
StartPgBOOLFALSE如果该变量为TRUE,EtherCAT的过程数据通信已
建立,则进入伺服ON状态。
Vel_ActBOOLFALSE分配给MC_MoveVelocity的实例VEL的输出Active的
变量。实例VEL处于控制中时,该变量变为TRUE。
Set_Ov_VelfctLREAL0超调值。
StopTrigBOOLFALSE该变量为TRUE时,执行MC_Stop。
Sensor1BOOLFALSE检测到药液投入时变为TRUE。
轴1处于伺服ON状态时,启动MC_MoveVelocity
(速度控制)。
Sensor2BOOLFALSE该变量为TRUE时,将超调值设定为500%。该变
量变为TRUE时保持状态;Sensor3变为TRUE时,
则该变量变为FALSE。
Sensor3BOOLFALSE该变量为TRUE时,将超调值设定为200%。该变
量变为TRUE时保持状态。

    ► 时序图
在这里插入图片描述

    ► 示例程序
在这里插入图片描述
在这里插入图片描述

    ► 内联ST的内容

// 根据传感器的状态设置速度因子
IF (Sensor2 = FALSE) AND (Sensor3 = FALSE) THENSet_Ov_Velfct := LREAL#100.0;
ELSIF (Sensor2 = TRUE) AND (Sensor3 = FALSE) THENSet_Ov_Velfct := LREAL#500.0;
ELSIF (Sensor2 = FALSE) AND (Sensor3 = TRUE) THENSet_Ov_Velfct := LREAL#200.0;
ELSESet_Ov_Velfct := LREAL#200.0;
END_IF;
▶结构文本(ST)

    ► 主要变量

名称数据类型初始值注释
MC_Axis000_sAXIS_REF轴1的轴变量。
MC_Axis000.MFaultLvl.ActiveBOOLFALSE轴1发生轻度故障等级的异常时变为TRUE。
MC_Axis000.Details.HomedBOOLFALSE轴1为原点确定状态时变为TRUE。
Pwr_StatusBOOLFALSE分配给MC_Power的实例PWR的输出变量Status的变
量。进入伺服ON状态时,该变量变为TRUE。
StartPgBOOLFALSE如果该变量为TRUE,EtherCAT的过程数据通信已
建立,则进入伺服ON状态。
Vel_ActBOOLFALSE分配给MC_MoveVelocity的实例VEL的输出Active的
变量。实例VEL处于控制中时,该变量变为
TRUE。
Set_Ov_VelfctLREAL0超调值。
StopTrigBOOLFALSE该变量为TRUE时,执行MC_Stop。
Sensor1BOOLFALSE检测到药液投入时变为TRUE。
轴1处于伺服ON状态时,启动MC_MoveVelocity(速
度控制)指令。
Sensor2BOOLFALSE该变量为TRUE时,将超调值设定为500%。该变
量变为TRUE时保持状态;Sensor3变为TRUE时,
则该变量变为FALSE。
Sensor3BOOLFALSE该变量为TRUE时,将超调值设定为200%。该变
量变为TRUE时保持状态。
Vel_ExBOOLFALSE该变量由FALSE→TRUE时,启动MC_MoveVelocity
的实例VEL。
Set_Ov_EnBOOLFALSE该变量为TRUE期间,执行MC_SetOverride的实例
SET_OV。
Stp_ExBOOLFALSE该变量由FALSE→TRUE时,启动MC_Stop的实例
STP。
InitFlagBOOLFALSE表示输入参数设定完成。
FALSE时,设定输入参数。输入参数设定完成后,
变为TRUE。

    ► 时序图
在这里插入图片描述

    ► 示例程序

// 未设定输入参数时的处理
IF InitFlag = FALSE THEN// MC_MoveVelocity 参数Vel_Vel := LREAL#1048576.0;Vel_Acc := LREAL#1048576.0;Vel_Dec := LREAL#1048576.0;Vel_Dir := _eMC_DIRECTION#_mcPositiveDirection;// MC_SetOverride 参数Set_Ov_Velfct := LREAL#100.0;// MC_Stop 参数Stp_Dec := LREAL#524288.0;// 设定输入参数后,将 InitFlag 设为 TRUEInitFlag := TRUE;
END_IF;// StartPg 为 TRUE 时,确认伺服驱动器处于伺服准备就绪状态,
// 将轴1设为伺服 ON 状态。
// 如果未处于伺服准备就绪状态,则设为伺服 OFF。
IF (StartPg = TRUE) AND (MC_Axis000.DrvStatus.Ready = TRUE) THENPwr_En := TRUE;
ELSEPwr_En := FALSE;
END_IF;// 轴1发生轻度故障后,执行异常时处理 FaultHandler。
// 发生异常时的处理 (FaultHandler) 由客户根据装置进行编程。
IF MC_Axis000.MFaultLvl.Active = TRUE THENFaultHandler();
END_IF;// 轴1处于伺服 ON 状态,且触点 Sensor1 为 TRUE 时,启动 MC_MoveVelocity。
IF (Pwr_Status = TRUE) AND (Sensor1 = TRUE) THENVel_Ex := TRUE;
END_IF;// 在 MC_MoveVelocity 控制中,根据触点 Sensor2 和触点 Sensor3 的 ON/OFF,变更超调值。
IF Vel_Act = TRUE THENIF (Sensor2 = FALSE) AND (Sensor3 = FALSE) THENSet_Ov_Velfct := LREAL#100.0;ELSIF (Sensor2 = TRUE) AND (Sensor3 = FALSE) THENSet_Ov_Velfct := LREAL#500.0;ELSIF (Sensor2 = FALSE) AND (Sensor3 = TRUE) THENSet_Ov_Velfct := LREAL#200.0;ELSESet_Ov_Velfct := LREAL#200.0;END_IF;
END_IF;// 在 MC_MoveVelocity 控制中启动 MC_SetOverride。
IF Vel_Act = TRUE THENSet_Ov_En := TRUE;
END_IF;// StopTrig 为 TRUE 时启动 MC_Stop。
IF StopTrig = TRUE THENStp_Ex := TRUE;
END_IF;// MC_Power
PWR(Axis := MC_Axis000,Enable := Pwr_En,Status => Pwr_Status,Busy => Pwr_Bsy,Error => Pwr_Err,ErrorID => Pwr_ErrID
);// MC_MoveVelocity
VEL(Axis := MC_Axis000,Execute := Vel_Ex,Velocity := Vel_Vel,Acceleration := Vel_Acc,Deceleration := Vel_Dec,Direction := Vel_Dir,InVelocity => Vel_Invel,Busy => Vel_Bsy,Active => Vel_Act,CommandAborted => Vel_Ca,Error => Vel_Err,ErrorID => Vel_ErrID
);// MC_SetOverride
SET_OV(Axis := MC_Axis000,Enable := Set_Ov_En,VelFactor := Set_Ov_Velfct,AccFactor := Set_Ov_Accfct,JerkFactor := Set_Ov_Jfct,Busy => Set_Ov_Bsy,Enabled => Set_Ov_End,Error => Set_Ov_Err,ErrorID => Set_Ov_ErrID
);// MC_Stop
STP(Axis := MC_Axis000,Execute := Stp_Ex,Deceleration := Stp_Dec,Done => Stp_D,Busy => Stp_Bsy,Active => Stp_Act,CommandAborted => Stp_Ca,Error => Stp_Err,ErrorID => Stp_ErrID
);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • WebGL阴影与后期处理
  • 前端vue-作用域插槽的传值,子传父,父用obj对象接收
  • 【SpringBoot详细教程】-03-整合Junit【持续更新】
  • Go基础学习04-变量重声明;类型转换;类型断言;Unicode代码点;类型别名;潜在类型
  • 毕业设计选题:基于ssm+vue+uniapp的校园失物招领小程序
  • 《MATLAB项目实战》,专栏目录和介绍
  • 华为驱动未卸载导致内存完整性无法开启,导致lol卡顿,后台十几个重复进程
  • Pytorch实现Transformer
  • React Native 在 build 的时候如果出现 `babel.config.js` 配置文件的错误
  • 量子计算如何引发第四次工业革命——解读加来道雄的量子物理观
  • http代理池子大小要如何判断?
  • 后端开发刷题 | 最小的K个数(优先队列)
  • Centos中dnf和yum区别对比
  • 移动开发(三):使用.NET MAUI打包第一个安卓APK完整过程
  • Qt:关于16进制数转化那些事
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [NodeJS] 关于Buffer
  • CSS 专业技巧
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • go语言学习初探(一)
  • HTML-表单
  • Just for fun——迅速写完快速排序
  • Laravel核心解读--Facades
  • Otto开发初探——微服务依赖管理新利器
  • Spark RDD学习: aggregate函数
  • Spring-boot 启动时碰到的错误
  • Spring框架之我见(三)——IOC、AOP
  • vuex 学习笔记 01
  • XML已死 ?
  • 不上全站https的网站你们就等着被恶心死吧
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 检测对象或数组
  • 开源地图数据可视化库——mapnik
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 前端自动化解决方案
  • 入门到放弃node系列之Hello Word篇
  • 使用 QuickBI 搭建酷炫可视化分析
  • 我的面试准备过程--容器(更新中)
  • 系统认识JavaScript正则表达式
  • 你对linux中grep命令知道多少?
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • MyCAT水平分库
  • UI设计初学者应该如何入门?
  • 阿里云API、SDK和CLI应用实践方案
  • ​马来语翻译中文去哪比较好?
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #### go map 底层结构 ####
  • (1)(1.13) SiK无线电高级配置(五)
  • (23)Linux的软硬连接
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (k8s)Kubernetes本地存储接入
  • (pojstep1.1.2)2654(直叙式模拟)
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调