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
);

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

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

相关文章

股价已暴涨64000%,估值比英伟达还高,Costco股票还能投资吗?

猛兽财经核心观点: (1)自1985年上市以来,Costco的股价已经上涨了64,000%以上。 (2)该公司已成为了美股市场上最被高估的公司之一(估值比英伟达还高)。 (3)猛兽…

八大排序——万字长文带你剖析八大排序(C语言)

本篇文章主要介绍八大排序的思想和具体实现,也会分析具体的时间复杂度和空间复杂度,提醒一些容易出现的坑和实现一些不同版本的排序,以及这些不同排序之间的效率分析 目录 1.插入排序 1.1直接插入排序 1.1.1 直接插入排序的思想&#xff…

linux 下的静态库与动态库

目录 一、介绍 1、静态库 2、动态库 二、操作 1、静态库 2、动态库 3、使用库文件 (1)方法一 (2)方法二 (3)方法三 一、介绍 1、静态库 静态链接库实现链接操作的方式很简单,即程序文…

【2024W38】肖恩技术周刊(第 16 期):白嫖AI的最佳时段

周刊内容: 对一周内阅读的资讯或技术内容精品(个人向)进行总结,分类大致包含“业界资讯”、“技术博客”、“开源项目”和“工具分享”等。为减少阅读负担提高记忆留存率,每类下内容数一般不超过3条。 更新时间: 星期天 历史收录:…

同等学力申硕英语网课如何选择

很多考生想知道同等学力申硕英语网课如何选择,小编告诉大家,首先明确自己的学习目标和需求是为了提高口语、阅读、写作还是听力能力? 只有明确了自己的学习目标和需求,才能更好地选择适合自己的课程和平台。 二、选择知名品牌和口碑良好的平…

怎么一键更换PPT模板?2个做PPT必备的办公神器推荐!

在主打快节奏的当下,一份精美的PPT演示文稿往往能够为你赢得更多的关注和机会。但不可否认的是,制作一份高质量的PPT并非易事,特别是当你需要频繁更换PPT模板以应对不同场合时,根本抽不出时间来逐一修改。 本文将为大家介绍2款强…

什么是上层封禁海外流量

上层封禁海外流量(Upper-layer Blocking of Overseas Traffic)是一种网络安全策略,旨在通过在网络传输的上层进行流量控制和过滤,从而阻止来自海外的恶意流量或不必要的访问。这一措施主要用于防止分布式拒绝服务(DDoS…

多线程——“死锁”

目录 前言 一、一个线程,一把锁 1.问题介绍 2.可重入锁 二、两个线程,两把锁 1.问题介绍 2.解决方式 三、N个线程,M把锁 1.哲学家就餐问题 2.解决方式 结尾 前言 “死锁”是多线程代码中一类常见的问题,加锁是能解决线…

java算法OJ(1)位运算

目录 1.前言 2.正文 2.1位运算符号 2.1俩数相除 2.1.1题目 2.1.2示例 2.1.3题解 2.2二进制求和 2.2.1题目 2.2.2示例 2.2.3题解 2.3只出现一次的数字 2.3.1题目 2.3.2示例 2.3.3题解 2.4只出现一次的数字(进阶版) 2.4.1题目 2.4.2示例…

怎么在Proteus中找到排阻

1、打开安装好的Proteus,点击上方菜单栏中的“库”,再选择“从库选取零件”,或者在左侧元件列表中单击鼠标右键,再点击右键菜单中的“从库中挑选”选项。 2、之后会打开元器件库,我们打开类别中的“Resistors”&#x…

方法部分 学习

方法是程序中最小的执行单元 方法的定义调用 public static void 方法名(){ 方法体 } 写在main方法外面,在main函数里面直接调用带参数:public static void 方法名(int num1 , int num2&am…

付费计量应用过程(Payment Metering Application process)

The Payment Metering Application process is the combination of the business and support processes as the resultant interactions between the business and support functions, which thus describes the dynamic behavior of the system as a whole. 付费计量…

postman中使用Pre-request Script

一、get方法 get请求时 ,有多个params,并且有一个参数为sign,这个参数是有其他params拼接之后md5加密得到的,如何通过js语句获取params参数并生成sign。 const CryptoJS require(crypto-js); // 引入 CryptoJS 库进行 MD5 加密…

深度学习(5):逻辑斯蒂回归Logistic

文章目录 一、逻辑斯蒂回归(Logistic Regression)二、KL 散度(相对熵)三、交叉熵(Cross-Entropy)四、关系五、总结 一、逻辑斯蒂回归(Logistic Regression) 概述 逻辑斯蒂回归是一种…

MiniCPM-V 2.6训练时fuse_adam报错

原本pip install deepspeed安装了0.15.1版本的,但是在进行sft训练的时候还是报错。大概就是fuse_adam这个op编译有错,c版本要大于17什么的,一堆错。看了一堆解决方案尝试后发现如下这样的有用: 1.下载DeepSpeend源码 git clone ht…

《机器学习》周志华-CH8(集成学习)

8.1个体与集成 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统,基于委员会的学习。 同质”集成“:只包含同种类型的个体学习器,同质集成中的个体学习器亦称“基学习器”&#xff0…

WebRTC关键技术及应用场景:EasyCVR视频汇聚平台高效低延迟视频监控解决方案

众所周知,WebRTC是一项开源的实时通信技术,它通过集成音频、视频和数据传输到Web浏览器中,使得实时通信变得简单且无需任何插件或第三方软件。WebRTC不仅是一个API,也是一系列关键技术和协议的集合,它的出现改变了传统…

中断合并参数coalesce_params解释

在网络驱动程序中,中断是指网络设备向处理器发送信号,通知它有数据需要处理。频繁的中断会导致处理器负担过重,从而影响系统性能。为了优化性能,驱动程序可以使用中断合并技术,将多个中断合并为一个,从而减…

docker快速部署zabbix

两台主机 一台作为server 一台作为agent 安装好docker 并保证服务正常运行,镜像正常pull 分析: 部署 Zabbix 容器环境,通常会涉及几个主要组件: MySQL(或 MariaDB 数据库)、Zabbix Server 和 Zabbix Web I…

【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台

一、介绍 果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜(‘土豆’, ‘圣女果’, ‘大白菜’, ‘大葱’, ‘梨’, ‘胡萝卜’, ‘芒果’, ‘苹果’, ‘西红柿’, ‘韭菜’, ‘香蕉’, ‘黄瓜’)…