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

news2024/11/19 14:46:37

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

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

MC_MoveFeed

  • 指定自外部输入的中断输入发生位置起的移动距离,进行定位。
  • 可实现中断标准定位的控制为绝对值定位、相对值定位、速度控制。
指令名称FB/
FUN
图形表现ST表现
MC_MoveFeed中断标准定位FB描述文本MC_MoveFeed_instance (
Axis :=《参数》 ,
TriggerInput :=《参数》 ,
TriggerVariable :=《参数》 ,
Execute :=《参数》 ,
WindowOnly :=《参数》 ,
FirstPosition :=《参数》 ,
LastPosition :=《参数》 ,
ReferenceType :=《参数》 ,
Position :=《参数》 ,
Velocity :=《参数》 ,
Acceleration :=《参数》 ,
Deceleration :=《参数》 ,
Jerk :=《参数》 ,
Direction :=《参数》 ,
MoveMode :=《参数》 ,
FeedDistance :=《参数》 ,
FeedVelocity :=《参数》 ,
BufferMode :=《参数》 ,
ErrorDetect :=《参数》 ,
Done =>《参数》 ,
InFeed =>《参数》 ,
Busy =>《参数》 ,
Active =>《参数》 ,
CommandAborted =>《参数》 ,
Error =>《参数》 ,
ErrorID =>《参数》
);
变量
▶输入变量
输入变量名称数据类型有效范围初始值内容
Execute启动BOOLTRUE, FALSEFALSE在上升沿开始指令。
WindowOnly窗口有效BOOLTRUE, FALSEFALSE指定窗口的有效/无效。
FirstPosition起始位置LREAL负数、正数、“0”0指定锁定有效的位置。
单位为[指令单位]。 *1
LastPosition终止位置LREAL负数、正数、“0”0指定锁定无效的位置。
单位为[指令单位]。*1
ReferenceType位置类型
选择
_eMC_
REFERENCE_
TYPE
1: _mcFeedback1 *2指定位置类型。
1:反馈位置(同一任务周期 *3下
的取值)
Position目标位置LREAL负数、正数、“0”0MoveMode为[0:绝对值定位]时,
指定绝对坐标的目标位置。
MoveMode为[1:相对值定位]时,
指定移动距离。
MoveMode为[2:速度控制]时,无
需指定。
单位为[指令单位]。*1
Velocity目标速度LREAL正数*40指定目标速度。
单位为[指令单位/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
1: _mcShortestWay
2: _mcNegativeDirection
3: _mcCurrentDirection
4: _mcNoDirection
0 *2MoveMode为[0:绝对值定位] *5,
计数模式为[旋转模式]时,指定旋
转方向。
0:指定为正方向
1:指定为附近
2:指定为负方向
3:指定为当前方向
4:无方向指定
MoveMode移动方法
选择
_eMC_MOVE_
MODE
0: _mcAbsolute
1: _mcRelative
2: _mcVelocity
0 *2选择移动方法。
0:绝对值定位
1:相对值定位
2:速度控制
FeedDistance标准距离LREAL负数、正数、“0”0指定中断输入后的移动距离。
沿着与中断输入前动作方向相同
的方向使之按照标准距离动作时,
设为正数;反方向动作时,设为
负数。
单位为[指令单位]。*1
FeedVelocity标准速度LREAL正数0指定中断输入后的移动目标速度。
单位为[指令单位/s]。*1
BufferMode缓存
模式选择
_eMC_
BUFFER_
MODE
0: _mcAborting
1: _mcBuffered
0 *2指定多重启动运动指令时的动作。
0:中断
1:等待
ErrorDetect错误检测
选择
BOOLTRUE, FALSEFALSE无中断输入时,指定是否执行异
常检测。
TRUE:执行异常检测
FALSE:不执行异常检测
  • 1.关于指令单位,请参阅“NJ/NX系列CPU单元用户手册运动控制篇(SBCE-363)”或“NY系列工业用平板电脑/工业用台式电脑用户手册运动控制篇(SBCE-379)”的“单位转换设定”。
  • 2.有效范围为枚举体的变量,其实际初始值不是数值,而是枚举元素。
  • 3.任务周期分为原始恒定周期任务的周期和固定周期任务(执行优先度5)的周期。
  • 4.MoveMode中指定“2:_mcVelocity”时,也可以为“0”。
  • 5.MoveMode为[0:绝对值定位],计数模式为[线性模式]时,移动到指定位置。MoveMode为[1:相对值定位]时,移动方向由Position的符号决定。MoveMode为[2:速度控制]时,无论计数器模式如何,均无法选择“1:_mcShortestWay”和“4:_mcNoDirection”。
▶输出变量
输出变量名称数据类型有效范围内容
Done完成BOOLTRUE,
FALSE
指令执行完毕时变为TRUE。
InFeed标准传送中BOOLTRUE,
FALSE
接收锁定输入,标准传送中变为TRUE。
Busy执行中BOOLTRUE,
FALSE
接收指令后变为TRUE。
Active控制中BOOLTRUE,
FALSE
控制中变为TRUE。
CommandAborted执行中断BOOLTRUE,
FALSE
指令中止时,变为TRUE。
Error错误BOOLTRUE,
FALSE
发生异常时变为TRUE。
ErrorID错误代码WORD*1发生异常时,输出错误代码。16#0000为正常。
  • 1.请参阅“A-1错误代码一览(P.A-2)”。发生异常时,输出错误代码。

    ► 输出变量的反映时间

变量变为TRUE的时间变为FALSE的时间
Done指令完成时• Execute为TRUE时,与Execute的FALSE同时
• Execute为FALSE时,1个周期后
BusyExecute的上升沿• Done变为TRUE时
• Error变为TRUE时
• CommandAborted变为TRUE时
Active开始指令后• Done变为TRUE时
• Error变为TRUE时
• CommandAborted变为TRUE时
InFeed中断输入后,开始标准距离动作时*1• Done变为TRUE时
• Error变为TRUE时
• CommandAborted变为TRUE时
CommandAborted• 利用其它指令多重启动运动指令(中断),中止本
指令时
• 因发生异常,中止本指令时
• 发生异常过程中,启动本指令时
• 执行MC_Stop指令中,启动本指令时
• Execute为TRUE时,与Execute的FALSE同时
• Execute为FALSE时,1个周期后
Error本指令的启动条件或输入参数中含有异常因素时异常已解除时
  • 1.从中断输入“ON”到InFeed变为TRUE之前,可能延迟数个任务周期。任务周期分为原始恒定周期任务的周期和固定周期任务(执行优先度5)的周期。
▶输入输出变量
输入输出变量名称数据类型有效范围内容
Axis_sAXIS_REF指定轴。 *1
TriggerInput触发输入条件_sTRIGGER_REF设定触发条件。 *2
TriggerVariable触发变量BOOLTRUE,
FALSE
在触发条件下指定控制器模式时,指定触发的输入
变量。
  • 1.请使用在Sysmac Studio的轴基本设定画面中创建的用户定义变量的轴变量名称(默认 “MC_Axis***”)或系统定义变量的 轴变量名称(_MC_AX[], _MC1_AX[], _MC2_AX[*])。 TriggerInput 触发输入条件 _sTRIGGER_REF - 设定触发条件。 _
  • _2. 请定义_sTRIGGER_REF型的用户定义变量。

    ► _sTRIGGER_REF

结构要素变量名称数据类型有效范围功能
Mode模式_eMC_
TRIGGER_
MODE
0: _mcDrive
1: _mcController
指定触发模式。
0:驱动器模式
1:控制器模式
LatchID锁定ID
选择
_eMC_
TRIGGER_
LATCHID
0: _mcLatch1
1: _mcLatch2
在驱动器模式下,指定使用2个锁定功能中的哪
一个。
0:锁定功能1
1:锁定功能2
InputDrive驱动触发
输入信号
_eMC_
TRIGGER_
INPUT_DRIVE
0: _mcEncoderMark
1: _mcEXT
在驱动器模式下指定驱动器的触发信号。
0:Z相
1:外部输入

功能说明

  • 在Execute(启动)的上升沿,根据MoveMode(移动方法选择)的设定,按照绝对值移动、相对值移动或速度控制中的某一移动方法进行移动。
  • 采用绝对值移动时,在Position(目标位置)中设定目标位置;采用相对值移动时,在Position(目标位置)中设定目标距离。
  • 无论何种移动方法,均以Velocity(目标速度)进行移动动作。
  • 移动过程中,在外部输入(中断输入)的上升沿进行相对定位动作。
  • 以FeedVelocity(标准速度),从反馈位置起,移动FeedDistance(标准距离)指定的标准距离。
  • 利用绝对值移动或相对值移动指令进行中断标准传送,在到达目标位置前未输入中断信号时,在当初的目标位置停止动作。
  • 无中断输入而停止动作时,通过ErrorDetect( 错误检测选择),可指定有无异常输出。
  • 指定异常输出时,CommandAborted(执行中断)变为TRUE,Busy(执行中)、Active(控制中)变为FALSE。
  • 使用中断屏蔽时,将WindowOnly(窗口有效)设为TRUE,指定FirstPositon(起始位置)、LastPositon(终止位置)。
  • 通过反馈位置从FirstPositon(起始位置)到LastPosition(终止位置)之间发生的最初中断信号,执行中断标准定位。
  • 使用注意事项
  • 中断后的标准距离动作表现为,按照FeedDistance(标准距离)指定的距离进行相对移动。
  • 对FeedDistance(标准距离)指定正数时,沿与中断输入前相同的方向进行标准距离动作;指定负数时,沿相反方向进行标准距离动作。
  • 以标准距离动作反转时的加减速遵从轴参数[反转时动作]的设定。
  • 中断标准定位后的位置为溢出/下溢时,发生中断输入时间异常。
  • 发生溢出/下溢后,即使输入中断也同样发生轴异常。
  • 参考
  • 绝对值移动参阅“MC_MoveAbsolute(P.3-47)”、相对值移动参阅“MC_MoveRelative(P.3-73)”、速度控制参阅“MC_MoveVelocity(P.3-80)”、 WindowOnly(窗口有效)参阅“WindowOnly(窗口有效)(P.3-109)”。

    ► 数据对象的映射

  • 在Mode中选择[驱动器模式],使用MC_MoveFeed(中断标准定位)指令时,请映射如下对象数据。
  • 请在Sysmac Studio的轴基本设置的[高级设置]中进行映射。
  • 锁定功能(60B8Hex) 锁定状态(60B9Hex) 锁定位置1(60BAHex) 锁定位置2(60BCHex)未进行这些设定时,将发生过程数据对象设定不足(错误代码:3461Hex)错误。
  • 关于数据对象的映射,请参阅“2-3 PDO映射(P.2-30)”、“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
  • 使用NX系列位置接口单元时,请参阅“NX系列 位置接口单元 用户手册(SBCE-374)”中的“I/O入口映射”。
▶指令详情
  • 下面对指令详细说明。

    ► Axis(轴)指定

  • 通过Axis(轴)指定锁定对象轴。

    ► 触发输入条件

  • 通过TriggerInput(触发输入条件)的Mode、LatchID、InputDrive的指定,选择触发条件。

    Mode

  • Mode的设定有两种可选,在触发中指定伺服驱动器或NX系列输出单元信号的“驱动器模式”、在触发中指定TriggerVariable(触发变量)的“控制器模式”。
  • 将触发信号的上升沿视为发生触发,对执行锁定指令后最初发生触发(FALSE→TRUE)时轴的位置进行记录。
  • 本指令为Busy(动作中)中时,即使Execute(启动)变为FALSE,也会将TriggerVariable(触发变量)的变化作为触发进行动作。
  • 驱动器模式
  • “驱动器模式”是利用伺服驱动器的功能检测触发、获取当前位置,因此,相比“控制器模式”,锁定的当前位置更准确。
    在这里插入图片描述
  • 使用注意事项
  • 使用驱动器模式时,请务必在要使用的LatchID(锁定ID选择)上连接锁定信号。
  • 锁定信号的宽度取决于伺服驱动器或NX系列脉冲输出单元的性能等。
  • 在InputDrive中选择[驱动器模式],使用MC_MoveFeed(中断标准定位)指令时,请映射如下对象数据。
  • 锁定功能(60B8Hex)、锁定状态(60B9Hex)、锁定位置1(60BAHex)、锁定位置2(60BCHex)未进行这些设定时,将发生过程数据对象设定不足(错误代码:3461Hex)错误。
  • 关于对象数据的映射,请参阅“2-3 PDO映射(P.2-30)”、“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。
  • 控制器模式
  • 在“控制器模式”下,可对触发指定BOOL变量。
  • 在TriggerVariable(触发变量)中指定要触发的BOOL变量。
  • 与“驱动器模式”相比,在“控制器模式”下,由于I/O刷新的延迟,触发输入信号的BOOL变量的反映会产生较大延迟。
    在这里插入图片描述
  • 使用注意事项
  • 使用控制器模式时,按照任务周期的间隔进行锁定处理。
  • 因此,触发变量必须在任务周期的一个周期内为TRUE。
  • 并且,在触发变量变为TRUE后,MC功能模块执行处理之前,需要任务周期的一个周期的时间。
  • 这里的任务周期分为原始恒定周期任务的周期和固定周期任务(执行优先度5)的周期。

    ► LatchID

  • 通过LatchID(锁定ID选择)指定使用哪一个。
  • 对于1根轴只能使用某一个。
  • 伺服驱动器或NX系列脉冲输出单元中,LatchID(锁定ID选择)表示伺服驱动器或NX系列脉冲输出单元的锁定电路1(第1ch)、锁定电路2(第2ch)。
  • 关于LatchID,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。

    ► InputDrive

  • 作为触发,可选择_mcEncoderMark(Z相)或_mcEXT(外部输入)。
  • _mcEncoderMark(Z相)中,将伺服驱动器或NX系列脉冲输出单元的Z相用作触发。
  • _mcEXT(外部输入)中,将伺服驱动器或NX系列脉冲输出单元中输入的外部触发信号用作触发。
  • 欧姆龙制伺服驱动器1S系列中,_mcEXT(外部输入)为设定的Ext1或Ext2。
  • G5系列中,为设定的Ext1、Ext2、Ext3三者之一。
  • 通过Sysmac Studio进行设定。
  • 驱动器中设定的两个触发可以相同。
  • 使用NX系列 脉冲输出单元时,请参阅“NX系列 位置接口单元 用户手册(SBCE-374)”。

    ► WindowOnly(窗口有效)

  • 在WindowOnly(窗口有效)中,指定窗口的有效/无效。
  • 指定Disable(无效)时,在所有轴位置检出触发。
  • 指定Enable(有效)时,仅轴位置在FirstPosition(起始位置)和LastPosition(终止位置)的范围内时检出触发。
  • WindowOnly(窗口有效)的指定不同,动作也不同。
  • 如时序图所示。

    WindowOnly为Disable时

  • 将Execute(启动)变为TRUE后最初发生触发时的轴位置作为标准距离的基准位置。
    在这里插入图片描述

    WindowOnly为Enable时

  • 仅在窗口的范围内检出触发输入,获取轴位置。
    在这里插入图片描述
  • 使用注意事项
  • WindowOnly(窗口有效)由FALSE变化为TRUE的瞬间以及锁定功能启动之间的时间无法锁定。
  • 锁定功能启动需要时间,因此,WindowOnly(窗口有效)的有效范围极短时无法锁定。
  • 可锁定有效范围的临界值取决于伺服驱动器、编码器输入终端、位置接口单元等的性能和EtherCAT的通信。
  • 不同计数模式的FirstPosition(起始位置)和LastPosition(终止位置)的范围如下所示。

    线性模式

  • FirstPosition(起始位置) ≤ 窗口范围 ≤ LastPosition(终止位置) 指定FirstPosition(起始位置) > LastPosition(终止位置)时,会发生异常。
  • 超过[线性模式]的位置范围指定时,也会发生异常。
  • 此外,由于FirstPosition(起始位置)和LastPosition(终止位置)为LREAL型变量,因此,请勿指定FirstPosition(起始位置) = LastPosition(终止位置)。
  • 关于LREAL型,请参阅“实数(REAL型、LREAL型)的使用(P.1-14)”。
  • [线性模式]时的窗口有效范围如下图所示。
    在这里插入图片描述
    • (注) FirstPosition(起始位置)和LastPosition(终止位置)包含在窗口有效范围中。

    旋转模式

  • FirstPosition(起始位置) ≤ LastPosition(终止位置)和FirstPosition(起始位置) > LastPosition(终止位置)两者均可指定。
  • FirstPosition(起始位置) > LastPosition(终止位置)时,设定值跨越环计数器的上下限位置。
  • 超过环计数器上下限范围指定时,会发生异常。
    在这里插入图片描述

    ► ReferenceType(位置类型选择)

  • 位置类型如下所示。
  • _mcFeedback:同一任务周期下的取值使用同一任务周期时获取的主轴反馈位置。
  • 这里的任务周期分为原始恒定周期任务的周期和固定周期任务(执行优先度5)的周期。

    ► FeedDistance(标准距离)

  • 沿与中断输入前相同方向执行标准距离动作时,对FeedDistance(标准距离)指定正值。
  • 沿与中断输入前相反方向执行标准距离动作时,对FeedDistance(标准距离)指定负值。
  • 例如,中断输入前动作表现为负方向动作时,如果对FeedDistance(标准距离)指定正值,则标准距离动作表现为负方向动作。
▶时序图
  • 如果对FeedDistance(标准距离)指定负值,则标准距离动作表现为正方向动作。
  • 在启动Execute(启动)的同时,Busy(执行中)变为TRUE。
  • 在下一个周期Active(控制中)变为TRUE。
  • 中断输入后,InFeed(标准传送中)变为TRUE、到达FeedDistance(标准距离),定位完成时,Done(完成)变为TRUE。
  • 利用其它指令中断本指令时,CommandAborted(执行中断)变为TRUE,Busy(执行中)、Active(控制中)变为FALSE。

    ► MoveMode(移动方法选择)为_mcAbsolute、_mcRelative时
在这里插入图片描述

  • 1从中断信号“ON”到InFeed变为TRUE之前,可能延迟多个控制周期。
  • 参考
  • 对中断标准定位的加速和减速取决于输入变量的Acceleration(加速度)、Deceleration(减速度)。

    ► MoveMode(移动方法选择)为_mcVelocity时

在这里插入图片描述

    ► 轴参数的反转时动作

  • 中断后的标准定位反转时,根据轴参数的[反转时动作]进行反转。

    [0:以反转时减速停止反转时]时
在这里插入图片描述

  • 参考
  • 中断输入时反转的减速度取决于输入变量的Deceleration(减速度)。

    [1:以反转时立即停止反转时]时
在这里插入图片描述

    ► MoveMode(移动方法选择)为_mcAbsolute,无中断输入时

    [ErrorDetect(错误检测选择):不执行异常检测],无中断输入时
在这里插入图片描述

    [ErrorDetect(错误检测选择):执行异常检测],无中断输入时
在这里插入图片描述

    ► WindowsOnly(窗口有效)为[有效]时
在这里插入图片描述

▶重启运动指令
  • 无法重启本指令。
  • 重启后,将发生“无法重启运动指令(错误代码:543B Hex)”错误。
▶多重启动运动指令
  • 多重启动运动指令的详情,请参阅“NJ/NX系列 CPU单元 用户手册 运动控制篇(SBCE-363)”或“NY系列 工业用平板电脑/工业用台式电脑 用户手册 运动控制篇(SBCE-379)”。

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

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

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

  • 本指令执行中,可能以中断模式多重启动。
  • 选择等待、合并多重启动时,
    • 执行多重启动指令时,Error(错误)变为TRUE。
    • 同时,ErrorID(错误代码)输出“无法多重启动运动指令(错误代码:543C Hex)”。
    • 本指令处理中止,CommandAborted(执行中断)变为TRUE。
▶异常
  • 在执行本指令中发生异常时,Error(错误)变为TRUE,轴停止动作。
  • 可查看ErrorID(错误代码)的输出值,了解发生异常的原因。

    ► 发生异常时的时序图

  • 发生异常时,本指令使用的中断输入用锁定无效。
    在这里插入图片描述

    ► 错误代码

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

    ► 错误代码

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

示例程序

  • 下面,对从速度控制变为中断标准定位的控制中的示例程序进行说明。
▶参数设定
  • 该示例程序中使用的最少的必要设定如下所示。

    ► 轴参数的设定

    轴种类

轴种类
轴1伺服轴
轴2伺服轴

    计数器模式

计数器模式
轴1旋转模式
轴2线性模式

    环计数器

上限值下限值
轴13600

    坐标单位选择

坐标单位
轴1degree
轴2mm
▶动作示例

在这里插入图片描述

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

1

  • 驱动皮带输送机的轴1,以中断标准定位前的动作进行速度控制。

2

  • 传感器1连接锁定功能1。
  • 传感器1 “ON”时,切换为标准定位,在规定位置停止。

3

  • 定位完成后,印章的轴2因绝对定位而垂直下降,进行盖印。
  • 盖印后,轴2返回原点位置。
  • 在绝对定位动作完成的同时返回原点位置,因此,以等待启动MC_MoveZeroPosition(高速原点复位)的BufferMode(缓存模式选择)。
  • 上一指令的输出Active为TRUE时,多重启动指令。
▶梯形图

    ► 主要变量

名称数据类型初始值注释
MC_Axis000_sAXIS_REF轴1的轴变量。
MC_Axis000.MFaultLvl.ActiveBOOLFALSE轴1发生轻度故障等级的异常时变为TRUE。
MC_Axis000.Details.HomedBOOLFALSE轴1为原点确定状态时变为TRUE。
MC_Axis001_sAXIS_REF轴2的轴变量。
MC_Axis001.MFaultLvl.ActiveBOOLFALSE轴2发生轻度故障等级的异常时变为TRUE。
MC_Axis001.Details.HomedBOOLFALSE轴2为原点确定状态时变为TRUE。
TrigRef_sTRIGGER_
REF
是中断输入的指定变量。
本程序中,使用伺服驱动器的锁定功能1。检测出
外部输入(传感器1)的上升沿,执行标准移动。
StartPgBOOLFALSE如果该变量为TRUE,EtherCAT的过程数据通信已
建立,则进入伺服ON状态。
InitFlagBOOLFALSE表示输入参数设定完成。
FALSE时,设定输入参数。输入参数设定完成后,
变为TRUE。

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

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

    ► 内联ST的内容

//MV_FEED 参数
Mv_Feed_TrigRef.Mode := _eMC_TRIGGER_MODE#_mcDrive;
Mv_Feed_TrigRef.LatchID := _eMC_TRIGGER_LATCH_ID#_mcLatch1;
Mv_Feed_TrigRef.InputDrive := _eMC_TRIGGER_INPUT_DRIVE#_mcEXT;
Mv_Feed_TrigVar := FALSE;
Mv_Feed_Pos := LREAL#2000.0;
Mv_Feed_Vel := LREAL#1000.0;
Mv_Feed_Acc := LREAL#10000.0;
Mv_Feed_Dec := LREAL#10000.0;
Mv_Feed_Mm := _eMC_MOVE_MODE#_mcVelocity;
Mv_Feed_FeedDis := LREAL#500.0;
Mv_Feed_FeedVel := LREAL#500.0;
//MV_ABS 参数
Mv_Abs_Pos := LREAL#1000.0;
Mv_Abs_Vel := LREAL#500.0;
Mv_Abs_Acc := LREAL#10000.0;
Mv_Abs_Dec := LREAL#10000.0;
Mv_Abs_Jrk := LREAL#10000.0;
//MV_ZERO 参数
Mv_Zero_Vel := LREAL#500.0;
Mv_Zero_Acc := LREAL#10000.0;
Mv_Zero_Dec := LREAL#10000.0;
Mv_Zero_Jrk := LREAL#10000.0;
Mv_Zero_Bm := _eMC_BUFFER_MODE#_mcBuffered;
//设定输入参数后,将InitFlag设为TRUE
InitFlag := TRUE;
▶结构文本(ST)

    ► 主要变量

名称数据类型初始值注释
MC_Axis000_sAXIS_REF轴1的轴变量。
MC_Axis000.MFaultLvl.ActiveBOOLFALSE轴1发生轻度故障等级的异常时变为TRUE。
MC_Axis000.Details.HomedBOOLFALSE轴1为原点确定状态时变为TRUE。
MC_Axis001_sAXIS_REF轴2的轴变量。
MC_Axis001.MFaultLvl.ActiveBOOLFALSE轴2发生轻度故障等级的异常时变为TRUE。
MC_Axis001.Details.HomedBOOLFALSE轴2为原点确定状态时变为TRUE。
TrigRef_sTRIGGER_
REF
是中断输入的指定变量。
本程序中,使用伺服驱动器的锁定功能1。检测出
外部输入(传感器1)的上升沿,执行标准移动。
StartPgBOOLFALSE如果该变量为TRUE,EtherCAT的过程数据通信已
建立,则进入伺服ON状态。
InitFlagBOOLFALSE表示输入参数设定完成。
FALSE时,设定输入参数。输入参数设定完成后,
变为TRUE。
Hm1_ExBOOLFALSE该变量由FALSE→TRUE时,启动MC_Home的实例
HM1。
Hm2_ExBOOLFALSE该变量由FALSE→TRUE时,启动MC_Home的实例
HM2。
Mv_Feed_ExBOOLFALSE该变量由FALSE→TRUE时,启动MC_MoveFeed的
实例MV_FEED。
Mv_Abs_ExBOOLFALSE该变量由FALSE→TRUE时,启动
MC_MoveAbsolute的实例MV_ABS。
Mv_Zero_ExBOOLFALSE该变量由FALSE→TRUE时,启动
MC_MoveZeroPosition的实例MV_ZERO。

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

    ► 示例程序

IF InitFlag = FALSE THEN
    // MV_FEED 参数
    Mv_Feed_TrigRef.Mode := _eMC_TRIGGER_MODE#_mcDrive;
    Mv_Feed_TrigRef.LatchID := _eMC_TRIGGER_LATCH_ID#_mcLatch1;
    Mv_Feed_TrigRef.InputDrive := _eMC_TRIGGER_INPUT_DRIVE#_mcEXT;
    Mv_Feed_TrigVar := FALSE;
    Mv_Feed_Pos := LREAL#2000.0;
    Mv_Feed_Vel := LREAL#1000.0;
    Mv_Feed_Acc := LREAL#10000.0;
    Mv_Feed_Dec := LREAL#10000.0;
    Mv_Feed_Mm := _eMC_MOVE_MODE#_mcVelocity;
    Mv_Feed_FeedDis := LREAL#500.0;
    Mv_Feed_FeedVel := LREAL#500.0;

    // MV_ABS 参数
    Mv_Abs_Pos := LREAL#1000.0;
    Mv_Abs_Vel := LREAL#500.0;
    Mv_Abs_Acc := LREAL#10000.0;
    Mv_Abs_Dec := LREAL#10000.0;
    Mv_Abs_Jrk := LREAL#10000.0;

    // MV_ZERO 参数
    Mv_Zero_Vel := LREAL#500.0;
    Mv_Zero_Acc := LREAL#10000.0;
    Mv_Zero_Dec := LREAL#10000.0;
    Mv_Zero_Jrk := LREAL#10000.0;
    Mv_Zero_Bm := _eMC_BUFFER_MODE#_mcBuffered;

    // 设定输入参数后,将InitFlag设为TRUE
    InitFlag := TRUE;
END_IF;

// StartPg为TRUE时,确认伺服驱动器处于伺服准备就绪状态,
// 将轴1设为伺服ON状态。
// 如果未处于伺服准备就绪状态,则设为伺服OFF。
IF (StartPg = TRUE) AND (MC_Axis000.DrvStatus.Ready = TRUE) THEN
    Pwr1_En := TRUE; // 将轴1设为伺服ON
ELSE
    Pwr1_En := FALSE; // 将轴1设为伺服OFF
END_IF;

// StartPg为TRUE时,确认伺服驱动器处于伺服准备就绪状态,
// 将轴2设为伺服ON状态。
// 如果未处于伺服准备就绪状态,则设为伺服OFF。
IF (StartPg = TRUE) AND (MC_Axis001.DrvStatus.Ready = TRUE) THEN
    Pwr2_En := TRUE; // 将轴2设为伺服ON
ELSE
    Pwr2_En := FALSE; // 将轴2设为伺服OFF
END_IF;

// 发生轻度故障等级异常时的处理
// 发生异常时的处理(FaultHandler)由客户根据装置进行编程。
IF (MC_Axis000.MFaultLvl.Active = TRUE) OR (MC_Axis001.MFaultLvl.Active = TRUE) THEN
    FaultHandler();
END_IF;

// 轴1处于伺服ON状态,且原点未确定时,进行轴1的原点复位
IF (Pwr1_Status = TRUE) AND (MC_Axis000.Details.Homed = FALSE) THEN
    Hm1_Ex := TRUE;
END_IF;

// 轴2处于伺服ON状态,且原点未确定时,进行轴2的原点复位
IF (Pwr2_Status = TRUE) AND (MC_Axis001.Details.Homed = FALSE) THEN
    Hm2_Ex := TRUE;
END_IF;

// 轴1确定原点后,执行MC_MoveFeed
IF MC_Axis000.Details.Homed = TRUE THEN
    Mv_Feed_Ex := TRUE;
END_IF;

// 轴2原点已确定,且轴1的中断标准定位完成后,执行轴2的绝对定位
IF (MC_Axis001.Details.Homed = TRUE) AND (Mv_Feed_D = TRUE) THEN
    Mv_Abs_Ex := TRUE;
END_IF;

// MC_MoveAbsolute开始时,多重启动MC_MoveZeroPosition
IF Mv_Abs_Act = TRUE THEN
    Mv_Zero_Ex := TRUE;
END_IF;

// 轴1的MC_Power
PWR1(
    Axis := MC_Axis000,
    Enable := Pwr1_En,
    Status => Pwr1_Status,
    Busy => Pwr1_Bsy,
    Error => Pwr1_Err,
    ErrorID => Pwr1_ErrID
);

// 轴2的MC_Power
PWR2(
    Axis := MC_Axis001,
    Enable := Pwr2_En,
    Status => Pwr2_Status,
    Busy => Pwr2_Bsy,
    Error => Pwr2_Err,
    ErrorID => Pwr2_ErrID
);

// 轴1的MC_Home
HM1(
    Axis := MC_Axis000,
    Execute := Hm1_Ex,
    Done => Hm1_D,
    Busy => Hm1_Bsy,
    CommandAborted => Hm1_Ca,
    Error => Hm1_Err,
    ErrorID => Hm1_ErrID
);

// 轴2的MC_Home
HM2(
    Axis := MC_Axis001,
    Execute := Hm2_Ex,
    Done => Hm2_D,
    Busy => Hm2_Bsy,
    CommandAborted => Hm2_Ca,
    Error => Hm2_Err,
    ErrorID => Hm2_ErrID
);

// MC_MoveFeed
MV_FEED(
    Axis := MC_Axis000,
    TriggerInput := Mv_Feed_TrigRef,
    TriggerVariable := Mv_Feed_TrigVar,
    Execute := Mv_Feed_Ex,
    Position := Mv_Feed_Pos,
    Velocity := Mv_Feed_Vel,
    Acceleration := Mv_Feed_Acc,
    Deceleration := Mv_Feed_Dec,
    MoveMode := Mv_Feed_Mm,
    FeedDistance := Mv_Feed_FeedDis,
    FeedVelocity := Mv_Feed_FeedVel,
    Done => Mv_Feed_D,
    InFeed => Mv_Feed_InFeed,
    Busy => Mv_Feed_Bsy,
    Active => Mv_Feed_Act,
    CommandAborted => Mv_Feed_Ca,
    Error => Mv_Feed_Err,
    ErrorID => Mv_Feed_ErrID
);

// MC_MoveAbsolute
MV_ABS(
    Axis := MC_Axis001,
    Execute := Mv_Abs_Ex,
    Position := Mv_Abs_Pos,
    Velocity := Mv_Abs_Vel,
    Acceleration := Mv_Abs_Acc,
    Deceleration := Mv_Abs_Dec,
    Jerk := Mv_Abs_Jrk,
    Done => Mv_Abs_D,
    Busy => Mv_Abs_Bsy,
    Active => Mv_Abs_Act,
    CommandAborted => Mv_Abs_Ca,
    Error => Mv_Abs_Err,
    ErrorID => Mv_Abs_ErrID
);

// MC_MoveZeroPosition
MV_ZERO(
    Axis := MC_Axis001,
    Execute := Mv_Zero_Ex,
    Velocity := Mv_Zero_Vel,
    Acceleration := Mv_Zero_Acc,
    Deceleration := Mv_Zero_Dec,
    Jerk := Mv_Zero_Jrk,
    BufferMode := Mv_Zero_Bm,
    Done => Mv_Zero_D,
    Busy => Mv_Zero_Bsy,
    Active => Mv_Zero_Act,
    CommandAborted => Mv_Zero_Ca,
    Error => Mv_Zero_Err,
    ErrorID => Mv_Zero_ErrID
);

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

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

相关文章

2024免费录屏软件的宝藏功能与实用技巧

在手机上操作很多时候为了记录方便都直接截图或者录屏,其实电脑也一样。现在面向电脑的录屏工具纷繁复杂,很容易让我们挑花了眼。今天这篇文章我将介绍几款免费的录屏软件为大家提供参考。 1.福昕录屏大师 链接达达:www.foxitsoftware.cn/R…

深入探索 RUM 与全链路追踪:优化数字体验的利器

作者:梅光辉(重彦) 背景介绍 随着可观测技术的持续演进,多数企业已广泛采用 APM、Tracing 及 Logging 解决方案,以此强化业务监控能力,尤其在互联网行业,产品的体验直接关系着用户的口碑&…

使用Crawler实例进行网页内容抓取

网页内容抓取的背景 随着互联网的快速发展,网页上的信息量日益庞大。如何从海量的网页中快速、准确地抓取所需信息,成为了一个技术挑战。网页内容抓取技术通过自动化的方式,模拟用户浏览网页的过程,获取网页上的文本、图片、链接…

mybatisplus介绍以及使用(上)

目录 一、概念 1、什么是mybatisplus 2、为什么要使用mybatisplus 二、mybatisplus的使用 1、安装 2、常用注解 3、条件构造器 一、概念 1、什么是mybatisplus MyBatis-Plus(简称MP)是一个基于MyBatis的增强框架,旨在简化开发、提高…

学习C语言(20)

在这段没有更新的时间作者大一开学了,军训期间一直比较忙没时间学习,9月23号结束了为期十四天的军训,今天开始重新更学习C语言的博客 整理今天的学习内容 1.浮点数在内存中的储存 浮点数包括float,double,long doub…

vue实现左侧数据拖拽到右侧区域,且左侧数据保留且左侧数据不能互相拖拽改变顺序

一、案例效果 二、案例代码 封装左侧抽屉 DrawerSearch.vue <template><div><mtd-form :model"formDrawerSearch" ref"formCustom" inline><mtd-form-item><mtd-inputtype"text"v-model"formDrawerSearch.hos…

美团一面:给定两棵二叉树 `A` 和 `B`,判断 `B` 是否是 `A` 的子结构?

目录标题 问题描述思路分析代码解释详细步骤复杂度分析 问题描述 给定两棵二叉树 A 和 B&#xff0c;判断 B 是否是 A 的子结构。所谓子结构是指 B 中任意节点在 A 中存在相同的结构和节点值。 例子1&#xff1a; 输入&#xff1a;tree1 [1,7,5], tree2 [6,1] 输出&#…

LeaferJS 动画、状态、过渡、游戏框架

LeaferJS 现阶段依然专注于绘图、交互和图形编辑场景。我们引入游戏场景&#xff0c;只是希望让 LeaferJS 被更多有需要的人看到&#xff0c;以充分发挥它的价值 LeaferJS 为你带来了全新的游戏、动画、状态和过渡功能&#xff0c;助你实现那些年少时的游戏梦想。我们引入了丰富…

NVIDIA TAO 工具套件5.3.0学习介绍及操作-01

什么是 NVIDIA TAO 工具套件&#xff1f; NVIDIA TAO 工具套件基于 TensorFlow 和 PyTorch 构建&#xff0c;是 NVIDIA TAO 框架的低代码版本&#xff0c;通过抽象出 AI/深度学习框架的复杂性来加速模型训练过程。TAO 工具套件让您利用迁移学习的强大功能和自己的数据对预训练 …

Remotion:使用前端技术开发视频

前言 最近做文章突然想到很多文章其实也可以用视频的方式来展现&#xff0c;以现在短视频的火爆程度&#xff0c;肯定能让更多的人看到。 恰巧最近看了很多关于动画的前端 js 库&#xff0c;那如果将这些动画帧连续起来&#xff0c;岂不是就成了一个视频吗&#xff1f; 而且…

集成Elasticsearch到django restful

文章目录 集成ES到django restful服务端项目安装haystack基本使用安装配置索引模型ORM模型中新增discount_json字段方法全文索引字段模板 索引序列化器全文搜索的索引视图路由手动构建es索引 集成ES到django restful服务端项目 如果直接在Django项目直接编写代码作为ElasticSe…

YOLOv5白皮书-第Y2周:训练自己的数据集(云jupyter运行版 )

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](小团体&#xff5e;第八波) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](K同学啊-CSDN博客)** 目录 前言 一、.xml文件里保存的是什么 二、准备好自己的数据 三、创建split_tr…

spring boot 3 + 虚拟线程 + MDC traceId

虚拟线程&#xff08;Virtual Thread&#xff09;也称协程或纤程&#xff0c;是一种轻量级的线程实现&#xff0c;与传统的线程以及操作系统级别的线程&#xff08;也称为平台线程&#xff09;相比&#xff0c;它的创建开销更小、资源利用率更高&#xff0c;是 Java 并发编程领…

ChatGPT-4模型镜像站对比和【软件开发人员】提示词

AI如今很强大&#xff0c;聊聊天、写论文、搞翻译、写代码、写文案、审合同等等&#xff0c;ChatGPT 真是无所不能~ 作为一款出色的大语言模型&#xff0c;ChatGPT 实现了人类般的对话交流&#xff0c;最主要是能根据上下文进行互动。 接下来&#xff0c;我将介绍 ChatGPT 在…

活动|华院计算参与《数字生态指数2024》报告发布并受邀主题分享

9月20-21日&#xff0c;“第二届数字生态与治理论坛暨数字生态指数2024发布会”在湖北省武汉市举办。华院计算作为研究团队一员受邀出席论坛&#xff0c;并发表“人工智能赋能基层社会治理”主题演讲。 《数字生态指数2024》报告为国家对外积极调整全球数字治理战略定位&#x…

UE学习篇ContentExample解读------Blueprint_Communication-下

文章目录 总览描述批次阅览2.1 Using an Event Dispatcher function to call an event in the level Blueprint2.2 Binding an Event Dispatcher function to a custom event2.3 Binding an Event Dispathcer to a custom event on spawn3.1 Basic communication using a Bluep…

Java Set类

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;Java 目录 &#x1f449;&#x1f3fb;set1. 接口与实现2. 特性3. 常用方法4. 示例代码5. 遍历6. 线程安全 &#x1f449;&#x1f3fb;set更多方法1. 其他常…

赛氪作媒体支持单位受邀参加首届科普翻译与跨学科专业学术研讨会

2024年9月22日&#xff0c;正值全国科普日之际&#xff0c;首届科普翻译与跨学科专业学术研讨会在上海健康与营养研究所信息中心励志厅成功举行并圆满结束。此次研讨会汇聚了来自全国各地的近60名专家学者、学界及企业界代表&#xff0c;共同探讨科普翻译与跨学科专业的发展。作…

封装一个vue3的文件上传组件(拖拽或点击选择文件)

1. 效果 选择文件后: 2. 代码 <template><divclass"drop-zone c-normal":class"{borderOutline: outline,}"dragover.preventdrop.prevent"handleDrop"click"chooseFiles"><div v-if"files.length < 1"…

FLStudio21Mac版flstudio v21.2.1.3430简体中文版下载(含Win/Mac)

给大家介绍了许多FL21版本&#xff0c;今天给大家介绍一款FL Studio21Mac版本&#xff0c;如果是Mac电脑的朋友请千万不要错过&#xff0c;当然我也不会忽略掉Win系统的FL&#xff0c;链接我会放在文章&#xff0c;供大家下载与分享&#xff0c;如果有其他问题&#xff0c;欢迎…